From ef79eab44bfd000792c610b968b5ceefd41e76a0 Mon Sep 17 00:00:00 2001 From: Darius Jahandarie Date: Sat, 4 Nov 2023 18:45:57 +0900 Subject: Modernize codebase - Use ES modules - Remove vendored libs and build them from npm using esbuild - Switch from JSZip to zip.js --- ext/lib/dexie-export-import.js | 3457 --------------- ext/lib/dexie-export-import.js.map | 1 - ext/lib/dexie.min.js | 2 - ext/lib/dexie.min.js.map | 1 - ext/lib/handlebars.min.js | 25 - ext/lib/handlebars.min.js.map | 7 - ext/lib/jszip.min.js | 13 - ext/lib/parse5.js | 8557 ------------------------------------ ext/lib/ucs2length.js | 16 - ext/lib/wanakana.min.js | 2 - ext/lib/wanakana.min.js.map | 1 - 11 files changed, 12082 deletions(-) delete mode 100644 ext/lib/dexie-export-import.js delete mode 100644 ext/lib/dexie-export-import.js.map delete mode 100644 ext/lib/dexie.min.js delete mode 100644 ext/lib/dexie.min.js.map delete mode 100644 ext/lib/handlebars.min.js delete mode 100644 ext/lib/handlebars.min.js.map delete mode 100644 ext/lib/jszip.min.js delete mode 100644 ext/lib/parse5.js delete mode 100644 ext/lib/ucs2length.js delete mode 100644 ext/lib/wanakana.min.js delete mode 100644 ext/lib/wanakana.min.js.map (limited to 'ext/lib') diff --git a/ext/lib/dexie-export-import.js b/ext/lib/dexie-export-import.js deleted file mode 100644 index f915d1c1..00000000 --- a/ext/lib/dexie-export-import.js +++ /dev/null @@ -1,3457 +0,0 @@ -/* ========================================================================== - * dexie-export-import.js - * ========================================================================== - * - * Dexie addon for exporting and importing databases to / from Blobs. - * - * By David Fahlander, david.fahlander@gmail.com, - * - * ========================================================================== - * - * Version 4.0.7, Wed Mar 29 2023 - * - * https://dexie.org - * - * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/ - * - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('dexie')) : - typeof define === 'function' && define.amd ? define(['exports', 'dexie'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.DexieExportImport = {}, global.Dexie)); -})(this, (function (exports, Dexie) { 'use strict'; - - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - - var Dexie__default = /*#__PURE__*/_interopDefaultLegacy(Dexie); - - /*! ***************************************************************************** - 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. - ***************************************************************************** */ - - 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 (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - 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: [] }, f, 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 (f) throw new TypeError("Generator is already executing."); - while (_) try { - 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; - 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 (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - } - - function getSchemaString(table) { - var primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes); - return primKeyAndIndexes.map(function (index) { return index.src; }).join(','); - } - function extractDbSchema(exportedDb) { - var schema = {}; - for (var _i = 0, _a = exportedDb.tables; _i < _a.length; _i++) { - var table = _a[_i]; - schema[table.name] = table.schema; - } - return schema; - } - function readBlobAsync(blob, type) { - return new Promise(function (resolve, reject) { - var reader = new FileReader(); - reader.onabort = function (ev) { return reject(new Error("file read aborted")); }; - reader.onerror = function (ev) { return reject(ev.target.error); }; - reader.onload = function (ev) { return resolve(ev.target.result); }; - if (type === 'binary') - reader.readAsArrayBuffer(blob); - else - reader.readAsText(blob); - }); - } - function readBlobSync(blob, type) { - if (typeof FileReaderSync === 'undefined') { - throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.'); - } - var reader = new FileReaderSync(); // Requires worker environment - var data = type === 'binary' ? - reader.readAsArrayBuffer(blob) : - reader.readAsText(blob); - return data; - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var typeson = createCommonjsModule(function (module, exports) { - (function (global, factory) { - module.exports = factory() ; - }(commonjsGlobal, (function () { - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, - args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; - } - - 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 _objectSpread2(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; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); - } - - function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } - - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - - /** - * We keep this function minimized so if using two instances of this - * library, where one is minimized and one is not, it will still work - * with `hasConstructorOf`. - * With ES6 classes, we may be able to simply use `class TypesonPromise - * extends Promise` and add a string tag for detection. - * @param {function} f - */ - // eslint-disable-next-line max-len - // eslint-disable-next-line block-spacing, space-before-function-paren, space-before-blocks, space-infix-ops, semi, promise/avoid-new - var TypesonPromise = function TypesonPromise(f) { - _classCallCheck(this, TypesonPromise); - - this.p = new Promise(f); - }; // eslint-disable-next-line max-len - // class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi - - - TypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill - - /* istanbul ignore else */ - - if (typeof Symbol !== 'undefined') { - // Ensure `isUserObject` will return `false` for `TypesonPromise` - TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise'; - } - /** - * - * @param {function} [onFulfilled] - * @param {function} [onRejected] - * @returns {TypesonPromise} - */ - - - TypesonPromise.prototype.then = function (onFulfilled, onRejected) { - var _this = this; - - return new TypesonPromise(function (typesonResolve, typesonReject) { - // eslint-disable-next-line promise/catch-or-return - _this.p.then(function (res) { - // eslint-disable-next-line promise/always-return - typesonResolve(onFulfilled ? onFulfilled(res) : res); - })["catch"](function (res) { - return onRejected ? onRejected(res) : Promise.reject(res); - }).then(typesonResolve, typesonReject); - }); - }; - /** - * - * @param {function} onRejected - * @returns {TypesonPromise} - */ - - - TypesonPromise.prototype["catch"] = function (onRejected) { - return this.then(null, onRejected); - }; - /** - * - * @param {Any} v - * @returns {TypesonPromise} - */ - - - TypesonPromise.resolve = function (v) { - return new TypesonPromise(function (typesonResolve) { - typesonResolve(v); - }); - }; - /** - * - * @param {Any} v - * @returns {TypesonPromise} - */ - - - TypesonPromise.reject = function (v) { - return new TypesonPromise(function (typesonResolve, typesonReject) { - typesonReject(v); - }); - }; - - ['all', 'race'].forEach(function (meth) { - /** - * - * @param {Promise[]} promArr - * @returns {TypesonPromise} - */ - TypesonPromise[meth] = function (promArr) { - return new TypesonPromise(function (typesonResolve, typesonReject) { - // eslint-disable-next-line promise/catch-or-return - Promise[meth](promArr.map(function (prom) { - return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom; - })).then(typesonResolve, typesonReject); - }); - }; - }); - - var _ref = {}, - toStr = _ref.toString, - hasOwn = {}.hasOwnProperty, - getProto = Object.getPrototypeOf, - fnToString = hasOwn.toString; - /** - * Second argument not in use internally, but provided for utility. - * @param {Any} v - * @param {boolean} catchCheck - * @returns {boolean} - */ - - function isThenable(v, catchCheck) { - return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v["catch"] === 'function'); - } - /** - * - * @param {Any} val - * @returns {string} - */ - - - function toStringTag(val) { - return toStr.call(val).slice(8, -1); - } - /** - * This function is dependent on both constructors - * being identical so any minimization is expected of both. - * @param {Any} a - * @param {function} b - * @returns {boolean} - */ - - - function hasConstructorOf(a, b) { - if (!a || _typeof(a) !== 'object') { - return false; - } - - var proto = getProto(a); - - if (!proto) { - return b === null; - } - - var Ctor = hasOwn.call(proto, 'constructor') && proto.constructor; - - if (typeof Ctor !== 'function') { - return b === null; - } - - if (b === Ctor) { - return true; - } - - if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) { - return true; - } - - if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) { - return true; - } - - return false; - } - /** - * - * @param {Any} val - * @returns {boolean} - */ - - - function isPlainObject(val) { - // Mirrors jQuery's - if (!val || toStringTag(val) !== 'Object') { - return false; - } - - var proto = getProto(val); - - if (!proto) { - // `Object.create(null)` - return true; - } - - return hasConstructorOf(val, Object); - } - /** - * - * @param {Any} val - * @returns {boolean} - */ - - - function isUserObject(val) { - if (!val || toStringTag(val) !== 'Object') { - return false; - } - - var proto = getProto(val); - - if (!proto) { - // `Object.create(null)` - return true; - } - - return hasConstructorOf(val, Object) || isUserObject(proto); - } - /** - * - * @param {Any} v - * @returns {boolean} - */ - - - function isObject(v) { - return v && _typeof(v) === 'object'; - } - /** - * - * @param {string} keyPathComponent - * @returns {string} - */ - - - function escapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~/g, '~0').replace(/\./g, '~1'); - } - /** - * - * @param {string} keyPathComponent - * @returns {string} - */ - - - function unescapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~'); - } - /** - * @param {PlainObject|GenericArray} obj - * @param {string} keyPath - * @returns {Any} - */ - - - function getByKeyPath(obj, keyPath) { - if (keyPath === '') { - return obj; - } - - var period = keyPath.indexOf('.'); - - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1)); - } - - return obj[unescapeKeyPathComponent(keyPath)]; - } - /** - * - * @param {PlainObject} obj - * @param {string} keyPath - * @param {Any} value - * @returns {Any} - */ - - - function setAtKeyPath(obj, keyPath, value) { - if (keyPath === '') { - return value; - } - - var period = keyPath.indexOf('.'); - - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return setAtKeyPath(innerObj, keyPath.slice(period + 1), value); - } - - obj[unescapeKeyPathComponent(keyPath)] = value; - return obj; - } - /** - * - * @param {external:JSON} value - * @returns {"null"|"array"|"undefined"|"boolean"|"number"|"string"| - * "object"|"symbol"} - */ - - - function getJSONType(value) { - return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value); - } - - var keys = Object.keys, - isArray = Array.isArray, - hasOwn$1 = {}.hasOwnProperty, - internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric']; - /** - * Handle plain object revivers first so reference setting can use - * revived type (e.g., array instead of object); assumes revived - * has same structure or will otherwise break subsequent references. - * @param {PlainObjectType} a - * @param {PlainObjectType} b - * @returns {1|-1|boolean} - */ - - function nestedPathsFirst(a, b) { - if (a.keypath === '') { - return -1; - } - - var as = a.keypath.match(/\./g) || 0; - var bs = b.keypath.match(/\./g) || 0; - - if (as) { - as = as.length; - } - - if (bs) { - bs = bs.length; - } - - return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath; - } - /** - * An instance of this class can be used to call `stringify()` and `parse()`. - * Typeson resolves cyclic references by default. Can also be extended to - * support custom types using the register() method. - * - * @class - * @param {{cyclic: boolean}} [options] - if cyclic (default true), - * cyclic references will be handled gracefully. - */ - - - var Typeson = - /*#__PURE__*/ - function () { - function Typeson(options) { - _classCallCheck(this, Typeson); - - this.options = options; // Replacers signature: replace (value). Returns falsy if not - // replacing. Otherwise ['Date', value.getTime()] - - this.plainObjectReplacers = []; - this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}]. - // Sample: [{'Date': value => new Date(value)}, {plain: false}] - - this.revivers = {}; - /** Types registered via `register()`. */ - - this.types = {}; - } - /** - * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON - */ - - /** - * @callback JSONReplacer - * @param {""|string} key - * @param {JSON} value - * @returns {number|string|boolean|null|PlainObject|undefined} - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter - */ - - /** - * Serialize given object to Typeson. - * Initial arguments work identical to those of `JSON.stringify`. - * The `replacer` argument has nothing to do with our replacers. - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {string|Promise} Promise resolves to a string - */ - - - _createClass(Typeson, [{ - key: "stringify", - value: function stringify(obj, replacer, space, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - stringification: true - }); - var encapsulated = this.encapsulate(obj, null, opts); - - if (isArray(encapsulated)) { - return JSON.stringify(encapsulated[0], replacer, space); - } - - return encapsulated.then(function (res) { - return JSON.stringify(res, replacer, space); - }); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {string} - */ - - }, { - key: "stringifySync", - value: function stringifySync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {Promise} - */ - - }, { - key: "stringifyAsync", - value: function stringifyAsync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Parse Typeson back into an obejct. - * Initial arguments works identical to those of `JSON.parse()`. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - - }, { - key: "parse", - value: function parse(text, reviver, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - parse: true - }); - return this.revive(JSON.parse(text, reviver), opts); - } - /** - * Also sync but throws on non-sync result. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - - }, { - key: "parseSync", - value: function parseSync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {Promise} Resolves to `external:JSON` - */ - - }, { - key: "parseAsync", - value: function parseAsync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * - * @param {Any} obj - * @param {object} stateObj - * @param {object} [opts={}] - * @returns {string[]|false} - */ - - }, { - key: "specialTypeNames", - value: function specialTypeNames(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - opts.returnTypeNames = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * - * @param {Any} obj - * @param {PlainObject} stateObj - * @param {PlainObject} [opts={}] - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - - }, { - key: "rootTypeName", - value: function rootTypeName(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - opts.iterateNone = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * Encapsulate a complex object into a plain Object by replacing - * registered types with plain objects representing the types data. - * - * This method is used internally by `Typeson.stringify()`. - * @param {Any} obj - Object to encapsulate. - * @param {PlainObject} stateObj - * @param {PlainObject} opts - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - - }, { - key: "encapsulate", - value: function encapsulate(obj, stateObj, opts) { - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts = opts, - sync = _opts.sync; - var that = this, - types = {}, - refObjs = [], - // For checking cyclic references - refKeys = [], - // For checking cyclic references - promisesDataRoot = []; // Clone the object deeply while at the same time replacing any - // special types or cyclic reference: - - var cyclic = 'cyclic' in opts ? opts.cyclic : true; - var _opts2 = opts, - encapsulateObserver = _opts2.encapsulateObserver; - - var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot); - /** - * - * @param {Any} ret - * @returns {GenericArray|PlainObject|string|false} - */ - - - function finish(ret) { - // Add `$types` to result only if we ever bumped into a - // special type (or special case where object has own `$types`) - var typeNames = Object.values(types); - - if (opts.iterateNone) { - if (typeNames.length) { - return typeNames[0]; - } - - return Typeson.getJSONType(ret); - } - - if (typeNames.length) { - if (opts.returnTypeNames) { - return _toConsumableArray(new Set(typeNames)); - } // Special if array (or a primitive) was serialized - // because JSON would ignore custom `$types` prop on it - - - if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its - // own `$types` property (to avoid ambiguity) - hasOwn$1.call(ret, '$types')) { - ret = { - $: ret, - $types: { - $: types - } - }; - } else { - ret.$types = types; - } // No special types - - } else if (isObject(ret) && hasOwn$1.call(ret, '$types')) { - ret = { - $: ret, - $types: true - }; - } - - if (opts.returnTypeNames) { - return false; - } - - return ret; - } - /** - * - * @param {Any} ret - * @param {GenericArray} promisesData - * @returns {Promise} - */ - - - function checkPromises(_x, _x2) { - return _checkPromises.apply(this, arguments); - } - /** - * - * @param {object} stateObj - * @param {object} ownKeysObj - * @param {function} cb - * @returns {undefined} - */ - - - function _checkPromises() { - _checkPromises = _asyncToGenerator( - /*#__PURE__*/ - regeneratorRuntime.mark(function _callee2(ret, promisesData) { - var promResults; - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return Promise.all(promisesData.map(function (pd) { - return pd[1].p; - })); - - case 2: - promResults = _context2.sent; - _context2.next = 5; - return Promise.all(promResults.map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator( - /*#__PURE__*/ - regeneratorRuntime.mark(function _callee(promResult) { - var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic, stateObj, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2; - - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - newPromisesData = []; - _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0]; - _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic = _prData[2], stateObj = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6]; - encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType); - isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself - // returns a `Typeson.Promise` - - if (!(keyPath && isTypesonPromise)) { - _context.next = 11; - break; - } - - _context.next = 8; - return encaps.p; - - case 8: - encaps2 = _context.sent; - parentObj[key] = encaps2; - return _context.abrupt("return", checkPromises(ret, newPromisesData)); - - case 11: - if (keyPath) { - parentObj[key] = encaps; - } else if (isTypesonPromise) { - ret = encaps.p; - } else { - // If this is itself a `Typeson.Promise` (because the - // original value supplied was a `Promise` or - // because the supplied custom type value resolved - // to one), returning it below will be fine since - // a `Promise` is expected anyways given current - // config (and if not a `Promise`, it will be ready - // as the resolve value) - ret = encaps; - } - - return _context.abrupt("return", checkPromises(ret, newPromisesData)); - - case 13: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function (_x3) { - return _ref.apply(this, arguments); - }; - }())); - - case 5: - return _context2.abrupt("return", ret); - - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - return _checkPromises.apply(this, arguments); - } - - function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) { - Object.assign(stateObj, ownKeysObj); - var vals = internalStateObjPropsToIgnore.map(function (prop) { - var tmp = stateObj[prop]; - delete stateObj[prop]; - return tmp; - }); // eslint-disable-next-line callback-return - - cb(); - internalStateObjPropsToIgnore.forEach(function (prop, i) { - stateObj[prop] = vals[i]; - }); - } - /** - * - * @param {string} keypath - * @param {Any} value - * @param {boolean} cyclic - * @param {PlainObject} stateObj - * @param {boolean} promisesData - * @param {boolean} resolvingTypesonPromise - * @param {string} detectedType - * @returns {Any} - */ - - - function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) { - var ret; - var observerData = {}; - - var $typeof = _typeof(value); - - var runObserver = encapsulateObserver ? function (obj) { - var type = detectedType || stateObj.type || Typeson.getJSONType(value); - encapsulateObserver(Object.assign(obj || observerData, { - keypath: keypath, - value: value, - cyclic: cyclic, - stateObj: stateObj, - promisesData: promisesData, - resolvingTypesonPromise: resolvingTypesonPromise, - awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise) - }, { - type: type - })); - } : null; - - if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) { - if (value === undefined || $typeof === 'number' && (isNaN(value) || value === -Infinity || value === Infinity)) { - if (stateObj.replaced) { - ret = value; - } else { - ret = replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver); - } - - if (ret !== value) { - observerData = { - replaced: ret - }; - } - } else { - ret = value; - } - - if (runObserver) { - runObserver(); - } - - return ret; - } - - if (value === null) { - if (runObserver) { - runObserver(); - } - - return value; - } - - if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') { - // Options set to detect cyclic references and be able - // to rewrite them. - var refIndex = refObjs.indexOf(value); - - if (refIndex < 0) { - if (cyclic === true) { - refObjs.push(value); - refKeys.push(keypath); - } - } else { - types[keypath] = '#'; - - if (runObserver) { - runObserver({ - cyclicKeypath: refKeys[refIndex] - }); - } - - return '#' + refKeys[refIndex]; - } - } - - var isPlainObj = isPlainObject(value); - var isArr = isArray(value); - var replaced = // Running replace will cause infinite loop as will test - // positive again - (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object - // replacers, don't try finding a replacer - value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver); - var clone; - - if (replaced !== value) { - ret = replaced; - observerData = { - replaced: replaced - }; - } else { - // eslint-disable-next-line no-lonely-if - if (keypath === '' && hasConstructorOf(value, TypesonPromise)) { - promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]); - ret = value; - } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') { - clone = new Array(value.length); - observerData = { - clone: clone - }; - } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') { - clone = {}; - - if (stateObj.addLength) { - clone.length = value.length; - } - - observerData = { - clone: clone - }; - } else { - ret = value; // Only clone vanilla objects and arrays - } - } - - if (runObserver) { - runObserver(); - } - - if (opts.iterateNone) { - return clone || ret; - } - - if (!clone) { - return ret; - } // Iterate object or array - - - if (stateObj.iterateIn) { - var _loop = function _loop(key) { - var ownKeysObj = { - ownKeys: hasOwn$1.call(value, key) - }; - - _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () { - var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key); - - var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise); - - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]); - } else if (val !== undefined) { - clone[key] = val; - } - }); - }; - - // eslint-disable-next-line guard-for-in - for (var key in value) { - _loop(key); - } - - if (runObserver) { - runObserver({ - endIterateIn: true, - end: true - }); - } - } else { - // Note: Non-indexes on arrays won't survive stringify so - // somewhat wasteful for arrays, but so too is iterating - // all numeric indexes on sparse arrays when not wanted - // or filtering own keys for positive integers - keys(value).forEach(function (key) { - var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key); - var ownKeysObj = { - ownKeys: true - }; - - _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () { - var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise); - - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]); - } else if (val !== undefined) { - clone[key] = val; - } - }); - }); - - if (runObserver) { - runObserver({ - endIterateOwn: true, - end: true - }); - } - } // Iterate array for non-own numeric properties (we can't - // replace the prior loop though as it iterates non-integer - // keys) - - - if (stateObj.iterateUnsetNumeric) { - var vl = value.length; - - var _loop2 = function _loop2(i) { - if (!(i in value)) { - // No need to escape numeric - var kp = keypath + (keypath ? '.' : '') + i; - var ownKeysObj = { - ownKeys: false - }; - - _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () { - var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise); - - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]); - } else if (val !== undefined) { - clone[i] = val; - } - }); - } - }; - - for (var i = 0; i < vl; i++) { - _loop2(i); - } - - if (runObserver) { - runObserver({ - endIterateUnsetNumeric: true, - end: true - }); - } - } - - return clone; - } - /** - * - * @param {string} keypath - * @param {Any} value - * @param {PlainObject} stateObj - * @param {GenericArray} promisesData - * @param {boolean} plainObject - * @param {boolean} resolvingTypesonPromise - * @param {function} [runObserver] - * @returns {*} - */ - - - function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) { - // Encapsulate registered types - var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers; - var i = replacers.length; - - while (i--) { - var replacer = replacers[i]; - - if (replacer.test(value, stateObj)) { - var type = replacer.type; - - if (that.revivers[type]) { - // Record the type only if a corresponding reviver - // exists. This is to support specs where only - // replacement is done. - // For example, ensuring deep cloning of the object, - // or replacing a type to its equivalent without - // the need to revive it. - var existing = types[keypath]; // type can comprise an array of types (see test - // "should support intermediate types") - - types[keypath] = existing ? [type].concat(existing) : type; - } - - Object.assign(stateObj, { - type: type, - replaced: true - }); - - if ((sync || !replacer.replaceAsync) && !replacer.replace) { - if (runObserver) { - runObserver({ - typeDetected: true - }); - } - - return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type); - } - - if (runObserver) { - runObserver({ - replacing: true - }); - } // Now, also traverse the result in case it contains its - // own types to replace - - - var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync'; - return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type); - } - } - - return value; - } - - return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () { - throw new TypeError('Sync method requested but async result obtained'); - }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () { - throw new TypeError('Async method requested but sync result obtained'); - }() // If this is a synchronous request for stringification, yet - // a promise is the result, we don't want to resolve leading - // to an async result, so we return an array to avoid - // ambiguity - : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - - }, { - key: "encapsulateSync", - value: function encapsulateSync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - - }, { - key: "encapsulateAsync", - value: function encapsulateAsync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Revive an encapsulated object. - * This method is used internally by `Typeson.parse()`. - * @param {object} obj - Object to revive. If it has `$types` member, the - * properties that are listed there will be replaced with its true type - * instead of just plain objects. - * @param {object} opts - * @throws TypeError If mismatch between sync/async type and result - * @returns {Promise|*} If async, returns a Promise that resolves to `*` - */ - - }, { - key: "revive", - value: function revive(obj, opts) { - var types = obj && obj.$types; // No type info added. Revival not needed. - - if (!types) { - return obj; - } // Object happened to have own `$types` property but with - // no actual types, so we unescape and return that object - - - if (types === true) { - return obj.$; - } - - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts3 = opts, - sync = _opts3.sync; - var keyPathResolutions = []; - var stateObj = {}; - var ignore$Types = true; // Special when root object is not a trivial Object, it will - // be encapsulated in `$`. It will also be encapsulated in - // `$` if it has its own `$` property to avoid ambiguity - - if (types.$ && isPlainObject(types.$)) { - obj = obj.$; - types = types.$; - ignore$Types = false; - } - - var that = this; - /** - * @callback RevivalReducer - * @param {Any} value - * @param {string} type - * @returns {Any} - */ - - /** - * - * @param {string} type - * @param {Any} val - * @returns {[type]} [description] - */ - - function executeReviver(type, val) { - var _ref2 = that.revivers[type] || [], - _ref3 = _slicedToArray(_ref2, 1), - reviver = _ref3[0]; - - if (!reviver) { - throw new Error('Unregistered type: ' + type); - } // Only `sync` expected here, as problematic async would - // be missing both `reviver` and `reviverAsync`, and - // encapsulation shouldn't have added types, so - // should have made an early exit - - - if (sync && !('revive' in reviver)) { - // Just return value as is - return val; - } - - return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj); - } - /** - * - * @returns {void|TypesonPromise} - */ - - - function revivePlainObjects() { - // const references = []; - // const reviveTypes = []; - var plainObjectTypes = []; - Object.entries(types).forEach(function (_ref4) { - var _ref5 = _slicedToArray(_ref4, 2), - keypath = _ref5[0], - type = _ref5[1]; - - if (type === '#') { - /* - references.push({ - keypath, - reference: getByKeyPath(obj, keypath) - }); - */ - return; - } - - [].concat(type).forEach(function (type) { - var _ref6 = that.revivers[type] || [null, {}], - _ref7 = _slicedToArray(_ref6, 2), - plain = _ref7[1].plain; - - if (!plain) { - // reviveTypes.push({keypath, type}); - return; - } - - plainObjectTypes.push({ - keypath: keypath, - type: type - }); - delete types[keypath]; // Avoid repeating - }); - }); - - if (!plainObjectTypes.length) { - return undefined; - } // console.log(plainObjectTypes.sort(nestedPathsFirst)); - - /** - * @typedef {PlainObject} PlainObjectType - * @property {string} keypath - * @property {string} type - */ - - - return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref8) { - var keypath = _ref8.keypath, - type = _ref8.type; - - if (isThenable(possibleTypesonPromise)) { - return possibleTypesonPromise.then(function (val) { - return reducer(val, { - keypath: keypath, - type: type - }); - }); - } // console.log('obj', JSON.stringify(keypath), obj); - - - var val = getByKeyPath(obj, keypath); - val = executeReviver(type, val); - - if (hasConstructorOf(val, TypesonPromise)) { - return val.then(function (v) { - var newVal = setAtKeyPath(obj, keypath, v); - - if (newVal === v) { - obj = newVal; - } - - return undefined; - }); - } - - var newVal = setAtKeyPath(obj, keypath, val); - - if (newVal === val) { - obj = newVal; - } - - return undefined; - }, undefined // This argument must be explicit - ); // references.forEach(({keypath, reference}) => {}); - // reviveTypes.sort(nestedPathsFirst).forEach(() => {}); - } - - var revivalPromises = []; - /** - * - * @param {string} keypath - * @param {Any} value - * @param {?(Array|object)} target - * @param {Array|object} [clone] - * @param {string} [key] - * @returns {Any} - */ - - function _revive(keypath, value, target, clone, key) { - if (ignore$Types && keypath === '$types') { - return undefined; - } - - var type = types[keypath]; - var isArr = isArray(value); - - if (isArr || isPlainObject(value)) { - var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array - - - keys(value).forEach(function (k) { - var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k); - - var set = function set(v) { - if (hasConstructorOf(v, Undefined)) { - _clone[k] = undefined; - } else if (v !== undefined) { - _clone[k] = v; - } - - return v; - }; - - if (hasConstructorOf(val, TypesonPromise)) { - revivalPromises.push(val.then(function (ret) { - return set(ret); - })); - } else { - set(val); - } - }); - value = _clone; // Try to resolve cyclic reference as soon as available - - while (keyPathResolutions.length) { - var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4), - _target = _keyPathResolutions$[0], - keyPath = _keyPathResolutions$[1], - _clone2 = _keyPathResolutions$[2], - k = _keyPathResolutions$[3]; - - var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or - // `undefined` - - if (val !== undefined) { - _clone2[k] = val; - } else { - break; - } - - keyPathResolutions.splice(0, 1); - } - } - - if (!type) { - return value; - } - - if (type === '#') { - var _ret = getByKeyPath(target, value.slice(1)); - - if (_ret === undefined) { - // Cyclic reference not yet available - keyPathResolutions.push([target, value.slice(1), clone, key]); - } - - return _ret; - } // `type` can be an array here - - - return [].concat(type).reduce(function reducer(val, typ) { - if (hasConstructorOf(val, TypesonPromise)) { - return val.then(function (v) { - // TypesonPromise here too - return reducer(v, typ); - }); - } - - return executeReviver(typ, val); - }, value); - } - /** - * - * @param {Any} retrn - * @returns {undefined|Any} - */ - - - function checkUndefined(retrn) { - return hasConstructorOf(retrn, Undefined) ? undefined : retrn; - } - - var possibleTypesonPromise = revivePlainObjects(); - var ret; - - if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) { - ret = possibleTypesonPromise.then(function () { - return obj; - }); - } else { - ret = _revive('', obj, null); - - if (revivalPromises.length) { - // Ensure children resolved - ret = TypesonPromise.resolve(ret).then(function (r) { - return TypesonPromise.all([// May be a TypesonPromise or not - r].concat(revivalPromises)); - }).then(function (_ref9) { - var _ref10 = _slicedToArray(_ref9, 1), - r = _ref10[0]; - - return r; - }); - } - } - - return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () { - throw new TypeError('Sync method requested but async result obtained'); - }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () { - throw new TypeError('Async method requested but sync result obtained'); - }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {object} opts - * @returns {Any} - */ - - }, { - key: "reviveSync", - value: function reviveSync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {Any} obj - * @param {object} opts - * @returns {Promise} Resolves to `*` - */ - - }, { - key: "reviveAsync", - value: function reviveAsync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Register types. - * For examples on how to use this method, see - * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}. - * @param {object.[]} typeSpecSets - Types and - * their functions [test, encapsulate, revive]; - * @param {object} opts - * @returns {Typeson} - */ - - }, { - key: "register", - value: function register(typeSpecSets, opts) { - opts = opts || {}; - [].concat(typeSpecSets).forEach(function R(typeSpec) { - var _this = this; - - // Allow arrays of arrays of arrays... - if (isArray(typeSpec)) { - return typeSpec.map(function (typSpec) { - return R.call(_this, typSpec); - }); - } - - typeSpec && keys(typeSpec).forEach(function (typeId) { - if (typeId === '#') { - throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects'); - } else if (Typeson.JSON_TYPES.includes(typeId)) { - throw new TypeError('Plain JSON object types are reserved as type names'); - } - - var spec = typeSpec[typeId]; - var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers; - var existingReplacer = replacers.filter(function (r) { - return r.type === typeId; - }); - - if (existingReplacer.length) { - // Remove existing spec and replace with this one. - replacers.splice(replacers.indexOf(existingReplacer[0]), 1); - delete this.revivers[typeId]; - delete this.types[typeId]; - } - - if (typeof spec === 'function') { - // Support registering just a class without replacer/reviver - var Class = spec; - spec = { - test: function test(x) { - return x && x.constructor === Class; - }, - replace: function replace(x) { - return _objectSpread2({}, x); - }, - revive: function revive(x) { - return Object.assign(Object.create(Class.prototype), x); - } - }; - } else if (isArray(spec)) { - var _spec = spec, - _spec2 = _slicedToArray(_spec, 3), - test = _spec2[0], - replace = _spec2[1], - revive = _spec2[2]; - - spec = { - test: test, - replace: replace, - revive: revive - }; - } - - if (!spec || !spec.test) { - return; - } - - var replacerObj = { - type: typeId, - test: spec.test.bind(spec) - }; - - if (spec.replace) { - replacerObj.replace = spec.replace.bind(spec); - } - - if (spec.replaceAsync) { - replacerObj.replaceAsync = spec.replaceAsync.bind(spec); - } - - var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Infinity; - - if (spec.testPlainObjects) { - this.plainObjectReplacers.splice(start, 0, replacerObj); - } else { - this.nonplainObjectReplacers.splice(start, 0, replacerObj); - } // Todo: We might consider a testAsync type - - - if (spec.revive || spec.reviveAsync) { - var reviverObj = {}; - - if (spec.revive) { - reviverObj.revive = spec.revive.bind(spec); - } - - if (spec.reviveAsync) { - reviverObj.reviveAsync = spec.reviveAsync.bind(spec); - } - - this.revivers[typeId] = [reviverObj, { - plain: spec.testPlainObjects - }]; - } // Record to be retrieved via public types property. - - - this.types[typeId] = spec; - }, this); - }, this); - return this; - } - }]); - - return Typeson; - }(); - /** - * We keep this function minimized so if using two instances of this - * library, where one is minimized and one is not, it will still work - * with `hasConstructorOf`. - * @class - */ - - - var Undefined = function Undefined() { - _classCallCheck(this, Undefined); - }; // eslint-disable-line space-before-blocks - - - Undefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values - // To insist `undefined` should be added - - Typeson.Undefined = Undefined; // To support async encapsulation/stringification - - Typeson.Promise = TypesonPromise; // Some fundamental type-checking utilities - - Typeson.isThenable = isThenable; - Typeson.toStringTag = toStringTag; - Typeson.hasConstructorOf = hasConstructorOf; - Typeson.isObject = isObject; - Typeson.isPlainObject = isPlainObject; - Typeson.isUserObject = isUserObject; - Typeson.escapeKeyPathComponent = escapeKeyPathComponent; - Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent; - Typeson.getByKeyPath = getByKeyPath; - Typeson.getJSONType = getJSONType; - Typeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object']; - - return Typeson; - - }))); - }); - - var structuredCloning = createCommonjsModule(function (module, exports) { - !function(e,t){module.exports=t();}(commonjsGlobal,(function(){function _typeof$1(e){return (_typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck$1(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$1(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r-1){var n=e[unescapeKeyPathComponent(t.slice(0,r))];return void 0===n?void 0:getByKeyPath(n,t.slice(r+1))}return e[unescapeKeyPathComponent(t)]}function setAtKeyPath(e,t,r){if(""===t)return r;var n=t.indexOf(".");return n>-1?setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0,n))],t.slice(n+1),r):(e[unescapeKeyPathComponent(t)]=r,e)}function _await(e,t,r){return r?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var o=Object.keys,a=Array.isArray,c={}.hasOwnProperty,u=["type","replaced","iterateIn","iterateUnsetNumeric"];function _async(e){return function(){for(var t=[],r=0;rn?-1:rt.keypath}var s=function(){function Typeson(e){_classCallCheck(this,Typeson),this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={};}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}(Typeson,[{key:"stringify",value:function stringify(e,t,r,n){n=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),n),{},{stringification:!0});var i=this.encapsulate(e,null,n);return a(i)?JSON.stringify(i[0],t,r):i.then((function(e){return JSON.stringify(e,t,r)}))}},{key:"stringifySync",value:function stringifySync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!0}))}},{key:"stringifyAsync",value:function stringifyAsync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!1}))}},{key:"parse",value:function parse(e,t,r){return r=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),r),{},{parse:!0}),this.revive(JSON.parse(e,t),r)}},{key:"parseSync",value:function parseSync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"parseAsync",value:function parseAsync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"specialTypeNames",value:function specialTypeNames(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.returnTypeNames=!0,this.encapsulate(e,t,r)}},{key:"rootTypeName",value:function rootTypeName(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.iterateNone=!0,this.encapsulate(e,t,r)}},{key:"encapsulate",value:function encapsulate(t,r,n){var i=_async((function(t,r){return _await(Promise.all(r.map((function(e){return e[1].p}))),(function(n){return _await(Promise.all(n.map(_async((function(n){var o=!1,a=[],c=_slicedToArray(r.splice(0,1),1),u=_slicedToArray(c[0],7),s=u[0],f=u[2],l=u[3],p=u[4],y=u[5],v=u[6],b=_encapsulate(s,n,f,l,a,!0,v),d=hasConstructorOf(b,e);return function _invoke(e,t){var r=e();return r&&r.then?r.then(t):t(r)}((function(){if(s&&d)return _await(b.p,(function(e){return p[y]=e,o=!0,i(t,a)}))}),(function(e){return o?e:(s?p[y]=b:t=d?b.p:b,i(t,a))}))})))),(function(){return t}))}))})),s=(n=_objectSpread2(_objectSpread2({sync:!0},this.options),n)).sync,f=this,l={},p=[],y=[],v=[],b=!("cyclic"in n)||n.cyclic,d=n.encapsulateObserver,h=_encapsulate("",t,b,r||{},v);function finish(e){var t=Object.values(l);if(n.iterateNone)return t.length?t[0]:Typeson.getJSONType(e);if(t.length){if(n.returnTypeNames)return _toConsumableArray(new Set(t));e&&isPlainObject(e)&&!c.call(e,"$types")?e.$types=l:e={$:e,$types:{$:l}};}else isObject(e)&&c.call(e,"$types")&&(e={$:e,$types:!0});return !n.returnTypeNames&&e}function _adaptBuiltinStateObjectProperties(e,t,r){Object.assign(e,t);var n=u.map((function(t){var r=e[t];return delete e[t],r}));r(),u.forEach((function(t,r){e[t]=n[r];}));}function _encapsulate(t,r,i,u,s,v,b){var h,g={},m=_typeof(r),O=d?function(n){var o=b||u.type||Typeson.getJSONType(r);d(Object.assign(n||g,{keypath:t,value:r,cyclic:i,stateObj:u,promisesData:s,resolvingTypesonPromise:v,awaitingTypesonPromise:hasConstructorOf(r,e)},{type:o}));}:null;if(["string","boolean","number","undefined"].includes(m))return void 0===r||Number.isNaN(r)||r===Number.NEGATIVE_INFINITY||r===Number.POSITIVE_INFINITY?(h=u.replaced?r:replace(t,r,u,s,!1,v,O))!==r&&(g={replaced:h}):h=r,O&&O(),h;if(null===r)return O&&O(),r;if(i&&!u.iterateIn&&!u.iterateUnsetNumeric&&r&&"object"===_typeof(r)){var _=p.indexOf(r);if(!(_<0))return l[t]="#",O&&O({cyclicKeypath:y[_]}),"#"+y[_];!0===i&&(p.push(r),y.push(t));}var j,S=isPlainObject(r),T=a(r),w=(S||T)&&(!f.plainObjectReplacers.length||u.replaced)||u.iterateIn?r:replace(t,r,u,s,S||T,null,O);if(w!==r?(h=w,g={replaced:w}):""===t&&hasConstructorOf(r,e)?(s.push([t,r,i,u,void 0,void 0,u.type]),h=r):T&&"object"!==u.iterateIn||"array"===u.iterateIn?(j=new Array(r.length),g={clone:j}):(["function","symbol"].includes(_typeof(r))||"toJSON"in r||hasConstructorOf(r,e)||hasConstructorOf(r,Promise)||hasConstructorOf(r,ArrayBuffer))&&!S&&"object"!==u.iterateIn?h=r:(j={},u.addLength&&(j.length=r.length),g={clone:j}),O&&O(),n.iterateNone)return j||h;if(!j)return h;if(u.iterateIn){var A=function _loop(n){var o={ownKeys:c.call(r,n)};_adaptBuiltinStateObjectProperties(u,o,(function(){var o=t+(t?".":"")+escapeKeyPathComponent(n),a=_encapsulate(o,r[n],Boolean(i),u,s,v);hasConstructorOf(a,e)?s.push([o,a,Boolean(i),u,j,n,u.type]):void 0!==a&&(j[n]=a);}));};for(var P in r)A(P);O&&O({endIterateIn:!0,end:!0});}else o(r).forEach((function(n){var o=t+(t?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(u,{ownKeys:!0},(function(){var t=_encapsulate(o,r[n],Boolean(i),u,s,v);hasConstructorOf(t,e)?s.push([o,t,Boolean(i),u,j,n,u.type]):void 0!==t&&(j[n]=t);}));})),O&&O({endIterateOwn:!0,end:!0});if(u.iterateUnsetNumeric){for(var I=r.length,C=function _loop2(n){if(!(n in r)){var o=t+(t?".":"")+n;_adaptBuiltinStateObjectProperties(u,{ownKeys:!1},(function(){var t=_encapsulate(o,void 0,Boolean(i),u,s,v);hasConstructorOf(t,e)?s.push([o,t,Boolean(i),u,j,n,u.type]):void 0!==t&&(j[n]=t);}));}},N=0;N>2],o+=O[(3&n[a])<<4|n[a+1]>>4],o+=O[(15&n[a+1])<<2|n[a+2]>>6],o+=O[63&n[a+2]];return i%3==2?o=o.slice(0,-1)+"=":i%3==1&&(o=o.slice(0,-2)+"=="),o},T=function decode(e){var t,r,n,i,o=e.length,a=.75*e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);for(var u=new ArrayBuffer(a),s=new Uint8Array(u),f=0;f>4,s[c++]=(15&r)<<4|n>>2,s[c++]=(3&n)<<6|63&i;return u},w={arraybuffer:{test:function test(e){return "ArrayBuffer"===s.toStringTag(e)},replace:function replace(e,t){t.buffers||(t.buffers=[]);var r=t.buffers.indexOf(e);return r>-1?{index:r}:(t.buffers.push(e),S(e))},revive:function revive(e,t){if(t.buffers||(t.buffers=[]),"object"===_typeof$1(e))return t.buffers[e.index];var r=T(e);return t.buffers.push(r),r}}},A="undefined"==typeof self?commonjsGlobal:self,P={};["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"].forEach((function(e){var t=e,r=A[t];r&&(P[e.toLowerCase()]={test:function test(e){return s.toStringTag(e)===t},replace:function replace(e,t){var r=e.buffer,n=e.byteOffset,i=e.length;t.buffers||(t.buffers=[]);var o=t.buffers.indexOf(r);return o>-1?{index:o,byteOffset:n,length:i}:(t.buffers.push(r),{encoded:S(r),byteOffset:n,length:i})},revive:function revive(e,t){t.buffers||(t.buffers=[]);var n,i=e.byteOffset,o=e.length,a=e.encoded,c=e.index;return "index"in e?n=t.buffers[c]:(n=T(a),t.buffers.push(n)),new r(n,i,o)}});}));var I={dataview:{test:function test(e){return "DataView"===s.toStringTag(e)},replace:function replace(e,t){var r=e.buffer,n=e.byteOffset,i=e.byteLength;t.buffers||(t.buffers=[]);var o=t.buffers.indexOf(r);return o>-1?{index:o,byteOffset:n,byteLength:i}:(t.buffers.push(r),{encoded:S(r),byteOffset:n,byteLength:i})},revive:function revive(e,t){t.buffers||(t.buffers=[]);var r,n=e.byteOffset,i=e.byteLength,o=e.encoded,a=e.index;return "index"in e?r=t.buffers[a]:(r=T(o),t.buffers.push(r)),new DataView(r,n,i)}}},C={IntlCollator:{test:function test(e){return s.hasConstructorOf(e,Intl.Collator)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.Collator(e.locale,e)}},IntlDateTimeFormat:{test:function test(e){return s.hasConstructorOf(e,Intl.DateTimeFormat)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.DateTimeFormat(e.locale,e)}},IntlNumberFormat:{test:function test(e){return s.hasConstructorOf(e,Intl.NumberFormat)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.NumberFormat(e.locale,e)}}};function string2arraybuffer(e){for(var t=new Uint8Array(e.length),r=0;r> 2]; - base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4]; - base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6]; - base64 += chars[bytes[_i + 2] & 63]; - } - - if (len % 3 === 2) { - base64 = base64.slice(0, -1) + '='; - } else if (len % 3 === 1) { - base64 = base64.slice(0, -2) + '=='; - } - - return base64; - }; - /** - * @param {string} base64 - * @returns {ArrayBuffer} - */ - - var decode = function decode(base64) { - var len = base64.length; - var bufferLength = base64.length * 0.75; - var p = 0; - var encoded1, encoded2, encoded3, encoded4; - - if (base64[base64.length - 1] === '=') { - bufferLength--; - - if (base64[base64.length - 2] === '=') { - bufferLength--; - } - } - - var arraybuffer = new ArrayBuffer(bufferLength), - bytes = new Uint8Array(arraybuffer); - - for (var _i2 = 0; _i2 < len; _i2 += 4) { - encoded1 = lookup[base64.codePointAt(_i2)]; - encoded2 = lookup[base64.codePointAt(_i2 + 1)]; - encoded3 = lookup[base64.codePointAt(_i2 + 2)]; - encoded4 = lookup[base64.codePointAt(_i2 + 3)]; - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; - } - - return arraybuffer; - }; - - /* eslint-env browser, node */ - var _global = typeof self === 'undefined' ? global : self; - var exportObj = {}; - [ - 'Int8Array', - 'Uint8Array', - 'Uint8ClampedArray', - 'Int16Array', - 'Uint16Array', - 'Int32Array', - 'Uint32Array', - 'Float32Array', - 'Float64Array' - ].forEach(function (typeName) { - var arrType = typeName; - var TypedArray = _global[arrType]; - if (TypedArray) { - exportObj[typeName.toLowerCase() + "2"] = { - test: function (x) { return typeson.toStringTag(x) === arrType; }, - replace: function (_a) { - var buffer = _a.buffer, byteOffset = _a.byteOffset, length = _a.length; - return { - buffer: buffer, - byteOffset: byteOffset, - length: length - }; - }, - revive: function (b64Obj) { - var buffer = b64Obj.buffer, byteOffset = b64Obj.byteOffset, length = b64Obj.length; - return new TypedArray(buffer, byteOffset, length); - } - }; - } - }); - - var arrayBuffer = { - arraybuffer: { - test: function (x) { return typeson.toStringTag(x) === 'ArrayBuffer'; }, - replace: function (b) { - return encode(b, 0, b.byteLength); - }, - revive: function (b64) { - var buffer = decode(b64); - return buffer; - } - } - }; - // See also typed-arrays! - - var TSON = new typeson().register(structuredCloning); - var readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only. - var blobsToAwait = []; - var blobsToAwaitPos = 0; - // Need to patch encapsulateAsync as it does not work as of typeson 5.8.2 - // Also, current version of typespn-registry-1.0.0-alpha.21 does not - // encapsulate/revive Blobs correctly (fails one of the unit tests in - // this library (test 'export-format')) - TSON.register([ - arrayBuffer, - exportObj, { - blob2: { - test: function (x) { return typeson.toStringTag(x) === 'Blob'; }, - replace: function (b) { - if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob - throw new Error('The Blob is closed'); - } - if (readBlobsSynchronously) { - var data = readBlobSync(b, 'binary'); - var base64 = encode(data, 0, data.byteLength); - return { - type: b.type, - data: base64 - }; - } - else { - blobsToAwait.push(b); // This will also make TSON.mustFinalize() return true. - var result = { - type: b.type, - data: { start: blobsToAwaitPos, end: blobsToAwaitPos + b.size } - }; - blobsToAwaitPos += b.size; - return result; - } - }, - finalize: function (b, ba) { - b.data = encode(ba, 0, ba.byteLength); - }, - revive: function (_a) { - var type = _a.type, data = _a.data; - return new Blob([decode(data)], { type: type }); - } - } - } - ]); - TSON.mustFinalize = function () { return blobsToAwait.length > 0; }; - TSON.finalize = function (items) { return __awaiter(void 0, void 0, void 0, function () { - var allChunks, _i, items_1, item, types, arrayType, keyPath, typeName, typeSpec, b; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, readBlobAsync(new Blob(blobsToAwait), 'binary')]; - case 1: - allChunks = _a.sent(); - if (items) { - for (_i = 0, items_1 = items; _i < items_1.length; _i++) { - item = items_1[_i]; - // Manually go through all "blob" types in the result - // and lookup the data slice they point at. - if (item.$types) { - types = item.$types; - arrayType = types.$; - if (arrayType) - types = types.$; - for (keyPath in types) { - typeName = types[keyPath]; - typeSpec = TSON.types[typeName]; - if (typeSpec && typeSpec.finalize) { - b = Dexie__default["default"].getByKeyPath(item, arrayType ? "$." + keyPath : keyPath); - typeSpec.finalize(b, allChunks.slice(b.start, b.end)); - } - } - } - } - } - // Free up memory - blobsToAwait = []; - return [2 /*return*/]; - } - }); - }); }; - - var DEFAULT_ROWS_PER_CHUNK = 2000; - function exportDB(db, options) { - return __awaiter(this, void 0, void 0, function () { - function exportAll() { - return __awaiter(this, void 0, void 0, function () { - var tablesRowCounts, emptyExportJson, posEndDataArray, firstJsonSlice, filter, _loop_1, _i, tables_1, tableName; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, Promise.all(db.tables.map(function (table) { return table.count(); }))]; - case 1: - tablesRowCounts = _a.sent(); - tablesRowCounts.forEach(function (rowCount, i) { return tables[i].rowCount = rowCount; }); - progress.totalRows = tablesRowCounts.reduce(function (p, c) { return p + c; }); - emptyExportJson = JSON.stringify(emptyExport, undefined, prettyJson ? 2 : undefined); - posEndDataArray = emptyExportJson.lastIndexOf(']'); - firstJsonSlice = emptyExportJson.substring(0, posEndDataArray); - slices.push(firstJsonSlice); - filter = options.filter; - _loop_1 = function (tableName) { - var table, primKey, inbound, LIMIT, emptyTableExport, emptyTableExportJson, posEndRowsArray, lastKey, lastNumRows, mayHaveMoreRows, _loop_2, state_1; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - table = db.table(tableName); - primKey = table.schema.primKey; - inbound = !!primKey.keyPath; - LIMIT = options.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK; - emptyTableExport = inbound ? { - tableName: table.name, - inbound: true, - rows: [] - } : { - tableName: table.name, - inbound: false, - rows: [] - }; - emptyTableExportJson = JSON.stringify(emptyTableExport, undefined, prettyJson ? 2 : undefined); - if (prettyJson) { - // Increase indentation according to this: - // { - // ... - // data: [ - // ... - // data: [ - // 123456<---- here - // ] - // ] - // } - emptyTableExportJson = emptyTableExportJson.split('\n').join('\n '); - } - posEndRowsArray = emptyTableExportJson.lastIndexOf(']'); - slices.push(emptyTableExportJson.substring(0, posEndRowsArray)); - lastKey = null; - lastNumRows = 0; - mayHaveMoreRows = true; - _loop_2 = function () { - var chunkedCollection, values, filteredValues, tsonValues, json, keys, keyvals, tsonTuples, json; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - if (progressCallback) { - // Keep ongoing transaction private - Dexie__default["default"].ignoreTransaction(function () { return progressCallback(progress); }); - } - chunkedCollection = lastKey == null ? - table.limit(LIMIT) : - table.where(':id').above(lastKey).limit(LIMIT); - return [4 /*yield*/, chunkedCollection.toArray()]; - case 1: - values = _c.sent(); - if (values.length === 0) - return [2 /*return*/, "break"]; - if (lastKey != null && lastNumRows > 0) { - // Not initial chunk. Must add a comma: - slices.push(","); - if (prettyJson) { - slices.push("\n "); - } - } - mayHaveMoreRows = values.length === LIMIT; - if (!inbound) return [3 /*break*/, 4]; - filteredValues = filter ? - values.filter(function (value) { return filter(tableName, value); }) : - values; - tsonValues = filteredValues.map(function (value) { return TSON.encapsulate(value); }); - if (!TSON.mustFinalize()) return [3 /*break*/, 3]; - return [4 /*yield*/, Dexie__default["default"].waitFor(TSON.finalize(tsonValues))]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - json = JSON.stringify(tsonValues, undefined, prettyJson ? 2 : undefined); - if (prettyJson) - json = json.split('\n').join('\n '); - // By generating a blob here, we give web platform the opportunity to store the contents - // on disk and release RAM. - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = filteredValues.length; - lastKey = values.length > 0 ? - Dexie__default["default"].getByKeyPath(values[values.length - 1], primKey.keyPath) : - null; - return [3 /*break*/, 8]; - case 4: return [4 /*yield*/, chunkedCollection.primaryKeys()]; - case 5: - keys = _c.sent(); - keyvals = keys.map(function (key, i) { return [key, values[i]]; }); - if (filter) - keyvals = keyvals.filter(function (_a) { - var key = _a[0], value = _a[1]; - return filter(tableName, value, key); - }); - tsonTuples = keyvals.map(function (tuple) { return TSON.encapsulate(tuple); }); - if (!TSON.mustFinalize()) return [3 /*break*/, 7]; - return [4 /*yield*/, Dexie__default["default"].waitFor(TSON.finalize(tsonTuples))]; - case 6: - _c.sent(); - _c.label = 7; - case 7: - json = JSON.stringify(tsonTuples, undefined, prettyJson ? 2 : undefined); - if (prettyJson) - json = json.split('\n').join('\n '); - // By generating a blob here, we give web platform the opportunity to store the contents - // on disk and release RAM. - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = keyvals.length; - lastKey = keys.length > 0 ? - keys[keys.length - 1] : - null; - _c.label = 8; - case 8: - progress.completedRows += values.length; - return [2 /*return*/]; - } - }); - }; - _b.label = 1; - case 1: - if (!mayHaveMoreRows) return [3 /*break*/, 3]; - return [5 /*yield**/, _loop_2()]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3 /*break*/, 3]; - return [3 /*break*/, 1]; - case 3: - slices.push(emptyTableExportJson.substr(posEndRowsArray)); // "]}" - progress.completedTables += 1; - if (progress.completedTables < progress.totalTables) { - slices.push(","); - } - return [2 /*return*/]; - } - }); - }; - _i = 0, tables_1 = tables; - _a.label = 2; - case 2: - if (!(_i < tables_1.length)) return [3 /*break*/, 5]; - tableName = tables_1[_i].name; - return [5 /*yield**/, _loop_1(tableName)]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3 /*break*/, 2]; - case 5: - slices.push(emptyExportJson.substr(posEndDataArray)); - progress.done = true; - if (progressCallback) { - // Keep ongoing transaction private - Dexie__default["default"].ignoreTransaction(function () { return progressCallback(progress); }); - } - return [2 /*return*/]; - } - }); - }); - } - var slices, tables, prettyJson, emptyExport, progressCallback, progress; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - options = options || {}; - slices = []; - tables = db.tables.map(function (table) { return ({ - name: table.name, - schema: getSchemaString(table), - rowCount: 0 - }); }); - prettyJson = options.prettyJson; - emptyExport = { - formatName: "dexie", - formatVersion: 1, - data: { - databaseName: db.name, - databaseVersion: db.verno, - tables: tables, - data: [] - } - }; - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: NaN, - totalTables: db.tables.length - }; - _a.label = 1; - case 1: - _a.trys.push([1, , 6, 7]); - if (!options.noTransaction) return [3 /*break*/, 3]; - return [4 /*yield*/, exportAll()]; - case 2: - _a.sent(); - return [3 /*break*/, 5]; - case 3: return [4 /*yield*/, db.transaction('r', db.tables, exportAll)]; - case 4: - _a.sent(); - _a.label = 5; - case 5: return [3 /*break*/, 7]; - case 6: - TSON.finalize(); // Free up mem if error has occurred - return [7 /*endfinally*/]; - case 7: return [2 /*return*/, new Blob(slices, { type: "text/json" })]; - } - }); - }); - } - - var VERSION = 1; - - var fakeStream = {Stream: function(){}}; - - var clarinet_1 = createCommonjsModule(function (module, exports) { - (function (clarinet) { - - // non node-js needs to set clarinet debug on root - var env =(typeof process === 'object' && process.env) - ? process.env - : self; - - clarinet.parser = function (opt) { return new CParser(opt);}; - clarinet.CParser = CParser; - clarinet.CStream = CStream; - clarinet.createStream = createStream; - clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024; - clarinet.DEBUG = (env.CDEBUG==='debug'); - clarinet.INFO = (env.CDEBUG==='debug' || env.CDEBUG==='info'); - clarinet.EVENTS = - [ "value" - , "string" - , "key" - , "openobject" - , "closeobject" - , "openarray" - , "closearray" - , "error" - , "end" - , "ready" - ]; - - var buffers = { - textNode: undefined, - numberNode: "" - } - , streamWraps = clarinet.EVENTS.filter(function (ev) { - return ev !== "error" && ev !== "end"; - }) - , S = 0 - , Stream - ; - - clarinet.STATE = - { BEGIN : S++ - , VALUE : S++ // general stuff - , OPEN_OBJECT : S++ // { - , CLOSE_OBJECT : S++ // } - , OPEN_ARRAY : S++ // [ - , CLOSE_ARRAY : S++ // ] - , TEXT_ESCAPE : S++ // \ stuff - , STRING : S++ // "" - , BACKSLASH : S++ - , END : S++ // No more stack - , OPEN_KEY : S++ // , "a" - , CLOSE_KEY : S++ // : - , TRUE : S++ // r - , TRUE2 : S++ // u - , TRUE3 : S++ // e - , FALSE : S++ // a - , FALSE2 : S++ // l - , FALSE3 : S++ // s - , FALSE4 : S++ // e - , NULL : S++ // u - , NULL2 : S++ // l - , NULL3 : S++ // l - , NUMBER_DECIMAL_POINT : S++ // . - , NUMBER_DIGIT : S++ // [0-9] - }; - - for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_; - - // switcharoo - S = clarinet.STATE; - - const Char = { - tab : 0x09, // \t - lineFeed : 0x0A, // \n - carriageReturn : 0x0D, // \r - space : 0x20, // " " - - doubleQuote : 0x22, // " - plus : 0x2B, // + - comma : 0x2C, // , - minus : 0x2D, // - - period : 0x2E, // . - - _0 : 0x30, // 0 - _9 : 0x39, // 9 - - colon : 0x3A, // : - - E : 0x45, // E - - openBracket : 0x5B, // [ - backslash : 0x5C, // \ - closeBracket : 0x5D, // ] - - a : 0x61, // a - b : 0x62, // b - e : 0x65, // e - f : 0x66, // f - l : 0x6C, // l - n : 0x6E, // n - r : 0x72, // r - s : 0x73, // s - t : 0x74, // t - u : 0x75, // u - - openBrace : 0x7B, // { - closeBrace : 0x7D, // } - }; - - if (!Object.create) { - Object.create = function (o) { - function f () { this["__proto__"] = o; } - f.prototype = o; - return new f; - }; - } - - if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function (o) { - return o["__proto__"]; - }; - } - - if (!Object.keys) { - Object.keys = function (o) { - var a = []; - for (var i in o) if (o.hasOwnProperty(i)) a.push(i); - return a; - }; - } - - function checkBufferLength (parser) { - var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10) - , maxActual = 0 - ; - for (var buffer in buffers) { - var len = parser[buffer] === undefined ? 0 : parser[buffer].length; - if (len > maxAllowed) { - switch (buffer) { - case "text": - closeText(parser); - break; - - default: - error(parser, "Max buffer length exceeded: "+ buffer); - } - } - maxActual = Math.max(maxActual, len); - } - parser.bufferCheckPosition = (clarinet.MAX_BUFFER_LENGTH - maxActual) - + parser.position; - } - - function clearBuffers (parser) { - for (var buffer in buffers) { - parser[buffer] = buffers[buffer]; - } - } - - var stringTokenPattern = /[\\"\n]/g; - - function CParser (opt) { - if (!(this instanceof CParser)) return new CParser (opt); - - var parser = this; - clearBuffers(parser); - parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH; - parser.q = parser.c = parser.p = ""; - parser.opt = opt || {}; - parser.closed = parser.closedRoot = parser.sawRoot = false; - parser.tag = parser.error = null; - parser.state = S.BEGIN; - parser.stack = new Array(); - // mostly just for error reporting - parser.position = parser.column = 0; - parser.line = 1; - parser.slashed = false; - parser.unicodeI = 0; - parser.unicodeS = null; - parser.depth = 0; - emit(parser, "onready"); - } - - CParser.prototype = - { end : function () { end(this); } - , write : write - , resume : function () { this.error = null; return this; } - , close : function () { return this.write(null); } - }; - - try { Stream = fakeStream.Stream; } - catch (ex) { Stream = function () {}; } - - function createStream (opt) { return new CStream(opt); } - - function CStream (opt) { - if (!(this instanceof CStream)) return new CStream(opt); - - this._parser = new CParser(opt); - this.writable = true; - this.readable = true; - - //var Buffer = this.Buffer || function Buffer () {}; // if we don't have Buffers, fake it so we can do `var instanceof Buffer` and not throw an error - this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary - this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; // for rebuilding chars split before boundary is reached - this.string = ''; - - var me = this; - Stream.apply(me); - - this._parser.onend = function () { me.emit("end"); }; - this._parser.onerror = function (er) { - me.emit("error", er); - me._parser.error = null; - }; - - streamWraps.forEach(function (ev) { - Object.defineProperty(me, "on" + ev, - { get : function () { return me._parser["on" + ev]; } - , set : function (h) { - if (!h) { - me.removeAllListeners(ev); - me._parser["on"+ev] = h; - return h; - } - me.on(ev, h); - } - , enumerable : true - , configurable : false - }); - }); - } - - CStream.prototype = Object.create(Stream.prototype, - { constructor: { value: CStream } }); - - CStream.prototype.write = function (data) { - data = new Buffer(data); - for (var i = 0; i < data.length; i++) { - var n = data[i]; - - // check for carry over of a multi byte char split between data chunks - // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j]; - } - this.string = this.temp_buffs[this.bytes_in_sequence].toString(); - this.bytes_in_sequence = this.bytes_remaining = 0; - - // move iterator forward by number of byte read during sequencing - i = i + j - 1; - - // pass data to parser and move forward to parse rest of data - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - - // if no remainder bytes carried over, parse multi byte (>=128) chars one at a time - if (this.bytes_remaining === 0 && n >= 128) { - if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2; - if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3; - if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4; - if ((this.bytes_in_sequence + i) > data.length) { // if bytes needed to complete char fall outside data length, we have a boundary split - - for (var k = 0; k <= (data.length - 1 - i); k++) { - this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; // fill temp data of correct size with bytes available in this chunk - } - this.bytes_remaining = (i + this.bytes_in_sequence) - data.length; - - // immediately return as we need another chunk to sequence the character - return true; - } else { - this.string = data.slice(i, (i + this.bytes_in_sequence)).toString(); - i = i + this.bytes_in_sequence - 1; - - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - } - - // is there a range of characters that are immediately parsable? - for (var p = i; p < data.length; p++) { - if (data[p] >= 128) break; - } - this.string = data.slice(i, p).toString(); - this._parser.write(this.string); - this.emit("data", this.string); - i = p - 1; - - // handle any remaining characters using multibyte logic - continue; - } - }; - - CStream.prototype.end = function (chunk) { - if (chunk && chunk.length) this._parser.write(chunk.toString()); - this._parser.end(); - return true; - }; - - CStream.prototype.on = function (ev, handler) { - var me = this; - if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) { - me._parser["on"+ev] = function () { - var args = arguments.length === 1 ? [arguments[0]] - : Array.apply(null, arguments); - args.splice(0, 0, ev); - me.emit.apply(me, args); - }; - } - return Stream.prototype.on.call(me, ev, handler); - }; - - CStream.prototype.destroy = function () { - clearBuffers(this._parser); - this.emit("close"); - }; - - function emit(parser, event, data) { - if(clarinet.INFO) console.log('-- emit', event, data); - if (parser[event]) parser[event](data); - } - - function emitNode(parser, event, data) { - closeValue(parser); - emit(parser, event, data); - } - - function closeValue(parser, event) { - parser.textNode = textopts(parser.opt, parser.textNode); - if (parser.textNode !== undefined) { - emit(parser, (event ? event : "onvalue"), parser.textNode); - } - parser.textNode = undefined; - } - - function closeNumber(parser) { - if (parser.numberNode) - emit(parser, "onvalue", parseFloat(parser.numberNode)); - parser.numberNode = ""; - } - - function textopts (opt, text) { - if (text === undefined) { - return text; - } - if (opt.trim) text = text.trim(); - if (opt.normalize) text = text.replace(/\s+/g, " "); - return text; - } - - function error (parser, er) { - closeValue(parser); - er += "\nLine: "+parser.line+ - "\nColumn: "+parser.column+ - "\nChar: "+parser.c; - er = new Error(er); - parser.error = er; - emit(parser, "onerror", er); - return parser; - } - - function end(parser) { - if (parser.state !== S.VALUE || parser.depth !== 0) - error(parser, "Unexpected end"); - - closeValue(parser); - parser.c = ""; - parser.closed = true; - emit(parser, "onend"); - CParser.call(parser, parser.opt); - return parser; - } - - function isWhitespace(c) { - return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab; - } - - function write (chunk) { - var parser = this; - if (this.error) throw this.error; - if (parser.closed) return error(parser, - "Cannot write after close. Assign an onready handler."); - if (chunk === null) return end(parser); - var i = 0, c = chunk.charCodeAt(0), p = parser.p; - if (clarinet.DEBUG) console.log('write -> [' + chunk + ']'); - while (c) { - p = c; - parser.c = c = chunk.charCodeAt(i++); - // if chunk doesnt have next, like streaming char by char - // this way we need to check if previous is really previous - // if not we need to reset to what the parser says is the previous - // from buffer - if(p !== c ) parser.p = p; - else p = parser.p; - - if(!c) break; - - if (clarinet.DEBUG) console.log(i,c,clarinet.STATE[parser.state]); - parser.position ++; - if (c === Char.lineFeed) { - parser.line ++; - parser.column = 0; - } else parser.column ++; - switch (parser.state) { - - case S.BEGIN: - if (c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if (!isWhitespace(c)) - error(parser, "Non-whitespace before {[."); - continue; - - case S.OPEN_KEY: - case S.OPEN_OBJECT: - if (isWhitespace(c)) continue; - if(parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY); - else { - if(c === Char.closeBrace) { - emit(parser, 'onopenobject'); - this.depth++; - emit(parser, 'oncloseobject'); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else parser.stack.push(S.CLOSE_OBJECT); - } - if(c === Char.doubleQuote) parser.state = S.STRING; - else error(parser, "Malformed object key should start with \""); - continue; - - case S.CLOSE_KEY: - case S.CLOSE_OBJECT: - if (isWhitespace(c)) continue; - (parser.state === S.CLOSE_KEY) ? 'key' : 'object'; - if(c === Char.colon) { - if(parser.state === S.CLOSE_OBJECT) { - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser, 'onopenobject'); - this.depth++; - } else closeValue(parser, 'onkey'); - parser.state = S.VALUE; - } else if (c === Char.closeBrace) { - emitNode(parser, 'oncloseobject'); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if(c === Char.comma) { - if(parser.state === S.CLOSE_OBJECT) - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser); - parser.state = S.OPEN_KEY; - } else error(parser, 'Bad object'); - continue; - - case S.OPEN_ARRAY: // after an array there always a value - case S.VALUE: - if (isWhitespace(c)) continue; - if(parser.state===S.OPEN_ARRAY) { - emit(parser, 'onopenarray'); - this.depth++; - parser.state = S.VALUE; - if(c === Char.closeBracket) { - emit(parser, 'onclosearray'); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else { - parser.stack.push(S.CLOSE_ARRAY); - } - } - if(c === Char.doubleQuote) parser.state = S.STRING; - else if(c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if(c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if(c === Char.t) parser.state = S.TRUE; - else if(c === Char.f) parser.state = S.FALSE; - else if(c === Char.n) parser.state = S.NULL; - else if(c === Char.minus) { // keep and continue - parser.numberNode += "-"; - } else if(Char._0 <= c && c <= Char._9) { - parser.numberNode += String.fromCharCode(c); - parser.state = S.NUMBER_DIGIT; - } else error(parser, "Bad value"); - continue; - - case S.CLOSE_ARRAY: - if(c === Char.comma) { - parser.stack.push(S.CLOSE_ARRAY); - closeValue(parser, 'onvalue'); - parser.state = S.VALUE; - } else if (c === Char.closeBracket) { - emitNode(parser, 'onclosearray'); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if (isWhitespace(c)) - continue; - else error(parser, 'Bad array'); - continue; - - case S.STRING: - if (parser.textNode === undefined) { - parser.textNode = ""; - } - - // thanks thejh, this is an about 50% performance improvement. - var starti = i-1 - , slashed = parser.slashed - , unicodeI = parser.unicodeI - ; - STRING_BIGLOOP: while (true) { - if (clarinet.DEBUG) - console.log(i,c,clarinet.STATE[parser.state] - ,slashed); - // zero means "no unicode active". 1-4 mean "parse some more". end after 4. - while (unicodeI > 0) { - parser.unicodeS += String.fromCharCode(c); - c = chunk.charCodeAt(i++); - parser.position++; - if (unicodeI === 4) { - // TODO this might be slow? well, probably not used too often anyway - parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16)); - unicodeI = 0; - starti = i-1; - } else { - unicodeI++; - } - // we can just break here: no stuff we skipped that still has to be sliced out or so - if (!c) break STRING_BIGLOOP; - } - if (c === Char.doubleQuote && !slashed) { - parser.state = parser.stack.pop() || S.VALUE; - parser.textNode += chunk.substring(starti, i-1); - parser.position += i - 1 - starti; - break; - } - if (c === Char.backslash && !slashed) { - slashed = true; - parser.textNode += chunk.substring(starti, i-1); - parser.position += i - 1 - starti; - c = chunk.charCodeAt(i++); - parser.position++; - if (!c) break; - } - if (slashed) { - slashed = false; - if (c === Char.n) { parser.textNode += '\n'; } - else if (c === Char.r) { parser.textNode += '\r'; } - else if (c === Char.t) { parser.textNode += '\t'; } - else if (c === Char.f) { parser.textNode += '\f'; } - else if (c === Char.b) { parser.textNode += '\b'; } - else if (c === Char.u) { - // \uxxxx. meh! - unicodeI = 1; - parser.unicodeS = ''; - } else { - parser.textNode += String.fromCharCode(c); - } - c = chunk.charCodeAt(i++); - parser.position++; - starti = i-1; - if (!c) break; - else continue; - } - - stringTokenPattern.lastIndex = i; - var reResult = stringTokenPattern.exec(chunk); - if (reResult === null) { - i = chunk.length+1; - parser.textNode += chunk.substring(starti, i-1); - parser.position += i - 1 - starti; - break; - } - i = reResult.index+1; - c = chunk.charCodeAt(reResult.index); - if (!c) { - parser.textNode += chunk.substring(starti, i-1); - parser.position += i - 1 - starti; - break; - } - } - parser.slashed = slashed; - parser.unicodeI = unicodeI; - continue; - - case S.TRUE: - if (c === Char.r) parser.state = S.TRUE2; - else error(parser, 'Invalid true started with t'+ c); - continue; - - case S.TRUE2: - if (c === Char.u) parser.state = S.TRUE3; - else error(parser, 'Invalid true started with tr'+ c); - continue; - - case S.TRUE3: - if(c === Char.e) { - emit(parser, "onvalue", true); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, 'Invalid true started with tru'+ c); - continue; - - case S.FALSE: - if (c === Char.a) parser.state = S.FALSE2; - else error(parser, 'Invalid false started with f'+ c); - continue; - - case S.FALSE2: - if (c === Char.l) parser.state = S.FALSE3; - else error(parser, 'Invalid false started with fa'+ c); - continue; - - case S.FALSE3: - if (c === Char.s) parser.state = S.FALSE4; - else error(parser, 'Invalid false started with fal'+ c); - continue; - - case S.FALSE4: - if (c === Char.e) { - emit(parser, "onvalue", false); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, 'Invalid false started with fals'+ c); - continue; - - case S.NULL: - if (c === Char.u) parser.state = S.NULL2; - else error(parser, 'Invalid null started with n'+ c); - continue; - - case S.NULL2: - if (c === Char.l) parser.state = S.NULL3; - else error(parser, 'Invalid null started with nu'+ c); - continue; - - case S.NULL3: - if(c === Char.l) { - emit(parser, "onvalue", null); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, 'Invalid null started with nul'+ c); - continue; - - case S.NUMBER_DECIMAL_POINT: - if(c === Char.period) { - parser.numberNode += "."; - parser.state = S.NUMBER_DIGIT; - } else error(parser, 'Leading zero not followed by .'); - continue; - - case S.NUMBER_DIGIT: - if(Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c); - else if (c === Char.period) { - if(parser.numberNode.indexOf('.')!==-1) - error(parser, 'Invalid number has two dots'); - parser.numberNode += "."; - } else if (c === Char.e || c === Char.E) { - if(parser.numberNode.indexOf('e')!==-1 || - parser.numberNode.indexOf('E')!==-1 ) - error(parser, 'Invalid number has two exponential'); - parser.numberNode += "e"; - } else if (c === Char.plus || c === Char.minus) { - if(!(p === Char.e || p === Char.E)) - error(parser, 'Invalid symbol in number'); - parser.numberNode += String.fromCharCode(c); - } else { - closeNumber(parser); - i--; // go back one - parser.state = parser.stack.pop() || S.VALUE; - } - continue; - - default: - error(parser, "Unknown state: " + parser.state); - } - } - if (parser.position >= parser.bufferCheckPosition) - checkBufferLength(parser); - return parser; - } - - })(exports); - }); - - function JsonStream(blob) { - var pos = 0; - var parser = JsonParser(true); - var rv = { - pullAsync: function (numBytes) { - return __awaiter(this, void 0, void 0, function () { - var slize, jsonPart, result; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - return [4 /*yield*/, readBlobAsync(slize, 'text')]; - case 1: - jsonPart = _a.sent(); - result = parser.write(jsonPart); - rv.result = result || {}; - return [2 /*return*/, result]; - } - }); - }); - }, - pullSync: function (numBytes) { - var slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - var jsonPart = readBlobSync(slize, 'text'); - var result = parser.write(jsonPart); - rv.result = result || {}; - return result; - }, - done: function () { - return parser.done(); - }, - eof: function () { - return pos >= blob.size; - }, - result: {} - }; - return rv; - } - function JsonParser(allowPartial) { - var parser = clarinet_1.parser(); - var level = 0; - var result; - var stack = []; - var obj; - var key; - var done = false; - var array = false; - parser.onopenobject = function (newKey) { - var newObj = {}; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } - else { - obj[key] = newObj; - } - } - } - obj = newObj; - key = newKey; - array = false; - ++level; - }; - parser.onkey = function (newKey) { return key = newKey; }; - parser.onvalue = function (value) { return array ? obj.push(value) : obj[key] = value; }; - parser.oncloseobject = function () { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } - else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } - else { - obj[key] = completedObj; - } - } - } - }; - parser.onopenarray = function () { - var newObj = []; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } - else { - obj[key] = newObj; - } - } - } - obj = newObj; - array = true; - key = null; - ++level; - }; - parser.onclosearray = function () { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } - else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } - else { - obj[key] = completedObj; - } - } - } - }; - return { - write: function (jsonPart) { - parser.write(jsonPart); - return result; - }, - done: function () { - return done; - } - }; - } - - var DEFAULT_KILOBYTES_PER_CHUNK = 1024; - function importDB(exportedData, options) { - return __awaiter(this, void 0, void 0, function () { - var CHUNK_SIZE, stream, dbExport, db; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - options = options || {}; // All booleans defaults to false. - CHUNK_SIZE = options.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024); - return [4 /*yield*/, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - stream = _a.sent(); - dbExport = stream.result.data; - db = new Dexie__default["default"](dbExport.databaseName); - db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport)); - return [4 /*yield*/, importInto(db, stream, options)]; - case 2: - _a.sent(); - return [2 /*return*/, db]; - } - }); - }); - } - function peakImportFile(exportedData) { - return __awaiter(this, void 0, void 0, function () { - var stream; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - stream = JsonStream(exportedData); - _a.label = 1; - case 1: - if (!!stream.eof()) return [3 /*break*/, 3]; - return [4 /*yield*/, stream.pullAsync(5 * 1024)]; - case 2: - _a.sent(); // 5 k is normally enough for the headers. If not, it will just do another go. - if (stream.result.data && stream.result.data.data) { - // @ts-ignore - TS won't allow us to delete a required property - but we are going to cast it. - delete stream.result.data.data; // Don't return half-baked data array. - return [3 /*break*/, 3]; - } - return [3 /*break*/, 1]; - case 3: return [2 /*return*/, stream.result]; - } - }); - }); - } - function importInto(db, exportedData, options) { - return __awaiter(this, void 0, void 0, function () { - function importAll() { - return __awaiter(this, void 0, void 0, function () { - var _loop_1, _i, _a, tableExport, state_1; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _loop_1 = function (tableExport) { - var tableName, table, tableSchemaStr, sourceRows, rows, i, obj, filter, filteredRows, _c, keys, values; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: - if (!tableExport.rows) - return [2 /*return*/, "break"]; // Need to pull more! - if (!tableExport.rows.incomplete && tableExport.rows.length === 0) - return [2 /*return*/, "continue"]; - if (progressCallback) { - // Keep ongoing transaction private - Dexie__default["default"].ignoreTransaction(function () { return progressCallback(progress); }); - } - tableName = tableExport.tableName; - table = db.table(tableName); - tableSchemaStr = dbExport.tables.filter(function (t) { return t.name === tableName; })[0].schema; - if (!table) { - if (!options.acceptMissingTables) - throw new Error("Exported table ".concat(tableExport.tableName, " is missing in installed database")); - else - return [2 /*return*/, "continue"]; - } - if (!options.acceptChangedPrimaryKey && - tableSchemaStr.split(',')[0] != table.schema.primKey.src) { - throw new Error("Primary key differs for table ".concat(tableExport.tableName, ". ")); - } - sourceRows = tableExport.rows; - rows = []; - for (i = 0; i < sourceRows.length; i++) { - obj = sourceRows[i]; - if (!obj.incomplete) { - rows.push(TSON.revive(obj)); - } - else { - break; - } - } - filter = options.filter; - filteredRows = filter ? - tableExport.inbound ? - rows.filter(function (value) { return filter(tableName, value); }) : - rows.filter(function (_a) { - var key = _a[0], value = _a[1]; - return filter(tableName, value, key); - }) : - rows; - _c = tableExport.inbound ? - [undefined, filteredRows] : - [filteredRows.map(function (row) { return row[0]; }), rows.map(function (row) { return row[1]; })], keys = _c[0], values = _c[1]; - if (!options.overwriteValues) return [3 /*break*/, 2]; - return [4 /*yield*/, table.bulkPut(values, keys)]; - case 1: - _d.sent(); - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, table.bulkAdd(values, keys)]; - case 3: - _d.sent(); - _d.label = 4; - case 4: - progress.completedRows += rows.length; - if (!rows.incomplete) { - progress.completedTables += 1; - } - sourceRows.splice(0, rows.length); // Free up RAM, keep existing array instance. - return [2 /*return*/]; - } - }); - }; - _i = 0, _a = dbExport.data; - _b.label = 1; - case 1: - if (!(_i < _a.length)) return [3 /*break*/, 4]; - tableExport = _a[_i]; - return [5 /*yield**/, _loop_1(tableExport)]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3 /*break*/, 4]; - _b.label = 3; - case 3: - _i++; - return [3 /*break*/, 1]; - case 4: - // Avoid unnescessary loops in "for (const tableExport of dbExport.data)" - while (dbExport.data.length > 0 && dbExport.data[0].rows && !dbExport.data[0].rows.incomplete) { - // We've already imported all rows from the first table. Delete its occurrence - dbExport.data.splice(0, 1); - } - if (!(!jsonStream.done() && !jsonStream.eof())) return [3 /*break*/, 8]; - if (!readBlobsSynchronously) return [3 /*break*/, 5]; - // If we can pull from blob synchronically, we don't have to - // keep transaction alive using Dexie.waitFor(). - // This will only be possible in workers. - jsonStream.pullSync(CHUNK_SIZE); - return [3 /*break*/, 7]; - case 5: return [4 /*yield*/, Dexie__default["default"].waitFor(jsonStream.pullAsync(CHUNK_SIZE))]; - case 6: - _b.sent(); - _b.label = 7; - case 7: return [3 /*break*/, 9]; - case 8: return [3 /*break*/, 10]; - case 9: - return [3 /*break*/, 0]; - case 10: return [2 /*return*/]; - } - }); - }); - } - var CHUNK_SIZE, jsonStream, dbExportFile, readBlobsSynchronously, dbExport, progressCallback, progress, _i, _a, table; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - options = options || {}; // All booleans defaults to false. - CHUNK_SIZE = options.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024); - return [4 /*yield*/, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - jsonStream = _b.sent(); - dbExportFile = jsonStream.result; - readBlobsSynchronously = 'FileReaderSync' in self; - dbExport = dbExportFile.data; - if (!options.acceptNameDiff && db.name !== dbExport.databaseName) - throw new Error("Name differs. Current database name is ".concat(db.name, " but export is ").concat(dbExport.databaseName)); - if (!options.acceptVersionDiff && db.verno !== dbExport.databaseVersion) { - // Possible feature: Call upgraders in some isolated way if this happens... ? - throw new Error("Database version differs. Current database is in version ".concat(db.verno, " but export is ").concat(dbExport.databaseVersion)); - } - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: dbExport.tables.reduce(function (p, c) { return p + c.rowCount; }, 0), - totalTables: dbExport.tables.length - }; - if (progressCallback) { - // Keep ongoing transaction private - Dexie__default["default"].ignoreTransaction(function () { return progressCallback(progress); }); - } - if (!options.clearTablesBeforeImport) return [3 /*break*/, 5]; - _i = 0, _a = db.tables; - _b.label = 2; - case 2: - if (!(_i < _a.length)) return [3 /*break*/, 5]; - table = _a[_i]; - return [4 /*yield*/, table.clear()]; - case 3: - _b.sent(); - _b.label = 4; - case 4: - _i++; - return [3 /*break*/, 2]; - case 5: - if (!options.noTransaction) return [3 /*break*/, 7]; - return [4 /*yield*/, importAll()]; - case 6: - _b.sent(); - return [3 /*break*/, 9]; - case 7: return [4 /*yield*/, db.transaction('rw', db.tables, importAll)]; - case 8: - _b.sent(); - _b.label = 9; - case 9: - progress.done = true; - if (progressCallback) { - // Keep ongoing transaction private - Dexie__default["default"].ignoreTransaction(function () { return progressCallback(progress); }); - } - return [2 /*return*/]; - } - }); - }); - } - function loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE) { - return __awaiter(this, void 0, void 0, function () { - var stream, dbExportFile; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - stream = ('slice' in exportedData ? - JsonStream(exportedData) : - exportedData); - _a.label = 1; - case 1: - if (!!stream.eof()) return [3 /*break*/, 3]; - return [4 /*yield*/, stream.pullAsync(CHUNK_SIZE)]; - case 2: - _a.sent(); - if (stream.result.data && stream.result.data.data) - return [3 /*break*/, 3]; - return [3 /*break*/, 1]; - case 3: - dbExportFile = stream.result; - if (!dbExportFile || dbExportFile.formatName != "dexie") - throw new Error("Given file is not a dexie export"); - if (dbExportFile.formatVersion > VERSION) { - throw new Error("Format version ".concat(dbExportFile.formatVersion, " not supported")); - } - if (!dbExportFile.data) { - throw new Error("No data in export file"); - } - if (!dbExportFile.data.databaseName) { - throw new Error("Missing databaseName in export file"); - } - if (!dbExportFile.data.databaseVersion) { - throw new Error("Missing databaseVersion in export file"); - } - if (!dbExportFile.data.tables) { - throw new Error("Missing tables in export file"); - } - return [2 /*return*/, stream]; - } - }); - }); - } - - // - // Extend Dexie interface (runtime wise) - // - Dexie__default["default"].prototype.export = function (options) { - return exportDB(this, options); - }; - Dexie__default["default"].prototype.import = function (blob, options) { - return importInto(this, blob, options); - }; - Dexie__default["default"].import = function (blob, options) { return importDB(blob, options); }; - var dexieExportImport = (function () { - throw new Error("This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options."); - }); - - exports["default"] = dexieExportImport; - exports.exportDB = exportDB; - exports.importDB = importDB; - exports.importInto = importInto; - exports.peakImportFile = peakImportFile; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); -//# sourceMappingURL=dexie-export-import.js.map diff --git a/ext/lib/dexie-export-import.js.map b/ext/lib/dexie-export-import.js.map deleted file mode 100644 index f3684f32..00000000 --- a/ext/lib/dexie-export-import.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dexie-export-import.js","sources":["../../../node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js","../src/helpers.ts","../../../node_modules/.pnpm/typeson@5.18.2_iz6lblx3cjm7v34nvvsjg2rl44/node_modules/typeson/dist/typeson.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/typeson/dist/typeson-esm.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/user-object.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/array-nonindex-keys.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/undef.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/primitive-objects.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/special-numbers.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/nan.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/infinity.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/negative-infinity.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/date.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/regexp.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/map.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/set.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/arraybuffer.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/typed-arrays.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/dataview.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/intl-types.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/utils/stringArrayBuffer.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/file.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint-object.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/cryptokey.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/structured-cloning.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagedata.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagebitmap.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/filelist.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/blob.js","../../../node_modules/.pnpm/base64-arraybuffer-es6@1.0.0/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js","../src/tson-typed-array.ts","../src/tson-arraybuffer.ts","../src/tson.ts","../src/export.ts","../src/json-structure.ts","../tools/build-configs/fake-stream.js","../../../node_modules/.pnpm/github.com+dfahlander+clarinet@d1dc89f7e67488b16ad98b2464d29a9b3bc6f5ef/node_modules/clarinet/clarinet.js","../src/json-stream.ts","../src/import.ts","../src/dexie-export-import.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 || Array.prototype.slice.call(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 Dexie from 'dexie';\nimport { DexieExportedDatabase } from './json-structure';\n\nexport function getSchemaString(table: Dexie.Table) {\n const primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes);\n return primKeyAndIndexes.map(index => index.src).join(',');\n}\n\nexport function extractDbSchema(exportedDb: DexieExportedDatabase) {\n const schema: {\n [tableName: string]: string;\n } = {};\n for (const table of exportedDb.tables) {\n schema[table.name] = table.schema;\n }\n return schema;\n}\n\n\n// Missing FileReaderSync type in standard typescript libs:\ninterface FileReaderSync {\n readAsArrayBuffer(blob: Blob): ArrayBuffer;\n readAsBinaryString(blob: Blob): string;\n readAsDataURL(blob: Blob): string;\n readAsText(blob: Blob, encoding?: string): string;\n}\ndeclare var FileReaderSync: {\n prototype: FileReaderSync;\n new(): FileReaderSync;\n};\n// -----------------------------------------------\n\nexport interface TypeMapper {\n binary: ArrayBuffer;\n text: string;\n}\n\nexport function readBlobAsync(blob: Blob, type: T): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onabort = ev => reject(new Error(\"file read aborted\"));\n reader.onerror = ev => reject((ev.target as any).error);\n reader.onload = ev => resolve((ev.target as any).result);\n if (type === 'binary')\n reader.readAsArrayBuffer(blob);\n else\n reader.readAsText(blob);\n });\n}\n\nexport function readBlobSync(blob: Blob, type: T): TypeMapper[T] {\n if (typeof FileReaderSync === 'undefined') {\n throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.');\n }\n const reader = new FileReaderSync(); // Requires worker environment\n const data = type === 'binary' ?\n reader.readAsArrayBuffer(blob) :\n reader.readAsText(blob);\n\n return data as TypeMapper[T];\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Typeson = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\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\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\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\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {function} f\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line block-spacing, space-before-function-paren, space-before-blocks, space-infix-ops, semi, promise/avoid-new\n var TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n }; // eslint-disable-next-line max-len\n // class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\n TypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n /* istanbul ignore else */\n\n if (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n }\n /**\n *\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n };\n /**\n *\n * @param {function} onRejected\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n };\n\n ['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n });\n\n var _ref = {},\n toStr = _ref.toString,\n hasOwn = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn.toString;\n /**\n * Second argument not in use internally, but provided for utility.\n * @param {Any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\n function isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n }\n /**\n *\n * @param {Any} val\n * @returns {string}\n */\n\n\n function toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n }\n /**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {Any} a\n * @param {function} b\n * @returns {boolean}\n */\n\n\n function hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n }\n /**\n *\n * @param {Any} v\n * @returns {boolean}\n */\n\n\n function isObject(v) {\n return v && _typeof(v) === 'object';\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n }\n /**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {Any}\n */\n\n\n function getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n }\n /**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {Any} value\n * @returns {Any}\n */\n\n\n function setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n }\n /**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\n function getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n }\n\n var keys = Object.keys,\n isArray = Array.isArray,\n hasOwn$1 = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n /**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\n function nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n }\n /**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\n var Typeson =\n /*#__PURE__*/\n function () {\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {object} stateObj\n * @param {object} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {Any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {Any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {Any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n /**\n *\n * @param {Any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n\n\n function checkPromises(_x, _x2) {\n return _checkPromises.apply(this, arguments);\n }\n /**\n *\n * @param {object} stateObj\n * @param {object} ownKeysObj\n * @param {function} cb\n * @returns {undefined}\n */\n\n\n function _checkPromises() {\n _checkPromises = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(ret, promisesData) {\n var promResults;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n }));\n\n case 2:\n promResults = _context2.sent;\n _context2.next = 5;\n return Promise.all(promResults.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(promResult) {\n var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic, stateObj, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n newPromisesData = [];\n _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0];\n _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic = _prData[2], stateObj = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6];\n encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n if (!(keyPath && isTypesonPromise)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 8;\n return encaps.p;\n\n case 8:\n encaps2 = _context.sent;\n parentObj[key] = encaps2;\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 11:\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 5:\n return _context2.abrupt(\"return\", ret);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _checkPromises.apply(this, arguments);\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {Any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || $typeof === 'number' && (isNaN(value) || value === -Infinity || value === Infinity)) {\n if (stateObj.replaced) {\n ret = value;\n } else {\n ret = replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n }\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn$1.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {function} [runObserver]\n * @returns {*}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {object} obj - Object to revive. If it has `$types` member, the\n * properties that are listed there will be replaced with its true type\n * instead of just plain objects.\n * @param {object} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|*} If async, returns a Promise that resolves to `*`\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {Any} value\n * @param {string} type\n * @returns {Any}\n */\n\n /**\n *\n * @param {string} type\n * @param {Any} val\n * @returns {[type]} [description]\n */\n\n function executeReviver(type, val) {\n var _ref2 = that.revivers[type] || [],\n _ref3 = _slicedToArray(_ref2, 1),\n reviver = _ref3[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n keypath = _ref5[0],\n type = _ref5[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref6 = that.revivers[type] || [null, {}],\n _ref7 = _slicedToArray(_ref6, 2),\n plain = _ref7[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref8) {\n var keypath = _ref8.keypath,\n type = _ref8.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {?(Array|object)} target\n * @param {Array|object} [clone]\n * @param {string} [key]\n * @returns {Any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {Any} retrn\n * @returns {undefined|Any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n r = _ref10[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {object} opts\n * @returns {Any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {Any} obj\n * @param {object} opts\n * @returns {Promise} Resolves to `*`\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object.[]} typeSpecSets - Types and\n * their functions [test, encapsulate, revive];\n * @param {object} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Infinity;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n }();\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\n var Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n }; // eslint-disable-line space-before-blocks\n\n\n Undefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n // To insist `undefined` should be added\n\n Typeson.Undefined = Undefined; // To support async encapsulation/stringification\n\n Typeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\n Typeson.isThenable = isThenable;\n Typeson.toStringTag = toStringTag;\n Typeson.hasConstructorOf = hasConstructorOf;\n Typeson.isObject = isObject;\n Typeson.isPlainObject = isPlainObject;\n Typeson.isUserObject = isUserObject;\n Typeson.escapeKeyPathComponent = escapeKeyPathComponent;\n Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\n Typeson.getByKeyPath = getByKeyPath;\n Typeson.getJSONType = getJSONType;\n Typeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\n return Typeson;\n\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\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n* @callback TypesonFulfilled\n* @returns {Promise|any}\n*/\n\n/**\n* @callback TypesonRejected\n* @returns {Promise|any}\n*/\n\n/**\n * @callback TypesonResolve\n * @param {any} value\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonReject\n * @param {Error|any} error\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonResolveReject\n * @param {TypesonResolve} typesonResolve\n * @param {TypesonReject} typesonReject\n * @returns {Promise}\n */\n\n/* eslint-disable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {TypesonResolveReject} f\n */\nvar TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n};\n/* eslint-enable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n// eslint-disable-next-line max-len\n// class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\nTypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n/* istanbul ignore else */\n\nif (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n}\n/**\n *\n * @param {TypesonFulfilled} [onFulfilled]\n * @param {TypesonRejected} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n};\n/**\n *\n * @param {TypesonRejected} onRejected\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n};\n\n['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n});\n\nvar _ref = {},\n toStr = _ref.toString,\n hasOwn$1 = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn$1.toString;\n/**\n * Second argument not in use internally, but provided for utility.\n * @param {any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\nfunction isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n}\n/**\n *\n * @param {any} val\n * @returns {string}\n */\n\n\nfunction toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n}\n/**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {any} a\n * @param {GenericFunction} b\n * @returns {boolean}\n */\n\n\nfunction hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn$1.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n}\n/**\n *\n * @param {any} v\n * @returns {boolean}\n */\n\n\nfunction isObject(v) {\n return v && _typeof(v) === 'object';\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n}\n/**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {any}\n */\n\n\nfunction getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n}\n/**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {any} value\n * @returns {any}\n */\n\n\nfunction setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n}\n/**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\nfunction getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar keys = Object.keys,\n isArray = Array.isArray,\n hasOwn = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n/**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n/**\n * @callback Tester\n * @param {any} value\n * @param {StateObject} stateobj\n * @returns {boolean}\n */\n\n/**\n* @callback Replacer\n* @param {any} value\n* @param {StateObject} stateObj\n* @returns {any} Should be JSON-stringifiable\n*/\n\n/**\n* @callback Reviver\n* @param {JSON} value\n* @param {StateObject} stateObj\n* @returns {any}\n*/\n\n/**\n* @typedef {PlainObject} TypesonOptions\n* @property {boolean} stringification Auto-set by `stringify`\n*/\n\n/**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n}\n\nvar Typeson = /*#__PURE__*/function () {\n /**\n * @param {TypesonOptions} options\n */\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n *\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @callback JSONReviver\n * @param {string} key\n * @param {JSON} value\n * @returns {JSON}\n */\n\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {} StateObject\n */\n\n /**\n *\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n /**\n *\n * @param {any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n var checkPromises = _async(function (ret, promisesData) {\n return _await(Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n })), function (promResults) {\n return _await(Promise.all(promResults.map(_async(function (promResult) {\n var _exit = false;\n var newPromisesData = [];\n\n var _promisesData$splice = promisesData.splice(0, 1),\n _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1),\n prData = _promisesData$splice2[0];\n\n var _prData = _slicedToArray(prData, 7),\n keyPath = _prData[0],\n cyclic = _prData[2],\n stateObj = _prData[3],\n parentObj = _prData[4],\n key = _prData[5],\n detectedType = _prData[6];\n\n var encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n\n var isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n return _invoke(function () {\n if (keyPath && isTypesonPromise) {\n return _await(encaps.p, function (encaps2) {\n parentObj[key] = encaps2;\n _exit = true;\n return checkPromises(ret, newPromisesData);\n });\n }\n }, function (_result) {\n if (_exit) return _result;\n\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return checkPromises(ret, newPromisesData);\n });\n }))), function () {\n return ret;\n });\n });\n });\n /**\n * @typedef {PlainObject} OwnKeysObject\n * @property {boolean} ownKeys\n */\n\n /**\n * @callback BuiltinStateObjectPropertiesCallback\n * @returns {void}\n */\n\n /**\n *\n * @param {StateObject} stateObj\n * @param {OwnKeysObject} ownKeysObj\n * @param {BuiltinStateObjectPropertiesCallback} cb\n * @returns {undefined}\n */\n\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line node/callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || Number.isNaN(value) || value === Number.NEGATIVE_INFINITY || value === Number.POSITIVE_INFINITY) {\n ret = stateObj.replaced ? value : replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n * @typedef {PlainObject} KeyPathEvent\n * @property {string} cyclicKeypath\n */\n\n /**\n * @typedef {PlainObject} EndIterateInEvent\n * @property {boolean} endIterateIn\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} EndIterateUnsetNumericEvent\n * @property {boolean} endIterateUnsetNumeric\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} TypeDetectedEvent\n * @property {boolean} typeDetected\n */\n\n /**\n * @typedef {PlainObject} ReplacingEvent\n * @property {boolean} replacing\n */\n\n /**\n * @callback Observer\n * @param {KeyPathEvent|EndIterateInEvent|EndIterateUnsetNumericEvent|\n * TypeDetectedEvent|ReplacingEvent} [event]\n * @returns {void}\n */\n\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {Observer} [runObserver]\n * @returns {any}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {PlainObject} obj - Object to revive. If it has `$types` member,\n * the properties that are listed there will be replaced with its true\n * type instead of just plain objects.\n * @param {TypesonOptions} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|any} If async, returns a Promise that resolves\n * to `any`.\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {any} value\n * @param {string} type\n * @returns {any}\n */\n\n /**\n *\n * @param {string} type\n * @param {any} val\n * @throws {Error}\n * @returns {any}\n */\n\n function executeReviver(type, val) {\n var _ref = that.revivers[type] || [],\n _ref2 = _slicedToArray(_ref, 1),\n reviver = _ref2[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n keypath = _ref4[0],\n type = _ref4[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref5 = that.revivers[type] || [null, {}],\n _ref6 = _slicedToArray(_ref5, 2),\n plain = _ref6[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref7) {\n var keypath = _ref7.keypath,\n type = _ref7.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {?(GenericArray|PlainObject)} target\n * @param {GenericArray|PlainObject} [clone]\n * @param {string} [key]\n * @returns {any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {any} retrn\n * @returns {undefined|any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 1),\n r = _ref9[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {Tester|Replacer|Reviver} Spec\n */\n\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object[]} typeSpecSets -\n * Types and their functions [test, encapsulate, revive];\n * @param {TypesonOptions} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Number.POSITIVE_INFINITY;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n}();\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\nvar Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n}; // eslint-disable-line space-before-blocks\n\n\nUndefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n// To insist `undefined` should be added\n\nTypeson.Undefined = Undefined; // To support async encapsulation/stringification\n\nTypeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\nTypeson.isThenable = isThenable;\nTypeson.toStringTag = toStringTag;\nTypeson.hasConstructorOf = hasConstructorOf;\nTypeson.isObject = isObject;\nTypeson.isPlainObject = isPlainObject;\nTypeson.isUserObject = isUserObject;\nTypeson.escapeKeyPathComponent = escapeKeyPathComponent;\nTypeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\nTypeson.getByKeyPath = getByKeyPath;\nTypeson.getJSONType = getJSONType;\nTypeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\nexport default Typeson;\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _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.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(_i2)];\n encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\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\nexport { decode, encode };\n","import Typeson from 'typeson';\n\nconst userObject = {\n userObject: {\n test (x, stateObj) { return Typeson.isUserObject(x); },\n replace (n) { return {...n}; },\n revive (s) { return s; }\n }\n};\n\nexport default userObject;\n","const arrayNonindexKeys = [\n {\n arrayNonindexKeys: {\n testPlainObjects: true,\n test (x, stateObj) {\n if (Array.isArray(x)) {\n if (\n // By avoiding serializing arrays into objects which\n // have only positive-integer keys, we reduce\n // size and improve revival performance; arrays with\n // non-index keys will be larger however\n Object.keys(x).some((k) => {\n // No need to check for `isNaN` or\n // `isNaN(Number.parseInt())` as `NaN` will be\n // treated as a string.\n // No need to do check as\n // `Number.parseInt(Number())` since scientific\n // notation will be pre-resolved if a number\n // was given, and it will otherwise be a string\n return String(Number.parseInt(k)) !== k;\n })\n ) {\n stateObj.iterateIn = 'object';\n stateObj.addLength = true;\n }\n return true;\n }\n return false;\n },\n replace (a, stateObj) {\n // Catch sparse undefined\n stateObj.iterateUnsetNumeric = true;\n return a;\n },\n revive (o) {\n if (Array.isArray(o)) {\n return o;\n }\n const arr = [];\n // No map here as may be a sparse array (including\n // with `length` set)\n // Todo: Reenable when Node `engines` >= 7\n // Object.entries(o).forEach(([key, val]) => {\n Object.keys(o).forEach((key) => {\n const val = o[key];\n arr[key] = val;\n });\n return arr;\n }\n }\n },\n {\n sparseUndefined: {\n test (x, stateObj) {\n return typeof x === 'undefined' && stateObj.ownKeys === false;\n },\n replace (n) { return 0; },\n revive (s) { return undefined; } // Will avoid adding anything\n }\n }\n];\n\nexport default arrayNonindexKeys;\n","// This does not preserve `undefined` in sparse arrays; see the `undefined`\n// or `sparse-undefined` preset\nimport Typeson from 'typeson';\n\nconst undef = {\n undef: {\n test (x, stateObj) {\n return typeof x === 'undefined' &&\n (stateObj.ownKeys || !('ownKeys' in stateObj));\n },\n replace (n) { return 0; },\n revive (s) {\n // Will add `undefined` (returning `undefined` would instead\n // avoid explicitly setting)\n return new Typeson.Undefined();\n }\n }\n};\n\nexport default undef;\n","// This module is for objectified primitives (such as `new Number(3)` or\n// `new String(\"foo\")`)\n/* eslint-disable no-new-wrappers, unicorn/new-for-builtins */\nimport Typeson from 'typeson';\n\nconst primitiveObjects = {\n // String Object (not primitive string which need no type spec)\n StringObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'String' && typeof x === 'object';\n },\n replace (s) { return String(s); }, // convert to primitive string\n revive (s) { return new String(s); } // Revive to an objectified string\n },\n // Boolean Object (not primitive boolean which need no type spec)\n BooleanObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Boolean' &&\n typeof x === 'object';\n },\n replace (b) { return Boolean(b); }, // convert to primitive boolean\n revive (b) {\n // Revive to an objectified Boolean\n return new Boolean(b);\n }\n },\n // Number Object (not primitive number which need no type spec)\n NumberObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Number' && typeof x === 'object';\n },\n replace (n) { return Number(n); }, // convert to primitive number\n revive (n) { return new Number(n); } // Revive to an objectified number\n }\n};\n/* eslint-enable no-new-wrappers, unicorn/new-for-builtins */\n\nexport default primitiveObjects;\n","import nan from '../types/nan.js';\nimport infinity from '../types/infinity.js';\nimport NegativeInfinity from '../types/negative-infinity.js';\n\nconst specialNumbers = [\n nan,\n infinity,\n NegativeInfinity\n];\n\nexport default specialNumbers;\n","const nan = {\n nan: {\n test (x) { return Number.isNaN(x); },\n replace (n) { return 'NaN'; },\n revive (s) { return Number.NaN; }\n }\n};\n\nexport default nan;\n","const infinity = {\n infinity: {\n test (x) { return x === Number.POSITIVE_INFINITY; },\n replace (n) { return 'Infinity'; },\n revive (s) { return Number.POSITIVE_INFINITY; }\n }\n};\n\nexport default infinity;\n","const negativeInfinity = {\n negativeInfinity: {\n test (x) { return x === Number.NEGATIVE_INFINITY; },\n replace (n) { return '-Infinity'; },\n revive (s) { return Number.NEGATIVE_INFINITY; }\n }\n};\n\nexport default negativeInfinity;\n","import Typeson from 'typeson';\n\nconst date = {\n date: {\n test (x) { return Typeson.toStringTag(x) === 'Date'; },\n replace (dt) {\n const time = dt.getTime();\n if (Number.isNaN(time)) {\n return 'NaN';\n }\n return time;\n },\n revive (time) {\n if (time === 'NaN') {\n return new Date(Number.NaN);\n }\n return new Date(time);\n }\n }\n};\n\nexport default date;\n","import Typeson from 'typeson';\n\nconst regexp = {\n regexp: {\n test (x) { return Typeson.toStringTag(x) === 'RegExp'; },\n replace (rexp) {\n return {\n source: rexp.source,\n flags: (rexp.global ? 'g' : '') +\n (rexp.ignoreCase ? 'i' : '') +\n (rexp.multiline ? 'm' : '') +\n (rexp.sticky ? 'y' : '') +\n (rexp.unicode ? 'u' : '')\n };\n },\n revive ({source, flags}) { return new RegExp(source, flags); }\n }\n};\n\nexport default regexp;\n","import Typeson from 'typeson';\n\nconst map = {\n map: {\n test (x) { return Typeson.toStringTag(x) === 'Map'; },\n replace (mp) { return [...mp.entries()]; },\n revive (entries) { return new Map(entries); }\n }\n};\n\nexport default map;\n","import Typeson from 'typeson';\n\nconst set = {\n set: {\n test (x) { return Typeson.toStringTag(x) === 'Set'; },\n replace (st) {\n return [...st.values()];\n },\n revive (values) { return new Set(values); }\n }\n};\n\nexport default set;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst arraybuffer = {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(b);\n if (index > -1) {\n return {index};\n }\n stateObj.buffers.push(b);\n return encode(b);\n },\n revive (b64, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n if (typeof b64 === 'object') {\n return stateObj.buffers[b64.index];\n }\n const buffer = decode(b64);\n stateObj.buffers.push(buffer);\n return buffer;\n }\n }\n};\n\nexport default arraybuffer;\n\n// See also typed-arrays!\n","/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\n/* istanbul ignore next */\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst typedArrays = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n /* istanbul ignore if */\n if (!TypedArray) {\n return;\n }\n typedArrays[typeName.toLowerCase()] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length: l}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, length: l};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n length: l\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, length: len, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new TypedArray(buffer, byteOffset, len);\n }\n };\n});\n\nexport default typedArrays;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst dataview = {\n dataview: {\n test (x) { return Typeson.toStringTag(x) === 'DataView'; },\n replace ({buffer, byteOffset, byteLength}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, byteLength};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n byteLength\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, byteLength, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new DataView(buffer, byteOffset, byteLength);\n }\n }\n};\n\nexport default dataview;\n","import Typeson from 'typeson';\n\nconst IntlCollator = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.Collator); },\n replace (c) { return c.resolvedOptions(); },\n revive (options) { return new Intl.Collator(options.locale, options); }\n};\n\nconst IntlDateTimeFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.DateTimeFormat); },\n replace (dtf) { return dtf.resolvedOptions(); },\n revive (options) {\n return new Intl.DateTimeFormat(options.locale, options);\n }\n};\n\nconst IntlNumberFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.NumberFormat); },\n replace (nf) { return nf.resolvedOptions(); },\n revive (options) { return new Intl.NumberFormat(options.locale, options); }\n};\n\nconst intlTypes = {\n IntlCollator,\n IntlDateTimeFormat,\n IntlNumberFormat\n};\n\nexport default intlTypes;\n","/**\n * Not currently in use internally, but provided for parity.\n * @param {ArrayBuffer} buf\n * @returns {Uint8Array}\n */\nfunction arraybuffer2string (buf) {\n return new Uint8Array(buf).reduce(\n (s, byte) => s + String.fromCharCode(byte), ''\n );\n}\n\n/**\n *\n * @param {string} str\n * @returns {ArrayBuffer}\n */\nfunction string2arraybuffer (str) {\n /*\n // UTF-8 approaches\n const utf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n arr[i] = utf8.charCodeAt(i);\n }\n return arr.buffer;\n\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n // surrogate pair\n } else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) |\n (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18),\n 0x80 | ((charcode >> 12) & 0x3f),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n */\n /*\n // Working UTF-16 options (equivalents)\n const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char\n const bufView = new Uint16Array(buf);\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n */\n\n const array = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n array[i] = str.charCodeAt(i); // & 0xff;\n }\n return array.buffer;\n}\nexport {arraybuffer2string, string2arraybuffer};\n","/* globals XMLHttpRequest, File, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst file = {\n file: {\n test (x) { return Typeson.toStringTag(x) === 'File'; },\n replace (f) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(f), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad File access: ' + req.status);\n }\n return {\n type: f.type,\n stringContents: req.responseText,\n name: f.name,\n lastModified: f.lastModified\n };\n },\n revive ({name, type, stringContents, lastModified}) {\n return new File([string2arraybuffer(stringContents)], name, {\n type,\n lastModified\n });\n },\n replaceAsync (f) {\n return new Typeson.Promise(function (resolve, reject) {\n /*\n if (f.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The File is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', function () {\n resolve({\n type: f.type,\n stringContents: reader.result,\n name: f.name,\n lastModified: f.lastModified\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', function () {\n reject(reader.error);\n });\n reader.readAsBinaryString(f);\n });\n }\n }\n};\n\nexport default file;\n","/* globals BigInt */\n\nconst bigint = {\n bigint: {\n test (x) {\n return typeof x === 'bigint';\n },\n replace (n) { return String(n); },\n revive (s) { return BigInt(s); }\n }\n};\n\nexport default bigint;\n","/* globals BigInt */\nimport Typeson from 'typeson';\n\nconst bigintObject = {\n bigintObject: {\n test (x) {\n return typeof x === 'object' && Typeson.hasConstructorOf(x, BigInt);\n },\n replace (n) { return String(n); },\n revive (s) {\n // Filed this to avoid error: https://github.com/eslint/eslint/issues/11810\n // eslint-disable-next-line no-new-object\n return new Object(BigInt(s));\n }\n }\n};\n\nexport default bigintObject;\n","/* globals crypto */\nimport Typeson from 'typeson';\n\nconst cryptokey = {\n cryptokey: {\n test (x) {\n return Typeson.toStringTag(x) === 'CryptoKey' && x.extractable;\n },\n replaceAsync (key) {\n return new Typeson.Promise((resolve, reject) => {\n // eslint-disable-next-line promise/catch-or-return\n crypto.subtle.exportKey('jwk', key).catch(\n /* eslint-disable promise/prefer-await-to-callbacks */\n // istanbul ignore next\n (err) => {\n /* eslint-enable promise/prefer-await-to-callbacks */\n // eslint-disable-next-line max-len\n // istanbul ignore next -- Our format should be valid and our key extractable\n reject(err);\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line promise/always-return, promise/prefer-await-to-then\n ).then((jwk) => {\n resolve({\n jwk,\n algorithm: key.algorithm,\n usages: key.usages\n });\n });\n });\n },\n revive ({jwk, algorithm, usages}) {\n return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages);\n }\n }\n};\n\nexport default cryptokey;\n","/* This preset includes types for the Structured Cloning Algorithm. */\n\nimport userObject from '../types/user-object.js';\nimport arrayNonindexKeys from './array-nonindex-keys.js';\nimport undef from '../types/undef.js';\nimport primitiveObjects from '../types/primitive-objects.js';\nimport specialNumbers from './special-numbers.js';\nimport date from '../types/date.js';\nimport regexp from '../types/regexp.js';\nimport map from '../types/map.js';\nimport set from '../types/set.js';\nimport arraybuffer from '../types/arraybuffer.js';\nimport typedArrays from '../types/typed-arrays.js';\nimport dataview from '../types/dataview.js';\nimport intlTypes from '../types/intl-types.js';\n\nimport imagedata from '../types/imagedata.js';\nimport imagebitmap from '../types/imagebitmap.js'; // Async return\nimport file from '../types/file.js';\nimport filelist from '../types/filelist.js';\nimport blob from '../types/blob.js';\nimport bigint from '../types/bigint.js';\nimport bigintObject from '../types/bigint-object.js';\n\nimport cryptokey from '../types/cryptokey.js';\n\nconst expObj = [\n // Todo: Might also register synchronous `ImageBitmap` and\n // `Blob`/`File`/`FileList`?\n // ES5\n userObject, // Processed last (non-builtin)\n\n undef,\n arrayNonindexKeys, primitiveObjects, specialNumbers,\n date, regexp,\n\n // Non-built-ins\n imagedata,\n imagebitmap, // Async return\n file,\n filelist,\n blob\n].concat(\n // ES2015 (ES6)\n /* istanbul ignore next */\n typeof Map === 'function' ? map : [],\n /* istanbul ignore next */\n typeof Set === 'function' ? set : [],\n /* istanbul ignore next */\n typeof ArrayBuffer === 'function' ? arraybuffer : [],\n /* istanbul ignore next */\n typeof Uint8Array === 'function' ? typedArrays : [],\n /* istanbul ignore next */\n typeof DataView === 'function' ? dataview : [],\n /* istanbul ignore next */\n typeof Intl !== 'undefined' ? intlTypes : [],\n /* istanbul ignore next */\n typeof crypto !== 'undefined' ? cryptokey : [],\n /* istanbul ignore next */\n typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []\n);\nexport default expObj;\n","/* globals ImageData */\n// `ImageData` is browser / DOM specific (though `node-canvas` has it\n// available on `Canvas`).\n\nimport Typeson from 'typeson';\n\nconst imagedata = {\n imagedata: {\n test (x) { return Typeson.toStringTag(x) === 'ImageData'; },\n replace (d) {\n return {\n // Ensure `length` gets preserved for revival\n array: [...d.data],\n width: d.width,\n height: d.height\n };\n },\n revive (o) {\n return new ImageData(\n new Uint8ClampedArray(o.array), o.width, o.height\n );\n }\n }\n};\n\nexport default imagedata;\n","/* globals createImageBitmap */\n// `ImageBitmap` is browser / DOM specific. It also can only work\n// same-domain (or CORS)\n\nimport Typeson from 'typeson';\n\nconst imagebitmap = {\n imagebitmap: {\n test (x) {\n return Typeson.toStringTag(x) === 'ImageBitmap' ||\n // In Node, our polyfill sets the dataset on a canvas\n // element as JSDom no longer allows overriding toStringTag\n (x && x.dataset && x.dataset.toStringTag === 'ImageBitmap');\n },\n replace (bm) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n ctx.drawImage(bm, 0, 0);\n // Although `width` and `height` are part of `ImageBitMap`,\n // these will be auto-created for us when reviving with the\n // data URL (and they are not settable even if they weren't)\n // return {\n // width: bm.width, height: bm.height, dataURL: canvas.toDataURL()\n // };\n return canvas.toDataURL();\n },\n revive (o) {\n /*\n var req = new XMLHttpRequest();\n req.open('GET', o, false); // Sync\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad ImageBitmap access: ' + req.status);\n }\n req.send();\n return req.responseText;\n */\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o;\n // Works in contexts allowing an `ImageBitmap` (We might use\n // `OffscreenCanvas.transferToBitmap` when supported)\n return canvas;\n },\n reviveAsync (o) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o; // o.dataURL;\n return createImageBitmap(canvas); // Returns a promise\n }\n }\n};\n\nexport default imagebitmap;\n","import Typeson from 'typeson';\nimport file from './file.js';\n\nconst filelist = {\n file: file.file,\n filelist: {\n test (x) { return Typeson.toStringTag(x) === 'FileList'; },\n replace (fl) {\n const arr = [];\n for (let i = 0; i < fl.length; i++) {\n arr[i] = fl.item(i);\n }\n return arr;\n },\n revive (o) {\n /**\n * `FileList` polyfill.\n */\n class FileList {\n /**\n * Set private properties and length.\n */\n constructor () {\n // eslint-disable-next-line prefer-rest-params\n this._files = arguments[0];\n this.length = this._files.length;\n }\n /**\n * @param {Integer} index\n * @returns {File}\n */\n item (index) {\n return this._files[index];\n }\n /* eslint-disable class-methods-use-this */\n /**\n * @returns {\"FileList\"}\n */\n get [Symbol.toStringTag] () {\n /* eslint-enable class-methods-use-this */\n return 'FileList';\n }\n }\n return new FileList(o);\n }\n }\n};\n\nexport default filelist;\n","/* globals XMLHttpRequest, Blob, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst blob = {\n blob: {\n test (x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace (b) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(b), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad Blob access: ' + req.status);\n }\n return {\n type: b.type,\n stringContents: req.responseText\n };\n },\n revive ({type, stringContents}) {\n return new Blob([string2arraybuffer(stringContents)], {type});\n },\n replaceAsync (b) {\n return new Typeson.Promise((resolve, reject) => {\n /*\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The Blob is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n resolve({\n type: b.type,\n stringContents: reader.result\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', () => {\n reject(reader.error);\n });\n reader.readAsBinaryString(b);\n });\n }\n }\n};\n\nexport default blob;\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.codePointAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _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.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.codePointAt(_i2)];\n encoded2 = lookup[base64.codePointAt(_i2 + 1)];\n encoded3 = lookup[base64.codePointAt(_i2 + 2)];\n encoded4 = lookup[base64.codePointAt(_i2 + 3)];\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\nexport { decode, encode };\n","declare var global;\n\n/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst exportObj = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n if (TypedArray) {\n exportObj[typeName.toLowerCase()+\"2\"] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length}) {\n return {\n buffer,\n byteOffset,\n length\n };\n },\n revive (b64Obj) {\n const {buffer, byteOffset, length} = b64Obj;\n return new TypedArray(buffer, byteOffset, length);\n }\n };\n }\n});\n\nexport default exportObj;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nexport default {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b) {\n return encode(b, 0, b.byteLength);\n },\n revive (b64) {\n const buffer = decode(b64);\n return buffer;\n }\n }\n};\n\n// See also typed-arrays!\n","import Typeson from 'typeson';\nimport StructuredCloning from 'typeson-registry/dist/presets/structured-cloning';\nimport { encode as encodeB64, decode as decodeB64 } from 'base64-arraybuffer-es6';\nimport Dexie from 'dexie';\nimport { readBlobSync, readBlobAsync } from './helpers';\nimport typedArray from './tson-typed-array';\nimport arrayBuffer from './tson-arraybuffer';\n\nexport const TSON = new Typeson().register(StructuredCloning);\n\nconst readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\nlet blobsToAwait: any[] = [];\nlet blobsToAwaitPos = 0;\n\n// Need to patch encapsulateAsync as it does not work as of typeson 5.8.2\n// Also, current version of typespn-registry-1.0.0-alpha.21 does not\n// encapsulate/revive Blobs correctly (fails one of the unit tests in\n// this library (test 'export-format'))\nTSON.register([\n arrayBuffer,\n typedArray, {\n blob2: {\n test(x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace(b) {\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n throw new Error('The Blob is closed');\n }\n if (readBlobsSynchronously) {\n const data = readBlobSync(b, 'binary');\n const base64 = encodeB64(data, 0, data.byteLength);\n return {\n type: b.type,\n data: base64\n }\n } else {\n blobsToAwait.push(b); // This will also make TSON.mustFinalize() return true.\n const result = {\n type: b.type,\n data: {start: blobsToAwaitPos, end: blobsToAwaitPos + b.size}\n }\n blobsToAwaitPos += b.size;\n return result;\n }\n },\n finalize(b, ba: ArrayBuffer) {\n b.data = encodeB64(ba, 0, ba.byteLength);\n },\n revive ({type, data}) {\n return new Blob([decodeB64(data)], {type});\n }\n }\n }\n]);\n\nTSON.mustFinalize = ()=>blobsToAwait.length > 0;\n\nTSON.finalize = async (items?: any[]) => {\n const allChunks = await readBlobAsync(new Blob(blobsToAwait), 'binary');\n if (items) {\n for (const item of items) {\n // Manually go through all \"blob\" types in the result\n // and lookup the data slice they point at.\n if (item.$types) {\n let types = item.$types;\n const arrayType = types.$;\n if (arrayType) types = types.$;\n for (let keyPath in types) {\n const typeName = types[keyPath];\n const typeSpec = TSON.types[typeName];\n if (typeSpec && typeSpec.finalize) {\n const b = Dexie.getByKeyPath(item, arrayType ? \"$.\" + keyPath : keyPath);\n typeSpec.finalize(b, allChunks.slice(b.start, b.end));\n }\n }\n }\n }\n }\n // Free up memory\n blobsToAwait = [];\n}\n","\nimport Dexie from 'dexie';\nimport { getSchemaString, extractDbSchema } from './helpers';\nimport { DexieExportedTable, DexieExportJsonStructure } from './json-structure';\nimport { TSON } from './tson';\n\nexport interface ExportOptions {\n noTransaction?: boolean;\n numRowsPerChunk?: number;\n prettyJson?: boolean;\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ExportProgress) => boolean;\n}\n\nexport interface ExportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nconst DEFAULT_ROWS_PER_CHUNK = 2000;\n\nexport async function exportDB(db: Dexie, options?: ExportOptions): Promise {\n options = options || {};\n const slices: (string | Blob)[] = [];\n const tables = db.tables.map(table => ({\n name: table.name,\n schema: getSchemaString(table),\n rowCount: 0\n }));\n const {prettyJson} = options!;\n const emptyExport: DexieExportJsonStructure = {\n formatName: \"dexie\",\n formatVersion: 1,\n data: {\n databaseName: db.name,\n databaseVersion: db.verno,\n tables: tables,\n data: []\n }\n };\n \n const {progressCallback} = options!;\n const progress: ExportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: NaN,\n totalTables: db.tables.length\n };\n\n try {\n if (options!.noTransaction) {\n await exportAll();\n } else {\n await db.transaction('r', db.tables, exportAll);\n }\n } finally {\n TSON.finalize(); // Free up mem if error has occurred\n }\n\n return new Blob(slices,{type: \"text/json\"});\n\n async function exportAll() {\n // Count rows:\n const tablesRowCounts = await Promise.all(db.tables.map(table => table.count()));\n tablesRowCounts.forEach((rowCount, i) => tables[i].rowCount = rowCount);\n progress.totalRows = tablesRowCounts.reduce((p,c)=>p+c);\n\n // Write first JSON slice\n const emptyExportJson = JSON.stringify(emptyExport, undefined, prettyJson ? 2 : undefined);\n const posEndDataArray = emptyExportJson.lastIndexOf(']');\n const firstJsonSlice = emptyExportJson.substring(0, posEndDataArray);\n slices.push(firstJsonSlice);\n\n const filter = options!.filter;\n\n for (const {name: tableName} of tables) {\n const table = db.table(tableName);\n const {primKey} = table.schema;\n const inbound = !!primKey.keyPath;\n const LIMIT = options!.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK;\n const emptyTableExport: DexieExportedTable = inbound ? {\n tableName: table.name,\n inbound: true,\n rows: []\n } : {\n tableName: table.name,\n inbound: false,\n rows: []\n };\n let emptyTableExportJson = JSON.stringify(emptyTableExport, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) {\n // Increase indentation according to this:\n // {\n // ...\n // data: [\n // ...\n // data: [\n // 123456<---- here\n // ] \n // ]\n // }\n emptyTableExportJson = emptyTableExportJson.split('\\n').join('\\n ');\n }\n const posEndRowsArray = emptyTableExportJson.lastIndexOf(']');\n slices.push(emptyTableExportJson.substring(0, posEndRowsArray));\n let lastKey: any = null;\n let lastNumRows = 0;\n let mayHaveMoreRows = true;\n while (mayHaveMoreRows) {\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const chunkedCollection = lastKey == null ?\n table.limit(LIMIT) :\n table.where(':id').above(lastKey).limit(LIMIT);\n\n const values = await chunkedCollection.toArray();\n\n if (values.length === 0) break;\n\n if (lastKey != null && lastNumRows > 0) {\n // Not initial chunk. Must add a comma:\n slices.push(\",\");\n if (prettyJson) {\n slices.push(\"\\n \");\n }\n }\n\n mayHaveMoreRows = values.length === LIMIT;\n \n if (inbound) {\n const filteredValues = filter ?\n values.filter(value => filter(tableName, value)) :\n values;\n\n const tsonValues = filteredValues.map(value => TSON.encapsulate(value));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonValues));\n }\n\n let json = JSON.stringify(tsonValues, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = filteredValues.length;\n lastKey = values.length > 0 ?\n Dexie.getByKeyPath(values[values.length -1], primKey.keyPath as string) :\n null;\n } else {\n const keys = await chunkedCollection.primaryKeys();\n let keyvals = keys.map((key, i) => [key, values[i]]);\n if (filter) keyvals = keyvals.filter(([key, value]) => filter(tableName, value, key));\n\n const tsonTuples = keyvals.map(tuple => TSON.encapsulate(tuple));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonTuples));\n }\n\n let json = JSON.stringify(tsonTuples, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = keyvals.length;\n lastKey = keys.length > 0 ?\n keys[keys.length - 1] :\n null;\n }\n progress.completedRows += values.length;\n }\n slices.push(emptyTableExportJson.substr(posEndRowsArray)); // \"]}\"\n progress.completedTables += 1;\n if (progress.completedTables < progress.totalTables) {\n slices.push(\",\");\n }\n }\n slices.push(emptyExportJson.substr(posEndDataArray));\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n }\n}\n","export const VERSION = 1;\n\n/** Same as DexieExportJsonStructure but without the data.data array */\nexport interface DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n }\n}\n\nexport interface DexieExportJsonStructure extends DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n data: Array<{\n tableName: string;\n inbound: boolean;\n rows: any[];\n }>;\n }\n}\n\nexport type DexieExportedDatabase = DexieExportJsonStructure[\"data\"];\nexport type DexieExportedTable = DexieExportedDatabase[\"data\"][number];\n","module.exports = {Stream: function(){}};\n\n",";(function (clarinet) {\n \"use strict\";\n\n // non node-js needs to set clarinet debug on root\n var env =(typeof process === 'object' && process.env)\n ? process.env\n : self;\n\n clarinet.parser = function (opt) { return new CParser(opt);};\n clarinet.CParser = CParser;\n clarinet.CStream = CStream;\n clarinet.createStream = createStream;\n clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024;\n clarinet.DEBUG = (env.CDEBUG==='debug');\n clarinet.INFO = (env.CDEBUG==='debug' || env.CDEBUG==='info');\n clarinet.EVENTS =\n [ \"value\"\n , \"string\"\n , \"key\"\n , \"openobject\"\n , \"closeobject\"\n , \"openarray\"\n , \"closearray\"\n , \"error\"\n , \"end\"\n , \"ready\"\n ];\n\n var buffers = {\n textNode: undefined,\n numberNode: \"\"\n }\n , streamWraps = clarinet.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\";\n })\n , S = 0\n , Stream\n ;\n\n clarinet.STATE =\n { BEGIN : S++\n , VALUE : S++ // general stuff\n , OPEN_OBJECT : S++ // {\n , CLOSE_OBJECT : S++ // }\n , OPEN_ARRAY : S++ // [\n , CLOSE_ARRAY : S++ // ]\n , TEXT_ESCAPE : S++ // \\ stuff\n , STRING : S++ // \"\"\n , BACKSLASH : S++\n , END : S++ // No more stack\n , OPEN_KEY : S++ // , \"a\"\n , CLOSE_KEY : S++ // :\n , TRUE : S++ // r\n , TRUE2 : S++ // u\n , TRUE3 : S++ // e\n , FALSE : S++ // a\n , FALSE2 : S++ // l\n , FALSE3 : S++ // s\n , FALSE4 : S++ // e\n , NULL : S++ // u\n , NULL2 : S++ // l\n , NULL3 : S++ // l\n , NUMBER_DECIMAL_POINT : S++ // .\n , NUMBER_DIGIT : S++ // [0-9]\n };\n\n for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_;\n\n // switcharoo\n S = clarinet.STATE;\n\n const Char = {\n tab : 0x09, // \\t\n lineFeed : 0x0A, // \\n\n carriageReturn : 0x0D, // \\r\n space : 0x20, // \" \"\n\n doubleQuote : 0x22, // \"\n plus : 0x2B, // +\n comma : 0x2C, // ,\n minus : 0x2D, // -\n period : 0x2E, // .\n\n _0 : 0x30, // 0\n _9 : 0x39, // 9\n\n colon : 0x3A, // :\n\n E : 0x45, // E\n\n openBracket : 0x5B, // [\n backslash : 0x5C, // \\\n closeBracket : 0x5D, // ]\n\n a : 0x61, // a\n b : 0x62, // b\n e : 0x65, // e \n f : 0x66, // f\n l : 0x6C, // l\n n : 0x6E, // n\n r : 0x72, // r\n s : 0x73, // s\n t : 0x74, // t\n u : 0x75, // u\n\n openBrace : 0x7B, // {\n closeBrace : 0x7D, // }\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function f () { this[\"__proto__\"] = o; }\n f.prototype = o;\n return new f;\n };\n }\n\n if (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function (o) {\n return o[\"__proto__\"];\n };\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = [];\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i);\n return a;\n };\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n ;\n for (var buffer in buffers) {\n var len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case \"text\":\n closeText(parser);\n break;\n\n default:\n error(parser, \"Max buffer length exceeded: \"+ buffer);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = (clarinet.MAX_BUFFER_LENGTH - maxActual)\n + parser.position;\n }\n\n function clearBuffers (parser) {\n for (var buffer in buffers) {\n parser[buffer] = buffers[buffer];\n }\n }\n\n var stringTokenPattern = /[\\\\\"\\n]/g;\n\n function CParser (opt) {\n if (!(this instanceof CParser)) return new CParser (opt);\n\n var parser = this;\n clearBuffers(parser);\n parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH;\n parser.q = parser.c = parser.p = \"\";\n parser.opt = opt || {};\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.state = S.BEGIN;\n parser.stack = new Array();\n // mostly just for error reporting\n parser.position = parser.column = 0;\n parser.line = 1;\n parser.slashed = false;\n parser.unicodeI = 0;\n parser.unicodeS = null;\n parser.depth = 0;\n emit(parser, \"onready\");\n }\n\n CParser.prototype =\n { end : function () { end(this); }\n , write : write\n , resume : function () { this.error = null; return this; }\n , close : function () { return this.write(null); }\n };\n\n try { Stream = require(\"stream\").Stream; }\n catch (ex) { Stream = function () {}; }\n\n function createStream (opt) { return new CStream(opt); }\n\n function CStream (opt) {\n if (!(this instanceof CStream)) return new CStream(opt);\n\n this._parser = new CParser(opt);\n this.writable = true;\n this.readable = true;\n\n //var Buffer = this.Buffer || function Buffer () {}; // if we don't have Buffers, fake it so we can do `var instanceof Buffer` and not throw an error\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n this.string = '';\n\n var me = this;\n Stream.apply(me);\n\n this._parser.onend = function () { me.emit(\"end\"); };\n this._parser.onerror = function (er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev,\n { get : function () { return me._parser[\"on\" + ev]; }\n , set : function (h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\"+ev] = h;\n return h;\n }\n me.on(ev, h);\n }\n , enumerable : true\n , configurable : false\n });\n });\n }\n\n CStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: CStream } });\n\n CStream.prototype.write = function (data) {\n data = new Buffer(data);\n for (var i = 0; i < data.length; i++) {\n var n = data[i];\n\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j];\n }\n this.string = this.temp_buffs[this.bytes_in_sequence].toString();\n this.bytes_in_sequence = this.bytes_remaining = 0;\n\n // move iterator forward by number of byte read during sequencing\n i = i + j - 1;\n\n // pass data to parser and move forward to parse rest of data\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n\n // if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (this.bytes_remaining === 0 && n >= 128) {\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > data.length) { // if bytes needed to complete char fall outside data length, we have a boundary split\n\n for (var k = 0; k <= (data.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; // fill temp data of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - data.length;\n\n // immediately return as we need another chunk to sequence the character\n return true;\n } else {\n this.string = data.slice(i, (i + this.bytes_in_sequence)).toString();\n i = i + this.bytes_in_sequence - 1;\n\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n }\n\n // is there a range of characters that are immediately parsable?\n for (var p = i; p < data.length; p++) {\n if (data[p] >= 128) break;\n }\n this.string = data.slice(i, p).toString();\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n i = p - 1;\n\n // handle any remaining characters using multibyte logic\n continue;\n }\n };\n\n CStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this._parser.write(chunk.toString());\n this._parser.end();\n return true;\n };\n\n CStream.prototype.on = function (ev, handler) {\n var me = this;\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n\n CStream.prototype.destroy = function () {\n clearBuffers(this._parser);\n this.emit(\"close\");\n };\n\n function emit(parser, event, data) {\n if(clarinet.INFO) console.log('-- emit', event, data);\n if (parser[event]) parser[event](data);\n }\n\n function emitNode(parser, event, data) {\n closeValue(parser);\n emit(parser, event, data);\n }\n\n function closeValue(parser, event) {\n parser.textNode = textopts(parser.opt, parser.textNode);\n if (parser.textNode !== undefined) {\n emit(parser, (event ? event : \"onvalue\"), parser.textNode);\n }\n parser.textNode = undefined;\n }\n\n function closeNumber(parser) {\n if (parser.numberNode)\n emit(parser, \"onvalue\", parseFloat(parser.numberNode));\n parser.numberNode = \"\";\n }\n\n function textopts (opt, text) {\n if (text === undefined) {\n return text;\n }\n if (opt.trim) text = text.trim();\n if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n return text;\n }\n\n function error (parser, er) {\n closeValue(parser);\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c;\n er = new Error(er);\n parser.error = er;\n emit(parser, \"onerror\", er);\n return parser;\n }\n\n function end(parser) {\n if (parser.state !== S.VALUE || parser.depth !== 0)\n error(parser, \"Unexpected end\");\n\n closeValue(parser);\n parser.c = \"\";\n parser.closed = true;\n emit(parser, \"onend\");\n CParser.call(parser, parser.opt);\n return parser;\n }\n\n function isWhitespace(c) {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n }\n\n function write (chunk) {\n var parser = this;\n if (this.error) throw this.error;\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\");\n if (chunk === null) return end(parser);\n var i = 0, c = chunk.charCodeAt(0), p = parser.p;\n if (clarinet.DEBUG) console.log('write -> [' + chunk + ']');\n while (c) {\n p = c;\n parser.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the parser says is the previous\n // from buffer\n if(p !== c ) parser.p = p;\n else p = parser.p;\n\n if(!c) break;\n\n if (clarinet.DEBUG) console.log(i,c,clarinet.STATE[parser.state]);\n parser.position ++;\n if (c === Char.lineFeed) {\n parser.line ++;\n parser.column = 0;\n } else parser.column ++;\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if (!isWhitespace(c))\n error(parser, \"Non-whitespace before {[.\");\n continue;\n\n case S.OPEN_KEY:\n case S.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if(parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY);\n else {\n if(c === Char.closeBrace) {\n emit(parser, 'onopenobject');\n this.depth++;\n emit(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else parser.stack.push(S.CLOSE_OBJECT);\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else error(parser, \"Malformed object key should start with \\\"\");\n continue;\n\n case S.CLOSE_KEY:\n case S.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n var event = (parser.state === S.CLOSE_KEY) ? 'key' : 'object';\n if(c === Char.colon) {\n if(parser.state === S.CLOSE_OBJECT) {\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser, 'onopenobject');\n this.depth++;\n } else closeValue(parser, 'onkey');\n parser.state = S.VALUE;\n } else if (c === Char.closeBrace) {\n emitNode(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if(c === Char.comma) {\n if(parser.state === S.CLOSE_OBJECT)\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser);\n parser.state = S.OPEN_KEY;\n } else error(parser, 'Bad object');\n continue;\n\n case S.OPEN_ARRAY: // after an array there always a value\n case S.VALUE:\n if (isWhitespace(c)) continue;\n if(parser.state===S.OPEN_ARRAY) {\n emit(parser, 'onopenarray');\n this.depth++;\n parser.state = S.VALUE;\n if(c === Char.closeBracket) {\n emit(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else {\n parser.stack.push(S.CLOSE_ARRAY);\n }\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else if(c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if(c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if(c === Char.t) parser.state = S.TRUE;\n else if(c === Char.f) parser.state = S.FALSE;\n else if(c === Char.n) parser.state = S.NULL;\n else if(c === Char.minus) { // keep and continue\n parser.numberNode += \"-\";\n } else if(Char._0 <= c && c <= Char._9) {\n parser.numberNode += String.fromCharCode(c);\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, \"Bad value\");\n continue;\n\n case S.CLOSE_ARRAY:\n if(c === Char.comma) {\n parser.stack.push(S.CLOSE_ARRAY);\n closeValue(parser, 'onvalue');\n parser.state = S.VALUE;\n } else if (c === Char.closeBracket) {\n emitNode(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if (isWhitespace(c))\n continue;\n else error(parser, 'Bad array');\n continue;\n\n case S.STRING:\n if (parser.textNode === undefined) {\n parser.textNode = \"\";\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i-1\n , slashed = parser.slashed\n , unicodeI = parser.unicodeI\n ;\n STRING_BIGLOOP: while (true) {\n if (clarinet.DEBUG)\n console.log(i,c,clarinet.STATE[parser.state]\n ,slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n parser.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16));\n unicodeI = 0;\n starti = i-1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n parser.state = parser.stack.pop() || S.VALUE;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) { parser.textNode += '\\n'; }\n else if (c === Char.r) { parser.textNode += '\\r'; }\n else if (c === Char.t) { parser.textNode += '\\t'; }\n else if (c === Char.f) { parser.textNode += '\\f'; }\n else if (c === Char.b) { parser.textNode += '\\b'; }\n else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n parser.unicodeS = '';\n } else {\n parser.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n parser.position++;\n starti = i-1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n var reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length+1;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n i = reResult.index+1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n }\n parser.slashed = slashed;\n parser.unicodeI = unicodeI;\n continue;\n\n case S.TRUE:\n if (c === Char.r) parser.state = S.TRUE2;\n else error(parser, 'Invalid true started with t'+ c);\n continue;\n\n case S.TRUE2:\n if (c === Char.u) parser.state = S.TRUE3;\n else error(parser, 'Invalid true started with tr'+ c);\n continue;\n\n case S.TRUE3:\n if(c === Char.e) {\n emit(parser, \"onvalue\", true);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid true started with tru'+ c);\n continue;\n\n case S.FALSE:\n if (c === Char.a) parser.state = S.FALSE2;\n else error(parser, 'Invalid false started with f'+ c);\n continue;\n\n case S.FALSE2:\n if (c === Char.l) parser.state = S.FALSE3;\n else error(parser, 'Invalid false started with fa'+ c);\n continue;\n\n case S.FALSE3:\n if (c === Char.s) parser.state = S.FALSE4;\n else error(parser, 'Invalid false started with fal'+ c);\n continue;\n\n case S.FALSE4:\n if (c === Char.e) {\n emit(parser, \"onvalue\", false);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid false started with fals'+ c);\n continue;\n\n case S.NULL:\n if (c === Char.u) parser.state = S.NULL2;\n else error(parser, 'Invalid null started with n'+ c);\n continue;\n\n case S.NULL2:\n if (c === Char.l) parser.state = S.NULL3;\n else error(parser, 'Invalid null started with nu'+ c);\n continue;\n\n case S.NULL3:\n if(c === Char.l) {\n emit(parser, \"onvalue\", null);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid null started with nul'+ c);\n continue;\n\n case S.NUMBER_DECIMAL_POINT:\n if(c === Char.period) {\n parser.numberNode += \".\";\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, 'Leading zero not followed by .');\n continue;\n\n case S.NUMBER_DIGIT:\n if(Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if(parser.numberNode.indexOf('.')!==-1)\n error(parser, 'Invalid number has two dots');\n parser.numberNode += \".\";\n } else if (c === Char.e || c === Char.E) {\n if(parser.numberNode.indexOf('e')!==-1 ||\n parser.numberNode.indexOf('E')!==-1 )\n error(parser, 'Invalid number has two exponential');\n parser.numberNode += \"e\";\n } else if (c === Char.plus || c === Char.minus) {\n if(!(p === Char.e || p === Char.E))\n error(parser, 'Invalid symbol in number');\n parser.numberNode += String.fromCharCode(c);\n } else {\n closeNumber(parser);\n i--; // go back one\n parser.state = parser.stack.pop() || S.VALUE;\n }\n continue;\n\n default:\n error(parser, \"Unknown state: \" + parser.state);\n }\n }\n if (parser.position >= parser.bufferCheckPosition)\n checkBufferLength(parser);\n return parser;\n }\n\n})(typeof exports === \"undefined\" ? clarinet = {} : exports);\n","import clarinet from 'clarinet';\nimport { readBlobAsync, readBlobSync } from './helpers';\n\nexport interface JsonStream {\n pullAsync(numBytes: number): Promise>;\n pullSync(numBytes: number): Partial;\n done(): boolean;\n eof(): boolean;\n result: Partial;\n}\n\nexport function JsonStream(blob: Blob): JsonStream {\n let pos = 0;\n const parser = JsonParser(true);\n\n const rv = {\n async pullAsync(numBytes: number): Promise> {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = await readBlobAsync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n pullSync(numBytes: number): Partial {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = readBlobSync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n done() {\n return parser.done();\n },\n eof() {\n return pos >= blob.size;\n },\n result: {}\n }\n\n return rv;\n}\n\n\nexport function JsonParser (allowPartial: boolean) {\n const parser = (clarinet as any).parser();\n let level = 0;\n let result: any;\n const stack: any[][] = [];\n let obj: any;\n let key: string | null;\n let done = false;\n let array = false;\n\n parser.onopenobject = newKey => {\n const newObj = {};\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n key = newKey;\n array = false;\n ++level;\n }\n parser.onkey = newKey => key = newKey;\n parser.onvalue = value => array ? obj.push(value) : obj[key!] = value;\n parser.oncloseobject = ()=>{\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n parser.onopenarray = () => {\n const newObj = [];\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n array = true;\n key = null;\n ++level;\n }\n parser.onclosearray = () => {\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n\n return {\n write(jsonPart: string) {\n parser.write(jsonPart);\n return result;\n },\n done() {\n return done;\n }\n }\n}\n","import Dexie from 'dexie';\nimport { extractDbSchema } from './helpers';\nimport { DexieExportJsonMeta, DexieExportJsonStructure, VERSION } from './json-structure';\nimport { TSON } from './tson';\nimport { JsonStream } from './json-stream';\n\nexport interface StaticImportOptions {\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nexport interface ImportOptions extends StaticImportOptions {\n acceptMissingTables?: boolean;\n acceptVersionDiff?: boolean;\n acceptNameDiff?: boolean;\n acceptChangedPrimaryKey?: boolean;\n overwriteValues?: boolean;\n clearTablesBeforeImport?: boolean;\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nconst DEFAULT_KILOBYTES_PER_CHUNK = 1024;\n\nexport interface ImportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nexport async function importDB(exportedData: Blob | JsonStream, options?: StaticImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const stream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n const dbExport = stream.result.data!;\n const db = new Dexie(dbExport.databaseName);\n db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport));\n await importInto(db, stream, options);\n return db;\n}\n\nexport async function peakImportFile(exportedData: Blob): Promise {\n const stream = JsonStream(exportedData);\n while (!stream.eof()) {\n await stream.pullAsync(5 * 1024); // 5 k is normally enough for the headers. If not, it will just do another go.\n if (stream.result.data && stream.result.data!.data) {\n // @ts-ignore - TS won't allow us to delete a required property - but we are going to cast it.\n delete stream.result.data.data; // Don't return half-baked data array.\n break;\n }\n }\n return stream.result as DexieExportJsonMeta;\n}\n\nexport async function importInto(db: Dexie, exportedData: Blob | JsonStream, options?: ImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const jsonStream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n let dbExportFile = jsonStream.result;\n const readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\n const dbExport = dbExportFile.data!;\n\n if (!options!.acceptNameDiff && db.name !== dbExport.databaseName)\n throw new Error(`Name differs. Current database name is ${db.name} but export is ${dbExport.databaseName}`);\n if (!options!.acceptVersionDiff && db.verno !== dbExport.databaseVersion) {\n // Possible feature: Call upgraders in some isolated way if this happens... ?\n throw new Error(`Database version differs. Current database is in version ${db.verno} but export is ${dbExport.databaseVersion}`);\n }\n \n const { progressCallback } = options;\n const progress: ImportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: dbExport.tables.reduce((p, c) => p + c.rowCount, 0),\n totalTables: dbExport.tables.length\n };\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n\n if (options!.clearTablesBeforeImport) {\n for (const table of db.tables) {\n await table.clear();\n }\n }\n\n if (options.noTransaction) {\n await importAll();\n } else {\n await db.transaction('rw', db.tables, importAll);\n } \n\n async function importAll () {\n do {\n for (const tableExport of dbExport.data) {\n if (!tableExport.rows) break; // Need to pull more!\n if (!(tableExport.rows as any).incomplete && tableExport.rows.length === 0)\n continue;\n\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const tableName = tableExport.tableName;\n const table = db.table(tableName);\n const tableSchemaStr = dbExport.tables.filter(t => t.name === tableName)[0].schema;\n if (!table) {\n if (!options!.acceptMissingTables)\n throw new Error(`Exported table ${tableExport.tableName} is missing in installed database`);\n else\n continue;\n }\n if (!options!.acceptChangedPrimaryKey &&\n tableSchemaStr.split(',')[0] != table.schema.primKey.src) {\n throw new Error(`Primary key differs for table ${tableExport.tableName}. `);\n }\n\n const sourceRows = tableExport.rows\n \n // Our rows may be partial, so we need to ensure each one is completed before using it\n const rows: any[] = [];\n for(let i = 0; i < sourceRows.length; i++) {\n const obj = sourceRows[i];\n if (!obj.incomplete) {\n rows.push(TSON.revive(obj));\n } else {\n break;\n }\n }\n\n const filter = options!.filter;\n const filteredRows = filter ?\n tableExport.inbound ?\n rows.filter(value => filter(tableName, value)) :\n rows.filter(([key, value]) => filter(tableName, value, key)) :\n rows;\n const [keys, values] = tableExport.inbound ?\n [undefined, filteredRows] :\n [filteredRows.map(row=>row[0]), rows.map(row=>row[1])];\n\n if (options!.overwriteValues)\n await table.bulkPut(values, keys);\n else\n await table.bulkAdd(values, keys);\n \n progress.completedRows += rows.length;\n if (!(rows as any).incomplete) {\n progress.completedTables += 1;\n }\n sourceRows.splice(0, rows.length); // Free up RAM, keep existing array instance.\n }\n\n // Avoid unnescessary loops in \"for (const tableExport of dbExport.data)\" \n while (dbExport.data.length > 0 && dbExport.data[0].rows && !(dbExport.data[0].rows as any).incomplete) {\n // We've already imported all rows from the first table. Delete its occurrence\n dbExport.data.splice(0, 1); \n }\n if (!jsonStream.done() && !jsonStream.eof()) {\n // Pull some more (keeping transaction alive)\n if (readBlobsSynchronously) {\n // If we can pull from blob synchronically, we don't have to\n // keep transaction alive using Dexie.waitFor().\n // This will only be possible in workers.\n jsonStream.pullSync(CHUNK_SIZE);\n } else {\n await Dexie.waitFor(jsonStream.pullAsync(CHUNK_SIZE));\n }\n } else break;\n } while (true)\n }\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n}\n\nasync function loadUntilWeGotEnoughData(exportedData: Blob | JsonStream, CHUNK_SIZE: number): Promise> {\n const stream = ('slice' in exportedData ?\n JsonStream(exportedData) :\n exportedData);\n\n while (!stream.eof()) {\n await stream.pullAsync(CHUNK_SIZE);\n\n if (stream.result.data && stream.result.data!.data)\n break;\n }\n const dbExportFile = stream.result;\n if (!dbExportFile || dbExportFile.formatName != \"dexie\")\n throw new Error(`Given file is not a dexie export`);\n if (dbExportFile.formatVersion! > VERSION) {\n throw new Error(`Format version ${dbExportFile.formatVersion} not supported`);\n }\n if (!dbExportFile.data!) {\n throw new Error(`No data in export file`);\n }\n if (!dbExportFile.data!.databaseName) {\n throw new Error(`Missing databaseName in export file`);\n }\n if (!dbExportFile.data!.databaseVersion) {\n throw new Error(`Missing databaseVersion in export file`);\n }\n if (!dbExportFile.data!.tables) {\n throw new Error(`Missing tables in export file`);\n }\n return stream; \n}\n","import Dexie from 'dexie';\nimport { ExportOptions, exportDB } from './export';\nimport { importDB, peakImportFile, ImportOptions, importInto, StaticImportOptions } from './import';\nimport { DexieExportJsonMeta } from './json-structure';\n\nexport { exportDB, ExportOptions};\nexport { importDB, importInto, peakImportFile, ImportOptions, DexieExportJsonMeta};\n\n//\n// Extend Dexie interface (typescript-wise)\n//\ndeclare module 'dexie' {\n // Extend methods on db\n interface Dexie {\n export(options?: ExportOptions): Promise;\n import(blob: Blob, options?: ImportOptions): Promise;\n }\n interface DexieConstructor {\n import(blob: Blob, options?: StaticImportOptions): Promise;\n }\n}\n\n//\n// Extend Dexie interface (runtime wise)\n//\n\nDexie.prototype.export = function (this: Dexie, options?: ExportOptions) {\n return exportDB(this, options);\n};\nDexie.prototype.import = function (this: Dexie, blob: Blob, options?: ImportOptions) {\n return importInto(this, blob, options);\n};\nDexie.import = (blob: Blob, options?: StaticImportOptions) => importDB(blob, options);\n\nexport default ()=>{\n throw new Error(\"This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options.\")\n};\n"],"names":["this","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_defineProperty","value","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","source","forEach","getOwnPropertyDescriptors","defineProperties","_slicedToArray","arr","_arrayWithHoles","Array","isArray","_iterableToArrayLimit","_arr","_n","_d","_e","undefined","_s","_i","next","done","err","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","from","_nonIterableSpread","o","minLen","n","toString","call","slice","name","test","len","arr2","TypesonPromise","f","p","Promise","__typeson__type__","toStringTag","then","onFulfilled","onRejected","_this","typesonResolve","typesonReject","res","reject","resolve","v","meth","promArr","map","prom","toStr","hasOwn$1","hasOwnProperty","getProto","getPrototypeOf","fnToString","isThenable","catchCheck","isObject","val","hasConstructorOf","a","b","proto","Ctor","isPlainObject","escapeKeyPathComponent","keyPathComponent","replace","unescapeKeyPathComponent","getByKeyPath","keyPath","period","indexOf","innerObj","setAtKeyPath","_await","direct","hasOwn","internalStateObjPropsToIgnore","_async","args","e","nestedPathsFirst","keypath","as","match","bs","Typeson","options","plainObjectReplacers","nonplainObjectReplacers","revivers","types","_createClass","protoProps","staticProps","stringify","replacer","space","opts","stringification","encapsulated","encapsulate","JSON","stringifySync","throwOnBadSyncType","sync","stringifyAsync","parse","text","reviver","revive","parseSync","parseAsync","specialTypeNames","stateObj","returnTypeNames","rootTypeName","iterateNone","checkPromises","ret","promisesData","all","pd","promResults","promResult","_exit","newPromisesData","_promisesData$splice2","splice","_prData","cyclic","parentObj","detectedType","encaps","_encapsulate","isTypesonPromise","_invoke","body","result","encaps2","_result","that","refObjs","refKeys","promisesDataRoot","encapsulateObserver","finish","typeNames","values","getJSONType","Set","$types","$","_adaptBuiltinStateObjectProperties","ownKeysObj","cb","assign","vals","prop","tmp","resolvingTypesonPromise","observerData","$typeof","runObserver","type","awaitingTypesonPromise","includes","Number","isNaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","replaced","iterateIn","iterateUnsetNumeric","refIndex","cyclicKeypath","clone","isPlainObj","isArr","ArrayBuffer","addLength","_loop","kp","Boolean","endIterateIn","end","endIterateOwn","vl","_loop2","endIterateUnsetNumeric","plainObject","replacers","existing","concat","replaceAsync","replacing","typeDetected","encapsulateSync","encapsulateAsync","keyPathResolutions","ignore$Types","executeReviver","Error","reviveAsync","revivalPromises","checkUndefined","retrn","Undefined","possibleTypesonPromise","revivePlainObjects","plainObjectTypes","entries","_ref3","_ref4","plain","sort","reduce","reducer","_ref7","newVal","_revive","_clone","k","set","_keyPathResolutions$","_target","_clone2","_ret","typ","r","_ref8","reviveSync","register","typeSpecSets","R","typeSpec","typSpec","typeId","JSON_TYPES","spec","testPlainObjects","existingReplacer","Class","x","create","_spec2","replacerObj","bind","start","fallback","reviverObj","isUserObject","userObject","s","arrayNonindexKeys","some","String","parseInt","sparseUndefined","undef","primitiveObjects","StringObject","BooleanObject","NumberObject","specialNumbers","nan","NaN","infinity","negativeInfinity","date","dt","time","getTime","Date","regexp","rexp","flags","global","ignoreCase","multiline","sticky","unicode","RegExp","mp","Map","st","chars","lookup","Uint8Array","charCodeAt","encode","arraybuffer","byteOffset","lngth","byteLength","bytes","base64","decode","encoded1","encoded2","encoded3","encoded4","bufferLength","_i2","buffers","index","b64","buffer","_global","self","typedArrays","typeName","arrType","TypedArray","toLowerCase","l","encoded","b64Obj","dataview","DataView","intlTypes","IntlCollator","Intl","Collator","c","resolvedOptions","locale","IntlDateTimeFormat","DateTimeFormat","dtf","IntlNumberFormat","NumberFormat","nf","string2arraybuffer","str","array","file","req","XMLHttpRequest","overrideMimeType","open","URL","createObjectURL","send","status","stringContents","responseText","lastModified","File","reader","FileReader","addEventListener","error","readAsBinaryString","bigint","BigInt","bigintObject","cryptokey","extractable","crypto","subtle","exportKey","jwk","algorithm","usages","importKey","imagedata","d","data","width","height","ImageData","Uint8ClampedArray","imagebitmap","dataset","bm","canvas","document","createElement","getContext","drawImage","toDataURL","ctx","img","src","createImageBitmap","filelist","fl","item","_files","blob","Blob","StructuredCloning","typedArray","encodeB64","decodeB64","Dexie","require$$0","clarinet"],"mappings":"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"} \ No newline at end of file diff --git a/ext/lib/dexie.min.js b/ext/lib/dexie.min.js deleted file mode 100644 index 9a028fba..00000000 --- a/ext/lib/dexie.min.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){"use strict";var g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n.",pt="String expected.",yt=[],vt="undefined"!=typeof navigator&&/(MSIE|Trident|Edge)/.test(navigator.userAgent),mt=vt,gt=vt,bt="__dbnames",_t="readonly",wt="readwrite";function xt(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var kt={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Et(t){return"string"!=typeof t||/\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=A(e))[t],e}}var Pt=(Kt.prototype._trans=function(e,r,t){var n=this._tx||Oe.trans,i=this.name;function o(e,t,n){if(!n.schema[i])throw new J.NotFound("Table "+i+" not part of transaction");return r(n.idbtrans,n)}var a=qe();try{return n&&n.db===this.db?n===Oe.trans?n._promise(e,o,t):Je(function(){return n._promise(e,o,t)},{trans:n,transless:Oe.transless||Oe}):function t(n,r,i,o){if(n.idbdb&&(n._state.openComplete||Oe.letThrough||n._vip)){var a=n._createTransaction(r,i,n._dbSchema);try{a.create(),n._state.PR1398_maxLoop=3}catch(e){return e.name===Q.InvalidState&&n.isOpen()&&0<--n._state.PR1398_maxLoop?(console.warn("Dexie: Need to reopen db"),n._close(),n.open().then(function(){return t(n,r,i,o)})):lt(e)}return a._promise(r,function(e,t){return Je(function(){return Oe.trans=a,o(e,t,a)})}).then(function(e){return a._completion.then(function(){return e})})}if(n._state.openComplete)return lt(new J.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._options.autoOpen)return lt(new J.DatabaseClosed);n.open().catch(Z)}return n._state.dbReadyPromise.then(function(){return t(n,r,i,o)})}(this.db,e,[this.name],o)}finally{a&&Ue()}},Kt.prototype.get=function(t,e){var n=this;return t&&t.constructor===Object?this.where(t).first(e):this._trans("readonly",function(e){return n.core.get({trans:e,key:t}).then(function(e){return n.hook.reading.fire(e)})}).then(e)},Kt.prototype.where=function(o){if("string"==typeof o)return new this.db.WhereClause(this,o);if(b(o))return new this.db.WhereClause(this,"["+o.join("+")+"]");var n=x(o);if(1===n.length)return this.where(n[0]).equals(o[n[0]]);var e=this.schema.indexes.concat(this.schema.primKey).filter(function(t){return t.compound&&n.every(function(e){return 0<=t.keyPath.indexOf(e)})&&t.keyPath.every(function(e){return 0<=n.indexOf(e)})})[0];if(e&&this.db._maxKey!==ht)return this.where(e.name).equals(e.keyPath.map(function(e){return o[e]}));!e&&F&&console.warn("The query "+JSON.stringify(o)+" on "+this.name+" would benefit of a compound index ["+n.join("+")+"]");var a=this.schema.idxByName,r=this.db._deps.indexedDB;function u(e,t){try{return 0===r.cmp(e,t)}catch(e){return!1}}var t=n.reduce(function(e,t){var n=e[0],r=e[1],e=a[t],i=o[t];return[n||e,n||!e?xt(r,e&&e.multi?function(e){e=k(e,t);return b(e)&&e.some(function(e){return u(i,e)})}:function(e){return u(i,k(e,t))}):r]},[null,null]),i=t[0],t=t[1];return i?this.where(i.name).equals(o[i.keyPath]).filter(t):e?this.filter(t):this.where(n).equals("")},Kt.prototype.filter=function(e){return this.toCollection().and(e)},Kt.prototype.count=function(e){return this.toCollection().count(e)},Kt.prototype.offset=function(e){return this.toCollection().offset(e)},Kt.prototype.limit=function(e){return this.toCollection().limit(e)},Kt.prototype.each=function(e){return this.toCollection().each(e)},Kt.prototype.toArray=function(e){return this.toCollection().toArray(e)},Kt.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},Kt.prototype.orderBy=function(e){return new this.db.Collection(new this.db.WhereClause(this,b(e)?"["+e.join("+")+"]":e))},Kt.prototype.reverse=function(){return this.toCollection().reverse()},Kt.prototype.mapToClass=function(r){this.schema.mappedClass=r;function e(e){if(!e)return e;var t,n=Object.create(r.prototype);for(t in e)if(m(e,t))try{n[t]=e[t]}catch(e){}return n}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=e,this.hook("reading",e),r},Kt.prototype.defineClass=function(){return this.mapToClass(function(e){u(this,e)})},Kt.prototype.add=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=Et(o)(t)),this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"add",keys:null!=n?[n]:null,values:[a]})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{E(t,o,e)}catch(e){}return e})},Kt.prototype.update=function(t,n){if("object"!=typeof t||b(t))return this.where(":id").equals(t).modify(n);var e=k(t,this.schema.primKey.keyPath);if(void 0===e)return lt(new J.InvalidArgument("Given object does not contain its primary key"));try{"function"!=typeof n?x(n).forEach(function(e){E(t,e,n[e])}):n(t,{value:t,primKey:e})}catch(e){}return this.where(":id").equals(e).modify(n)},Kt.prototype.put=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=Et(o)(t)),this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"put",values:[a],keys:null!=n?[n]:null})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{E(t,o,e)}catch(e){}return e})},Kt.prototype.delete=function(t){var n=this;return this._trans("readwrite",function(e){return n.core.mutate({trans:e,type:"delete",keys:[t]})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):void 0})},Kt.prototype.clear=function(){var t=this;return this._trans("readwrite",function(e){return t.core.mutate({trans:e,type:"deleteRange",range:kt})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):void 0})},Kt.prototype.bulkGet=function(t){var n=this;return this._trans("readonly",function(e){return n.core.getMany({keys:t,trans:e}).then(function(e){return e.map(function(e){return n.hook.reading.fire(e)})})})},Kt.prototype.bulkAdd=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans("readwrite",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new J.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(a&&a.length!==r.length)throw new J.InvalidArgument("Arguments objects and keys must have the same length");var i=r.length,t=t&&n?r.map(Et(t)):r;return o.core.mutate({trans:e,type:"add",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new H(o.name+".bulkAdd(): "+t+" of "+i+" operations failed",e)})})},Kt.prototype.bulkPut=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans("readwrite",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new J.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(a&&a.length!==r.length)throw new J.InvalidArgument("Arguments objects and keys must have the same length");var i=r.length,t=t&&n?r.map(Et(t)):r;return o.core.mutate({trans:e,type:"put",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new H(o.name+".bulkPut(): "+t+" of "+i+" operations failed",e)})})},Kt.prototype.bulkDelete=function(t){var r=this,i=t.length;return this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"delete",keys:t})}).then(function(e){var t=e.numFailures,n=e.lastResult,e=e.failures;if(0===t)return n;throw new H(r.name+".bulkDelete(): "+t+" of "+i+" operations failed",e)})},Kt);function Kt(){}function Ot(i){function t(e,t){if(t){for(var n=arguments.length,r=new Array(n-1);--n;)r[n-1]=arguments[n];return a[e].subscribe.apply(null,r),i}if("string"==typeof e)return a[e]}var a={};t.addEventType=u;for(var e=1,n=arguments.length;ec+l&&h(c+b)})})}return h(0).then(function(){if(0=s}).forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;En(f,t,l),En(f,e,l),h=f._dbSchema=e;var n=_n(t,e);n.add.forEach(function(e){wn(l,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new J.Upgrade("Not yet support for changing primary key");var t=l.objectStore(e.name);e.add.forEach(function(e){return xn(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),xn(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>s){yn(f,l),c._memoizedTables={},d=!0;var i=P(e);n.del.forEach(function(e){i[e]=t[e]}),mn(f,[f.Transaction.prototype]),vn(f,[f.Transaction.prototype],x(i),i),c.schema=i;var o,a=R(r);a&&$e();n=je.follow(function(){var e;(o=r(c))&&a&&(e=Ze.bind(null,null),o.then(e,e))});return o&&"function"==typeof o.then?je.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r;d&&mt||(t=u._cfg.dbschema,n=t,r=e,[].slice.call(r.db.objectStoreNames).forEach(function(e){return null==n[e]&&r.db.deleteObjectStore(e)})),mn(f,[f.Transaction.prototype]),vn(f,[f.Transaction.prototype],f._storeNames,f._dbSchema),c.schema=f._dbSchema})}),function e(){return t.length?je.resolve(t.shift()(c.idbtrans)).then(e):je.resolve()}().then(function(){var t,n;n=l,x(t=h).forEach(function(e){n.db.objectStoreNames.contains(e)||wn(n,e,t[e].primKey,t[e].indexes)})}).catch(u))})}function _n(e,t){var n,r={del:[],add:[],change:[]};for(n in e)t[n]||r.del.push(n);for(n in t){var i=e[n],o=t[n];if(i){var a={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(""+(i.primKey.keyPath||"")!=""+(o.primKey.keyPath||"")||i.primKey.auto!==o.primKey.auto&&!vt)a.recreate=!0,r.change.push(a);else{var u=i.idxByName,s=o.idxByName,c=void 0;for(c in u)s[c]||a.del.push(c);for(c in s){var l=u[c],f=s[c];l?l.src!==f.src&&a.change.push(f):a.add.push(f)}(0Math.pow(2,62)?0:e.oldVersion,p=e<1,f._novip.idbdb=l.result,bn(f,e/10,d,n))},n),l.onsuccess=We(function(){d=null;var e,t,n,r,i,o=f._novip.idbdb=l.result,a=y(o.objectStoreNames);if(0{var _i=Object.create;var bt=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var yi=Object.getOwnPropertyNames,_r=Object.getOwnPropertySymbols,ki=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,Pi=Object.prototype.propertyIsEnumerable;var Sr=(t,e,r)=>e in t?bt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,E=(t,e)=>{for(var r in e||(e={}))yr.call(e,r)&&Sr(t,r,e[r]);if(_r)for(var r of _r(e))Pi.call(e,r)&&Sr(t,r,e[r]);return t};var ne=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,r)=>(typeof require!="undefined"?require:e)[r]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var m=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var bi=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yi(e))!yr.call(t,i)&&i!==r&&bt(t,i,{get:()=>e[i],enumerable:!(n=Si(e,i))||n.enumerable});return t};var ie=(t,e,r)=>(r=t!=null?_i(ki(t)):{},bi(e||!t||!t.__esModule?bt(r,"default",{value:t,enumerable:!0}):r,t));var P=m(x=>{"use strict";x.__esModule=!0;x.extend=kr;x.indexOf=wi;x.escapeExpression=Oi;x.isEmpty=Ai;x.createFrame=Mi;x.blockParams=Ni;x.appendContextPath=Ii;var Ci={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},Li=/[&<>"'`=]/g,Ei=/[&<>"'`=]/;function xi(t){return Ci[t]}function kr(t){for(var e=1;e{"use strict";Ne.__esModule=!0;var Et=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function xt(t,e){var r=e&&e.loc,n=void 0,i=void 0,s=void 0,o=void 0;r&&(n=r.start.line,i=r.end.line,s=r.start.column,o=r.end.column,t+=" - "+n+":"+s);for(var u=Error.prototype.constructor.call(this,t),l=0;l{"use strict";Ie.__esModule=!0;var wt=P();Ie.default=function(t){t.registerHelper("blockHelperMissing",function(e,r){var n=r.inverse,i=r.fn;if(e===!0)return i(this);if(e===!1||e==null)return n(this);if(wt.isArray(e))return e.length>0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):n(this);if(r.data&&r.ids){var s=wt.createFrame(r.data);s.contextPath=wt.appendContextPath(r.data.contextPath,r.name),r={data:s}}return i(e,r)})};Cr.exports=Ie.default});var xr=m((De,Er)=>{"use strict";De.__esModule=!0;function Di(t){return t&&t.__esModule?t:{default:t}}var de=P(),Ri=M(),Bi=Di(Ri);De.default=function(t){t.registerHelper("each",function(e,r){if(!r)throw new Bi.default("Must pass iterator to #each");var n=r.fn,i=r.inverse,s=0,o="",u=void 0,l=void 0;r.data&&r.ids&&(l=de.appendContextPath(r.data.contextPath,r.ids[0])+"."),de.isFunction(e)&&(e=e.call(this)),r.data&&(u=de.createFrame(r.data));function a(g,_,O){u&&(u.key=g,u.index=_,u.first=_===0,u.last=!!O,l&&(u.contextPath=l+g)),o=o+n(e[g],{data:u,blockParams:de.blockParams([e[g],g],[l+g,null])})}if(e&&typeof e=="object")if(de.isArray(e))for(var h=e.length;s{"use strict";Re.__esModule=!0;function Hi(t){return t&&t.__esModule?t:{default:t}}var Ti=M(),qi=Hi(Ti);Re.default=function(t){t.registerHelper("helperMissing",function(){if(arguments.length!==1)throw new qi.default('Missing helper: "'+arguments[arguments.length-1].name+'"')})};wr.exports=Re.default});var Ir=m((Be,Nr)=>{"use strict";Be.__esModule=!0;function Fi(t){return t&&t.__esModule?t:{default:t}}var Ar=P(),Vi=M(),Mr=Fi(Vi);Be.default=function(t){t.registerHelper("if",function(e,r){if(arguments.length!=2)throw new Mr.default("#if requires exactly one argument");return Ar.isFunction(e)&&(e=e.call(this)),!r.hash.includeZero&&!e||Ar.isEmpty(e)?r.inverse(this):r.fn(this)}),t.registerHelper("unless",function(e,r){if(arguments.length!=2)throw new Mr.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:r.inverse,inverse:r.fn,hash:r.hash})})};Nr.exports=Be.default});var Rr=m((He,Dr)=>{"use strict";He.__esModule=!0;He.default=function(t){t.registerHelper("log",function(){for(var e=[void 0],r=arguments[arguments.length-1],n=0;n{"use strict";Te.__esModule=!0;Te.default=function(t){t.registerHelper("lookup",function(e,r,n){return e&&n.lookupProperty(e,r)})};Br.exports=Te.default});var qr=m((qe,Tr)=>{"use strict";qe.__esModule=!0;function Wi(t){return t&&t.__esModule?t:{default:t}}var me=P(),Gi=M(),Ui=Wi(Gi);qe.default=function(t){t.registerHelper("with",function(e,r){if(arguments.length!=2)throw new Ui.default("#with requires exactly one argument");me.isFunction(e)&&(e=e.call(this));var n=r.fn;if(me.isEmpty(e))return r.inverse(this);var i=r.data;return r.data&&r.ids&&(i=me.createFrame(r.data),i.contextPath=me.appendContextPath(r.data.contextPath,r.ids[0])),n(e,{data:i,blockParams:me.blockParams([e],[i&&i.contextPath])})})};Tr.exports=qe.default});var Ve=m(Fe=>{"use strict";Fe.__esModule=!0;Fe.registerDefaultHelpers=ss;Fe.moveHelperToHooks=os;function X(t){return t&&t.__esModule?t:{default:t}}var Ki=Lr(),Ji=X(Ki),zi=xr(),Qi=X(zi),Yi=Or(),Xi=X(Yi),Zi=Ir(),ji=X(Zi),$i=Rr(),es=X($i),ts=Hr(),rs=X(ts),ns=qr(),is=X(ns);function ss(t){Ji.default(t),Qi.default(t),Xi.default(t),ji.default(t),es.default(t),rs.default(t),is.default(t)}function os(t,e,r){t.helpers[e]&&(t.hooks[e]=t.helpers[e],r||delete t.helpers[e])}});var Vr=m((We,Fr)=>{"use strict";We.__esModule=!0;var as=P();We.default=function(t){t.registerDecorator("inline",function(e,r,n,i){var s=e;return r.partials||(r.partials={},s=function(o,u){var l=n.partials;n.partials=as.extend({},l,r.partials);var a=e(o,u);return n.partials=l,a}),r.partials[i.args[0]]=i.fn,s})};Fr.exports=We.default});var Wr=m(Ot=>{"use strict";Ot.__esModule=!0;Ot.registerDefaultDecorators=hs;function us(t){return t&&t.__esModule?t:{default:t}}var ls=Vr(),cs=us(ls);function hs(t){cs.default(t)}});var At=m((Ge,Gr)=>{"use strict";Ge.__esModule=!0;var ps=P(),se={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if(typeof e=="string"){var r=ps.indexOf(se.methodMap,e.toLowerCase());r>=0?e=r:e=parseInt(e,10)}return e},log:function(e){if(e=se.lookupLevel(e),typeof console!="undefined"&&se.lookupLevel(se.level)<=e){var r=se.methodMap[e];console[r]||(r="log");for(var n=arguments.length,i=Array(n>1?n-1:0),s=1;s{"use strict";Mt.__esModule=!0;Mt.createNewLookupObject=ds;var fs=P();function ds(){for(var t=arguments.length,e=Array(t),r=0;r{"use strict";ge.__esModule=!0;ge.createProtoAccessControl=_s;ge.resultIsAllowed=Ss;ge.resetLoggedProperties=ks;function ms(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}var Kr=Ur(),gs=At(),vs=ms(gs),Ue=Object.create(null);function _s(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var r=Object.create(null);return r.__proto__=!1,{properties:{whitelist:Kr.createNewLookupObject(r,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:Kr.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}}function Ss(t,e,r){return Jr(typeof t=="function"?e.methods:e.properties,r)}function Jr(t,e){return t.whitelist[e]!==void 0?t.whitelist[e]===!0:t.defaultValue!==void 0?t.defaultValue:(ys(e),!1)}function ys(t){Ue[t]!==!0&&(Ue[t]=!0,vs.log("error",'Handlebars: Access has been denied to resolve the property "'+t+`" because it is not an "own property" of its parent. -You can add a runtime option to disable the check or this warning: -See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`))}function ks(){Object.keys(Ue).forEach(function(t){delete Ue[t]})}});var ze=m(B=>{"use strict";B.__esModule=!0;B.HandlebarsEnvironment=Dt;function zr(t){return t&&t.__esModule?t:{default:t}}var Z=P(),Ps=M(),Nt=zr(Ps),bs=Ve(),Cs=Wr(),Ls=At(),Je=zr(Ls),Es=Ke(),xs="4.7.7";B.VERSION=xs;var ws=8;B.COMPILER_REVISION=ws;var Os=7;B.LAST_COMPATIBLE_COMPILER_REVISION=Os;var As={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};B.REVISION_CHANGES=As;var It="[object Object]";function Dt(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators=r||{},bs.registerDefaultHelpers(this),Cs.registerDefaultDecorators(this)}Dt.prototype={constructor:Dt,logger:Je.default,log:Je.default.log,registerHelper:function(e,r){if(Z.toString.call(e)===It){if(r)throw new Nt.default("Arg not supported with multiple helpers");Z.extend(this.helpers,e)}else this.helpers[e]=r},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,r){if(Z.toString.call(e)===It)Z.extend(this.partials,e);else{if(typeof r=="undefined")throw new Nt.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=r}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,r){if(Z.toString.call(e)===It){if(r)throw new Nt.default("Arg not supported with multiple decorators");Z.extend(this.decorators,e)}else this.decorators[e]=r},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){Es.resetLoggedProperties()}};var Ms=Je.default.log;B.log=Ms;B.createFrame=Z.createFrame;B.logger=Je.default});var Yr=m((Qe,Qr)=>{"use strict";Qe.__esModule=!0;function Rt(t){this.string=t}Rt.prototype.toString=Rt.prototype.toHTML=function(){return""+this.string};Qe.default=Rt;Qr.exports=Qe.default});var Xr=m(Bt=>{"use strict";Bt.__esModule=!0;Bt.wrapHelper=Ns;function Ns(t,e){if(typeof t!="function")return t;var r=function(){var i=arguments[arguments.length-1];return arguments[arguments.length-1]=e(i),t.apply(this,arguments)};return r}});var tn=m(z=>{"use strict";z.__esModule=!0;z.checkRevision=Ts;z.template=qs;z.wrapProgram=Ye;z.resolvePartial=Fs;z.invokePartial=Vs;z.noop=$r;function Is(t){return t&&t.__esModule?t:{default:t}}function Ds(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}var Rs=P(),V=Ds(Rs),Bs=M(),W=Is(Bs),G=ze(),Zr=Ve(),Hs=Xr(),jr=Ke();function Ts(t){var e=t&&t[0]||1,r=G.COMPILER_REVISION;if(!(e>=G.LAST_COMPATIBLE_COMPILER_REVISION&&e<=G.COMPILER_REVISION))if(e{"use strict";Xe.__esModule=!0;Xe.default=function(t){var e=typeof global!="undefined"?global:window,r=e.Handlebars;t.noConflict=function(){return e.Handlebars===t&&(e.Handlebars=r),t}};rn.exports=Xe.default});var un=m((Ze,an)=>{"use strict";Ze.__esModule=!0;function qt(t){return t&&t.__esModule?t:{default:t}}function Ft(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}var Ks=ze(),nn=Ft(Ks),Js=Yr(),zs=qt(Js),Qs=M(),Ys=qt(Qs),Xs=P(),Tt=Ft(Xs),Zs=tn(),sn=Ft(Zs),js=Ht(),$s=qt(js);function on(){var t=new nn.HandlebarsEnvironment;return Tt.extend(t,nn),t.SafeString=zs.default,t.Exception=Ys.default,t.Utils=Tt,t.escapeExpression=Tt.escapeExpression,t.VM=sn,t.template=function(e){return sn.template(e,t)},t}var ve=on();ve.create=on;$s.default(ve);ve.default=ve;Ze.default=ve;an.exports=Ze.default});var $e=m((je,cn)=>{"use strict";je.__esModule=!0;var ln={helpers:{helperExpression:function(e){return e.type==="SubExpression"||(e.type==="MustacheStatement"||e.type==="BlockStatement")&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return e.parts.length===1&&!ln.helpers.scopedId(e)&&!e.depth}}};je.default=ln;cn.exports=je.default});var pn=m((et,hn)=>{"use strict";et.__esModule=!0;var eo=function(){var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(i,s,o,u,l,a,h){var c=a.length-1;switch(l){case 1:return a[c-1];case 2:this.$=u.prepareProgram(a[c]);break;case 3:this.$=a[c];break;case 4:this.$=a[c];break;case 5:this.$=a[c];break;case 6:this.$=a[c];break;case 7:this.$=a[c];break;case 8:this.$=a[c];break;case 9:this.$={type:"CommentStatement",value:u.stripComment(a[c]),strip:u.stripFlags(a[c],a[c]),loc:u.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:a[c],value:a[c],loc:u.locInfo(this._$)};break;case 11:this.$=u.prepareRawBlock(a[c-2],a[c-1],a[c],this._$);break;case 12:this.$={path:a[c-3],params:a[c-2],hash:a[c-1]};break;case 13:this.$=u.prepareBlock(a[c-3],a[c-2],a[c-1],a[c],!1,this._$);break;case 14:this.$=u.prepareBlock(a[c-3],a[c-2],a[c-1],a[c],!0,this._$);break;case 15:this.$={open:a[c-5],path:a[c-4],params:a[c-3],hash:a[c-2],blockParams:a[c-1],strip:u.stripFlags(a[c-5],a[c])};break;case 16:this.$={path:a[c-4],params:a[c-3],hash:a[c-2],blockParams:a[c-1],strip:u.stripFlags(a[c-5],a[c])};break;case 17:this.$={path:a[c-4],params:a[c-3],hash:a[c-2],blockParams:a[c-1],strip:u.stripFlags(a[c-5],a[c])};break;case 18:this.$={strip:u.stripFlags(a[c-1],a[c-1]),program:a[c]};break;case 19:var p=u.prepareBlock(a[c-2],a[c-1],a[c],a[c],!1,this._$),d=u.prepareProgram([p],a[c-1].loc);d.chained=!0,this.$={strip:a[c-2].strip,program:d,chain:!0};break;case 20:this.$=a[c];break;case 21:this.$={path:a[c-1],strip:u.stripFlags(a[c-2],a[c])};break;case 22:this.$=u.prepareMustache(a[c-3],a[c-2],a[c-1],a[c-4],u.stripFlags(a[c-4],a[c]),this._$);break;case 23:this.$=u.prepareMustache(a[c-3],a[c-2],a[c-1],a[c-4],u.stripFlags(a[c-4],a[c]),this._$);break;case 24:this.$={type:"PartialStatement",name:a[c-3],params:a[c-2],hash:a[c-1],indent:"",strip:u.stripFlags(a[c-4],a[c]),loc:u.locInfo(this._$)};break;case 25:this.$=u.preparePartialBlock(a[c-2],a[c-1],a[c],this._$);break;case 26:this.$={path:a[c-3],params:a[c-2],hash:a[c-1],strip:u.stripFlags(a[c-4],a[c])};break;case 27:this.$=a[c];break;case 28:this.$=a[c];break;case 29:this.$={type:"SubExpression",path:a[c-3],params:a[c-2],hash:a[c-1],loc:u.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:a[c],loc:u.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:u.id(a[c-2]),value:a[c],loc:u.locInfo(this._$)};break;case 32:this.$=u.id(a[c-1]);break;case 33:this.$=a[c];break;case 34:this.$=a[c];break;case 35:this.$={type:"StringLiteral",value:a[c],original:a[c],loc:u.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(a[c]),original:Number(a[c]),loc:u.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:a[c]==="true",original:a[c]==="true",loc:u.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:u.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:u.locInfo(this._$)};break;case 40:this.$=a[c];break;case 41:this.$=a[c];break;case 42:this.$=u.preparePath(!0,a[c],this._$);break;case 43:this.$=u.preparePath(!1,a[c],this._$);break;case 44:a[c-2].push({part:u.id(a[c]),original:a[c],separator:a[c-1]}),this.$=a[c-2];break;case 45:this.$=[{part:u.id(a[c]),original:a[c]}];break;case 46:this.$=[];break;case 47:a[c-1].push(a[c]);break;case 48:this.$=[];break;case 49:a[c-1].push(a[c]);break;case 50:this.$=[];break;case 51:a[c-1].push(a[c]);break;case 58:this.$=[];break;case 59:a[c-1].push(a[c]);break;case 64:this.$=[];break;case 65:a[c-1].push(a[c]);break;case 70:this.$=[];break;case 71:a[c-1].push(a[c]);break;case 78:this.$=[];break;case 79:a[c-1].push(a[c]);break;case 82:this.$=[];break;case 83:a[c-1].push(a[c]);break;case 86:this.$=[];break;case 87:a[c-1].push(a[c]);break;case 90:this.$=[];break;case 91:a[c-1].push(a[c]);break;case 94:this.$=[];break;case 95:a[c-1].push(a[c]);break;case 98:this.$=[a[c]];break;case 99:a[c-1].push(a[c]);break;case 100:this.$=[a[c]];break;case 101:a[c-1].push(a[c]);break}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(i,s){throw new Error(i)},parse:function(i){var s=this,o=[0],u=[null],l=[],a=this.table,h="",c=0,p=0,d=0,g=2,_=1;this.lexer.setInput(i),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var O=this.lexer.yylloc;l.push(O);var k=this.lexer.options&&this.lexer.options.ranges;typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);function T(R){o.length=o.length-2*R,u.length=u.length-R,l.length=l.length-R}function q(){var R;return R=s.lexer.lex()||1,typeof R!="number"&&(R=s.symbols_[R]||R),R}for(var L,yt,Y,A,va,kt,re={},Ae,F,vr,Me;;){if(Y=o[o.length-1],this.defaultActions[Y]?A=this.defaultActions[Y]:((L===null||typeof L=="undefined")&&(L=q()),A=a[Y]&&a[Y][L]),typeof A=="undefined"||!A.length||!A[0]){var Pt="";if(!d){Me=[];for(Ae in a[Y])this.terminals_[Ae]&&Ae>2&&Me.push("'"+this.terminals_[Ae]+"'");this.lexer.showPosition?Pt="Parse error on line "+(c+1)+`: -`+this.lexer.showPosition()+` -Expecting `+Me.join(", ")+", got '"+(this.terminals_[L]||L)+"'":Pt="Parse error on line "+(c+1)+": Unexpected "+(L==1?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(Pt,{text:this.lexer.match,token:this.terminals_[L]||L,line:this.lexer.yylineno,loc:O,expected:Me})}}if(A[0]instanceof Array&&A.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Y+", token: "+L);switch(A[0]){case 1:o.push(L),u.push(this.lexer.yytext),l.push(this.lexer.yylloc),o.push(A[1]),L=null,yt?(L=yt,yt=null):(p=this.lexer.yyleng,h=this.lexer.yytext,c=this.lexer.yylineno,O=this.lexer.yylloc,d>0&&d--);break;case 2:if(F=this.productions_[A[1]][1],re.$=u[u.length-F],re._$={first_line:l[l.length-(F||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(F||1)].first_column,last_column:l[l.length-1].last_column},k&&(re._$.range=[l[l.length-(F||1)].range[0],l[l.length-1].range[1]]),kt=this.performAction.call(re,h,p,c,this.yy,A[1],u,l),typeof kt!="undefined")return kt;F&&(o=o.slice(0,-1*F*2),u=u.slice(0,-1*F),l=l.slice(0,-1*F)),o.push(this.productions_[A[1]][0]),u.push(re.$),l.push(re._$),vr=a[o[o.length-2]][o[o.length-1]],o.push(vr);break;case 3:return!0}}return!0}},e=function(){var n={EOF:1,parseError:function(s,o){if(this.yy.parser)this.yy.parser.parseError(s,o);else throw new Error(s)},setInput:function(s){return this._input=s,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var o=s.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var o=s.length,u=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o-1),this.offset-=o;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===l.length?this.yylloc.first_column:0)+l[l.length-u.length].length-u[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-o]),this},more:function(){return this._more=!0,this},less:function(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),o=new Array(s.length+1).join("-");return s+this.upcomingInput()+` -`+o+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,o,u,l,a,h;this._more||(this.yytext="",this.match="");for(var c=this._currentRules(),p=0;po[0].length)&&(o=u,l=p,!this.options.flex)));p++);return o?(h=o[0].match(/(?:\r\n?|\n).*/g),h&&(this.yylineno+=h.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:h?h[h.length-1].length-h[h.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],s=this.performAction.call(this,this.yy,this,c[l],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s||void 0):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var s=this.next();return typeof s!="undefined"?s:this.lex()},begin:function(s){this.conditionStack.push(s)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(s){this.begin(s)}};return n.options={},n.performAction=function(s,o,u,l){function a(c,p){return o.yytext=o.yytext.substring(c,o.yyleng-p+c)}var h=l;switch(u){case 0:if(o.yytext.slice(-2)==="\\\\"?(a(0,1),this.begin("mu")):o.yytext.slice(-1)==="\\"?(a(0,1),this.begin("emu")):this.begin("mu"),o.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;break;case 3:return this.begin("raw"),15;break;case 4:return this.popState(),this.conditionStack[this.conditionStack.length-1]==="raw"?15:(a(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;break;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;break;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;break;case 16:return this.popState(),44;break;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(o.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;break;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;break;case 30:return this.popState(),33;break;case 31:return o.yytext=a(1,2).replace(/\\"/g,'"'),80;break;case 32:return o.yytext=a(1,2).replace(/\\'/g,"'"),80;break;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return o.yytext=o.yytext.replace(/\\([\\\]])/g,"$1"),72;break;case 43:return"INVALID";case 44:return 5}},n.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],n.conditions={mu:{rules:[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],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},n}();t.lexer=e;function r(){this.yy={}}return r.prototype=t,t.Parser=r,new r}();et.default=eo;hn.exports=et.default});var it=m((nt,mn)=>{"use strict";nt.__esModule=!0;function to(t){return t&&t.__esModule?t:{default:t}}var ro=M(),Vt=to(ro);function tt(){this.parents=[]}tt.prototype={constructor:tt,mutating:!1,acceptKey:function(e,r){var n=this.accept(e[r]);if(this.mutating){if(n&&!tt.prototype[n.type])throw new Vt.default('Unexpected node type "'+n.type+'" found when accepting '+r+" on "+e.type);e[r]=n}},acceptRequired:function(e,r){if(this.acceptKey(e,r),!e[r])throw new Vt.default(e.type+" requires "+r)},acceptArray:function(e){for(var r=0,n=e.length;r{"use strict";st.__esModule=!0;function no(t){return t&&t.__esModule?t:{default:t}}var io=it(),so=no(io);function H(){var t=arguments.length<=0||arguments[0]===void 0?{}:arguments[0];this.options=t}H.prototype=new so.default;H.prototype.Program=function(t){var e=!this.options.ignoreStandalone,r=!this.isRootSeen;this.isRootSeen=!0;for(var n=t.body,i=0,s=n.length;i{"use strict";N.__esModule=!0;N.SourceLocation=uo;N.id=lo;N.stripFlags=co;N.stripComment=ho;N.preparePath=po;N.prepareMustache=fo;N.prepareRawBlock=mo;N.prepareBlock=go;N.prepareProgram=vo;N.preparePartialBlock=_o;function oo(t){return t&&t.__esModule?t:{default:t}}var ao=M(),Ut=oo(ao);function Kt(t,e){if(e=e.path?e.path.original:e,t.path.original!==e){var r={loc:t.path.loc};throw new Ut.default(t.path.original+" doesn't match "+e,r)}}function uo(t,e){this.source=t,this.start={line:e.first_line,column:e.first_column},this.end={line:e.last_line,column:e.last_column}}function lo(t){return/^\[.*\]$/.test(t)?t.substring(1,t.length-1):t}function co(t,e){return{open:t.charAt(2)==="~",close:e.charAt(e.length-3)==="~"}}function ho(t){return t.replace(/^\{\{~?!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function po(t,e,r){r=this.locInfo(r);for(var n=t?"@":"",i=[],s=0,o=0,u=e.length;o0)throw new Ut.default("Invalid path: "+n,{loc:r});l===".."&&s++}else i.push(l)}return{type:"PathExpression",data:t,depth:s,parts:i,original:n,loc:r}}function fo(t,e,r,n,i,s){var o=n.charAt(3)||n.charAt(2),u=o!=="{"&&o!=="&",l=/\*/.test(n);return{type:l?"Decorator":"MustacheStatement",path:t,params:e,hash:r,escaped:u,strip:i,loc:this.locInfo(s)}}function mo(t,e,r,n){Kt(t,r),n=this.locInfo(n);var i={type:"Program",body:e,strip:{},loc:n};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:i,openStrip:{},inverseStrip:{},closeStrip:{},loc:n}}function go(t,e,r,n,i,s){n&&n.path&&Kt(t,n);var o=/\*/.test(t.open);e.blockParams=t.blockParams;var u=void 0,l=void 0;if(r){if(o)throw new Ut.default("Unexpected inverse block on decorator",r);r.chain&&(r.program.body[0].closeStrip=n.strip),l=r.strip,u=r.program}return i&&(i=u,u=e,e=i),{type:o?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:e,inverse:u,openStrip:t.strip,inverseStrip:l,closeStrip:n&&n.strip,loc:this.locInfo(s)}}function vo(t,e){if(!e&&t.length){var r=t[0].loc,n=t[t.length-1].loc;r&&n&&(e={source:r.source,start:{line:r.start.line,column:r.start.column},end:{line:n.end.line,column:n.end.column}})}return{type:"Program",body:t,strip:{},loc:e}}function _o(t,e,r,n){return Kt(t,r),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:e,openStrip:t.strip,closeStrip:r&&r.strip,loc:this.locInfo(n)}}});var kn=m(_e=>{"use strict";_e.__esModule=!0;_e.parseWithoutProcessing=yn;_e.parse=Eo;function So(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Sn(t){return t&&t.__esModule?t:{default:t}}var yo=pn(),Jt=Sn(yo),ko=vn(),Po=Sn(ko),bo=_n(),Co=So(bo),Lo=P();_e.parser=Jt.default;var ot={};Lo.extend(ot,Co);function yn(t,e){if(t.type==="Program")return t;Jt.default.yy=ot,ot.locInfo=function(n){return new ot.SourceLocation(e&&e.srcName,n)};var r=Jt.default.parse(t);return r}function Eo(t,e){var r=yn(t,e),n=new Po.default(e);return n.accept(r)}});var Ln=m(Pe=>{"use strict";Pe.__esModule=!0;Pe.Compiler=zt;Pe.precompile=Ao;Pe.compile=Mo;function bn(t){return t&&t.__esModule?t:{default:t}}var xo=M(),ye=bn(xo),ke=P(),wo=$e(),Se=bn(wo),Oo=[].slice;function zt(){}zt.prototype={compiler:zt,equals:function(e){var r=this.opcodes.length;if(e.opcodes.length!==r)return!1;for(var n=0;n1)throw new ye.default("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,s=e.name.type==="SubExpression";s&&this.accept(e.name),this.setupFullMustacheParams(e,r,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",s,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){Pn(e);var r=this.classifySexpr(e);r==="simple"?this.simpleSexpr(e):r==="helper"?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,r,n){var i=e.path,s=i.parts[0],o=r!=null||n!=null;this.opcode("getContext",i.depth),this.opcode("pushProgram",r),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",s,o)},simpleSexpr:function(e){var r=e.path;r.strict=!0,this.accept(r),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,r,n){var i=this.setupFullMustacheParams(e,r,n),s=e.path,o=s.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new ye.default("You specified knownHelpersOnly, but used the unknown helper "+o,e);s.strict=!0,s.falsy=!0,this.accept(s),this.opcode("invokeHelper",i.length,s.original,Se.default.helpers.simpleId(s))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var r=e.parts[0],n=Se.default.helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(r);i?this.opcode("lookupBlockParam",i,e.parts):r?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var r=e.pairs,n=0,i=r.length;for(this.opcode("pushHash");n=0)return[r,s]}}};function Ao(t,e,r){if(t==null||typeof t!="string"&&t.type!=="Program")throw new ye.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);e=e||{},"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var n=r.parse(t,e),i=new r.Compiler().compile(n,e);return new r.JavaScriptCompiler().compile(i,e)}function Mo(t,e,r){if(e===void 0&&(e={}),t==null||typeof t!="string"&&t.type!=="Program")throw new ye.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);e=ke.extend({},e),"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var n=void 0;function i(){var o=r.parse(t,e),u=new r.Compiler().compile(o,e),l=new r.JavaScriptCompiler().compile(u,e,void 0,!0);return r.template(l)}function s(o,u){return n||(n=i()),n.call(this,o,u)}return s._setup=function(o){return n||(n=i()),n._setup(o)},s._child=function(o,u,l,a){return n||(n=i()),n._child(o,u,l,a)},s}function Cn(t,e){if(t===e)return!0;if(ke.isArray(t)&&ke.isArray(e)&&t.length===e.length){for(var r=0;r{var En="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");Qt.encode=function(t){if(0<=t&&t{var wn=xn(),Yt=5,On=1<>1;return e?-r:r}Xt.encode=function(e){var r="",n,i=No(e);do n=i&An,i>>>=Yt,i>0&&(n|=Mn),r+=wn.encode(n);while(i>0);return r};Xt.decode=function(e,r,n){var i=e.length,s=0,o=0,u,l;do{if(r>=i)throw new Error("Expected more digits in base 64 VLQ value.");if(l=wn.decode(e.charCodeAt(r++)),l===-1)throw new Error("Invalid base64 digit: "+e.charAt(r-1));u=!!(l&Mn),l&=An,s=s+(l<{function Do(t,e,r){if(e in t)return t[e];if(arguments.length===3)return r;throw new Error('"'+e+'" is a required argument.')}C.getArg=Do;var Nn=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,Ro=/^data:.+\,.+$/;function be(t){var e=t.match(Nn);return e?{scheme:e[1],auth:e[2],host:e[3],port:e[4],path:e[5]}:null}C.urlParse=be;function oe(t){var e="";return t.scheme&&(e+=t.scheme+":"),e+="//",t.auth&&(e+=t.auth+"@"),t.host&&(e+=t.host),t.port&&(e+=":"+t.port),t.path&&(e+=t.path),e}C.urlGenerate=oe;function jt(t){var e=t,r=be(t);if(r){if(!r.path)return t;e=r.path}for(var n=C.isAbsolute(e),i=e.split(/\/+/),s,o=0,u=i.length-1;u>=0;u--)s=i[u],s==="."?i.splice(u,1):s===".."?o++:o>0&&(s===""?(i.splice(u+1,o),o=0):(i.splice(u,2),o--));return e=i.join("/"),e===""&&(e=n?"/":"."),r?(r.path=e,oe(r)):e}C.normalize=jt;function In(t,e){t===""&&(t="."),e===""&&(e=".");var r=be(e),n=be(t);if(n&&(t=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),oe(r);if(r||e.match(Ro))return e;if(n&&!n.host&&!n.path)return n.host=e,oe(n);var i=e.charAt(0)==="/"?e:jt(t.replace(/\/+$/,"")+"/"+e);return n?(n.path=i,oe(n)):i}C.join=In;C.isAbsolute=function(t){return t.charAt(0)==="/"||Nn.test(t)};function Bo(t,e){t===""&&(t="."),t=t.replace(/\/$/,"");for(var r=0;e.indexOf(t+"/")!==0;){var n=t.lastIndexOf("/");if(n<0||(t=t.slice(0,n),t.match(/^([^\/]+:\/)?\/*$/)))return e;++r}return Array(r+1).join("../")+e.substr(t.length+1)}C.relative=Bo;var Dn=function(){var t=Object.create(null);return!("__proto__"in t)}();function Rn(t){return t}function Ho(t){return Bn(t)?"$"+t:t}C.toSetString=Dn?Rn:Ho;function To(t){return Bn(t)?t.slice(1):t}C.fromSetString=Dn?Rn:To;function Bn(t){if(!t)return!1;var e=t.length;if(e<9||t.charCodeAt(e-1)!==95||t.charCodeAt(e-2)!==95||t.charCodeAt(e-3)!==111||t.charCodeAt(e-4)!==116||t.charCodeAt(e-5)!==111||t.charCodeAt(e-6)!==114||t.charCodeAt(e-7)!==112||t.charCodeAt(e-8)!==95||t.charCodeAt(e-9)!==95)return!1;for(var r=e-10;r>=0;r--)if(t.charCodeAt(r)!==36)return!1;return!0}function qo(t,e,r){var n=ae(t.source,e.source);return n!==0||(n=t.originalLine-e.originalLine,n!==0)||(n=t.originalColumn-e.originalColumn,n!==0||r)||(n=t.generatedColumn-e.generatedColumn,n!==0)||(n=t.generatedLine-e.generatedLine,n!==0)?n:ae(t.name,e.name)}C.compareByOriginalPositions=qo;function Fo(t,e,r){var n=t.generatedLine-e.generatedLine;return n!==0||(n=t.generatedColumn-e.generatedColumn,n!==0||r)||(n=ae(t.source,e.source),n!==0)||(n=t.originalLine-e.originalLine,n!==0)||(n=t.originalColumn-e.originalColumn,n!==0)?n:ae(t.name,e.name)}C.compareByGeneratedPositionsDeflated=Fo;function ae(t,e){return t===e?0:t===null?1:e===null?-1:t>e?1:-1}function Vo(t,e){var r=t.generatedLine-e.generatedLine;return r!==0||(r=t.generatedColumn-e.generatedColumn,r!==0)||(r=ae(t.source,e.source),r!==0)||(r=t.originalLine-e.originalLine,r!==0)||(r=t.originalColumn-e.originalColumn,r!==0)?r:ae(t.name,e.name)}C.compareByGeneratedPositionsInflated=Vo;function Wo(t){return JSON.parse(t.replace(/^\)]}'[^\n]*\n/,""))}C.parseSourceMapInput=Wo;function Go(t,e,r){if(e=e||"",t&&(t[t.length-1]!=="/"&&e[0]!=="/"&&(t+="/"),e=t+e),r){var n=be(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var i=n.path.lastIndexOf("/");i>=0&&(n.path=n.path.substring(0,i+1))}e=In(oe(n),e)}return jt(e)}C.computeSourceURL=Go});var tr=m(Hn=>{var $t=ue(),er=Object.prototype.hasOwnProperty,$=typeof Map!="undefined";function U(){this._array=[],this._set=$?new Map:Object.create(null)}U.fromArray=function(e,r){for(var n=new U,i=0,s=e.length;i=0)return r}else{var n=$t.toSetString(e);if(er.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')};U.prototype.at=function(e){if(e>=0&&e{var Tn=ue();function Uo(t,e){var r=t.generatedLine,n=e.generatedLine,i=t.generatedColumn,s=e.generatedColumn;return n>r||n==r&&s>=i||Tn.compareByGeneratedPositionsInflated(t,e)<=0}function at(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}at.prototype.unsortedForEach=function(e,r){this._array.forEach(e,r)};at.prototype.add=function(e){Uo(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))};at.prototype.toArray=function(){return this._sorted||(this._array.sort(Tn.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};qn.MappingList=at});var rr=m(Vn=>{var Ce=Zt(),y=ue(),ut=tr().ArraySet,Ko=Fn().MappingList;function I(t){t||(t={}),this._file=y.getArg(t,"file",null),this._sourceRoot=y.getArg(t,"sourceRoot",null),this._skipValidation=y.getArg(t,"skipValidation",!1),this._sources=new ut,this._names=new ut,this._mappings=new Ko,this._sourcesContents=null}I.prototype._version=3;I.fromSourceMap=function(e){var r=e.sourceRoot,n=new I({file:e.file,sourceRoot:r});return e.eachMapping(function(i){var s={generated:{line:i.generatedLine,column:i.generatedColumn}};i.source!=null&&(s.source=i.source,r!=null&&(s.source=y.relative(r,s.source)),s.original={line:i.originalLine,column:i.originalColumn},i.name!=null&&(s.name=i.name)),n.addMapping(s)}),e.sources.forEach(function(i){var s=i;r!==null&&(s=y.relative(r,i)),n._sources.has(s)||n._sources.add(s);var o=e.sourceContentFor(i);o!=null&&n.setSourceContent(i,o)}),n};I.prototype.addMapping=function(e){var r=y.getArg(e,"generated"),n=y.getArg(e,"original",null),i=y.getArg(e,"source",null),s=y.getArg(e,"name",null);this._skipValidation||this._validateMapping(r,n,i,s),i!=null&&(i=String(i),this._sources.has(i)||this._sources.add(i)),s!=null&&(s=String(s),this._names.has(s)||this._names.add(s)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:i,name:s})};I.prototype.setSourceContent=function(e,r){var n=e;this._sourceRoot!=null&&(n=y.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[y.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[y.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};I.prototype.applySourceMap=function(e,r,n){var i=r;if(r==null){if(e.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);i=e.file}var s=this._sourceRoot;s!=null&&(i=y.relative(s,i));var o=new ut,u=new ut;this._mappings.unsortedForEach(function(l){if(l.source===i&&l.originalLine!=null){var a=e.originalPositionFor({line:l.originalLine,column:l.originalColumn});a.source!=null&&(l.source=a.source,n!=null&&(l.source=y.join(n,l.source)),s!=null&&(l.source=y.relative(s,l.source)),l.originalLine=a.line,l.originalColumn=a.column,a.name!=null&&(l.name=a.name))}var h=l.source;h!=null&&!o.has(h)&&o.add(h);var c=l.name;c!=null&&!u.has(c)&&u.add(c)},this),this._sources=o,this._names=u,e.sources.forEach(function(l){var a=e.sourceContentFor(l);a!=null&&(n!=null&&(l=y.join(n,l)),s!=null&&(l=y.relative(s,l)),this.setSourceContent(l,a))},this)};I.prototype._validateMapping=function(e,r,n,i){if(r&&typeof r.line!="number"&&typeof r.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!r&&!n&&!i)){if(e&&"line"in e&&"column"in e&&r&&"line"in r&&"column"in r&&e.line>0&&e.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:r,name:i}))}};I.prototype._serializeMappings=function(){for(var e=0,r=1,n=0,i=0,s=0,o=0,u="",l,a,h,c,p=this._mappings.toArray(),d=0,g=p.length;d0){if(!y.compareByGeneratedPositionsInflated(a,p[d-1]))continue;l+=","}l+=Ce.encode(a.generatedColumn-e),e=a.generatedColumn,a.source!=null&&(c=this._sources.indexOf(a.source),l+=Ce.encode(c-o),o=c,l+=Ce.encode(a.originalLine-1-i),i=a.originalLine-1,l+=Ce.encode(a.originalColumn-n),n=a.originalColumn,a.name!=null&&(h=this._names.indexOf(a.name),l+=Ce.encode(h-s),s=h)),u+=l}return u};I.prototype._generateSourcesContent=function(e,r){return e.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=y.relative(r,n));var i=y.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,i)?this._sourcesContents[i]:null},this)};I.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(e.file=this._file),this._sourceRoot!=null&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e};I.prototype.toString=function(){return JSON.stringify(this.toJSON())};Vn.SourceMapGenerator=I});var Wn=m(ee=>{ee.GREATEST_LOWER_BOUND=1;ee.LEAST_UPPER_BOUND=2;function nr(t,e,r,n,i,s){var o=Math.floor((e-t)/2)+t,u=i(r,n[o],!0);return u===0?o:u>0?e-o>1?nr(o,e,r,n,i,s):s==ee.LEAST_UPPER_BOUND?e1?nr(t,o,r,n,i,s):s==ee.LEAST_UPPER_BOUND?o:t<0?-1:t}ee.search=function(e,r,n,i){if(r.length===0)return-1;var s=nr(-1,r.length,e,r,n,i||ee.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&n(r[s],r[s-1],!0)===0;)--s;return s}});var Un=m(Gn=>{function ir(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Jo(t,e){return Math.round(t+Math.random()*(e-t))}function sr(t,e,r,n){if(r{var f=ue(),or=Wn(),le=tr().ArraySet,zo=Zt(),Le=Un().quickSort;function v(t,e){var r=t;return typeof t=="string"&&(r=f.parseSourceMapInput(t)),r.sections!=null?new D(r,e):new b(r,e)}v.fromSourceMap=function(t,e){return b.fromSourceMap(t,e)};v.prototype._version=3;v.prototype.__generatedMappings=null;Object.defineProperty(v.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}});v.prototype.__originalMappings=null;Object.defineProperty(v.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}});v.prototype._charIsMappingSeparator=function(e,r){var n=e.charAt(r);return n===";"||n===","};v.prototype._parseMappings=function(e,r){throw new Error("Subclasses must implement _parseMappings")};v.GENERATED_ORDER=1;v.ORIGINAL_ORDER=2;v.GREATEST_LOWER_BOUND=1;v.LEAST_UPPER_BOUND=2;v.prototype.eachMapping=function(e,r,n){var i=r||null,s=n||v.GENERATED_ORDER,o;switch(s){case v.GENERATED_ORDER:o=this._generatedMappings;break;case v.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;o.map(function(l){var a=l.source===null?null:this._sources.at(l.source);return a=f.computeSourceURL(u,a,this._sourceMapURL),{source:a,generatedLine:l.generatedLine,generatedColumn:l.generatedColumn,originalLine:l.originalLine,originalColumn:l.originalColumn,name:l.name===null?null:this._names.at(l.name)}},this).forEach(e,i)};v.prototype.allGeneratedPositionsFor=function(e){var r=f.getArg(e,"line"),n={source:f.getArg(e,"source"),originalLine:r,originalColumn:f.getArg(e,"column",0)};if(n.source=this._findSourceIndex(n.source),n.source<0)return[];var i=[],s=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",f.compareByOriginalPositions,or.LEAST_UPPER_BOUND);if(s>=0){var o=this._originalMappings[s];if(e.column===void 0)for(var u=o.originalLine;o&&o.originalLine===u;)i.push({line:f.getArg(o,"generatedLine",null),column:f.getArg(o,"generatedColumn",null),lastColumn:f.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++s];else for(var l=o.originalColumn;o&&o.originalLine===r&&o.originalColumn==l;)i.push({line:f.getArg(o,"generatedLine",null),column:f.getArg(o,"generatedColumn",null),lastColumn:f.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++s]}return i};lt.SourceMapConsumer=v;function b(t,e){var r=t;typeof t=="string"&&(r=f.parseSourceMapInput(t));var n=f.getArg(r,"version"),i=f.getArg(r,"sources"),s=f.getArg(r,"names",[]),o=f.getArg(r,"sourceRoot",null),u=f.getArg(r,"sourcesContent",null),l=f.getArg(r,"mappings"),a=f.getArg(r,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);o&&(o=f.normalize(o)),i=i.map(String).map(f.normalize).map(function(h){return o&&f.isAbsolute(o)&&f.isAbsolute(h)?f.relative(o,h):h}),this._names=le.fromArray(s.map(String),!0),this._sources=le.fromArray(i,!0),this._absoluteSources=this._sources.toArray().map(function(h){return f.computeSourceURL(o,h,e)}),this.sourceRoot=o,this.sourcesContent=u,this._mappings=l,this._sourceMapURL=e,this.file=a}b.prototype=Object.create(v.prototype);b.prototype.consumer=v;b.prototype._findSourceIndex=function(t){var e=t;if(this.sourceRoot!=null&&(e=f.relative(this.sourceRoot,e)),this._sources.has(e))return this._sources.indexOf(e);var r;for(r=0;r1&&(_.source=u+k[1],u+=k[1],_.originalLine=s+k[2],s=_.originalLine,_.originalLine+=1,_.originalColumn=o+k[3],o=_.originalColumn,k.length>4&&(_.name=l+k[4],l+=k[4])),g.push(_),typeof _.originalLine=="number"&&d.push(_)}Le(g,f.compareByGeneratedPositionsDeflated),this.__generatedMappings=g,Le(d,f.compareByOriginalPositions),this.__originalMappings=d};b.prototype._findMapping=function(e,r,n,i,s,o){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[i]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[i]);return or.search(e,r,s,o)};b.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===r.generatedLine){var s=f.getArg(i,"source",null);s!==null&&(s=this._sources.at(s),s=f.computeSourceURL(this.sourceRoot,s,this._sourceMapURL));var o=f.getArg(i,"name",null);return o!==null&&(o=this._names.at(o)),{source:s,line:f.getArg(i,"originalLine",null),column:f.getArg(i,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}};b.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return e==null}):!1};b.prototype.sourceContentFor=function(e,r){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(n>=0)return this.sourcesContent[n];var i=e;this.sourceRoot!=null&&(i=f.relative(this.sourceRoot,i));var s;if(this.sourceRoot!=null&&(s=f.urlParse(this.sourceRoot))){var o=i.replace(/^file:\/\//,"");if(s.scheme=="file"&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!s.path||s.path=="/")&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(r)return null;throw new Error('"'+i+'" is not in the SourceMap.')};b.prototype.generatedPositionFor=function(e){var r=f.getArg(e,"source");if(r=this._findSourceIndex(r),r<0)return{line:null,column:null,lastColumn:null};var n={source:r,originalLine:f.getArg(e,"line"),originalColumn:f.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",f.compareByOriginalPositions,f.getArg(e,"bias",v.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===n.source)return{line:f.getArg(s,"generatedLine",null),column:f.getArg(s,"generatedColumn",null),lastColumn:f.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}};lt.BasicSourceMapConsumer=b;function D(t,e){var r=t;typeof t=="string"&&(r=f.parseSourceMapInput(t));var n=f.getArg(r,"version"),i=f.getArg(r,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new le,this._names=new le;var s={line:-1,column:0};this._sections=i.map(function(o){if(o.url)throw new Error("Support for url field in sections not implemented.");var u=f.getArg(o,"offset"),l=f.getArg(u,"line"),a=f.getArg(u,"column");if(l{var Qo=rr().SourceMapGenerator,ct=ue(),Yo=/(\r?\n)/,Xo=10,ce="$$$isSourceNode$$$";function w(t,e,r,n,i){this.children=[],this.sourceContents={},this.line=t==null?null:t,this.column=e==null?null:e,this.source=r==null?null:r,this.name=i==null?null:i,this[ce]=!0,n!=null&&this.add(n)}w.fromStringWithSourceMap=function(e,r,n){var i=new w,s=e.split(Yo),o=0,u=function(){var p=g(),d=g()||"";return p+d;function g(){return o=0;r--)this.prepend(e[r]);else if(e[ce]||typeof e=="string")this.children.unshift(e);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this};w.prototype.walk=function(e){for(var r,n=0,i=this.children.length;n0){for(r=[],n=0;n{ht.SourceMapGenerator=rr().SourceMapGenerator;ht.SourceMapConsumer=Jn().SourceMapConsumer;ht.SourceNode=Qn().SourceNode});var $n=m((pt,jn)=>{"use strict";pt.__esModule=!0;var ur=P(),te=void 0;try{(typeof define!="function"||!define.amd)&&(Xn=Yn(),te=Xn.SourceNode)}catch(t){}var Xn;te||(te=function(t,e,r,n){this.src="",n&&this.add(n)},te.prototype={add:function(e){ur.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){ur.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}});function ar(t,e,r){if(ur.isArray(t)){for(var n=[],i=0,s=t.length;i{"use strict";ft.__esModule=!0;function ri(t){return t&&t.__esModule?t:{default:t}}var ei=ze(),Zo=M(),lr=ri(Zo),jo=P(),$o=$n(),ti=ri($o);function he(t){this.value=t}function pe(){}pe.prototype={nameLookup:function(e,r){return this.internalNameLookup(e,r)},depthedLookup:function(e){return[this.aliasable("container.lookup"),"(depths, ",JSON.stringify(e),")"]},compilerInfo:function(){var e=ei.COMPILER_REVISION,r=ei.REVISION_CHANGES[e];return[e,r]},appendToBuffer:function(e,r,n){return jo.isArray(e)||(e=[e]),e=this.source.wrap(e,r),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},internalNameLookup:function(e,r){return this.lookupPropertyFunctionIsUsed=!0,["lookupProperty(",e,",",JSON.stringify(r),")"]},lookupPropertyFunctionIsUsed:!1,compile:function(e,r,n,i){this.environment=e,this.options=r,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,r),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var s=e.opcodes,o=void 0,u=void 0,l=void 0,a=void 0;for(l=0,a=s.length;l0&&(n+=", "+i.join(", "));var s=0;Object.keys(this.aliases).forEach(function(l){var a=r.aliases[l];a.children&&a.referenceCount>1&&(n+=", alias"+ ++s+"="+l,a.children[0]="alias"+s)}),this.lookupPropertyFunctionIsUsed&&(n+=", "+this.lookupPropertyFunctionVarDeclaration());var o=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&o.push("blockParams"),this.useDepths&&o.push("depths");var u=this.mergeSource(n);return e?(o.push(u),Function.apply(this,o)):this.source.wrap(["function(",o.join(","),`) { - `,u,"}"])},mergeSource:function(e){var r=this.environment.isSimple,n=!this.forceBuffer,i=void 0,s=void 0,o=void 0,u=void 0;return this.source.each(function(l){l.appendToBuffer?(o?l.prepend(" + "):o=l,u=l):(o&&(s?o.prepend("buffer += "):i=!0,u.add(";"),o=u=void 0),s=!0,r||(n=!1))}),n?o?(o.prepend("return "),u.add(";")):s||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),u.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":`; -`)),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return` - lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - } - `.trim()},blockValue:function(e){var r=this.aliasable("container.hooks.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(r,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("container.hooks.blockHelperMissing"),r=[this.contextName(0)];this.setupHelperArgs("",0,r,!0),this.flushInline();var n=this.topStack();r.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",r),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(r){return[" != null ? ",r,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,r,n,i){var s=0;!i&&this.options.compat&&!this.lastContext?this.push(this.depthedLookup(e[s++])):this.pushContext(),this.resolvePath("context",e,s,r,n)},lookupBlockParam:function(e,r){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",r,1)},lookupData:function(e,r,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",r,0,!0,n)},resolvePath:function(e,r,n,i,s){var o=this;if(this.options.strict||this.options.assumeObjects){this.push(ea(this.options.strict&&s,this,r,e));return}for(var u=r.length;nthis.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var r=0,n=e.length;r{"use strict";dt.__esModule=!0;function Ee(t){return t&&t.__esModule?t:{default:t}}var ta=un(),ra=Ee(ta),na=$e(),ia=Ee(na),cr=kn(),hr=Ln(),sa=ii(),oa=Ee(sa),aa=it(),ua=Ee(aa),la=Ht(),ca=Ee(la),ha=ra.default.create;function si(){var t=ha();return t.compile=function(e,r){return hr.compile(e,r,t)},t.precompile=function(e,r){return hr.precompile(e,r,t)},t.AST=ia.default,t.Compiler=hr.Compiler,t.JavaScriptCompiler=oa.default,t.Parser=cr.parser,t.parse=cr.parse,t.parseWithoutProcessing=cr.parseWithoutProcessing,t}var fe=si();fe.create=si;ca.default(fe);fe.Visitor=ua.default;fe.default=fe;dt.default=fe;oi.exports=dt.default});var ui=m(mt=>{"use strict";mt.__esModule=!0;mt.print=ma;mt.PrintVisitor=S;function pa(t){return t&&t.__esModule?t:{default:t}}var fa=it(),da=pa(fa);function ma(t){return new S().accept(t)}function S(){this.padding=0}S.prototype=new da.default;S.prototype.pad=function(t){for(var e="",r=0,n=this.padding;r "+e+" }}")};S.prototype.PartialBlockStatement=function(t){var e="PARTIAL BLOCK:"+t.name.original;return t.params[0]&&(e+=" "+this.accept(t.params[0])),t.hash&&(e+=" "+this.accept(t.hash)),e+=" "+this.pad("PROGRAM:"),this.padding++,e+=this.accept(t.program),this.padding--,this.pad("{{> "+e+" }}")};S.prototype.ContentStatement=function(t){return this.pad("CONTENT[ '"+t.value+"' ]")};S.prototype.CommentStatement=function(t){return this.pad("{{! '"+t.value+"' }}")};S.prototype.SubExpression=function(t){for(var e=t.params,r=[],n=void 0,i=0,s=e.length;ithis.generateProgramFunction(this.ast)(l,this.runtimeOptions),o=this.processDecorators(this.ast,s);this.processedRootDecorators=!0;let u=o(this.context,n);return o===s?(this.output.push(u),this.output.join("")):u}Program(r){this.blockParamNames.unshift(r.blockParams),super.Program(r),this.blockParamNames.shift()}MustacheStatement(r){this.processStatementOrExpression(r)}BlockStatement(r){this.processStatementOrExpression(r)}PartialStatement(r){this.invokePartial(r)}PartialBlockStatement(r){this.invokePartial(r)}DecoratorBlock(r){}Decorator(r){}SubExpression(r){this.processStatementOrExpression(r)}PathExpression(r){let n=!r.depth&&!we.default.helpers.scopedId(r)&&this.blockParamIndex(r.parts[0]),i;n?i=this.lookupBlockParam(n,r):r.data?i=this.lookupData(this.runtimeOptions.data,r):i=this.resolvePath(this.contexts[r.depth],r),this.output.push(i)}ContentStatement(r){this.output.push(r.value)}StringLiteral(r){this.output.push(r.value)}NumberLiteral(r){this.output.push(r.value)}BooleanLiteral(r){this.output.push(r.value)}UndefinedLiteral(){this.output.push(void 0)}NullLiteral(){this.output.push(null)}processDecorators(r,n){if(!this.processedDecoratorsForProgram.has(r)){this.processedDecoratorsForProgram.add(r);let i={};for(let s of r.body)fi(s)&&(n=this.processDecorator(s,n,i))}return n}processDecorator(r,n,i){let s=this.setupDecoratorOptions(r),o=this.container.lookupProperty(this.container.decorators,s.name)(n,i,this.container,s);return Object.assign(o||n,i)}processStatementOrExpression(r){switch(gi(r),this.classifyNode(r)){case mr:this.processSimpleNode(r);break;case fr:this.processHelperNode(r);break;case dr:this.processAmbiguousNode(r);break}}classifyNode(r){let n=we.default.helpers.simpleId(r.path),i=n&&!!this.blockParamIndex(r.path.parts[0]),s=!i&&we.default.helpers.helperExpression(r),o=!i&&(s||n);if(o&&!s){let u=r.path.parts[0],l=this.compileOptions;l.knownHelpers&&l.knownHelpers[u]?s=!0:l.knownHelpersOnly&&(o=!1)}return s?fr:o?dr:mr}blockParamIndex(r){for(let n=0,i=this.blockParamNames.length;n=0)return[n,o]}}lookupBlockParam(r,n){let i=this.blockParamValues[r[0]][r[1]];return this.resolvePath(i,n,1)}lookupData(r,n){return n.depth&&(r=this.container.data(r,n.depth)),this.resolvePath(r,n)}processSimpleNode(r){let n=r.path;n.strict=!0;let i=this.resolveNodes(n)[0],s=this.container.lambda(i,this.context);vt(r)?this.blockValue(r,s):this.output.push(s)}blockValue(r,n){let i=r.path.original,s=this.setupParams(r,i),o=this.container.hooks.blockHelperMissing.call(this.context,n,s);this.output.push(o)}processHelperNode(r){let i=r.path.parts[0];if(this.compileOptions.knownHelpers&&this.compileOptions.knownHelpers[i])this.invokeKnownHelper(r);else{if(this.compileOptions.knownHelpersOnly)throw new K.default.Exception("You specified knownHelpersOnly, but used the unknown helper "+i,r);this.invokeHelper(r)}}invokeKnownHelper(r){let n=r.path.parts[0],i=this.setupHelper(r,n),s=i.fn.call(i.context,...i.params,i.options);this.output.push(s)}invokeHelper(r){let n=r.path,i=n.original,s=we.default.helpers.simpleId(n),o=this.setupHelper(r,i),u=s&&o.fn?r.loc:n.loc;o.fn=s&&o.fn||this.resolveNodes(n)[0],o.fn||(this.compileOptions.strict?o.fn=this.container.strict(o.context,i,u):o.fn=this.container.hooks.helperMissing);let l=o.fn.call(o.context,...o.params,o.options);this.output.push(l)}invokePartial(r){var p,d,g;let{params:n}=r;if(n.length>1)throw new K.default.Exception(`Unsupported number of partial arguments: ${n.length}`,r);let s=r.name.type==="SubExpression"?this.resolveNodes(r.name).join(""):r.name.original,o=this.setupParams(r,s);o.helpers=this.container.helpers,o.partials=this.container.partials,o.decorators=this.container.decorators;let u;if("fn"in o&&o.fn!==xe){let{fn:_}=o,O=(p=o.data)==null?void 0:p["partial-block"];o.data=(0,Oe.createFrame)(o.data),u=o.data["partial-block"]=function(T,q={}){return q.data=(0,Oe.createFrame)(q.data),q.data["partial-block"]=O,_(T,q)},_.partials&&(o.partials=E(E({},o.partials),_.partials))}let l={};n.length===0&&!this.compileOptions.explicitPartialContext?l=this.context:n.length===1&&(l=this.resolveNodes(n[0])[0]),Object.keys(o.hash).length>0&&(l=Object.assign({},l,o.hash));let a=(g=(d=this.container.partials[s])!=null?d:u)!=null?g:K.default.VM.resolvePartial(void 0,void 0,o);if(a===void 0)throw new K.default.Exception(`The partial ${s} could not be found`);let h;typeof a=="string"?(h=this.env.compileAST(a,this.compileOptions),s in this.container.partials&&(this.container.partials[s]=h)):h=a;let c=h(l,o);"indent"in r&&(c=r.indent+(this.compileOptions.preventIndent?c:c.replace(/\n(?!$)/g,` -${r.indent}`))),this.output.push(c)}processAmbiguousNode(r){let n=r.path.parts[0],i=this.setupHelper(r,n),{fn:s}=i,o=s?r.loc:r.path.loc;s=s!=null?s:this.resolveNodes(r.path)[0],s===void 0&&(this.compileOptions.strict?s=this.container.strict(i.context,n,o):(s=i.context!=null?this.container.lookupProperty(i.context,n):i.context,s==null&&(s=this.container.hooks.helperMissing)));let u=typeof s=="function"?s.call(i.context,...i.params,i.options):s;if(vt(r)){let l=i.fn?u:this.container.hooks.blockHelperMissing.call(this.context,u,i.options);l!=null&&this.output.push(l)}else r.escaped===!1||this.compileOptions.noEscape===!0||typeof u!="string"?this.output.push(u):this.output.push(K.default.escapeExpression(u))}setupHelper(r,n){return{fn:this.container.lookupProperty(this.container.helpers,n),context:this.context,params:this.resolveNodes(r.params),options:this.setupParams(r,n)}}setupDecoratorOptions(r){let n=r.path.original,i=di(this.setupParams(r,n));if(r.params.length>0)if(this.processedRootDecorators)i.args=this.resolveNodes(r.params);else{let s=this.contexts.shift();i.args=this.resolveNodes(r.params),this.contexts.unshift(s)}else i.args=[];return i}setupParams(r,n){let i=E({name:n,hash:this.getHash(r),data:this.runtimeOptions.data,loc:{start:r.loc.start,end:r.loc.end}},this.defaultHelperOptions);return vt(r)&&(i.fn=r.program?this.processDecorators(r.program,this.generateProgramFunction(r.program)):xe,i.inverse=r.inverse?this.processDecorators(r.inverse,this.generateProgramFunction(r.inverse)):xe),i}generateProgramFunction(r){var i,s;if(!r)return xe;let n=(o,u={})=>{u=E({},u),u.data=u.data||this.runtimeOptions.data,u.blockParams&&(u.blockParams=u.blockParams.concat(this.runtimeOptions.blockParams)),u.partials=u.partials||this.runtimeOptions.partials;let l=this.runtimeOptions;this.runtimeOptions=u;let a=o!==this.context;a&&this.contexts.unshift(o),this.blockParamValues.unshift(u.blockParams||[]);let h=this.resolveNodes(r).join("");return this.blockParamValues.shift(),a&&this.contexts.shift(),this.runtimeOptions=l,h};return n.blockParams=(s=(i=r.blockParams)==null?void 0:i.length)!=null?s:0,n}getHash(r){let n={};if(!r.hash)return n;for(let{key:i,value:s}of r.hash.pairs)n[i]=this.resolveNodes(s)[0];return n}resolvePath(r,n,i=0){if(this.compileOptions.strict||this.compileOptions.assumeObjects)return this.strictLookup(r,n);for(;ir.render(n,i)};globalThis.Handlebars=J;globalThis.handlebarsCompileFnName=vi()?"compile":"compileAST";})(); -//# sourceMappingURL=handlebars.min.js.map diff --git a/ext/lib/handlebars.min.js.map b/ext/lib/handlebars.min.js.map deleted file mode 100644 index d9484007..00000000 --- a/ext/lib/handlebars.min.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/handlebars/lib/handlebars/utils.js", "node_modules/handlebars/lib/handlebars/exception.js", "node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "node_modules/handlebars/lib/handlebars/helpers/each.js", "node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "node_modules/handlebars/lib/handlebars/helpers/if.js", "node_modules/handlebars/lib/handlebars/helpers/log.js", "node_modules/handlebars/lib/handlebars/helpers/lookup.js", "node_modules/handlebars/lib/handlebars/helpers/with.js", "node_modules/handlebars/lib/handlebars/helpers.js", "node_modules/handlebars/lib/handlebars/decorators/inline.js", "node_modules/handlebars/lib/handlebars/decorators.js", "node_modules/handlebars/lib/handlebars/logger.js", "node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "node_modules/handlebars/lib/handlebars/internal/proto-access.js", "node_modules/handlebars/lib/handlebars/base.js", "node_modules/handlebars/lib/handlebars/safe-string.js", "node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "node_modules/handlebars/lib/handlebars/runtime.js", "node_modules/handlebars/lib/handlebars/no-conflict.js", "node_modules/handlebars/lib/handlebars.runtime.js", "node_modules/handlebars/lib/handlebars/compiler/ast.js", "node_modules/handlebars/lib/handlebars/compiler/parser.js", "node_modules/handlebars/lib/handlebars/compiler/visitor.js", "node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "node_modules/handlebars/lib/handlebars/compiler/helpers.js", "node_modules/handlebars/lib/handlebars/compiler/base.js", "node_modules/handlebars/lib/handlebars/compiler/compiler.js", "node_modules/source-map/lib/base64.js", "node_modules/source-map/lib/base64-vlq.js", "node_modules/source-map/lib/util.js", "node_modules/source-map/lib/array-set.js", "node_modules/source-map/lib/mapping-list.js", "node_modules/source-map/lib/source-map-generator.js", "node_modules/source-map/lib/binary-search.js", "node_modules/source-map/lib/quick-sort.js", "node_modules/source-map/lib/source-map-consumer.js", "node_modules/source-map/lib/source-node.js", "node_modules/source-map/source-map.js", "node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "node_modules/handlebars/lib/handlebars.js", "node_modules/handlebars/lib/handlebars/compiler/printer.js", "node_modules/handlebars/lib/index.js", "src/hb/src/visitor.ts", "src/hb/src/symbols.ts", "src/hb/src/utils.ts", "src/hb/src/handlebars.ts", "src/hb/index.ts"], - "sourcesContent": ["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n const newContext = [];\n const iterator = context[global.Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n", "export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n", "export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport * as logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.7';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n", "export default function(Handlebars) {\n /* istanbul ignore next */\n let root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^\\/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[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],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\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\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* global define */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we asusme that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(strictLookup(this.options.strict && strict, this, parts, type));\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, type) {\n let stack = compiler.popStack(),\n i = 0,\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/* eslint-disable new-cap */\nimport Visitor from './visitor';\n\nexport function print(ast) {\n return new PrintVisitor().accept(ast);\n}\n\nexport function PrintVisitor() {\n this.padding = 0;\n}\n\nPrintVisitor.prototype = new Visitor();\n\nPrintVisitor.prototype.pad = function(string) {\n let out = '';\n\n for (let i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n};\n\nPrintVisitor.prototype.Program = function(program) {\n let out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n let blockParams = 'BLOCK PARAMS: [';\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.MustacheStatement = function(mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n};\nPrintVisitor.prototype.Decorator = function(mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n};\n\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function(\n block\n) {\n let out = '';\n\n out += this.pad(\n (block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'\n );\n this.padding++;\n out += this.pad(this.SubExpression(block));\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n if (block.program) {\n this.padding--;\n }\n }\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.PartialStatement = function(partial) {\n let content = 'PARTIAL:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function(partial) {\n let content = 'PARTIAL BLOCK:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n\n return this.pad('{{> ' + content + ' }}');\n};\n\nPrintVisitor.prototype.ContentStatement = function(content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\n\nPrintVisitor.prototype.CommentStatement = function(comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\n\nPrintVisitor.prototype.SubExpression = function(sexpr) {\n let params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (let i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n\n return this.accept(sexpr.path) + ' ' + params + hash;\n};\n\nPrintVisitor.prototype.PathExpression = function(id) {\n let path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n};\n\nPrintVisitor.prototype.StringLiteral = function(string) {\n return '\"' + string.value + '\"';\n};\n\nPrintVisitor.prototype.NumberLiteral = function(number) {\n return 'NUMBER{' + number.value + '}';\n};\n\nPrintVisitor.prototype.BooleanLiteral = function(bool) {\n return 'BOOLEAN{' + bool.value + '}';\n};\n\nPrintVisitor.prototype.UndefinedLiteral = function() {\n return 'UNDEFINED';\n};\n\nPrintVisitor.prototype.NullLiteral = function() {\n return 'NULL';\n};\n\nPrintVisitor.prototype.Hash = function(hash) {\n let pairs = hash.pairs,\n joinedPairs = [];\n\n for (let i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n};\nPrintVisitor.prototype.HashPair = function(pair) {\n return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n", "// USAGE:\n// var handlebars = require('handlebars');\n/* eslint-disable no-var */\n\n// var local = handlebars.create();\n\nvar handlebars = require('../dist/cjs/handlebars')['default'];\n\nvar printer = require('../dist/cjs/handlebars/compiler/printer');\nhandlebars.PrintVisitor = printer.PrintVisitor;\nhandlebars.print = printer.print;\n\nmodule.exports = handlebars;\n\n// Publish a Node.js require() handler for .handlebars and .hbs files\nfunction extension(module, filename) {\n var fs = require('fs');\n var templateString = fs.readFileSync(filename, 'utf8');\n module.exports = handlebars.compile(templateString);\n}\n/* istanbul ignore else */\nif (typeof require !== 'undefined' && require.extensions) {\n require.extensions['.handlebars'] = extension;\n require.extensions['.hbs'] = extension;\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nimport Handlebars from 'handlebars';\nimport {\n createProtoAccessControl,\n resultIsAllowed,\n // @ts-expect-error: Could not find a declaration file for module\n} from 'handlebars/dist/cjs/handlebars/internal/proto-access';\n// @ts-expect-error: Could not find a declaration file for module\nimport AST from 'handlebars/dist/cjs/handlebars/compiler/ast';\n// @ts-expect-error: Could not find a declaration file for module\nimport { indexOf, createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n// @ts-expect-error: Could not find a declaration file for module\nimport { moveHelperToHooks } from 'handlebars/dist/cjs/handlebars/helpers';\n\nimport type {\n AmbiguousHelperOptions,\n CompileOptions,\n Container,\n DecoratorDelegate,\n DecoratorsHash,\n HelperOptions,\n NodeType,\n NonBlockHelperOptions,\n ProcessableBlockStatementNode,\n ProcessableNode,\n ProcessableNodeWithPathParts,\n ProcessableNodeWithPathPartsOrLiteral,\n ProcessableStatementNode,\n ResolvePartialOptions,\n RuntimeOptions,\n Template,\n TemplateDelegate,\n VisitorHelper,\n} from './types';\nimport { kAmbiguous, kHelper, kSimple } from './symbols';\nimport {\n initData,\n isBlock,\n isDecorator,\n noop,\n toDecoratorOptions,\n transformLiteralToPath,\n} from './utils';\n\nexport class ElasticHandlebarsVisitor extends Handlebars.Visitor {\n private env: typeof Handlebars;\n private contexts: any[] = [];\n private output: any[] = [];\n private template?: string;\n private compileOptions: CompileOptions;\n private runtimeOptions?: RuntimeOptions;\n private blockParamNames: any[][] = [];\n private blockParamValues: any[][] = [];\n private ast?: hbs.AST.Program;\n private container: Container;\n private defaultHelperOptions: Pick;\n private processedRootDecorators = false; // Root decorators should not have access to input arguments. This flag helps us detect them.\n private processedDecoratorsForProgram = new Set(); // It's important that a given program node only has its decorators run once, we use this Map to keep track of them\n\n constructor(\n env: typeof Handlebars,\n input: string | hbs.AST.Program,\n options: CompileOptions = {}\n ) {\n super();\n\n this.env = env;\n\n if (typeof input !== 'string' && input.type === 'Program') {\n this.ast = input;\n } else {\n this.template = input as string;\n }\n\n this.compileOptions = { data: true, ...options };\n this.compileOptions.knownHelpers = Object.assign(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true,\n },\n this.compileOptions.knownHelpers\n );\n\n const protoAccessControl = createProtoAccessControl({});\n\n const container: Container = (this.container = {\n helpers: {},\n partials: {},\n decorators: {},\n strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Handlebars.Exception('\"' + name + '\" not defined in ' + obj, {\n loc,\n } as hbs.AST.Node);\n }\n return container.lookupProperty(obj, name);\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lookupProperty(parent, propertyName) {\n const result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n data(value: any, depth: number) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n hooks: {},\n });\n\n this.defaultHelperOptions = {\n lookupProperty: container.lookupProperty,\n };\n }\n\n render(context: any, options: RuntimeOptions = {}): string {\n this.contexts = [context];\n this.output = [];\n this.runtimeOptions = { ...options };\n this.container.helpers = { ...this.env.helpers, ...options.helpers };\n this.container.partials = { ...this.env.partials, ...options.partials };\n this.container.decorators = {\n ...(this.env.decorators as DecoratorsHash),\n ...options.decorators,\n };\n this.container.hooks = {};\n this.processedRootDecorators = false;\n this.processedDecoratorsForProgram.clear();\n\n if (this.compileOptions.data) {\n this.runtimeOptions.data = initData(context, this.runtimeOptions.data);\n }\n\n const keepHelperInHelpers = false;\n moveHelperToHooks(this.container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(this.container, 'blockHelperMissing', keepHelperInHelpers);\n\n if (!this.ast) {\n this.ast = Handlebars.parse(this.template!);\n }\n\n // The `defaultMain` function contains the default behavior:\n //\n // Generate a \"program\" function based on the root `Program` in the AST and\n // call it. This will start the processing of all the child nodes in the\n // AST.\n const defaultMain: TemplateDelegate = (_context) => {\n const prog = this.generateProgramFunction(this.ast!);\n return prog(_context, this.runtimeOptions);\n };\n\n // Run any decorators that might exist on the root:\n //\n // The `defaultMain` function is passed in, and if there are no root\n // decorators, or if the decorators chooses to do so, the same function is\n // returned from `processDecorators` and the default behavior is retained.\n //\n // Alternatively any of the root decorators might call the `defaultMain`\n // function themselves, process its return value, and return a completely\n // different `main` function.\n const main = this.processDecorators(this.ast, defaultMain);\n this.processedRootDecorators = true;\n\n // Call the `main` function and add the result to the final output.\n const result = main(this.context, options);\n\n if (main === defaultMain) {\n this.output.push(result);\n return this.output.join('');\n } else {\n // We normally expect the return value of `main` to be a string. However,\n // if a decorator is used to override the `defaultMain` function, the\n // return value can be any type. To match the upstream handlebars project\n // behavior, we want the result of rendering the template to be the\n // literal value returned by the decorator.\n //\n // Since the output array in this case always will be empty, we just\n // return that single value instead of attempting to join all the array\n // elements as strings.\n return result;\n }\n }\n\n // ********************************************** //\n // *** Visitor AST Traversal Functions *** //\n // ********************************************** //\n\n Program(program: hbs.AST.Program) {\n this.blockParamNames.unshift(program.blockParams);\n super.Program(program);\n this.blockParamNames.shift();\n }\n\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\n this.processStatementOrExpression(mustache);\n }\n\n BlockStatement(block: hbs.AST.BlockStatement) {\n this.processStatementOrExpression(block);\n }\n\n PartialStatement(partial: hbs.AST.PartialStatement) {\n this.invokePartial(partial);\n }\n\n PartialBlockStatement(partial: hbs.AST.PartialBlockStatement) {\n this.invokePartial(partial);\n }\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n DecoratorBlock(decorator: hbs.AST.DecoratorBlock) {}\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n Decorator(decorator: hbs.AST.Decorator) {}\n\n SubExpression(sexpr: hbs.AST.SubExpression) {\n this.processStatementOrExpression(sexpr);\n }\n\n PathExpression(path: hbs.AST.PathExpression) {\n const blockParamId =\n !path.depth && !AST.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]);\n\n let result;\n if (blockParamId) {\n result = this.lookupBlockParam(blockParamId, path);\n } else if (path.data) {\n result = this.lookupData(this.runtimeOptions!.data, path);\n } else {\n result = this.resolvePath(this.contexts[path.depth], path);\n }\n\n this.output.push(result);\n }\n\n ContentStatement(content: hbs.AST.ContentStatement) {\n this.output.push(content.value);\n }\n\n StringLiteral(string: hbs.AST.StringLiteral) {\n this.output.push(string.value);\n }\n\n NumberLiteral(number: hbs.AST.NumberLiteral) {\n this.output.push(number.value);\n }\n\n BooleanLiteral(bool: hbs.AST.BooleanLiteral) {\n this.output.push(bool.value);\n }\n\n UndefinedLiteral() {\n this.output.push(undefined);\n }\n\n NullLiteral() {\n this.output.push(null);\n }\n\n // ********************************************** //\n // *** Visitor AST Helper Functions *** //\n // ********************************************** //\n\n /**\n * Special code for decorators, since they have to be executed ahead of time (before the wrapping program).\n * So we have to look into the program AST body and see if it contains any decorators that we have to process\n * before we can finish processing of the wrapping program.\n */\n private processDecorators(program: hbs.AST.Program, prog: TemplateDelegate) {\n if (!this.processedDecoratorsForProgram.has(program)) {\n this.processedDecoratorsForProgram.add(program);\n const props = {};\n for (const node of program.body) {\n if (isDecorator(node)) {\n prog = this.processDecorator(node, prog, props);\n }\n }\n }\n\n return prog;\n }\n\n private processDecorator(\n decorator: hbs.AST.DecoratorBlock | hbs.AST.Decorator,\n prog: TemplateDelegate,\n props: Record\n ) {\n const options = this.setupDecoratorOptions(decorator);\n\n const result = this.container.lookupProperty(\n this.container.decorators,\n options.name\n )(prog, props, this.container, options);\n\n return Object.assign(result || prog, props);\n }\n\n private processStatementOrExpression(node: ProcessableNodeWithPathPartsOrLiteral) {\n // Calling `transformLiteralToPath` has side-effects!\n // It converts a node from type `ProcessableNodeWithPathPartsOrLiteral` to `ProcessableNodeWithPathParts`\n transformLiteralToPath(node);\n\n switch (this.classifyNode(node as ProcessableNodeWithPathParts)) {\n case kSimple:\n this.processSimpleNode(node as ProcessableNodeWithPathParts);\n break;\n case kHelper:\n this.processHelperNode(node as ProcessableNodeWithPathParts);\n break;\n case kAmbiguous:\n this.processAmbiguousNode(node as ProcessableNodeWithPathParts);\n break;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr)\n private classifyNode(node: { path: hbs.AST.PathExpression }): NodeType {\n const isSimple = AST.helpers.simpleId(node.path);\n const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(node);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n const name = node.path.parts[0];\n const options = this.compileOptions;\n if (options.knownHelpers && options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return kHelper;\n } else if (isEligible) {\n return kAmbiguous;\n } else {\n return kSimple;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js\n private blockParamIndex(name: string): [number, any] | undefined {\n for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) {\n const blockParams = this.blockParamNames[depth];\n const param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n private lookupBlockParam(blockParamId: [number, any], path: hbs.AST.PathExpression) {\n const value = this.blockParamValues[blockParamId[0]][blockParamId[1]];\n return this.resolvePath(value, path, 1);\n }\n\n // Push the data lookup operator\n private lookupData(data: any, path: hbs.AST.PathExpression) {\n if (path.depth) {\n data = this.container.data(data, path.depth);\n }\n\n return this.resolvePath(data, path);\n }\n\n private processSimpleNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n path.strict = true;\n const result = this.resolveNodes(path)[0];\n const lambdaResult = this.container.lambda(result, this.context);\n\n if (isBlock(node)) {\n this.blockValue(node, lambdaResult);\n } else {\n this.output.push(lambdaResult);\n }\n }\n\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n private blockValue(node: hbs.AST.BlockStatement, value: any) {\n const name = node.path.original;\n const options = this.setupParams(node, name);\n\n const result = this.container.hooks.blockHelperMissing!.call(this.context, value, options);\n\n this.output.push(result);\n }\n\n private processHelperNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.parts[0];\n\n if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) {\n this.invokeKnownHelper(node);\n } else if (this.compileOptions.knownHelpersOnly) {\n throw new Handlebars.Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n node\n );\n } else {\n this.invokeHelper(node);\n }\n }\n\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n private invokeKnownHelper(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n this.output.push(result);\n }\n\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n private invokeHelper(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.original;\n const isSimple = AST.helpers.simpleId(path);\n const helper = this.setupHelper(node, name);\n\n const loc = isSimple && helper.fn ? node.loc : path.loc;\n helper.fn = (isSimple && helper.fn) || this.resolveNodes(path)[0];\n\n if (!helper.fn) {\n if (this.compileOptions.strict) {\n helper.fn = this.container.strict(helper.context, name, loc);\n } else {\n helper.fn = this.container.hooks.helperMissing;\n }\n }\n\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.output.push(result);\n }\n\n private invokePartial(partial: hbs.AST.PartialStatement | hbs.AST.PartialBlockStatement) {\n const { params } = partial;\n if (params.length > 1) {\n throw new Handlebars.Exception(\n `Unsupported number of partial arguments: ${params.length}`,\n partial\n );\n }\n\n const isDynamic = partial.name.type === 'SubExpression';\n const name = isDynamic\n ? this.resolveNodes(partial.name).join('')\n : (partial.name as hbs.AST.PathExpression).original;\n\n const options: AmbiguousHelperOptions & ResolvePartialOptions = this.setupParams(partial, name);\n options.helpers = this.container.helpers;\n options.partials = this.container.partials;\n options.decorators = this.container.decorators;\n\n let partialBlock;\n if ('fn' in options && options.fn !== noop) {\n const { fn } = options;\n const currentPartialBlock = options.data?.['partial-block'];\n options.data = createFrame(options.data);\n\n // Wrapper function to get access to currentPartialBlock from the closure\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context: any,\n wrapperOptions: { data?: HelperOptions['data'] } = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n wrapperOptions.data = createFrame(wrapperOptions.data);\n wrapperOptions.data['partial-block'] = currentPartialBlock;\n return fn(context, wrapperOptions);\n };\n\n if (fn.partials) {\n options.partials = { ...options.partials, ...fn.partials };\n }\n }\n\n let context = {};\n if (params.length === 0 && !this.compileOptions.explicitPartialContext) {\n context = this.context;\n } else if (params.length === 1) {\n context = this.resolveNodes(params[0])[0];\n }\n\n if (Object.keys(options.hash).length > 0) {\n // TODO: context can be an array, but maybe never when we have a hash???\n context = Object.assign({}, context, options.hash);\n }\n\n const partialTemplate: Template | undefined =\n this.container.partials[name] ??\n partialBlock ??\n // TypeScript note: We extend ResolvePartialOptions in our types.ts file\n // to fix an error in the upstream type. When calling back into the\n // upstream code, we just cast back to the non-extended type\n Handlebars.VM.resolvePartial(\n undefined,\n undefined,\n options as Handlebars.ResolvePartialOptions\n );\n\n if (partialTemplate === undefined) {\n throw new Handlebars.Exception(`The partial ${name} could not be found`);\n }\n\n let render;\n if (typeof partialTemplate === 'string') {\n render = this.env.compileAST(partialTemplate, this.compileOptions);\n if (name in this.container.partials) {\n this.container.partials[name] = render;\n }\n } else {\n render = partialTemplate;\n }\n\n let result = render(context, options);\n\n if ('indent' in partial) {\n result =\n partial.indent +\n (this.compileOptions.preventIndent\n ? result\n : result.replace(/\\n(?!$)/g, `\\n${partial.indent}`)); // indent each line, ignoring any trailing linebreak\n }\n\n this.output.push(result);\n }\n\n private processAmbiguousNode(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n let { fn: helperFn } = helper;\n\n const loc = helperFn ? node.loc : node.path.loc;\n helperFn = helperFn ?? this.resolveNodes(node.path)[0];\n\n if (helperFn === undefined) {\n if (this.compileOptions.strict) {\n helperFn = this.container.strict(helper.context, name, loc);\n } else {\n helperFn =\n helper.context != null\n ? this.container.lookupProperty(helper.context, name)\n : helper.context;\n if (helperFn == null) helperFn = this.container.hooks.helperMissing;\n }\n }\n\n const helperResult =\n typeof helperFn === 'function'\n ? helperFn.call(helper.context, ...helper.params, helper.options)\n : helperFn;\n\n if (isBlock(node)) {\n const result = helper.fn\n ? helperResult\n : this.container.hooks.blockHelperMissing!.call(this.context, helperResult, helper.options);\n if (result != null) {\n this.output.push(result);\n }\n } else {\n if (\n (node as hbs.AST.MustacheStatement).escaped === false ||\n this.compileOptions.noEscape === true ||\n typeof helperResult !== 'string'\n ) {\n this.output.push(helperResult);\n } else {\n this.output.push(Handlebars.escapeExpression(helperResult));\n }\n }\n }\n\n private setupHelper(node: ProcessableNode, helperName: string): VisitorHelper {\n return {\n fn: this.container.lookupProperty(this.container.helpers, helperName),\n context: this.context,\n params: this.resolveNodes(node.params),\n options: this.setupParams(node, helperName),\n };\n }\n\n private setupDecoratorOptions(decorator: hbs.AST.Decorator | hbs.AST.DecoratorBlock) {\n // TypeScript: The types indicate that `decorator.path` technically can be an `hbs.AST.Literal`. However, the upstream codebase always treats it as an `hbs.AST.PathExpression`, so we do too.\n const name = (decorator.path as hbs.AST.PathExpression).original;\n const options = toDecoratorOptions(this.setupParams(decorator, name));\n\n if (decorator.params.length > 0) {\n if (!this.processedRootDecorators) {\n // When processing the root decorators, temporarily remove the root context so it's not accessible to the decorator\n const context = this.contexts.shift();\n options.args = this.resolveNodes(decorator.params);\n this.contexts.unshift(context);\n } else {\n options.args = this.resolveNodes(decorator.params);\n }\n } else {\n options.args = [];\n }\n\n return options;\n }\n\n private setupParams(node: ProcessableBlockStatementNode, name: string): HelperOptions;\n private setupParams(node: ProcessableStatementNode, name: string): NonBlockHelperOptions;\n private setupParams(node: ProcessableNode, name: string): AmbiguousHelperOptions;\n private setupParams(node: ProcessableNode, name: string) {\n const options: AmbiguousHelperOptions = {\n name,\n hash: this.getHash(node),\n data: this.runtimeOptions!.data,\n loc: { start: node.loc.start, end: node.loc.end },\n ...this.defaultHelperOptions,\n };\n\n if (isBlock(node)) {\n (options as HelperOptions).fn = node.program\n ? this.processDecorators(node.program, this.generateProgramFunction(node.program))\n : noop;\n (options as HelperOptions).inverse = node.inverse\n ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse))\n : noop;\n }\n\n return options;\n }\n\n private generateProgramFunction(program: hbs.AST.Program) {\n if (!program) return noop;\n\n const prog: TemplateDelegate = (nextContext: any, runtimeOptions: RuntimeOptions = {}) => {\n runtimeOptions = { ...runtimeOptions };\n\n // inherit data in blockParams from parent program\n runtimeOptions.data = runtimeOptions.data || this.runtimeOptions!.data;\n if (runtimeOptions.blockParams) {\n runtimeOptions.blockParams = runtimeOptions.blockParams.concat(\n this.runtimeOptions!.blockParams\n );\n }\n\n // inherit partials from parent program\n runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions!.partials;\n\n // stash parent program data\n const tmpRuntimeOptions = this.runtimeOptions;\n this.runtimeOptions = runtimeOptions;\n const shiftContext = nextContext !== this.context;\n if (shiftContext) this.contexts.unshift(nextContext);\n this.blockParamValues.unshift(runtimeOptions.blockParams || []);\n\n // execute child program\n const result = this.resolveNodes(program).join('');\n\n // unstash parent program data\n this.blockParamValues.shift();\n if (shiftContext) this.contexts.shift();\n this.runtimeOptions = tmpRuntimeOptions;\n\n // return result of child program\n return result;\n };\n\n prog.blockParams = program.blockParams?.length ?? 0;\n return prog;\n }\n\n private getHash(statement: { hash?: hbs.AST.Hash }) {\n const result: { [key: string]: any } = {};\n if (!statement.hash) return result;\n for (const { key, value } of statement.hash.pairs) {\n result[key] = this.resolveNodes(value)[0];\n }\n return result;\n }\n\n private resolvePath(obj: any, path: hbs.AST.PathExpression, index = 0) {\n if (this.compileOptions.strict || this.compileOptions.assumeObjects) {\n return this.strictLookup(obj, path);\n }\n\n for (; index < path.parts.length; index++) {\n if (obj == null) return;\n obj = this.container.lookupProperty(obj, path.parts[index]);\n }\n\n return obj;\n }\n\n private strictLookup(obj: any, path: hbs.AST.PathExpression) {\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n const requireTerminal = this.compileOptions.strict && path.strict;\n const len = path.parts.length - (requireTerminal ? 1 : 0);\n\n for (let i = 0; i < len; i++) {\n obj = this.container.lookupProperty(obj, path.parts[i]);\n }\n\n if (requireTerminal) {\n return this.container.strict(obj, path.parts[len], path.loc);\n } else {\n return obj;\n }\n }\n\n private resolveNodes(nodes: hbs.AST.Node | hbs.AST.Node[]): any[] {\n const currentOutput = this.output;\n this.output = [];\n\n if (Array.isArray(nodes)) {\n this.acceptArray(nodes);\n } else {\n this.accept(nodes);\n }\n\n const result = this.output;\n\n this.output = currentOutput;\n\n return result;\n }\n\n private get context() {\n return this.contexts[0];\n }\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nexport const kHelper = Symbol('helper');\nexport const kAmbiguous = Symbol('ambiguous');\nexport const kSimple = Symbol('simple');\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// @ts-expect-error: Could not find a declaration file for module\nimport { createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n\nimport type { AmbiguousHelperOptions, DecoratorOptions } from './types';\n\nexport function isBlock(node: hbs.AST.Node): node is hbs.AST.BlockStatement {\n return 'program' in node || 'inverse' in node;\n}\n\nexport function isDecorator(\n node: hbs.AST.Node\n): node is hbs.AST.Decorator | hbs.AST.DecoratorBlock {\n return node.type === 'Decorator' || node.type === 'DecoratorBlock';\n}\n\nexport function toDecoratorOptions(options: AmbiguousHelperOptions) {\n // There's really no tests/documentation on this, but to match the upstream codebase we'll remove `lookupProperty` from the decorator context\n delete (options as any).lookupProperty;\n\n return options as DecoratorOptions;\n}\n\nexport function noop() {\n return '';\n}\n\n// liftet from handlebars lib/handlebars/runtime.js\nexport function initData(context: any, data: any) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\n// liftet from handlebars lib/handlebars/compiler/compiler.js\nexport function transformLiteralToPath(node: { path: hbs.AST.PathExpression | hbs.AST.Literal }) {\n const pathIsLiteral = 'parts' in node.path === false;\n\n if (pathIsLiteral) {\n const literal = node.path;\n // @ts-expect-error: Not all `hbs.AST.Literal` sub-types has an `original` property, but that's ok, in that case we just want `undefined`\n const original = literal.original;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n node.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [original + ''],\n original: original + '',\n loc: literal.loc,\n };\n }\n}\n\nexport function allowUnsafeEval() {\n try {\n new Function();\n return true;\n } catch (e) {\n return false;\n }\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// The handlebars module uses `export =`, so we should technically use `import Handlebars = require('handlebars')`, but Babel will not allow this:\n// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require\nimport Handlebars = require('handlebars');\n\nimport type { CompileOptions, RuntimeOptions, TemplateDelegate } from './types';\nimport { ElasticHandlebarsVisitor } from './visitor';\n\nconst originalCreate = Handlebars.create;\n\nexport { Handlebars };\n\n/**\n * Creates an isolated Handlebars environment.\n *\n * Each environment has its own helpers.\n * This is only necessary for use cases that demand distinct helpers.\n * Most use cases can use the root Handlebars environment directly.\n *\n * @returns A sandboxed/scoped version of the @kbn/handlebars module\n */\nHandlebars.create = function (): typeof Handlebars {\n const SandboxedHandlebars = originalCreate.call(Handlebars) as typeof Handlebars;\n // When creating new Handlebars environments, ensure the custom compileAST function is present in the new environment as well\n SandboxedHandlebars.compileAST = Handlebars.compileAST;\n return SandboxedHandlebars;\n};\n\nHandlebars.compileAST = function (\n input: string | hbs.AST.Program,\n options?: CompileOptions\n): TemplateDelegate {\n if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n throw new Handlebars.Exception(\n `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}`\n );\n }\n\n // If `Handlebars.compileAST` is reassigned, `this` will be undefined.\n const visitor = new ElasticHandlebarsVisitor(this ?? Handlebars, input, options);\n\n return (context: any, runtimeOptions?: RuntimeOptions) => visitor.render(context, runtimeOptions);\n};\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nimport { Handlebars } from './src/handlebars';\nimport { allowUnsafeEval } from './src/utils';\n\n// The handlebars module uses `export =`, so it can't be re-exported using `export *`.\n// However, because of Babel, we're not allowed to use `export =` ourselves.\n// So we have to resort to using `exports default` even though eslint doesn't like it.\n//\n// eslint-disable-next-line import/no-default-export\nglobalThis.Handlebars = Handlebars;\n\n/**\n * If the `unsafe-eval` CSP is set, this string constant will be `compile`,\n * otherwise `compileAST`.\n *\n * This can be used to call the more optimized `compile` function in\n * environments that support it, or fall back to `compileAST` on environments\n * that don't.\n */\nglobalThis.handlebarsCompileFnName = allowUnsafeEval() ? 'compile' : 'compileAST';\n\nexport type {\n CompileOptions,\n RuntimeOptions,\n HelperDelegate,\n TemplateDelegate,\n DecoratorDelegate,\n HelperOptions,\n} from './src/types';\n"], - "mappings": "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AE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GA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E,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAA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", - "names": ["escape", "badChars", "possible", "escapeChar", "chr", "extend", "obj", "i", "key", "toString", "isFunction", "value", "exports", "isArray", "indexOf", "array", "len", "escapeExpression", "string", "isEmpty", "createFrame", "object", "frame", "blockParams", "params", "ids", "appendContextPath", "contextPath", "id", "errorProps", "Exception", "message", "node", "loc", "line", "endLineNumber", "column", "endColumn", "tmp", "idx", "nop", "instance", "context", "options", "inverse", "fn", "_utils", "data", "instance", "context", "options", "_exception2", "fn", "inverse", "i", "ret", "data", "contextPath", "_utils", "execIteration", "field", "index", "last", "j", "newContext", "iterator", "it", "priorKey", "key", "instance", "_exception2", "instance", "conditional", "options", "_exception2", "_utils", "instance", "args", "options", "i", "level", "instance", "obj", "field", "options", "instance", "context", "options", "_exception2", "_utils", "fn", "data", "registerDefaultHelpers", "instance", "_helpersBlockHelperMissing2", "_helpersEach2", "_helpersHelperMissing2", "_helpersIf2", "_helpersLog2", "_helpersLookup2", "_helpersWith2", "moveHelperToHooks", "helperName", "keepHelper", "instance", "fn", "props", "container", "options", "ret", "context", "original", "_utils", "registerDefaultDecorators", "instance", "_decoratorsInline2", "logger", "level", "levelMap", "_utils", "method", "message", "_len", "_key", "createNewLookupObject", "sources", "_len", "_key", "_utils", "logger", "_interopRequireWildcard", "_logger", "loggedProperties", "createProtoAccessControl", "runtimeOptions", "defaultMethodWhiteList", "defaultPropertyWhiteList", "_createNewLookupObject", "resultIsAllowed", "result", "protoAccessControl", "propertyName", "checkWhiteList", "protoAccessControlForType", "logUnexpecedPropertyAccessOnce", "resetLoggedProperties", "VERSION", "COMPILER_REVISION", "LAST_COMPATIBLE_COMPILER_REVISION", "REVISION_CHANGES", "objectType", "HandlebarsEnvironment", "helpers", "partials", "decorators", "_helpers", "_decorators", "_logger2", "name", "fn", "_utils", "_exception2", "partial", "_internalProtoAccess", "log", "SafeString", "string", "wrapHelper", "helper", "transformOptionsFn", "wrapper", "options", "Utils", "_interopRequireWildcard", "_utils", "checkRevision", "compilerInfo", "compilerRevision", "currentRevision", "_base", "runtimeVersions", "compilerVersions", "_exception2", "template", "templateSpec", "env", "templateWasPrecompiledWithCompilerV7", "invokePartialWrapper", "partial", "context", "options", "extendedOptions", "result", "lines", "i", "l", "container", "obj", "name", "loc", "parent", "propertyName", "_internalProtoAccess", "depths", "len", "current", "ret", "data", "declaredBlockParams", "blockParams", "programWrapper", "fn", "wrapProgram", "value", "depth", "param", "common", "initData", "main", "executeDecorators", "mergedHelpers", "wrapHelpersToPassLookupProperty", "keepHelperInHelpers", "_helpers", "prog", "currentDepths", "resolvePartial", "invokePartial", "currentPartialBlock", "partialBlock", "noop", "props", "helperName", "helper", "passLookupPropertyOption", "lookupProperty", "_internalWrapHelper", "Handlebars", "root", "$Handlebars", "base", "_interopRequireWildcard", "_handlebarsBase", "Utils", "_handlebarsUtils", "runtime", "_handlebarsRuntime", "create", "hb", "_handlebarsSafeString2", "_handlebarsException2", "spec", "inst", "_handlebarsNoConflict2", "AST", "node", "path", "handlebars", "parser", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inverse", "program", "str", "hash", "input", "self", "stack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "tempMatch", "index", "col", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "strip", "start", "end", "YYSTATE", "Parser", "exports", "Visitor", "node", "name", "value", "_exception2", "array", "i", "l", "object", "ret", "program", "visitSubExpression", "visitBlock", "visitPartial", "partial", "hash", "pair", "mustache", "block", "WhitespaceControl", "options", "_visitor2", "program", "doStandalone", "isRoot", "body", "l", "current", "strip", "_isPrevWhitespace", "isPrevWhitespace", "_isNextWhitespace", "isNextWhitespace", "openStandalone", "closeStandalone", "inlineStandalone", "omitRight", "omitLeft", "block", "inverse", "firstInverse", "lastInverse", "inverseStrip", "mustache", "node", "i", "prev", "sibling", "next", "multiple", "original", "validateClose", "open", "close", "errorNode", "_exception2", "SourceLocation", "source", "locInfo", "id", "token", "stripFlags", "stripComment", "comment", "preparePath", "data", "parts", "loc", "original", "dig", "depth", "i", "l", "part", "isLiteral", "prepareMustache", "path", "params", "hash", "strip", "escapeFlag", "escaped", "decorator", "prepareRawBlock", "openRawBlock", "contents", "program", "prepareBlock", "openBlock", "inverseAndProgram", "inverted", "inverse", "inverseStrip", "prepareProgram", "statements", "firstLoc", "lastLoc", "preparePartialBlock", "Helpers", "_interopRequireWildcard", "_helpers", "_parser2", "yy", "_utils", "parseWithoutProcessing", "input", "options", "locInfo", "ast", "parse", "strip", "_whitespaceControl2", "slice", "Compiler", "other", "len", "i", "opcode", "otherOpcode", "argEquals", "program", "options", "_utils", "childCompiler", "result", "guid", "node", "_exception2", "ret", "body", "bodyLength", "block", "transformLiteralToPath", "inverse", "type", "decorator", "params", "path", "partial", "partialName", "isDynamic", "indent", "partialBlock", "mustache", "content", "sexpr", "name", "isBlock", "_ast2", "scoped", "blockParamId", "string", "number", "bool", "hash", "pairs", "l", "depth", "isSimple", "isBlockParam", "isHelper", "isEligible", "_name", "val", "value", "blockParamIndex", "blockParamChild", "omitEmpty", "blockParams", "param", "precompile", "input", "env", "ast", "environment", "compile", "compiled", "compileInput", "templateSpec", "context", "execOptions", "setupOptions", "data", "depths", "a", "b", "literal", "require_base64", "__commonJSMin", "exports", "intToCharMap", "number", "charCode", "bigA", "bigZ", "littleA", "littleZ", "zero", "nine", "plus", "slash", "littleOffset", "numberOffset", "require_base64_vlq", "__commonJSMin", "exports", "base64", "VLQ_BASE_SHIFT", "VLQ_BASE", "VLQ_BASE_MASK", "VLQ_CONTINUATION_BIT", "toVLQSigned", "aValue", "fromVLQSigned", "isNegative", "shifted", "encoded", "digit", "vlq", "aStr", "aIndex", "aOutParam", "strLen", "result", "shift", "continuation", "require_util", "__commonJSMin", "exports", "getArg", "aArgs", "aName", "aDefaultValue", "urlRegexp", "dataUrlRegexp", "urlParse", "aUrl", "match", "urlGenerate", "aParsedUrl", "url", "normalize", "aPath", "path", "isAbsolute", "parts", "part", "up", "i", "join", "aRoot", "aPathUrl", "aRootUrl", "joined", "relative", "level", "index", "supportsNullProto", "obj", "identity", "s", "toSetString", "aStr", "isProtoString", "fromSetString", "length", "compareByOriginalPositions", "mappingA", "mappingB", "onlyCompareOriginal", "cmp", "strcmp", "compareByGeneratedPositionsDeflated", "onlyCompareGenerated", "aStr1", "aStr2", "compareByGeneratedPositionsInflated", "parseSourceMapInput", "str", "computeSourceURL", "sourceRoot", "sourceURL", "sourceMapURL", "parsed", "require_array_set", "__commonJSMin", "exports", "util", "has", "hasNativeMap", "ArraySet", "aArray", "aAllowDuplicates", "set", "len", "aStr", "sStr", "isDuplicate", "idx", "aIdx", "require_mapping_list", "__commonJSMin", "exports", "util", "generatedPositionAfter", "mappingA", "mappingB", "lineA", "lineB", "columnA", "columnB", "MappingList", "aCallback", "aThisArg", "aMapping", "require_source_map_generator", "__commonJSMin", "exports", "base64VLQ", "util", "ArraySet", "MappingList", "SourceMapGenerator", "aArgs", "aSourceMapConsumer", "sourceRoot", "generator", "mapping", "newMapping", "sourceFile", "sourceRelative", "content", "generated", "original", "source", "name", "aSourceFile", "aSourceContent", "aSourceMapPath", "newSources", "newNames", "aGenerated", "aOriginal", "aSource", "aName", "previousGeneratedColumn", "previousGeneratedLine", "previousOriginalColumn", "previousOriginalLine", "previousName", "previousSource", "result", "next", "nameIdx", "sourceIdx", "mappings", "i", "len", "aSources", "aSourceRoot", "key", "map", "require_binary_search", "__commonJSMin", "exports", "recursiveSearch", "aLow", "aHigh", "aNeedle", "aHaystack", "aCompare", "aBias", "mid", "cmp", "index", "require_quick_sort", "__commonJSMin", "exports", "swap", "ary", "x", "y", "temp", "randomIntInRange", "low", "high", "doQuickSort", "comparator", "p", "r", "pivotIndex", "i", "pivot", "j", "q", "require_source_map_consumer", "__commonJSMin", "exports", "util", "binarySearch", "ArraySet", "base64VLQ", "quickSort", "SourceMapConsumer", "aSourceMap", "aSourceMapURL", "sourceMap", "IndexedSourceMapConsumer", "BasicSourceMapConsumer", "aStr", "index", "c", "aSourceRoot", "aCallback", "aContext", "aOrder", "context", "order", "mappings", "sourceRoot", "mapping", "source", "aArgs", "line", "needle", "originalLine", "originalColumn", "version", "sources", "names", "sourcesContent", "file", "s", "aSource", "relativeSource", "i", "smc", "generatedMappings", "destGeneratedMappings", "destOriginalMappings", "length", "srcMapping", "destMapping", "Mapping", "generatedLine", "previousGeneratedColumn", "previousOriginalLine", "previousOriginalColumn", "previousSource", "previousName", "cachedSegments", "temp", "originalMappings", "str", "segment", "end", "value", "aNeedle", "aMappings", "aLineName", "aColumnName", "aComparator", "aBias", "nextMapping", "name", "sc", "nullOnMissing", "url", "fileUriAbsPath", "sections", "lastOffset", "offset", "offsetLine", "offsetColumn", "j", "sectionIndex", "section", "cmp", "content", "generatedPosition", "ret", "sectionMappings", "adjustedMapping", "require_source_node", "__commonJSMin", "exports", "SourceMapGenerator", "util", "REGEX_NEWLINE", "NEWLINE_CODE", "isSourceNode", "SourceNode", "aLine", "aColumn", "aSource", "aChunks", "aName", "aGeneratedCode", "aSourceMapConsumer", "aRelativePath", "node", "remainingLines", "remainingLinesIndex", "shiftNextLine", "lineContents", "getNextLine", "newLine", "lastGeneratedLine", "lastGeneratedColumn", "lastMapping", "mapping", "addMappingWithCode", "nextLine", "code", "sourceFile", "content", "source", "aChunk", "chunk", "i", "aFn", "len", "aSep", "newChildren", "aPattern", "aReplacement", "lastChild", "aSourceFile", "aSourceContent", "sources", "str", "aArgs", "generated", "map", "sourceMappingActive", "lastOriginalSource", "lastOriginalLine", "lastOriginalColumn", "lastOriginalName", "original", "idx", "length", "sourceContent", "require_source_map", "__commonJSMin", "exports", "SourceNode", "SourceMap", "err", "line", "column", "srcFile", "chunks", "_utils", "castChunk", "chunk", "codeGen", "loc", "ret", "len", "CodeGen", "source", "iter", "i", "fn", "type", "params", "str", "obj", "pairs", "key", "value", "_this", "entries", "Literal", "value", "JavaScriptCompiler", "parent", "name", "revision", "_base", "versions", "source", "location", "explicit", "_utils", "environment", "options", "context", "asObject", "opcodes", "opcode", "firstLoc", "i", "l", "_exception2", "fn", "ret", "programs", "_context", "decorators", "_codeGen2", "varDeclarations", "locals", "aliasCount", "alias", "node", "_this", "params", "isSimple", "appendOnly", "appendFirst", "sourceSeen", "bufferStart", "bufferEnd", "line", "blockHelperMissing", "blockName", "current", "content", "local", "depth", "parts", "falsy", "strict", "scoped", "blockParamId", "type", "strictLookup", "len", "lookup", "_this2", "string", "omitEmpty", "hash", "guid", "paramSize", "foundDecorator", "nonHelper", "helper", "possibleFunctionCalls", "functionLookupCode", "functionCall", "items", "separator", "result", "helperCall", "helperName", "isDynamic", "indent", "key", "id", "child", "children", "compiler", "existing", "index", "programParams", "expr", "item", "callback", "prefix", "stack", "createdStack", "usedLiteral", "top", "_name", "inlineStack", "entry", "wrapped", "inline", "str", "obj", "blockHelper", "paramsInit", "foundHelper", "callContext", "contexts", "types", "ids", "objectArgs", "param", "inverse", "program", "useRegister", "reservedWords", "compilerWords", "requireTerminal", "_create", "_handlebarsRuntime2", "create", "hb", "input", "options", "_handlebarsCompilerCompiler", "_handlebarsCompilerAst2", "_handlebarsCompilerJavascriptCompiler2", "_handlebarsCompilerBase", "inst", "_handlebarsNoConflict2", "_handlebarsCompilerVisitor2", "print", "ast", "PrintVisitor", "_visitor2", "string", "out", "i", "l", "program", "body", "blockParams", "mustache", "block", "partial", "content", "comment", "sexpr", "params", "paramStrings", "hash", "id", "path", "number", "bool", "pairs", "joinedPairs", "pair", "require_lib", "__commonJSMin", "exports", "module", "handlebars", "printer", "extension", "filename", "fs", "templateString", "__require", "import_handlebars", "import_proto_access", "import_ast", "import_utils", "import_helpers", "kHelper", "kAmbiguous", "kSimple", "import_utils", "isBlock", "node", "isDecorator", "toDecoratorOptions", "options", "noop", "initData", "context", "data", "transformLiteralToPath", "literal", "original", "allowUnsafeEval", "e", "ElasticHandlebarsVisitor", "Handlebars", "env", "input", "options", "__spreadValues", "protoAccessControl", "container", "obj", "name", "loc", "parent", "propertyName", "result", "current", "context", "value", "depth", "initData", "keepHelperInHelpers", "defaultMain", "_context", "main", "program", "mustache", "block", "partial", "decorator", "sexpr", "path", "blockParamId", "AST", "content", "string", "number", "bool", "prog", "props", "node", "isDecorator", "transformLiteralToPath", "kSimple", "kHelper", "kAmbiguous", "isSimple", "isBlockParam", "isHelper", "isEligible", "len", "blockParams", "param", "data", "lambdaResult", "isBlock", "helper", "_a", "_b", "_c", "params", "partialBlock", "noop", "fn", "currentPartialBlock", "wrapperOptions", "partialTemplate", "render", "helperFn", "helperResult", "helperName", "toDecoratorOptions", "nextContext", "runtimeOptions", "tmpRuntimeOptions", "shiftContext", "statement", "key", "index", "requireTerminal", "i", "nodes", "currentOutput", "Handlebars", "originalCreate", "Handlebars", "SandboxedHandlebars", "originalCreate", "input", "options", "visitor", "ElasticHandlebarsVisitor", "context", "runtimeOptions", "Handlebars", "allowUnsafeEval"] -} diff --git a/ext/lib/jszip.min.js b/ext/lib/jszip.min.js deleted file mode 100644 index e4840d72..00000000 --- a/ext/lib/jszip.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - -JSZip v3.9.1 - A JavaScript class for generating and reading zip files - - -(c) 2009-2016 Stuart Knightley -Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. - -JSZip uses the library pako released under the MIT license : -https://github.com/nodeca/pako/blob/master/LICENSE -*/ - -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=t()}}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e="function"==typeof require&&require;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error("Cannot find module '"+r+"'");throw i.code="MODULE_NOT_FOUND",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h)}return o[r].exports}for(var l="function"==typeof require&&require,t=0;t>2,s=(3&e)<<4|r>>4,a=1>6:64,o=2>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l}},{"./support":30,"./utils":32}],2:[function(t,e,r){"use strict";var i=t("./external"),n=t("./stream/DataWorker"),s=t("./stream/Crc32Probe"),a=t("./stream/DataLengthProbe");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),e=this;return t.on("end",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new s).pipe(new a("uncompressedSize")).pipe(e.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",e)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,e,r){"use strict";var i=t("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(t){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},r.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,e,r){"use strict";var i=t("./utils");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?"string"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e.charCodeAt(a))];return-1^t}(0|e,t,t.length,0):0}},{"./utils":32}],5:[function(t,e,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,e,r){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:t("lie"),e.exports={Promise:i}},{lie:37}],7:[function(t,e,r){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=t("pako"),s=t("./utils"),a=t("./stream/GenericWorker"),o=i?"uint8array":"array";function h(t,e){a.call(this,"FlateWorker/"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(t){return new h("Deflate",t)},r.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,e,r){"use strict";function A(t,e){var r,i="";for(r=0;r>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),d=I.transformTo("string",O.utf8encode(h.name)),c=h.comment,p=I.transformTo("string",s(c)),m=I.transformTo("string",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(i,4)+f+b+p}}var I=t("../utils"),n=t("../stream/GenericWorker"),O=t("../utf8"),B=t("../crc32"),R=t("../signature");function s(t,e,r,i){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}))},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo("string",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n},{"../utils":32}],19:[function(t,e,r){"use strict";var i=t("./Uint8ArrayReader");function n(t){i.call(this,t)}t("../utils").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,e,r){"use strict";var i=t("./DataReader");function n(t){i.call(this,t)}t("../utils").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{"../utils":32,"./DataReader":18}],21:[function(t,e,r){"use strict";var i=t("./ArrayReader");function n(t){i.call(this,t)}t("../utils").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(t,e,r){"use strict";var i=t("../utils"),n=t("../support"),s=t("./ArrayReader"),a=t("./StringReader"),o=t("./NodeBufferReader"),h=t("./Uint8ArrayReader");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),"string"!==e||n.uint8array?"nodebuffer"===e?new o(t):n.uint8array?new h(i.transformTo("uint8array",t)):new s(i.transformTo("array",t)):new a(t)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,e,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(t,e,r){"use strict";var i=t("./GenericWorker"),n=t("../utils");function s(t){i.call(this,"ConvertWorker to "+t),this.destType=t}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(t,e,r){"use strict";var i=t("./GenericWorker"),n=t("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,e,r){"use strict";var i=t("../utils"),n=t("./GenericWorker");function s(t){n.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}n.prototype.processChunk.call(this,t)},e.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(t,e,r){"use strict";var i=t("../utils"),n=t("./GenericWorker");function s(t){n.call(this,"DataWorker");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,e);break;case"uint8array":t=this.data.subarray(this.index,e);break;case"array":case"nodebuffer":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(t,e,r){"use strict";function i(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(t){this.emit("data",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit("error",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r "+t:t}},e.exports=i},{}],29:[function(t,e,r){"use strict";var h=t("../utils"),n=t("./ConvertWorker"),s=t("./GenericWorker"),u=t("../base64"),i=t("../support"),a=t("../external"),o=null;if(i.nodestream)try{o=t("../nodejs/NodejsStreamOutputAdapter")}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on("data",function(t,e){i.push(t),o&&o(e)}).on("error",function(t){i=[],r(t)}).on("end",function(){try{var t=function(t,e,r){switch(t){case"blob":return h.newBlob(h.transformTo("arraybuffer",e),r);case"base64":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo("nodebuffer",t).toString("utf-8"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e>10&1023,a[r++]=56320|1023&i)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?"uint8array":"array",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta})},s.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,e,a){"use strict";var o=t("./support"),h=t("./base64"),r=t("./nodejsUtils"),i=t("set-immediate-shim"),u=t("./external");function n(t){return t}function l(t,e){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r>10&1023,o[i++]=56320|1023&n)}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}},{"./common":41}],43:[function(t,e,r){"use strict";e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}},{}],46:[function(t,e,r){"use strict";var h,d=t("../utils/common"),u=t("./trees"),c=t("./adler32"),p=t("./crc32"),i=t("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return(t<<1)-(4t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm)}function U(t,e){t.pending_buf[t.pending++]=e}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else{var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<>>=y,p-=y),p<15&&(c+=z[i++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<>>=y,p-=y,(y=s-a)>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){t.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){t.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+c>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){t.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=n,p=a-r.offset,c=r.length;for(hc?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]]}if(k>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o))}}function W(t){var e;for(e=0;e>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u>=7;i>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{"../utils/common":41}],53:[function(t,e,r){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,r){"use strict";e.exports="function"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)}); \ No newline at end of file diff --git a/ext/lib/parse5.js b/ext/lib/parse5.js deleted file mode 100644 index b84b7402..00000000 --- a/ext/lib/parse5.js +++ /dev/null @@ -1,8557 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.parse5 = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= 0) { - ret += str.slice(lastIdx, strIdx); - lastIdx = strIdx; - // Skip the "&" - strIdx += 1; - // If we have a numeric entity, handle this separately. - if (str.charCodeAt(strIdx) === CharCodes.NUM) { - // Skip the leading "&#". For hex entities, also skip the leading "x". - var start = strIdx + 1; - var base = 10; - var cp = str.charCodeAt(start); - if ((cp | CharCodes.To_LOWER_BIT) === CharCodes.LOWER_X) { - base = 16; - strIdx += 1; - start += 1; - } - do - cp = str.charCodeAt(++strIdx); - while ((cp >= CharCodes.ZERO && cp <= CharCodes.NINE) || - (base === 16 && - (cp | CharCodes.To_LOWER_BIT) >= CharCodes.LOWER_A && - (cp | CharCodes.To_LOWER_BIT) <= CharCodes.LOWER_F)); - if (start !== strIdx) { - var entity = str.substring(start, strIdx); - var parsed = parseInt(entity, base); - if (str.charCodeAt(strIdx) === CharCodes.SEMI) { - strIdx += 1; - } - else if (strict) { - continue; - } - ret += (0, decode_codepoint_js_1.default)(parsed); - lastIdx = strIdx; - } - continue; - } - var resultIdx = 0; - var excess = 1; - var treeIdx = 0; - var current = decodeTree[treeIdx]; - for (; strIdx < str.length; strIdx++, excess++) { - treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx)); - if (treeIdx < 0) - break; - current = decodeTree[treeIdx]; - var masked = current & BinTrieFlags.VALUE_LENGTH; - // If the branch is a value, store it and continue - if (masked) { - // If we have a legacy entity while parsing strictly, just skip the number of bytes - if (!strict || str.charCodeAt(strIdx) === CharCodes.SEMI) { - resultIdx = treeIdx; - excess = 0; - } - // The mask is the number of bytes of the value, including the current byte. - var valueLength = (masked >> 14) - 1; - if (valueLength === 0) - break; - treeIdx += valueLength; - } - } - if (resultIdx !== 0) { - var valueLength = (decodeTree[resultIdx] & BinTrieFlags.VALUE_LENGTH) >> 14; - ret += - valueLength === 1 - ? String.fromCharCode(decodeTree[resultIdx] & ~BinTrieFlags.VALUE_LENGTH) - : valueLength === 2 - ? String.fromCharCode(decodeTree[resultIdx + 1]) - : String.fromCharCode(decodeTree[resultIdx + 1], decodeTree[resultIdx + 2]); - lastIdx = strIdx - excess + 1; - } - } - return ret + str.slice(lastIdx); - }; -} -function determineBranch(decodeTree, current, nodeIdx, char) { - var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - var jumpOffset = current & BinTrieFlags.JUMP_TABLE; - // Case 1: Single branch encoded in jump offset - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - // Case 2: Multiple branches encoded in jump table - if (jumpOffset) { - var value = char - jumpOffset; - return value < 0 || value >= branchCount - ? -1 - : decodeTree[nodeIdx + value] - 1; - } - // Case 3: Multiple branches encoded in dictionary - // Binary search for the character. - var lo = nodeIdx; - var hi = lo + branchCount - 1; - while (lo <= hi) { - var mid = (lo + hi) >>> 1; - var midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } - else if (midVal > char) { - hi = mid - 1; - } - else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} -exports.determineBranch = determineBranch; -var htmlDecoder = getDecoder(decode_data_html_js_1.default); -var xmlDecoder = getDecoder(decode_data_xml_js_1.default); -/** - * Decodes an HTML string, allowing for entities not terminated by a semi-colon. - * - * @param str The string to decode. - * @returns The decoded string. - */ -function decodeHTML(str) { - return htmlDecoder(str, false); -} -exports.decodeHTML = decodeHTML; -/** - * Decodes an HTML string, requiring all entities to be terminated by a semi-colon. - * - * @param str The string to decode. - * @returns The decoded string. - */ -function decodeHTMLStrict(str) { - return htmlDecoder(str, true); -} -exports.decodeHTMLStrict = decodeHTMLStrict; -/** - * Decodes an XML string, requiring all entities to be terminated by a semi-colon. - * - * @param str The string to decode. - * @returns The decoded string. - */ -function decodeXML(str) { - return xmlDecoder(str, true); -} -exports.decodeXML = decodeXML; - -},{"./decode_codepoint.js":2,"./generated/decode-data-html.js":4,"./generated/decode-data-xml.js":5}],2:[function(require,module,exports){ -"use strict"; -// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.replaceCodePoint = exports.fromCodePoint = void 0; -var decodeMap = new Map([ - [0, 65533], - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376], -]); -exports.fromCodePoint = -// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins -(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { - var output = ""; - if (codePoint > 0xffff) { - codePoint -= 0x10000; - output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); - codePoint = 0xdc00 | (codePoint & 0x3ff); - } - output += String.fromCharCode(codePoint); - return output; -}; -function replaceCodePoint(codePoint) { - var _a; - if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { - return 0xfffd; - } - return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; -} -exports.replaceCodePoint = replaceCodePoint; -function decodeCodePoint(codePoint) { - return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); -} -exports.default = decodeCodePoint; - -},{}],3:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0; -exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; -var xmlCodeMap = new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"], -]); -// For compatibility with node < 4, we wrap `codePointAt` -exports.getCodePoint = -// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -String.prototype.codePointAt != null - ? function (str, index) { return str.codePointAt(index); } - : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - function (c, index) { - return (c.charCodeAt(index) & 0xfc00) === 0xd800 - ? (c.charCodeAt(index) - 0xd800) * 0x400 + - c.charCodeAt(index + 1) - - 0xdc00 + - 0x10000 - : c.charCodeAt(index); - }; -/** - * Encodes all non-ASCII characters, as well as characters not valid in XML - * documents using XML entities. - * - * If a character has no equivalent entity, a - * numeric hexadecimal reference (eg. `ü`) will be used. - */ -function encodeXML(str) { - var ret = ""; - var lastIdx = 0; - var match; - while ((match = exports.xmlReplacer.exec(str)) !== null) { - var i = match.index; - var char = str.charCodeAt(i); - var next = xmlCodeMap.get(char); - if (next !== undefined) { - ret += str.substring(lastIdx, i) + next; - lastIdx = i + 1; - } - else { - ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";"); - // Increase by 1 if we have a surrogate pair - lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800); - } - } - return ret + str.substr(lastIdx); -} -exports.encodeXML = encodeXML; -/** - * Encodes all non-ASCII characters, as well as characters not valid in XML - * documents using numeric hexadecimal reference (eg. `ü`). - * - * Have a look at `escapeUTF8` if you want a more concise output at the expense - * of reduced transportability. - * - * @param data String to escape. - */ -exports.escape = encodeXML; -function getEscaper(regex, map) { - return function escape(data) { - var match; - var lastIdx = 0; - var result = ""; - while ((match = regex.exec(data))) { - if (lastIdx !== match.index) { - result += data.substring(lastIdx, match.index); - } - // We know that this chararcter will be in the map. - result += map.get(match[0].charCodeAt(0)); - // Every match will be of length 1 - lastIdx = match.index + 1; - } - return result + data.substring(lastIdx); - }; -} -/** - * Encodes all characters not valid in XML documents using XML entities. - * - * Note that the output will be character-set dependent. - * - * @param data String to escape. - */ -exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); -/** - * Encodes all characters that have to be escaped in HTML attributes, - * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. - * - * @param data String to escape. - */ -exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([ - [34, """], - [38, "&"], - [160, " "], -])); -/** - * Encodes all characters that have to be escaped in HTML text, - * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. - * - * @param data String to escape. - */ -exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "], -])); - -},{}],4:[function(require,module,exports){ -"use strict"; -// Generated using scripts/write-decode-map.ts -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = new Uint16Array( -// prettier-ignore -"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" - .split("") - .map(function (c) { return c.charCodeAt(0); })); - -},{}],5:[function(require,module,exports){ -"use strict"; -// Generated using scripts/write-decode-map.ts -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = new Uint16Array( -// prettier-ignore -"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" - .split("") - .map(function (c) { return c.charCodeAt(0); })); - -},{}],6:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getDocumentMode = exports.isConforming = void 0; -const html_js_1 = require("./html.js"); -//Const -const VALID_DOCTYPE_NAME = 'html'; -const VALID_SYSTEM_ID = 'about:legacy-compat'; -const QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd'; -const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ - '+//silmaril//dtd html pro v0r11 19970101//', - '-//as//dtd html 3.0 aswedit + extensions//', - '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', - '-//ietf//dtd html 2.0 level 1//', - '-//ietf//dtd html 2.0 level 2//', - '-//ietf//dtd html 2.0 strict level 1//', - '-//ietf//dtd html 2.0 strict level 2//', - '-//ietf//dtd html 2.0 strict//', - '-//ietf//dtd html 2.0//', - '-//ietf//dtd html 2.1e//', - '-//ietf//dtd html 3.0//', - '-//ietf//dtd html 3.2 final//', - '-//ietf//dtd html 3.2//', - '-//ietf//dtd html 3//', - '-//ietf//dtd html level 0//', - '-//ietf//dtd html level 1//', - '-//ietf//dtd html level 2//', - '-//ietf//dtd html level 3//', - '-//ietf//dtd html strict level 0//', - '-//ietf//dtd html strict level 1//', - '-//ietf//dtd html strict level 2//', - '-//ietf//dtd html strict level 3//', - '-//ietf//dtd html strict//', - '-//ietf//dtd html//', - '-//metrius//dtd metrius presentational//', - '-//microsoft//dtd internet explorer 2.0 html strict//', - '-//microsoft//dtd internet explorer 2.0 html//', - '-//microsoft//dtd internet explorer 2.0 tables//', - '-//microsoft//dtd internet explorer 3.0 html strict//', - '-//microsoft//dtd internet explorer 3.0 html//', - '-//microsoft//dtd internet explorer 3.0 tables//', - '-//netscape comm. corp.//dtd html//', - '-//netscape comm. corp.//dtd strict html//', - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - '-//sq//dtd html 2.0 hotmetal + extensions//', - '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', - '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', - '-//spyglass//dtd html 2.0 extended//', - '-//sun microsystems corp.//dtd hotjava html//', - '-//sun microsystems corp.//dtd hotjava strict html//', - '-//w3c//dtd html 3 1995-03-24//', - '-//w3c//dtd html 3.2 draft//', - '-//w3c//dtd html 3.2 final//', - '-//w3c//dtd html 3.2//', - '-//w3c//dtd html 3.2s draft//', - '-//w3c//dtd html 4.0 frameset//', - '-//w3c//dtd html 4.0 transitional//', - '-//w3c//dtd html experimental 19960712//', - '-//w3c//dtd html experimental 970421//', - '-//w3c//dtd w3 html//', - '-//w3o//dtd w3 html 3.0//', - '-//webtechs//dtd mozilla html 2.0//', - '-//webtechs//dtd mozilla html//', -]; -const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, - '-//w3c//dtd html 4.01 frameset//', - '-//w3c//dtd html 4.01 transitional//', -]; -const QUIRKS_MODE_PUBLIC_IDS = new Set([ - '-//w3o//dtd w3 html strict 3.0//en//', - '-/w3c/dtd html 4.0 transitional/en', - 'html', -]); -const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//']; -const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, - '-//w3c//dtd html 4.01 frameset//', - '-//w3c//dtd html 4.01 transitional//', -]; -//Utils -function hasPrefix(publicId, prefixes) { - return prefixes.some((prefix) => publicId.startsWith(prefix)); -} -//API -function isConforming(token) { - return (token.name === VALID_DOCTYPE_NAME && - token.publicId === null && - (token.systemId === null || token.systemId === VALID_SYSTEM_ID)); -} -exports.isConforming = isConforming; -function getDocumentMode(token) { - if (token.name !== VALID_DOCTYPE_NAME) { - return html_js_1.DOCUMENT_MODE.QUIRKS; - } - const { systemId } = token; - if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { - return html_js_1.DOCUMENT_MODE.QUIRKS; - } - let { publicId } = token; - if (publicId !== null) { - publicId = publicId.toLowerCase(); - if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { - return html_js_1.DOCUMENT_MODE.QUIRKS; - } - let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return html_js_1.DOCUMENT_MODE.QUIRKS; - } - prefixes = - systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return html_js_1.DOCUMENT_MODE.LIMITED_QUIRKS; - } - } - return html_js_1.DOCUMENT_MODE.NO_QUIRKS; -} -exports.getDocumentMode = getDocumentMode; - -},{"./html.js":9}],7:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ERR = void 0; -var ERR; -(function (ERR) { - ERR["controlCharacterInInputStream"] = "control-character-in-input-stream"; - ERR["noncharacterInInputStream"] = "noncharacter-in-input-stream"; - ERR["surrogateInInputStream"] = "surrogate-in-input-stream"; - ERR["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; - ERR["endTagWithAttributes"] = "end-tag-with-attributes"; - ERR["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; - ERR["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; - ERR["unexpectedNullCharacter"] = "unexpected-null-character"; - ERR["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; - ERR["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; - ERR["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; - ERR["missingEndTagName"] = "missing-end-tag-name"; - ERR["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; - ERR["unknownNamedCharacterReference"] = "unknown-named-character-reference"; - ERR["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; - ERR["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; - ERR["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; - ERR["eofBeforeTagName"] = "eof-before-tag-name"; - ERR["eofInTag"] = "eof-in-tag"; - ERR["missingAttributeValue"] = "missing-attribute-value"; - ERR["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; - ERR["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; - ERR["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; - ERR["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; - ERR["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; - ERR["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; - ERR["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; - ERR["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; - ERR["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; - ERR["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; - ERR["cdataInHtmlContent"] = "cdata-in-html-content"; - ERR["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; - ERR["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; - ERR["eofInDoctype"] = "eof-in-doctype"; - ERR["nestedComment"] = "nested-comment"; - ERR["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; - ERR["eofInComment"] = "eof-in-comment"; - ERR["incorrectlyClosedComment"] = "incorrectly-closed-comment"; - ERR["eofInCdata"] = "eof-in-cdata"; - ERR["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; - ERR["nullCharacterReference"] = "null-character-reference"; - ERR["surrogateCharacterReference"] = "surrogate-character-reference"; - ERR["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; - ERR["controlCharacterReference"] = "control-character-reference"; - ERR["noncharacterCharacterReference"] = "noncharacter-character-reference"; - ERR["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; - ERR["missingDoctypeName"] = "missing-doctype-name"; - ERR["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; - ERR["duplicateAttribute"] = "duplicate-attribute"; - ERR["nonConformingDoctype"] = "non-conforming-doctype"; - ERR["missingDoctype"] = "missing-doctype"; - ERR["misplacedDoctype"] = "misplaced-doctype"; - ERR["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; - ERR["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; - ERR["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; - ERR["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; - ERR["abandonedHeadElementChild"] = "abandoned-head-element-child"; - ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; - ERR["nestedNoscriptInHead"] = "nested-noscript-in-head"; - ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; -})(ERR = exports.ERR || (exports.ERR = {})); - -},{}],8:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isIntegrationPoint = exports.adjustTokenSVGTagName = exports.adjustTokenXMLAttrs = exports.adjustTokenSVGAttrs = exports.adjustTokenMathMLAttrs = exports.causesExit = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = void 0; -const html_js_1 = require("./html.js"); -//MIME types -const MIME_TYPES = { - TEXT_HTML: 'text/html', - APPLICATION_XML: 'application/xhtml+xml', -}; -//Attributes -const DEFINITION_URL_ATTR = 'definitionurl'; -const ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL'; -const SVG_ATTRS_ADJUSTMENT_MAP = new Map([ - 'attributeName', - 'attributeType', - 'baseFrequency', - 'baseProfile', - 'calcMode', - 'clipPathUnits', - 'diffuseConstant', - 'edgeMode', - 'filterUnits', - 'glyphRef', - 'gradientTransform', - 'gradientUnits', - 'kernelMatrix', - 'kernelUnitLength', - 'keyPoints', - 'keySplines', - 'keyTimes', - 'lengthAdjust', - 'limitingConeAngle', - 'markerHeight', - 'markerUnits', - 'markerWidth', - 'maskContentUnits', - 'maskUnits', - 'numOctaves', - 'pathLength', - 'patternContentUnits', - 'patternTransform', - 'patternUnits', - 'pointsAtX', - 'pointsAtY', - 'pointsAtZ', - 'preserveAlpha', - 'preserveAspectRatio', - 'primitiveUnits', - 'refX', - 'refY', - 'repeatCount', - 'repeatDur', - 'requiredExtensions', - 'requiredFeatures', - 'specularConstant', - 'specularExponent', - 'spreadMethod', - 'startOffset', - 'stdDeviation', - 'stitchTiles', - 'surfaceScale', - 'systemLanguage', - 'tableValues', - 'targetX', - 'targetY', - 'textLength', - 'viewBox', - 'viewTarget', - 'xChannelSelector', - 'yChannelSelector', - 'zoomAndPan', -].map((attr) => [attr.toLowerCase(), attr])); -const XML_ATTRS_ADJUSTMENT_MAP = new Map([ - ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: html_js_1.NS.XLINK }], - ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: html_js_1.NS.XLINK }], - ['xlink:href', { prefix: 'xlink', name: 'href', namespace: html_js_1.NS.XLINK }], - ['xlink:role', { prefix: 'xlink', name: 'role', namespace: html_js_1.NS.XLINK }], - ['xlink:show', { prefix: 'xlink', name: 'show', namespace: html_js_1.NS.XLINK }], - ['xlink:title', { prefix: 'xlink', name: 'title', namespace: html_js_1.NS.XLINK }], - ['xlink:type', { prefix: 'xlink', name: 'type', namespace: html_js_1.NS.XLINK }], - ['xml:base', { prefix: 'xml', name: 'base', namespace: html_js_1.NS.XML }], - ['xml:lang', { prefix: 'xml', name: 'lang', namespace: html_js_1.NS.XML }], - ['xml:space', { prefix: 'xml', name: 'space', namespace: html_js_1.NS.XML }], - ['xmlns', { prefix: '', name: 'xmlns', namespace: html_js_1.NS.XMLNS }], - ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: html_js_1.NS.XMLNS }], -]); -//SVG tag names adjustment map -exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ - 'altGlyph', - 'altGlyphDef', - 'altGlyphItem', - 'animateColor', - 'animateMotion', - 'animateTransform', - 'clipPath', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feDistantLight', - 'feFlood', - 'feFuncA', - 'feFuncB', - 'feFuncG', - 'feFuncR', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMergeNode', - 'feMorphology', - 'feOffset', - 'fePointLight', - 'feSpecularLighting', - 'feSpotLight', - 'feTile', - 'feTurbulence', - 'foreignObject', - 'glyphRef', - 'linearGradient', - 'radialGradient', - 'textPath', -].map((tn) => [tn.toLowerCase(), tn])); -//Tags that causes exit from foreign content -const EXITS_FOREIGN_CONTENT = new Set([ - html_js_1.TAG_ID.B, - html_js_1.TAG_ID.BIG, - html_js_1.TAG_ID.BLOCKQUOTE, - html_js_1.TAG_ID.BODY, - html_js_1.TAG_ID.BR, - html_js_1.TAG_ID.CENTER, - html_js_1.TAG_ID.CODE, - html_js_1.TAG_ID.DD, - html_js_1.TAG_ID.DIV, - html_js_1.TAG_ID.DL, - html_js_1.TAG_ID.DT, - html_js_1.TAG_ID.EM, - html_js_1.TAG_ID.EMBED, - html_js_1.TAG_ID.H1, - html_js_1.TAG_ID.H2, - html_js_1.TAG_ID.H3, - html_js_1.TAG_ID.H4, - html_js_1.TAG_ID.H5, - html_js_1.TAG_ID.H6, - html_js_1.TAG_ID.HEAD, - html_js_1.TAG_ID.HR, - html_js_1.TAG_ID.I, - html_js_1.TAG_ID.IMG, - html_js_1.TAG_ID.LI, - html_js_1.TAG_ID.LISTING, - html_js_1.TAG_ID.MENU, - html_js_1.TAG_ID.META, - html_js_1.TAG_ID.NOBR, - html_js_1.TAG_ID.OL, - html_js_1.TAG_ID.P, - html_js_1.TAG_ID.PRE, - html_js_1.TAG_ID.RUBY, - html_js_1.TAG_ID.S, - html_js_1.TAG_ID.SMALL, - html_js_1.TAG_ID.SPAN, - html_js_1.TAG_ID.STRONG, - html_js_1.TAG_ID.STRIKE, - html_js_1.TAG_ID.SUB, - html_js_1.TAG_ID.SUP, - html_js_1.TAG_ID.TABLE, - html_js_1.TAG_ID.TT, - html_js_1.TAG_ID.U, - html_js_1.TAG_ID.UL, - html_js_1.TAG_ID.VAR, -]); -//Check exit from foreign content -function causesExit(startTagToken) { - const tn = startTagToken.tagID; - const isFontWithAttrs = tn === html_js_1.TAG_ID.FONT && - startTagToken.attrs.some(({ name }) => name === html_js_1.ATTRS.COLOR || name === html_js_1.ATTRS.SIZE || name === html_js_1.ATTRS.FACE); - return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); -} -exports.causesExit = causesExit; -//Token adjustments -function adjustTokenMathMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - if (token.attrs[i].name === DEFINITION_URL_ATTR) { - token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; - break; - } - } -} -exports.adjustTokenMathMLAttrs = adjustTokenMathMLAttrs; -function adjustTokenSVGAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrName != null) { - token.attrs[i].name = adjustedAttrName; - } - } -} -exports.adjustTokenSVGAttrs = adjustTokenSVGAttrs; -function adjustTokenXMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrEntry) { - token.attrs[i].prefix = adjustedAttrEntry.prefix; - token.attrs[i].name = adjustedAttrEntry.name; - token.attrs[i].namespace = adjustedAttrEntry.namespace; - } - } -} -exports.adjustTokenXMLAttrs = adjustTokenXMLAttrs; -function adjustTokenSVGTagName(token) { - const adjustedTagName = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); - if (adjustedTagName != null) { - token.tagName = adjustedTagName; - token.tagID = (0, html_js_1.getTagID)(token.tagName); - } -} -exports.adjustTokenSVGTagName = adjustTokenSVGTagName; -//Integration points -function isMathMLTextIntegrationPoint(tn, ns) { - return ns === html_js_1.NS.MATHML && (tn === html_js_1.TAG_ID.MI || tn === html_js_1.TAG_ID.MO || tn === html_js_1.TAG_ID.MN || tn === html_js_1.TAG_ID.MS || tn === html_js_1.TAG_ID.MTEXT); -} -function isHtmlIntegrationPoint(tn, ns, attrs) { - if (ns === html_js_1.NS.MATHML && tn === html_js_1.TAG_ID.ANNOTATION_XML) { - for (let i = 0; i < attrs.length; i++) { - if (attrs[i].name === html_js_1.ATTRS.ENCODING) { - const value = attrs[i].value.toLowerCase(); - return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; - } - } - } - return ns === html_js_1.NS.SVG && (tn === html_js_1.TAG_ID.FOREIGN_OBJECT || tn === html_js_1.TAG_ID.DESC || tn === html_js_1.TAG_ID.TITLE); -} -function isIntegrationPoint(tn, ns, attrs, foreignNS) { - return (((!foreignNS || foreignNS === html_js_1.NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) || - ((!foreignNS || foreignNS === html_js_1.NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns))); -} -exports.isIntegrationPoint = isIntegrationPoint; - -},{"./html.js":9}],9:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasUnescapedText = exports.isNumberedHeader = exports.SPECIAL_ELEMENTS = exports.getTagID = exports.TAG_ID = exports.TAG_NAMES = exports.DOCUMENT_MODE = exports.ATTRS = exports.NS = void 0; -/** All valid namespaces in HTML. */ -var NS; -(function (NS) { - NS["HTML"] = "http://www.w3.org/1999/xhtml"; - NS["MATHML"] = "http://www.w3.org/1998/Math/MathML"; - NS["SVG"] = "http://www.w3.org/2000/svg"; - NS["XLINK"] = "http://www.w3.org/1999/xlink"; - NS["XML"] = "http://www.w3.org/XML/1998/namespace"; - NS["XMLNS"] = "http://www.w3.org/2000/xmlns/"; -})(NS = exports.NS || (exports.NS = {})); -var ATTRS; -(function (ATTRS) { - ATTRS["TYPE"] = "type"; - ATTRS["ACTION"] = "action"; - ATTRS["ENCODING"] = "encoding"; - ATTRS["PROMPT"] = "prompt"; - ATTRS["NAME"] = "name"; - ATTRS["COLOR"] = "color"; - ATTRS["FACE"] = "face"; - ATTRS["SIZE"] = "size"; -})(ATTRS = exports.ATTRS || (exports.ATTRS = {})); -/** - * The mode of the document. - * - * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks} - */ -var DOCUMENT_MODE; -(function (DOCUMENT_MODE) { - DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks"; - DOCUMENT_MODE["QUIRKS"] = "quirks"; - DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks"; -})(DOCUMENT_MODE = exports.DOCUMENT_MODE || (exports.DOCUMENT_MODE = {})); -var TAG_NAMES; -(function (TAG_NAMES) { - TAG_NAMES["A"] = "a"; - TAG_NAMES["ADDRESS"] = "address"; - TAG_NAMES["ANNOTATION_XML"] = "annotation-xml"; - TAG_NAMES["APPLET"] = "applet"; - TAG_NAMES["AREA"] = "area"; - TAG_NAMES["ARTICLE"] = "article"; - TAG_NAMES["ASIDE"] = "aside"; - TAG_NAMES["B"] = "b"; - TAG_NAMES["BASE"] = "base"; - TAG_NAMES["BASEFONT"] = "basefont"; - TAG_NAMES["BGSOUND"] = "bgsound"; - TAG_NAMES["BIG"] = "big"; - TAG_NAMES["BLOCKQUOTE"] = "blockquote"; - TAG_NAMES["BODY"] = "body"; - TAG_NAMES["BR"] = "br"; - TAG_NAMES["BUTTON"] = "button"; - TAG_NAMES["CAPTION"] = "caption"; - TAG_NAMES["CENTER"] = "center"; - TAG_NAMES["CODE"] = "code"; - TAG_NAMES["COL"] = "col"; - TAG_NAMES["COLGROUP"] = "colgroup"; - TAG_NAMES["DD"] = "dd"; - TAG_NAMES["DESC"] = "desc"; - TAG_NAMES["DETAILS"] = "details"; - TAG_NAMES["DIALOG"] = "dialog"; - TAG_NAMES["DIR"] = "dir"; - TAG_NAMES["DIV"] = "div"; - TAG_NAMES["DL"] = "dl"; - TAG_NAMES["DT"] = "dt"; - TAG_NAMES["EM"] = "em"; - TAG_NAMES["EMBED"] = "embed"; - TAG_NAMES["FIELDSET"] = "fieldset"; - TAG_NAMES["FIGCAPTION"] = "figcaption"; - TAG_NAMES["FIGURE"] = "figure"; - TAG_NAMES["FONT"] = "font"; - TAG_NAMES["FOOTER"] = "footer"; - TAG_NAMES["FOREIGN_OBJECT"] = "foreignObject"; - TAG_NAMES["FORM"] = "form"; - TAG_NAMES["FRAME"] = "frame"; - TAG_NAMES["FRAMESET"] = "frameset"; - TAG_NAMES["H1"] = "h1"; - TAG_NAMES["H2"] = "h2"; - TAG_NAMES["H3"] = "h3"; - TAG_NAMES["H4"] = "h4"; - TAG_NAMES["H5"] = "h5"; - TAG_NAMES["H6"] = "h6"; - TAG_NAMES["HEAD"] = "head"; - TAG_NAMES["HEADER"] = "header"; - TAG_NAMES["HGROUP"] = "hgroup"; - TAG_NAMES["HR"] = "hr"; - TAG_NAMES["HTML"] = "html"; - TAG_NAMES["I"] = "i"; - TAG_NAMES["IMG"] = "img"; - TAG_NAMES["IMAGE"] = "image"; - TAG_NAMES["INPUT"] = "input"; - TAG_NAMES["IFRAME"] = "iframe"; - TAG_NAMES["KEYGEN"] = "keygen"; - TAG_NAMES["LABEL"] = "label"; - TAG_NAMES["LI"] = "li"; - TAG_NAMES["LINK"] = "link"; - TAG_NAMES["LISTING"] = "listing"; - TAG_NAMES["MAIN"] = "main"; - TAG_NAMES["MALIGNMARK"] = "malignmark"; - TAG_NAMES["MARQUEE"] = "marquee"; - TAG_NAMES["MATH"] = "math"; - TAG_NAMES["MENU"] = "menu"; - TAG_NAMES["META"] = "meta"; - TAG_NAMES["MGLYPH"] = "mglyph"; - TAG_NAMES["MI"] = "mi"; - TAG_NAMES["MO"] = "mo"; - TAG_NAMES["MN"] = "mn"; - TAG_NAMES["MS"] = "ms"; - TAG_NAMES["MTEXT"] = "mtext"; - TAG_NAMES["NAV"] = "nav"; - TAG_NAMES["NOBR"] = "nobr"; - TAG_NAMES["NOFRAMES"] = "noframes"; - TAG_NAMES["NOEMBED"] = "noembed"; - TAG_NAMES["NOSCRIPT"] = "noscript"; - TAG_NAMES["OBJECT"] = "object"; - TAG_NAMES["OL"] = "ol"; - TAG_NAMES["OPTGROUP"] = "optgroup"; - TAG_NAMES["OPTION"] = "option"; - TAG_NAMES["P"] = "p"; - TAG_NAMES["PARAM"] = "param"; - TAG_NAMES["PLAINTEXT"] = "plaintext"; - TAG_NAMES["PRE"] = "pre"; - TAG_NAMES["RB"] = "rb"; - TAG_NAMES["RP"] = "rp"; - TAG_NAMES["RT"] = "rt"; - TAG_NAMES["RTC"] = "rtc"; - TAG_NAMES["RUBY"] = "ruby"; - TAG_NAMES["S"] = "s"; - TAG_NAMES["SCRIPT"] = "script"; - TAG_NAMES["SECTION"] = "section"; - TAG_NAMES["SELECT"] = "select"; - TAG_NAMES["SOURCE"] = "source"; - TAG_NAMES["SMALL"] = "small"; - TAG_NAMES["SPAN"] = "span"; - TAG_NAMES["STRIKE"] = "strike"; - TAG_NAMES["STRONG"] = "strong"; - TAG_NAMES["STYLE"] = "style"; - TAG_NAMES["SUB"] = "sub"; - TAG_NAMES["SUMMARY"] = "summary"; - TAG_NAMES["SUP"] = "sup"; - TAG_NAMES["TABLE"] = "table"; - TAG_NAMES["TBODY"] = "tbody"; - TAG_NAMES["TEMPLATE"] = "template"; - TAG_NAMES["TEXTAREA"] = "textarea"; - TAG_NAMES["TFOOT"] = "tfoot"; - TAG_NAMES["TD"] = "td"; - TAG_NAMES["TH"] = "th"; - TAG_NAMES["THEAD"] = "thead"; - TAG_NAMES["TITLE"] = "title"; - TAG_NAMES["TR"] = "tr"; - TAG_NAMES["TRACK"] = "track"; - TAG_NAMES["TT"] = "tt"; - TAG_NAMES["U"] = "u"; - TAG_NAMES["UL"] = "ul"; - TAG_NAMES["SVG"] = "svg"; - TAG_NAMES["VAR"] = "var"; - TAG_NAMES["WBR"] = "wbr"; - TAG_NAMES["XMP"] = "xmp"; -})(TAG_NAMES = exports.TAG_NAMES || (exports.TAG_NAMES = {})); -/** - * Tag IDs are numeric IDs for known tag names. - * - * We use tag IDs to improve the performance of tag name comparisons. - */ -var TAG_ID; -(function (TAG_ID) { - TAG_ID[TAG_ID["UNKNOWN"] = 0] = "UNKNOWN"; - TAG_ID[TAG_ID["A"] = 1] = "A"; - TAG_ID[TAG_ID["ADDRESS"] = 2] = "ADDRESS"; - TAG_ID[TAG_ID["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; - TAG_ID[TAG_ID["APPLET"] = 4] = "APPLET"; - TAG_ID[TAG_ID["AREA"] = 5] = "AREA"; - TAG_ID[TAG_ID["ARTICLE"] = 6] = "ARTICLE"; - TAG_ID[TAG_ID["ASIDE"] = 7] = "ASIDE"; - TAG_ID[TAG_ID["B"] = 8] = "B"; - TAG_ID[TAG_ID["BASE"] = 9] = "BASE"; - TAG_ID[TAG_ID["BASEFONT"] = 10] = "BASEFONT"; - TAG_ID[TAG_ID["BGSOUND"] = 11] = "BGSOUND"; - TAG_ID[TAG_ID["BIG"] = 12] = "BIG"; - TAG_ID[TAG_ID["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; - TAG_ID[TAG_ID["BODY"] = 14] = "BODY"; - TAG_ID[TAG_ID["BR"] = 15] = "BR"; - TAG_ID[TAG_ID["BUTTON"] = 16] = "BUTTON"; - TAG_ID[TAG_ID["CAPTION"] = 17] = "CAPTION"; - TAG_ID[TAG_ID["CENTER"] = 18] = "CENTER"; - TAG_ID[TAG_ID["CODE"] = 19] = "CODE"; - TAG_ID[TAG_ID["COL"] = 20] = "COL"; - TAG_ID[TAG_ID["COLGROUP"] = 21] = "COLGROUP"; - TAG_ID[TAG_ID["DD"] = 22] = "DD"; - TAG_ID[TAG_ID["DESC"] = 23] = "DESC"; - TAG_ID[TAG_ID["DETAILS"] = 24] = "DETAILS"; - TAG_ID[TAG_ID["DIALOG"] = 25] = "DIALOG"; - TAG_ID[TAG_ID["DIR"] = 26] = "DIR"; - TAG_ID[TAG_ID["DIV"] = 27] = "DIV"; - TAG_ID[TAG_ID["DL"] = 28] = "DL"; - TAG_ID[TAG_ID["DT"] = 29] = "DT"; - TAG_ID[TAG_ID["EM"] = 30] = "EM"; - TAG_ID[TAG_ID["EMBED"] = 31] = "EMBED"; - TAG_ID[TAG_ID["FIELDSET"] = 32] = "FIELDSET"; - TAG_ID[TAG_ID["FIGCAPTION"] = 33] = "FIGCAPTION"; - TAG_ID[TAG_ID["FIGURE"] = 34] = "FIGURE"; - TAG_ID[TAG_ID["FONT"] = 35] = "FONT"; - TAG_ID[TAG_ID["FOOTER"] = 36] = "FOOTER"; - TAG_ID[TAG_ID["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; - TAG_ID[TAG_ID["FORM"] = 38] = "FORM"; - TAG_ID[TAG_ID["FRAME"] = 39] = "FRAME"; - TAG_ID[TAG_ID["FRAMESET"] = 40] = "FRAMESET"; - TAG_ID[TAG_ID["H1"] = 41] = "H1"; - TAG_ID[TAG_ID["H2"] = 42] = "H2"; - TAG_ID[TAG_ID["H3"] = 43] = "H3"; - TAG_ID[TAG_ID["H4"] = 44] = "H4"; - TAG_ID[TAG_ID["H5"] = 45] = "H5"; - TAG_ID[TAG_ID["H6"] = 46] = "H6"; - TAG_ID[TAG_ID["HEAD"] = 47] = "HEAD"; - TAG_ID[TAG_ID["HEADER"] = 48] = "HEADER"; - TAG_ID[TAG_ID["HGROUP"] = 49] = "HGROUP"; - TAG_ID[TAG_ID["HR"] = 50] = "HR"; - TAG_ID[TAG_ID["HTML"] = 51] = "HTML"; - TAG_ID[TAG_ID["I"] = 52] = "I"; - TAG_ID[TAG_ID["IMG"] = 53] = "IMG"; - TAG_ID[TAG_ID["IMAGE"] = 54] = "IMAGE"; - TAG_ID[TAG_ID["INPUT"] = 55] = "INPUT"; - TAG_ID[TAG_ID["IFRAME"] = 56] = "IFRAME"; - TAG_ID[TAG_ID["KEYGEN"] = 57] = "KEYGEN"; - TAG_ID[TAG_ID["LABEL"] = 58] = "LABEL"; - TAG_ID[TAG_ID["LI"] = 59] = "LI"; - TAG_ID[TAG_ID["LINK"] = 60] = "LINK"; - TAG_ID[TAG_ID["LISTING"] = 61] = "LISTING"; - TAG_ID[TAG_ID["MAIN"] = 62] = "MAIN"; - TAG_ID[TAG_ID["MALIGNMARK"] = 63] = "MALIGNMARK"; - TAG_ID[TAG_ID["MARQUEE"] = 64] = "MARQUEE"; - TAG_ID[TAG_ID["MATH"] = 65] = "MATH"; - TAG_ID[TAG_ID["MENU"] = 66] = "MENU"; - TAG_ID[TAG_ID["META"] = 67] = "META"; - TAG_ID[TAG_ID["MGLYPH"] = 68] = "MGLYPH"; - TAG_ID[TAG_ID["MI"] = 69] = "MI"; - TAG_ID[TAG_ID["MO"] = 70] = "MO"; - TAG_ID[TAG_ID["MN"] = 71] = "MN"; - TAG_ID[TAG_ID["MS"] = 72] = "MS"; - TAG_ID[TAG_ID["MTEXT"] = 73] = "MTEXT"; - TAG_ID[TAG_ID["NAV"] = 74] = "NAV"; - TAG_ID[TAG_ID["NOBR"] = 75] = "NOBR"; - TAG_ID[TAG_ID["NOFRAMES"] = 76] = "NOFRAMES"; - TAG_ID[TAG_ID["NOEMBED"] = 77] = "NOEMBED"; - TAG_ID[TAG_ID["NOSCRIPT"] = 78] = "NOSCRIPT"; - TAG_ID[TAG_ID["OBJECT"] = 79] = "OBJECT"; - TAG_ID[TAG_ID["OL"] = 80] = "OL"; - TAG_ID[TAG_ID["OPTGROUP"] = 81] = "OPTGROUP"; - TAG_ID[TAG_ID["OPTION"] = 82] = "OPTION"; - TAG_ID[TAG_ID["P"] = 83] = "P"; - TAG_ID[TAG_ID["PARAM"] = 84] = "PARAM"; - TAG_ID[TAG_ID["PLAINTEXT"] = 85] = "PLAINTEXT"; - TAG_ID[TAG_ID["PRE"] = 86] = "PRE"; - TAG_ID[TAG_ID["RB"] = 87] = "RB"; - TAG_ID[TAG_ID["RP"] = 88] = "RP"; - TAG_ID[TAG_ID["RT"] = 89] = "RT"; - TAG_ID[TAG_ID["RTC"] = 90] = "RTC"; - TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY"; - TAG_ID[TAG_ID["S"] = 92] = "S"; - TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT"; - TAG_ID[TAG_ID["SECTION"] = 94] = "SECTION"; - TAG_ID[TAG_ID["SELECT"] = 95] = "SELECT"; - TAG_ID[TAG_ID["SOURCE"] = 96] = "SOURCE"; - TAG_ID[TAG_ID["SMALL"] = 97] = "SMALL"; - TAG_ID[TAG_ID["SPAN"] = 98] = "SPAN"; - TAG_ID[TAG_ID["STRIKE"] = 99] = "STRIKE"; - TAG_ID[TAG_ID["STRONG"] = 100] = "STRONG"; - TAG_ID[TAG_ID["STYLE"] = 101] = "STYLE"; - TAG_ID[TAG_ID["SUB"] = 102] = "SUB"; - TAG_ID[TAG_ID["SUMMARY"] = 103] = "SUMMARY"; - TAG_ID[TAG_ID["SUP"] = 104] = "SUP"; - TAG_ID[TAG_ID["TABLE"] = 105] = "TABLE"; - TAG_ID[TAG_ID["TBODY"] = 106] = "TBODY"; - TAG_ID[TAG_ID["TEMPLATE"] = 107] = "TEMPLATE"; - TAG_ID[TAG_ID["TEXTAREA"] = 108] = "TEXTAREA"; - TAG_ID[TAG_ID["TFOOT"] = 109] = "TFOOT"; - TAG_ID[TAG_ID["TD"] = 110] = "TD"; - TAG_ID[TAG_ID["TH"] = 111] = "TH"; - TAG_ID[TAG_ID["THEAD"] = 112] = "THEAD"; - TAG_ID[TAG_ID["TITLE"] = 113] = "TITLE"; - TAG_ID[TAG_ID["TR"] = 114] = "TR"; - TAG_ID[TAG_ID["TRACK"] = 115] = "TRACK"; - TAG_ID[TAG_ID["TT"] = 116] = "TT"; - TAG_ID[TAG_ID["U"] = 117] = "U"; - TAG_ID[TAG_ID["UL"] = 118] = "UL"; - TAG_ID[TAG_ID["SVG"] = 119] = "SVG"; - TAG_ID[TAG_ID["VAR"] = 120] = "VAR"; - TAG_ID[TAG_ID["WBR"] = 121] = "WBR"; - TAG_ID[TAG_ID["XMP"] = 122] = "XMP"; -})(TAG_ID = exports.TAG_ID || (exports.TAG_ID = {})); -const TAG_NAME_TO_ID = new Map([ - [TAG_NAMES.A, TAG_ID.A], - [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], - [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], - [TAG_NAMES.APPLET, TAG_ID.APPLET], - [TAG_NAMES.AREA, TAG_ID.AREA], - [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], - [TAG_NAMES.ASIDE, TAG_ID.ASIDE], - [TAG_NAMES.B, TAG_ID.B], - [TAG_NAMES.BASE, TAG_ID.BASE], - [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], - [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], - [TAG_NAMES.BIG, TAG_ID.BIG], - [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], - [TAG_NAMES.BODY, TAG_ID.BODY], - [TAG_NAMES.BR, TAG_ID.BR], - [TAG_NAMES.BUTTON, TAG_ID.BUTTON], - [TAG_NAMES.CAPTION, TAG_ID.CAPTION], - [TAG_NAMES.CENTER, TAG_ID.CENTER], - [TAG_NAMES.CODE, TAG_ID.CODE], - [TAG_NAMES.COL, TAG_ID.COL], - [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], - [TAG_NAMES.DD, TAG_ID.DD], - [TAG_NAMES.DESC, TAG_ID.DESC], - [TAG_NAMES.DETAILS, TAG_ID.DETAILS], - [TAG_NAMES.DIALOG, TAG_ID.DIALOG], - [TAG_NAMES.DIR, TAG_ID.DIR], - [TAG_NAMES.DIV, TAG_ID.DIV], - [TAG_NAMES.DL, TAG_ID.DL], - [TAG_NAMES.DT, TAG_ID.DT], - [TAG_NAMES.EM, TAG_ID.EM], - [TAG_NAMES.EMBED, TAG_ID.EMBED], - [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], - [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], - [TAG_NAMES.FIGURE, TAG_ID.FIGURE], - [TAG_NAMES.FONT, TAG_ID.FONT], - [TAG_NAMES.FOOTER, TAG_ID.FOOTER], - [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], - [TAG_NAMES.FORM, TAG_ID.FORM], - [TAG_NAMES.FRAME, TAG_ID.FRAME], - [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], - [TAG_NAMES.H1, TAG_ID.H1], - [TAG_NAMES.H2, TAG_ID.H2], - [TAG_NAMES.H3, TAG_ID.H3], - [TAG_NAMES.H4, TAG_ID.H4], - [TAG_NAMES.H5, TAG_ID.H5], - [TAG_NAMES.H6, TAG_ID.H6], - [TAG_NAMES.HEAD, TAG_ID.HEAD], - [TAG_NAMES.HEADER, TAG_ID.HEADER], - [TAG_NAMES.HGROUP, TAG_ID.HGROUP], - [TAG_NAMES.HR, TAG_ID.HR], - [TAG_NAMES.HTML, TAG_ID.HTML], - [TAG_NAMES.I, TAG_ID.I], - [TAG_NAMES.IMG, TAG_ID.IMG], - [TAG_NAMES.IMAGE, TAG_ID.IMAGE], - [TAG_NAMES.INPUT, TAG_ID.INPUT], - [TAG_NAMES.IFRAME, TAG_ID.IFRAME], - [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], - [TAG_NAMES.LABEL, TAG_ID.LABEL], - [TAG_NAMES.LI, TAG_ID.LI], - [TAG_NAMES.LINK, TAG_ID.LINK], - [TAG_NAMES.LISTING, TAG_ID.LISTING], - [TAG_NAMES.MAIN, TAG_ID.MAIN], - [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], - [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], - [TAG_NAMES.MATH, TAG_ID.MATH], - [TAG_NAMES.MENU, TAG_ID.MENU], - [TAG_NAMES.META, TAG_ID.META], - [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], - [TAG_NAMES.MI, TAG_ID.MI], - [TAG_NAMES.MO, TAG_ID.MO], - [TAG_NAMES.MN, TAG_ID.MN], - [TAG_NAMES.MS, TAG_ID.MS], - [TAG_NAMES.MTEXT, TAG_ID.MTEXT], - [TAG_NAMES.NAV, TAG_ID.NAV], - [TAG_NAMES.NOBR, TAG_ID.NOBR], - [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], - [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], - [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], - [TAG_NAMES.OBJECT, TAG_ID.OBJECT], - [TAG_NAMES.OL, TAG_ID.OL], - [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], - [TAG_NAMES.OPTION, TAG_ID.OPTION], - [TAG_NAMES.P, TAG_ID.P], - [TAG_NAMES.PARAM, TAG_ID.PARAM], - [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], - [TAG_NAMES.PRE, TAG_ID.PRE], - [TAG_NAMES.RB, TAG_ID.RB], - [TAG_NAMES.RP, TAG_ID.RP], - [TAG_NAMES.RT, TAG_ID.RT], - [TAG_NAMES.RTC, TAG_ID.RTC], - [TAG_NAMES.RUBY, TAG_ID.RUBY], - [TAG_NAMES.S, TAG_ID.S], - [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], - [TAG_NAMES.SECTION, TAG_ID.SECTION], - [TAG_NAMES.SELECT, TAG_ID.SELECT], - [TAG_NAMES.SOURCE, TAG_ID.SOURCE], - [TAG_NAMES.SMALL, TAG_ID.SMALL], - [TAG_NAMES.SPAN, TAG_ID.SPAN], - [TAG_NAMES.STRIKE, TAG_ID.STRIKE], - [TAG_NAMES.STRONG, TAG_ID.STRONG], - [TAG_NAMES.STYLE, TAG_ID.STYLE], - [TAG_NAMES.SUB, TAG_ID.SUB], - [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], - [TAG_NAMES.SUP, TAG_ID.SUP], - [TAG_NAMES.TABLE, TAG_ID.TABLE], - [TAG_NAMES.TBODY, TAG_ID.TBODY], - [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], - [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], - [TAG_NAMES.TFOOT, TAG_ID.TFOOT], - [TAG_NAMES.TD, TAG_ID.TD], - [TAG_NAMES.TH, TAG_ID.TH], - [TAG_NAMES.THEAD, TAG_ID.THEAD], - [TAG_NAMES.TITLE, TAG_ID.TITLE], - [TAG_NAMES.TR, TAG_ID.TR], - [TAG_NAMES.TRACK, TAG_ID.TRACK], - [TAG_NAMES.TT, TAG_ID.TT], - [TAG_NAMES.U, TAG_ID.U], - [TAG_NAMES.UL, TAG_ID.UL], - [TAG_NAMES.SVG, TAG_ID.SVG], - [TAG_NAMES.VAR, TAG_ID.VAR], - [TAG_NAMES.WBR, TAG_ID.WBR], - [TAG_NAMES.XMP, TAG_ID.XMP], -]); -function getTagID(tagName) { - var _a; - return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN; -} -exports.getTagID = getTagID; -const $ = TAG_ID; -exports.SPECIAL_ELEMENTS = { - [NS.HTML]: new Set([ - $.ADDRESS, - $.APPLET, - $.AREA, - $.ARTICLE, - $.ASIDE, - $.BASE, - $.BASEFONT, - $.BGSOUND, - $.BLOCKQUOTE, - $.BODY, - $.BR, - $.BUTTON, - $.CAPTION, - $.CENTER, - $.COL, - $.COLGROUP, - $.DD, - $.DETAILS, - $.DIR, - $.DIV, - $.DL, - $.DT, - $.EMBED, - $.FIELDSET, - $.FIGCAPTION, - $.FIGURE, - $.FOOTER, - $.FORM, - $.FRAME, - $.FRAMESET, - $.H1, - $.H2, - $.H3, - $.H4, - $.H5, - $.H6, - $.HEAD, - $.HEADER, - $.HGROUP, - $.HR, - $.HTML, - $.IFRAME, - $.IMG, - $.INPUT, - $.LI, - $.LINK, - $.LISTING, - $.MAIN, - $.MARQUEE, - $.MENU, - $.META, - $.NAV, - $.NOEMBED, - $.NOFRAMES, - $.NOSCRIPT, - $.OBJECT, - $.OL, - $.P, - $.PARAM, - $.PLAINTEXT, - $.PRE, - $.SCRIPT, - $.SECTION, - $.SELECT, - $.SOURCE, - $.STYLE, - $.SUMMARY, - $.TABLE, - $.TBODY, - $.TD, - $.TEMPLATE, - $.TEXTAREA, - $.TFOOT, - $.TH, - $.THEAD, - $.TITLE, - $.TR, - $.TRACK, - $.UL, - $.WBR, - $.XMP, - ]), - [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), - [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), - [NS.XLINK]: new Set(), - [NS.XML]: new Set(), - [NS.XMLNS]: new Set(), -}; -function isNumberedHeader(tn) { - return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6; -} -exports.isNumberedHeader = isNumberedHeader; -const UNESCAPED_TEXT = new Set([ - TAG_NAMES.STYLE, - TAG_NAMES.SCRIPT, - TAG_NAMES.XMP, - TAG_NAMES.IFRAME, - TAG_NAMES.NOEMBED, - TAG_NAMES.NOFRAMES, - TAG_NAMES.PLAINTEXT, -]); -function hasUnescapedText(tn, scriptingEnabled) { - return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT); -} -exports.hasUnescapedText = hasUnescapedText; - -},{}],10:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getTokenAttr = exports.TokenType = void 0; -var TokenType; -(function (TokenType) { - TokenType[TokenType["CHARACTER"] = 0] = "CHARACTER"; - TokenType[TokenType["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; - TokenType[TokenType["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; - TokenType[TokenType["START_TAG"] = 3] = "START_TAG"; - TokenType[TokenType["END_TAG"] = 4] = "END_TAG"; - TokenType[TokenType["COMMENT"] = 5] = "COMMENT"; - TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE"; - TokenType[TokenType["EOF"] = 7] = "EOF"; - TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION"; -})(TokenType = exports.TokenType || (exports.TokenType = {})); -function getTokenAttr(token, attrName) { - for (let i = token.attrs.length - 1; i >= 0; i--) { - if (token.attrs[i].name === attrName) { - return token.attrs[i].value; - } - } - return null; -} -exports.getTokenAttr = getTokenAttr; - -},{}],11:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isUndefinedCodePoint = exports.isControlCodePoint = exports.getSurrogatePairCodePoint = exports.isSurrogatePair = exports.isSurrogate = exports.SEQUENCES = exports.CODE_POINTS = exports.REPLACEMENT_CHARACTER = void 0; -const UNDEFINED_CODE_POINTS = new Set([ - 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, - 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, - 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, - 1048575, 1114110, 1114111, -]); -exports.REPLACEMENT_CHARACTER = '\uFFFD'; -var CODE_POINTS; -(function (CODE_POINTS) { - CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; - CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; - CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; - CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; - CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; - CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; - CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; - CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; - CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; - CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN"; - CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; - CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; - CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; - CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; - CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; - CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; - CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; - CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; - CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; - CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; - CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; - CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; - CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F"; - CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X"; - CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; - CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; - CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; - CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; - CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F"; - CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X"; - CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; - CODE_POINTS[CODE_POINTS["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER"; -})(CODE_POINTS = exports.CODE_POINTS || (exports.CODE_POINTS = {})); -exports.SEQUENCES = { - DASH_DASH: '--', - CDATA_START: '[CDATA[', - DOCTYPE: 'doctype', - SCRIPT: 'script', - PUBLIC: 'public', - SYSTEM: 'system', -}; -//Surrogates -function isSurrogate(cp) { - return cp >= 55296 && cp <= 57343; -} -exports.isSurrogate = isSurrogate; -function isSurrogatePair(cp) { - return cp >= 56320 && cp <= 57343; -} -exports.isSurrogatePair = isSurrogatePair; -function getSurrogatePairCodePoint(cp1, cp2) { - return (cp1 - 55296) * 1024 + 9216 + cp2; -} -exports.getSurrogatePairCodePoint = getSurrogatePairCodePoint; -//NOTE: excluding NULL and ASCII whitespace -function isControlCodePoint(cp) { - return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) || - (cp >= 0x7f && cp <= 0x9f)); -} -exports.isControlCodePoint = isControlCodePoint; -function isUndefinedCodePoint(cp) { - return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp); -} -exports.isUndefinedCodePoint = isUndefinedCodePoint; - -},{}],12:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseFragment = exports.parse = exports.TokenizerMode = exports.Tokenizer = exports.Token = exports.html = exports.foreignContent = exports.ErrorCodes = exports.serializeOuter = exports.serialize = exports.Parser = exports.defaultTreeAdapter = void 0; -const index_js_1 = require("./parser/index.js"); -var default_js_1 = require("./tree-adapters/default.js"); -Object.defineProperty(exports, "defaultTreeAdapter", { enumerable: true, get: function () { return default_js_1.defaultTreeAdapter; } }); -var index_js_2 = require("./parser/index.js"); -Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return index_js_2.Parser; } }); -var index_js_3 = require("./serializer/index.js"); -Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return index_js_3.serialize; } }); -Object.defineProperty(exports, "serializeOuter", { enumerable: true, get: function () { return index_js_3.serializeOuter; } }); -var error_codes_js_1 = require("./common/error-codes.js"); -Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return error_codes_js_1.ERR; } }); -/** @internal */ -exports.foreignContent = require("./common/foreign-content.js"); -/** @internal */ -exports.html = require("./common/html.js"); -/** @internal */ -exports.Token = require("./common/token.js"); -/** @internal */ -var index_js_4 = require("./tokenizer/index.js"); -Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return index_js_4.Tokenizer; } }); -Object.defineProperty(exports, "TokenizerMode", { enumerable: true, get: function () { return index_js_4.TokenizerMode; } }); -// Shorthands -/** - * Parses an HTML string. - * - * @param html Input HTML string. - * @param options Parsing options. - * @returns Document - * - * @example - * - * ```js - * const parse5 = require('parse5'); - * - * const document = parse5.parse('Hi there!'); - * - * console.log(document.childNodes[1].tagName); //> 'html' - *``` - */ -function parse(html, options) { - return index_js_1.Parser.parse(html, options); -} -exports.parse = parse; -function parseFragment(fragmentContext, html, options) { - if (typeof fragmentContext === 'string') { - options = html; - html = fragmentContext; - fragmentContext = null; - } - const parser = index_js_1.Parser.getFragmentParser(fragmentContext, options); - parser.tokenizer.write(html, true); - return parser.getFragment(); -} -exports.parseFragment = parseFragment; - -},{"./common/error-codes.js":7,"./common/foreign-content.js":8,"./common/html.js":9,"./common/token.js":10,"./parser/index.js":14,"./serializer/index.js":16,"./tokenizer/index.js":17,"./tree-adapters/default.js":19}],13:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FormattingElementList = exports.EntryType = void 0; -//Const -const NOAH_ARK_CAPACITY = 3; -var EntryType; -(function (EntryType) { - EntryType[EntryType["Marker"] = 0] = "Marker"; - EntryType[EntryType["Element"] = 1] = "Element"; -})(EntryType = exports.EntryType || (exports.EntryType = {})); -const MARKER = { type: EntryType.Marker }; -//List of formatting elements -class FormattingElementList { - constructor(treeAdapter) { - this.treeAdapter = treeAdapter; - this.entries = []; - this.bookmark = null; - } - //Noah Ark's condition - //OPTIMIZATION: at first we try to find possible candidates for exclusion using - //lightweight heuristics without thorough attributes check. - _getNoahArkConditionCandidates(newElement, neAttrs) { - const candidates = []; - const neAttrsLength = neAttrs.length; - const neTagName = this.treeAdapter.getTagName(newElement); - const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); - for (let i = 0; i < this.entries.length; i++) { - const entry = this.entries[i]; - if (entry.type === EntryType.Marker) { - break; - } - const { element } = entry; - if (this.treeAdapter.getTagName(element) === neTagName && - this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { - const elementAttrs = this.treeAdapter.getAttrList(element); - if (elementAttrs.length === neAttrsLength) { - candidates.push({ idx: i, attrs: elementAttrs }); - } - } - } - return candidates; - } - _ensureNoahArkCondition(newElement) { - if (this.entries.length < NOAH_ARK_CAPACITY) - return; - const neAttrs = this.treeAdapter.getAttrList(newElement); - const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); - if (candidates.length < NOAH_ARK_CAPACITY) - return; - //NOTE: build attrs map for the new element, so we can perform fast lookups - const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); - let validCandidates = 0; - //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met - for (let i = 0; i < candidates.length; i++) { - const candidate = candidates[i]; - // We know that `candidate.attrs.length === neAttrs.length` - if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { - validCandidates += 1; - if (validCandidates >= NOAH_ARK_CAPACITY) { - this.entries.splice(candidate.idx, 1); - } - } - } - } - //Mutations - insertMarker() { - this.entries.unshift(MARKER); - } - pushElement(element, token) { - this._ensureNoahArkCondition(element); - this.entries.unshift({ - type: EntryType.Element, - element, - token, - }); - } - insertElementAfterBookmark(element, token) { - const bookmarkIdx = this.entries.indexOf(this.bookmark); - this.entries.splice(bookmarkIdx, 0, { - type: EntryType.Element, - element, - token, - }); - } - removeEntry(entry) { - const entryIndex = this.entries.indexOf(entry); - if (entryIndex >= 0) { - this.entries.splice(entryIndex, 1); - } - } - /** - * Clears the list of formatting elements up to the last marker. - * - * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker - */ - clearToLastMarker() { - const markerIdx = this.entries.indexOf(MARKER); - if (markerIdx >= 0) { - this.entries.splice(0, markerIdx + 1); - } - else { - this.entries.length = 0; - } - } - //Search - getElementEntryInScopeWithTagName(tagName) { - const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName); - return entry && entry.type === EntryType.Element ? entry : null; - } - getElementEntry(element) { - return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); - } -} -exports.FormattingElementList = FormattingElementList; - -},{}],14:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Parser = void 0; -const index_js_1 = require("../tokenizer/index.js"); -const open_element_stack_js_1 = require("./open-element-stack.js"); -const formatting_element_list_js_1 = require("./formatting-element-list.js"); -const default_js_1 = require("../tree-adapters/default.js"); -const doctype = require("../common/doctype.js"); -const foreignContent = require("../common/foreign-content.js"); -const error_codes_js_1 = require("../common/error-codes.js"); -const unicode = require("../common/unicode.js"); -const html_js_1 = require("../common/html.js"); -const token_js_1 = require("../common/token.js"); -//Misc constants -const HIDDEN_INPUT_TYPE = 'hidden'; -//Adoption agency loops iteration count -const AA_OUTER_LOOP_ITER = 8; -const AA_INNER_LOOP_ITER = 3; -//Insertion modes -var InsertionMode; -(function (InsertionMode) { - InsertionMode[InsertionMode["INITIAL"] = 0] = "INITIAL"; - InsertionMode[InsertionMode["BEFORE_HTML"] = 1] = "BEFORE_HTML"; - InsertionMode[InsertionMode["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; - InsertionMode[InsertionMode["IN_HEAD"] = 3] = "IN_HEAD"; - InsertionMode[InsertionMode["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; - InsertionMode[InsertionMode["AFTER_HEAD"] = 5] = "AFTER_HEAD"; - InsertionMode[InsertionMode["IN_BODY"] = 6] = "IN_BODY"; - InsertionMode[InsertionMode["TEXT"] = 7] = "TEXT"; - InsertionMode[InsertionMode["IN_TABLE"] = 8] = "IN_TABLE"; - InsertionMode[InsertionMode["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; - InsertionMode[InsertionMode["IN_CAPTION"] = 10] = "IN_CAPTION"; - InsertionMode[InsertionMode["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; - InsertionMode[InsertionMode["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; - InsertionMode[InsertionMode["IN_ROW"] = 13] = "IN_ROW"; - InsertionMode[InsertionMode["IN_CELL"] = 14] = "IN_CELL"; - InsertionMode[InsertionMode["IN_SELECT"] = 15] = "IN_SELECT"; - InsertionMode[InsertionMode["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; - InsertionMode[InsertionMode["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; - InsertionMode[InsertionMode["AFTER_BODY"] = 18] = "AFTER_BODY"; - InsertionMode[InsertionMode["IN_FRAMESET"] = 19] = "IN_FRAMESET"; - InsertionMode[InsertionMode["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; - InsertionMode[InsertionMode["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; - InsertionMode[InsertionMode["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; -})(InsertionMode || (InsertionMode = {})); -const BASE_LOC = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1, -}; -const TABLE_STRUCTURE_TAGS = new Set([html_js_1.TAG_ID.TABLE, html_js_1.TAG_ID.TBODY, html_js_1.TAG_ID.TFOOT, html_js_1.TAG_ID.THEAD, html_js_1.TAG_ID.TR]); -const defaultParserOptions = { - scriptingEnabled: true, - sourceCodeLocationInfo: false, - treeAdapter: default_js_1.defaultTreeAdapter, - onParseError: null, -}; -//Parser -class Parser { - constructor(options, document, fragmentContext = null, scriptHandler = null) { - this.fragmentContext = fragmentContext; - this.scriptHandler = scriptHandler; - this.currentToken = null; - this.stopped = false; - this.insertionMode = InsertionMode.INITIAL; - this.originalInsertionMode = InsertionMode.INITIAL; - this.headElement = null; - this.formElement = null; - /** Indicates that the current node is not an element in the HTML namespace */ - this.currentNotInHTML = false; - /** - * The template insertion mode stack is maintained from the left. - * Ie. the topmost element will always have index 0. - */ - this.tmplInsertionModeStack = []; - this.pendingCharacterTokens = []; - this.hasNonWhitespacePendingCharacterToken = false; - this.framesetOk = true; - this.skipNextNewLine = false; - this.fosterParentingEnabled = false; - this.options = Object.assign(Object.assign({}, defaultParserOptions), options); - this.treeAdapter = this.options.treeAdapter; - this.onParseError = this.options.onParseError; - // Always enable location info if we report parse errors. - if (this.onParseError) { - this.options.sourceCodeLocationInfo = true; - } - this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); - this.tokenizer = new index_js_1.Tokenizer(this.options, this); - this.activeFormattingElements = new formatting_element_list_js_1.FormattingElementList(this.treeAdapter); - this.fragmentContextID = fragmentContext ? (0, html_js_1.getTagID)(this.treeAdapter.getTagName(fragmentContext)) : html_js_1.TAG_ID.UNKNOWN; - this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); - this.openElements = new open_element_stack_js_1.OpenElementStack(this.document, this.treeAdapter, this); - } - // API - static parse(html, options) { - const parser = new this(options); - parser.tokenizer.write(html, true); - return parser.document; - } - static getFragmentParser(fragmentContext, options) { - const opts = Object.assign(Object.assign({}, defaultParserOptions), options); - //NOTE: use a