{"version":3,"file":"liquid.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/template-browser.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\nconst arrToStr = Array.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function isFunction (value) {\n return typeof value === 'function'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) return String(value)\n if (isFunction(value.to_liquid)) return stringify(value.to_liquid())\n if (isFunction(value.toLiquid)) return stringify(value.toLiquid())\n if (isFunction(value.to_s)) return value.to_s()\n if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value)\n if (isFunction(value.toString)) return value.toString()\n return toStr.call(value)\n}\n\nfunction defaultToString (value) {\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, { message: message }, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import { AssertionError } from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n obj = toLiquid(obj)\n val = key === 'size' ? readSize(obj) : obj[key]\n if (_.isFunction(obj.liquid_method_missing)) {\n val = obj.liquid_method_missing(key)\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction toLiquid (obj) {\n if (_.isFunction(obj.to_liquid)) {\n return obj.to_liquid()\n }\n if (_.isFunction(obj.toLiquid)) {\n return obj.toLiquid()\n }\n return obj\n}\n\nfunction readSize (obj) {\n if (!_.isNil(obj.size)) return obj.size\n if (_.isArray(obj) || _.isString(obj)) return obj.length\n return obj.size\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","import { last, isArray } from './util/underscore'\n\nfunction domResolve (root, path) {\n const base = document.createElement('base')\n base.href = root\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n head.removeChild(base)\n\n return resolved\n}\n\nexport function resolve (filepath, root, options) {\n root = root || options.root\n if (isArray(root)) {\n root = root[0]\n }\n if (root.length && last(root) !== '/') {\n root += '/'\n }\n const url = domResolve(root, filepath)\n return url.replace(/^(\\w+:\\/\\/[^/]+)(\\/[^?]+)/, (str, origin, path) => {\n const last = path.split('/').pop()\n if (/\\.\\w+$/.test(last)) {\n return str\n }\n return origin + path + options.extname\n })\n}\n\nexport async function read (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst receiving the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import { assign } from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport { TokenizationError } from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport { default as whiteSpaceCtrl } from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import { evalExp } from './syntax.js'\nimport { RenderBreakError, RenderError } from './util/error.js'\nimport { stringify, create } from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import { hashCapture } from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\nimport { assign, create } from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { ParseError } from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import { mapSeries } from '../util/promise.js'\nimport { isString, isObject, isArray } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', { parse, render })\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\nimport { create } from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const { AssignScope } = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const { CaptureScope } = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value, quotedLine } from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import { create } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, DecrementScope } = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, IncrementScope } = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport { isTruthy } from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport { isTruthy, isFalsy, evalExp, evalValue } from './syntax.js'\nimport { ParseError, TokenizationError, RenderBreakError, AssertionError } from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.default = Liquid\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","Function","toStr","arrToStr","Array","isString","isFunction","stringify","isNil","String","to_liquid","toLiquid","to_s","indexOf","defaultToString","cache","JSON","isObject","proto","isArray","forOwn","iteratee","k","assign","srcs","arguments","src","last","arr","range","start","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","l","align","join","n","blank","msg","predicate","Scope","getAll","contexts","reduce","ctx","val","get","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","set","v","some","unshift","findIndex","splice","candidate","readSize","liquid_method_missing","opts","strict_variables","seq","j","delemiter","assert","matchRightBracket","lexical","size","factory","defaultOptions","dynamicPartials","strict_filters","blocks","root","domResolve","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","filepath","options","url","replace","origin","extname","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","renderTemplates","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","impl","tagImpl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","init","handlers","on","cb","trigger","event","h","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","mapSeries","ret","item","idx","liquid","Liquid","collection","renderer","elseTemplates","offset","limit","reversed","forloop","first","index0","rindex","rindex0","finished","Types","registerTag","tagToken","remainTokens","p","parser","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","parseAndRender","originBlocks","originBlockMode","blockMode","getTemplate","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","row","floor","col","engine","Assign","Capture","Case","Comment","Cycle","Decrement","For","If","Include","Increment","Layout","Raw","Tablerow","Unless","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","daysInMonth","d","feb","isLeapYear","getDayOfYear","num","getMonth","getDate","getWeekOfYear","startDay","now","getDay","jan1","Date","getFullYear","_number","pad","year","getSuffix","parseInt","century","substring","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","u","U","w","W","toLocaleDateString","X","toLocaleTimeString","y","Y","z","tz","getTimezoneOffset","abs","N","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","respectCache","renderFile","getter","cacheEnabled","plugin","express","filePath","normalizeStringArray","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;EAOA,CAAE,UAASA,MAAT,EAAiB;AACjB;EAEA,MAAIC,KAAKC,OAAOC,SAAhB;EACA,MAAIC,SAASH,GAAGI,cAAhB;EACA,MAAIC,SAAJ,CALiB;EAMjB,MAAIC,UAAU,OAAOC,MAAP,KAAkB,UAAlB,GAA+BA,MAA/B,GAAwC,EAAtD;EACA,MAAIC,iBAAiBF,QAAQG,QAAR,IAAoB,YAAzC;EACA,MAAIC,sBAAsBJ,QAAQK,aAAR,IAAyB,iBAAnD;EACA,MAAIC,oBAAoBN,QAAQO,WAAR,IAAuB,eAA/C;;EAEA,MAAIC,WAAW,QAAOC,MAAP,yCAAOA,MAAP,OAAkB,QAAjC;EACA,MAAIC,UAAUjB,OAAOkB,kBAArB;EACA,MAAID,OAAJ,EAAa;EACX,QAAIF,QAAJ,EAAc;EACZ;EACA;EACAC,aAAOG,OAAP,GAAiBF,OAAjB;EACD;EACD;EACA;EACA;EACD;;EAED;EACA;EACAA,YAAUjB,OAAOkB,kBAAP,GAA4BH,WAAWC,OAAOG,OAAlB,GAA4B,EAAlE;;EAEA,WAASC,IAAT,CAAcC,OAAd,EAAuBC,OAAvB,EAAgCC,IAAhC,EAAsCC,WAAtC,EAAmD;EACjD;EACA,QAAIC,iBAAiBH,WAAWA,QAAQnB,SAAR,YAA6BuB,SAAxC,GAAoDJ,OAApD,GAA8DI,SAAnF;EACA,QAAIC,YAAYzB,OAAO0B,MAAP,CAAcH,eAAetB,SAA7B,CAAhB;EACA,QAAI0B,UAAU,IAAIC,OAAJ,CAAYN,eAAe,EAA3B,CAAd;;EAEA;EACA;EACAG,cAAUI,OAAV,GAAoBC,iBAAiBX,OAAjB,EAA0BE,IAA1B,EAAgCM,OAAhC,CAApB;;EAEA,WAAOF,SAAP;EACD;EACDV,UAAQG,IAAR,GAAeA,IAAf;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAASa,QAAT,CAAkBC,EAAlB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgC;EAC9B,QAAI;EACF,aAAO,EAAEC,MAAM,QAAR,EAAkBD,KAAKF,GAAGI,IAAH,CAAQH,GAAR,EAAaC,GAAb,CAAvB,EAAP;EACD,KAFD,CAEE,OAAOG,GAAP,EAAY;EACZ,aAAO,EAAEF,MAAM,OAAR,EAAiBD,KAAKG,GAAtB,EAAP;EACD;EACF;;EAED,MAAIC,yBAAyB,gBAA7B;EACA,MAAIC,yBAAyB,gBAA7B;EACA,MAAIC,oBAAoB,WAAxB;EACA,MAAIC,oBAAoB,WAAxB;;EAEA;EACA;EACA,MAAIC,mBAAmB,EAAvB;;EAEA;EACA;EACA;EACA;EACA,WAASlB,SAAT,GAAqB;EACrB,WAASmB,iBAAT,GAA6B;EAC7B,WAASC,0BAAT,GAAsC;;EAEtC;EACA;EACA,MAAIC,oBAAoB,EAAxB;EACAA,oBAAkBtC,cAAlB,IAAoC,YAAY;EAC9C,WAAO,IAAP;EACD,GAFD;;EAIA,MAAIuC,WAAW9C,OAAO+C,cAAtB;EACA,MAAIC,0BAA0BF,YAAYA,SAASA,SAASG,OAAO,EAAP,CAAT,CAAT,CAA1C;EACA,MAAID,2BACAA,4BAA4BjD,EAD5B,IAEAG,OAAOkC,IAAP,CAAYY,uBAAZ,EAAqCzC,cAArC,CAFJ,EAE0D;EACxD;EACA;EACAsC,wBAAoBG,uBAApB;EACD;;EAED,MAAIE,KAAKN,2BAA2B3C,SAA3B,GACPuB,UAAUvB,SAAV,GAAsBD,OAAO0B,MAAP,CAAcmB,iBAAd,CADxB;EAEAF,oBAAkB1C,SAAlB,GAA8BiD,GAAGC,WAAH,GAAiBP,0BAA/C;EACAA,6BAA2BO,WAA3B,GAAyCR,iBAAzC;EACAC,6BAA2BjC,iBAA3B,IACEgC,kBAAkBS,WAAlB,GAAgC,mBADlC;;EAGA;EACA;EACA,WAASC,qBAAT,CAA+BpD,SAA/B,EAA0C;EACxC,KAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,EAA4BqD,OAA5B,CAAoC,UAASC,MAAT,EAAiB;EACnDtD,gBAAUsD,MAAV,IAAoB,UAASrB,GAAT,EAAc;EAChC,eAAO,KAAKL,OAAL,CAAa0B,MAAb,EAAqBrB,GAArB,CAAP;EACD,OAFD;EAGD,KAJD;EAKD;;EAEDnB,UAAQyC,mBAAR,GAA8B,UAASC,MAAT,EAAiB;EAC7C,QAAIC,OAAO,OAAOD,MAAP,KAAkB,UAAlB,IAAgCA,OAAON,WAAlD;EACA,WAAOO,OACHA,SAASf,iBAAT;EACA;EACA;EACA,KAACe,KAAKN,WAAL,IAAoBM,KAAKC,IAA1B,MAAoC,mBAJjC,GAKH,KALJ;EAMD,GARD;;EAUA5C,UAAQ6C,IAAR,GAAe,UAASH,MAAT,EAAiB;EAC9B,QAAIzD,OAAO6D,cAAX,EAA2B;EACzB7D,aAAO6D,cAAP,CAAsBJ,MAAtB,EAA8Bb,0BAA9B;EACD,KAFD,MAEO;EACLa,aAAOK,SAAP,GAAmBlB,0BAAnB;EACA,UAAI,EAAEjC,qBAAqB8C,MAAvB,CAAJ,EAAoC;EAClCA,eAAO9C,iBAAP,IAA4B,mBAA5B;EACD;EACF;EACD8C,WAAOxD,SAAP,GAAmBD,OAAO0B,MAAP,CAAcwB,EAAd,CAAnB;EACA,WAAOO,MAAP;EACD,GAXD;;EAaA;EACA;EACA;EACA;EACA1C,UAAQgD,KAAR,GAAgB,UAAS7B,GAAT,EAAc;EAC5B,WAAO,EAAE8B,SAAS9B,GAAX,EAAP;EACD,GAFD;;EAIA,WAAS+B,aAAT,CAAuBxC,SAAvB,EAAkC;EAChC,aAASyC,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6BiC,OAA7B,EAAsCC,MAAtC,EAA8C;EAC5C,UAAIC,SAAStC,SAASN,UAAU8B,MAAV,CAAT,EAA4B9B,SAA5B,EAAuCS,GAAvC,CAAb;EACA,UAAImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;EAC3BiC,eAAOC,OAAOnC,GAAd;EACD,OAFD,MAEO;EACL,YAAIoC,SAASD,OAAOnC,GAApB;EACA,YAAIqC,QAAQD,OAAOC,KAAnB;EACA,YAAIA,SACA,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QADjB,IAEArE,OAAOkC,IAAP,CAAYmC,KAAZ,EAAmB,SAAnB,CAFJ,EAEmC;EACjC,iBAAOC,QAAQL,OAAR,CAAgBI,MAAMP,OAAtB,EAA+BS,IAA/B,CAAoC,UAASF,KAAT,EAAgB;EACzDL,mBAAO,MAAP,EAAeK,KAAf,EAAsBJ,OAAtB,EAA+BC,MAA/B;EACD,WAFM,EAEJ,UAAS/B,GAAT,EAAc;EACf6B,mBAAO,OAAP,EAAgB7B,GAAhB,EAAqB8B,OAArB,EAA8BC,MAA9B;EACD,WAJM,CAAP;EAKD;;EAED,eAAOI,QAAQL,OAAR,CAAgBI,KAAhB,EAAuBE,IAAvB,CAA4B,UAASC,SAAT,EAAoB;EACrD;EACA;EACA;EACAJ,iBAAOC,KAAP,GAAeG,SAAf;EACAP,kBAAQG,MAAR;EACD,SANM,EAMJ,UAASK,KAAT,EAAgB;EACjB;EACA;EACA,iBAAOT,OAAO,OAAP,EAAgBS,KAAhB,EAAuBR,OAAvB,EAAgCC,MAAhC,CAAP;EACD,SAVM,CAAP;EAWD;EACF;;EAED,QAAIQ,eAAJ;;EAEA,aAASC,OAAT,CAAiBtB,MAAjB,EAAyBrB,GAAzB,EAA8B;EAC5B,eAAS4C,0BAAT,GAAsC;EACpC,eAAO,IAAIN,OAAJ,CAAY,UAASL,OAAT,EAAkBC,MAAlB,EAA0B;EAC3CF,iBAAOX,MAAP,EAAerB,GAAf,EAAoBiC,OAApB,EAA6BC,MAA7B;EACD,SAFM,CAAP;EAGD;;EAED,aAAOQ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACAA,wBAAkBA,gBAAgBH,IAAhB,CAChBK,0BADgB;EAEhB;EACA;EACAA,gCAJgB,CAAlB,GAKIA,4BAlBN;EAmBD;;EAED;EACA;EACA,SAAKjD,OAAL,GAAegD,OAAf;EACD;;EAEDxB,wBAAsBY,cAAchE,SAApC;EACAgE,gBAAchE,SAAd,CAAwBQ,mBAAxB,IAA+C,YAAY;EACzD,WAAO,IAAP;EACD,GAFD;EAGAM,UAAQkD,aAAR,GAAwBA,aAAxB;;EAEA;EACA;EACA;EACAlD,UAAQgE,KAAR,GAAgB,UAAS5D,OAAT,EAAkBC,OAAlB,EAA2BC,IAA3B,EAAiCC,WAAjC,EAA8C;EAC5D,QAAI0D,OAAO,IAAIf,aAAJ,CACT/C,KAAKC,OAAL,EAAcC,OAAd,EAAuBC,IAAvB,EAA6BC,WAA7B,CADS,CAAX;;EAIA,WAAOP,QAAQyC,mBAAR,CAA4BpC,OAA5B,IACH4D,IADG;EAAA,MAEHA,KAAKC,IAAL,GAAYR,IAAZ,CAAiB,UAASH,MAAT,EAAiB;EAChC,aAAOA,OAAOY,IAAP,GAAcZ,OAAOC,KAArB,GAA6BS,KAAKC,IAAL,EAApC;EACD,KAFD,CAFJ;EAKD,GAVD;;EAYA,WAASnD,gBAAT,CAA0BX,OAA1B,EAAmCE,IAAnC,EAAyCM,OAAzC,EAAkD;EAChD,QAAIwD,QAAQ7C,sBAAZ;;EAEA,WAAO,SAAS4B,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6B;EAClC,UAAIiD,UAAU3C,iBAAd,EAAiC;EAC/B,cAAM,IAAI4C,KAAJ,CAAU,8BAAV,CAAN;EACD;;EAED,UAAID,UAAU1C,iBAAd,EAAiC;EAC/B,YAAIc,WAAW,OAAf,EAAwB;EACtB,gBAAMrB,GAAN;EACD;;EAED;EACA;EACA,eAAOmD,YAAP;EACD;;EAED1D,cAAQ4B,MAAR,GAAiBA,MAAjB;EACA5B,cAAQO,GAAR,GAAcA,GAAd;;EAEA,aAAO,IAAP,EAAa;EACX,YAAIoD,WAAW3D,QAAQ2D,QAAvB;EACA,YAAIA,QAAJ,EAAc;EACZ,cAAIC,iBAAiBC,oBAAoBF,QAApB,EAA8B3D,OAA9B,CAArB;EACA,cAAI4D,cAAJ,EAAoB;EAClB,gBAAIA,mBAAmB7C,gBAAvB,EAAyC;EACzC,mBAAO6C,cAAP;EACD;EACF;;EAED,YAAI5D,QAAQ4B,MAAR,KAAmB,MAAvB,EAA+B;EAC7B;EACA;EACA5B,kBAAQ8D,IAAR,GAAe9D,QAAQ+D,KAAR,GAAgB/D,QAAQO,GAAvC;EAED,SALD,MAKO,IAAIP,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;EACrC,cAAI4B,UAAU7C,sBAAd,EAAsC;EACpC6C,oBAAQ1C,iBAAR;EACA,kBAAMd,QAAQO,GAAd;EACD;;EAEDP,kBAAQgE,iBAAR,CAA0BhE,QAAQO,GAAlC;EAED,SARM,MAQA,IAAIP,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;EACtC5B,kBAAQiE,MAAR,CAAe,QAAf,EAAyBjE,QAAQO,GAAjC;EACD;;EAEDiD,gBAAQ3C,iBAAR;;EAEA,YAAI6B,SAAStC,SAASZ,OAAT,EAAkBE,IAAlB,EAAwBM,OAAxB,CAAb;EACA,YAAI0C,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;EAC5B;EACA;EACAgD,kBAAQxD,QAAQuD,IAAR,GACJzC,iBADI,GAEJF,sBAFJ;;EAIA,cAAI8B,OAAOnC,GAAP,KAAeQ,gBAAnB,EAAqC;EACnC;EACD;;EAED,iBAAO;EACL6B,mBAAOF,OAAOnC,GADT;EAELgD,kBAAMvD,QAAQuD;EAFT,WAAP;EAKD,SAhBD,MAgBO,IAAIb,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;EAClCgD,kBAAQ1C,iBAAR;EACA;EACA;EACAd,kBAAQ4B,MAAR,GAAiB,OAAjB;EACA5B,kBAAQO,GAAR,GAAcmC,OAAOnC,GAArB;EACD;EACF;EACF,KAxED;EAyED;;EAED;EACA;EACA;EACA;EACA,WAASsD,mBAAT,CAA6BF,QAA7B,EAAuC3D,OAAvC,EAAgD;EAC9C,QAAI4B,SAAS+B,SAAS9E,QAAT,CAAkBmB,QAAQ4B,MAA1B,CAAb;EACA,QAAIA,WAAWnD,SAAf,EAA0B;EACxB;EACA;EACAuB,cAAQ2D,QAAR,GAAmB,IAAnB;;EAEA,UAAI3D,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;EAC9B,YAAI+B,SAAS9E,QAAT,CAAkBqF,MAAtB,EAA8B;EAC5B;EACA;EACAlE,kBAAQ4B,MAAR,GAAiB,QAAjB;EACA5B,kBAAQO,GAAR,GAAc9B,SAAd;EACAoF,8BAAoBF,QAApB,EAA8B3D,OAA9B;;EAEA,cAAIA,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;EAC9B;EACA;EACA,mBAAOb,gBAAP;EACD;EACF;;EAEDf,gBAAQ4B,MAAR,GAAiB,OAAjB;EACA5B,gBAAQO,GAAR,GAAc,IAAI4D,SAAJ,CACZ,gDADY,CAAd;EAED;;EAED,aAAOpD,gBAAP;EACD;;EAED,QAAI2B,SAAStC,SAASwB,MAAT,EAAiB+B,SAAS9E,QAA1B,EAAoCmB,QAAQO,GAA5C,CAAb;;EAEA,QAAImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;EAC3BR,cAAQ4B,MAAR,GAAiB,OAAjB;EACA5B,cAAQO,GAAR,GAAcmC,OAAOnC,GAArB;EACAP,cAAQ2D,QAAR,GAAmB,IAAnB;EACA,aAAO5C,gBAAP;EACD;;EAED,QAAIqD,OAAO1B,OAAOnC,GAAlB;;EAEA,QAAI,CAAE6D,IAAN,EAAY;EACVpE,cAAQ4B,MAAR,GAAiB,OAAjB;EACA5B,cAAQO,GAAR,GAAc,IAAI4D,SAAJ,CAAc,kCAAd,CAAd;EACAnE,cAAQ2D,QAAR,GAAmB,IAAnB;EACA,aAAO5C,gBAAP;EACD;;EAED,QAAIqD,KAAKb,IAAT,EAAe;EACb;EACA;EACAvD,cAAQ2D,SAASU,UAAjB,IAA+BD,KAAKxB,KAApC;;EAEA;EACA5C,cAAQsD,IAAR,GAAeK,SAASW,OAAxB;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA,UAAItE,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;EAC/B5B,gBAAQ4B,MAAR,GAAiB,MAAjB;EACA5B,gBAAQO,GAAR,GAAc9B,SAAd;EACD;EAEF,KAnBD,MAmBO;EACL;EACA,aAAO2F,IAAP;EACD;;EAED;EACA;EACApE,YAAQ2D,QAAR,GAAmB,IAAnB;EACA,WAAO5C,gBAAP;EACD;;EAED;EACA;EACAW,wBAAsBH,EAAtB;;EAEAA,KAAGvC,iBAAH,IAAwB,WAAxB;;EAEA;EACA;EACA;EACA;EACA;EACAuC,KAAG3C,cAAH,IAAqB,YAAW;EAC9B,WAAO,IAAP;EACD,GAFD;;EAIA2C,KAAGgD,QAAH,GAAc,YAAW;EACvB,WAAO,oBAAP;EACD,GAFD;;EAIA,WAASC,YAAT,CAAsBC,IAAtB,EAA4B;EAC1B,QAAIC,QAAQ,EAAEC,QAAQF,KAAK,CAAL,CAAV,EAAZ;;EAEA,QAAI,KAAKA,IAAT,EAAe;EACbC,YAAME,QAAN,GAAiBH,KAAK,CAAL,CAAjB;EACD;;EAED,QAAI,KAAKA,IAAT,EAAe;EACbC,YAAMG,UAAN,GAAmBJ,KAAK,CAAL,CAAnB;EACAC,YAAMI,QAAN,GAAiBL,KAAK,CAAL,CAAjB;EACD;;EAED,SAAKM,UAAL,CAAgBC,IAAhB,CAAqBN,KAArB;EACD;;EAED,WAASO,aAAT,CAAuBP,KAAvB,EAA8B;EAC5B,QAAIhC,SAASgC,MAAMQ,UAAN,IAAoB,EAAjC;EACAxC,WAAOlC,IAAP,GAAc,QAAd;EACA,WAAOkC,OAAOnC,GAAd;EACAmE,UAAMQ,UAAN,GAAmBxC,MAAnB;EACD;;EAED,WAASzC,OAAT,CAAiBN,WAAjB,EAA8B;EAC5B;EACA;EACA;EACA,SAAKoF,UAAL,GAAkB,CAAC,EAAEJ,QAAQ,MAAV,EAAD,CAAlB;EACAhF,gBAAYgC,OAAZ,CAAoB6C,YAApB,EAAkC,IAAlC;EACA,SAAKW,KAAL,CAAW,IAAX;EACD;;EAED/F,UAAQgG,IAAR,GAAe,UAASC,MAAT,EAAiB;EAC9B,QAAID,OAAO,EAAX;EACA,SAAK,IAAIE,GAAT,IAAgBD,MAAhB,EAAwB;EACtBD,WAAKJ,IAAL,CAAUM,GAAV;EACD;EACDF,SAAKG,OAAL;;EAEA;EACA;EACA,WAAO,SAASjC,IAAT,GAAgB;EACrB,aAAO8B,KAAKI,MAAZ,EAAoB;EAClB,YAAIF,MAAMF,KAAKK,GAAL,EAAV;EACA,YAAIH,OAAOD,MAAX,EAAmB;EACjB/B,eAAKV,KAAL,GAAa0C,GAAb;EACAhC,eAAKC,IAAL,GAAY,KAAZ;EACA,iBAAOD,IAAP;EACD;EACF;;EAED;EACA;EACA;EACAA,WAAKC,IAAL,GAAY,IAAZ;EACA,aAAOD,IAAP;EACD,KAfD;EAgBD,GAzBD;;EA2BA,WAAShC,MAAT,CAAgBoE,QAAhB,EAA0B;EACxB,QAAIA,QAAJ,EAAc;EACZ,UAAIC,iBAAiBD,SAAS9G,cAAT,CAArB;EACA,UAAI+G,cAAJ,EAAoB;EAClB,eAAOA,eAAelF,IAAf,CAAoBiF,QAApB,CAAP;EACD;;EAED,UAAI,OAAOA,SAASpC,IAAhB,KAAyB,UAA7B,EAAyC;EACvC,eAAOoC,QAAP;EACD;;EAED,UAAI,CAACE,MAAMF,SAASF,MAAf,CAAL,EAA6B;EAC3B,YAAIK,IAAI,CAAC,CAAT;EAAA,YAAYvC,OAAO,SAASA,IAAT,GAAgB;EACjC,iBAAO,EAAEuC,CAAF,GAAMH,SAASF,MAAtB,EAA8B;EAC5B,gBAAIjH,OAAOkC,IAAP,CAAYiF,QAAZ,EAAsBG,CAAtB,CAAJ,EAA8B;EAC5BvC,mBAAKV,KAAL,GAAa8C,SAASG,CAAT,CAAb;EACAvC,mBAAKC,IAAL,GAAY,KAAZ;EACA,qBAAOD,IAAP;EACD;EACF;;EAEDA,eAAKV,KAAL,GAAanE,SAAb;EACA6E,eAAKC,IAAL,GAAY,IAAZ;;EAEA,iBAAOD,IAAP;EACD,SAbD;;EAeA,eAAOA,KAAKA,IAAL,GAAYA,IAAnB;EACD;EACF;;EAED;EACA,WAAO,EAAEA,MAAMI,UAAR,EAAP;EACD;EACDtE,UAAQkC,MAAR,GAAiBA,MAAjB;;EAEA,WAASoC,UAAT,GAAsB;EACpB,WAAO,EAAEd,OAAOnE,SAAT,EAAoB8E,MAAM,IAA1B,EAAP;EACD;;EAEDtD,UAAQ3B,SAAR,GAAoB;EAClBkD,iBAAavB,OADK;;EAGlBkF,WAAO,eAASW,aAAT,EAAwB;EAC7B,WAAKC,IAAL,GAAY,CAAZ;EACA,WAAKzC,IAAL,GAAY,CAAZ;EACA;EACA;EACA,WAAKQ,IAAL,GAAY,KAAKC,KAAL,GAAatF,SAAzB;EACA,WAAK8E,IAAL,GAAY,KAAZ;EACA,WAAKI,QAAL,GAAgB,IAAhB;;EAEA,WAAK/B,MAAL,GAAc,MAAd;EACA,WAAKrB,GAAL,GAAW9B,SAAX;;EAEA,WAAKsG,UAAL,CAAgBpD,OAAhB,CAAwBsD,aAAxB;;EAEA,UAAI,CAACa,aAAL,EAAoB;EAClB,aAAK,IAAI9D,IAAT,IAAiB,IAAjB,EAAuB;EACrB;EACA,cAAIA,KAAKgE,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IACAzH,OAAOkC,IAAP,CAAY,IAAZ,EAAkBuB,IAAlB,CADA,IAEA,CAAC4D,MAAM,CAAC5D,KAAKiE,KAAL,CAAW,CAAX,CAAP,CAFL,EAE4B;EAC1B,iBAAKjE,IAAL,IAAavD,SAAb;EACD;EACF;EACF;EACF,KA3BiB;;EA6BlByH,UAAM,gBAAW;EACf,WAAK3C,IAAL,GAAY,IAAZ;;EAEA,UAAI4C,YAAY,KAAKpB,UAAL,CAAgB,CAAhB,CAAhB;EACA,UAAIqB,aAAaD,UAAUjB,UAA3B;EACA,UAAIkB,WAAW5F,IAAX,KAAoB,OAAxB,EAAiC;EAC/B,cAAM4F,WAAW7F,GAAjB;EACD;;EAED,aAAO,KAAK8F,IAAZ;EACD,KAvCiB;;EAyClBrC,uBAAmB,2BAASsC,SAAT,EAAoB;EACrC,UAAI,KAAK/C,IAAT,EAAe;EACb,cAAM+C,SAAN;EACD;;EAED,UAAItG,UAAU,IAAd;EACA,eAASuG,MAAT,CAAgBC,GAAhB,EAAqBC,MAArB,EAA6B;EAC3B/D,eAAOlC,IAAP,GAAc,OAAd;EACAkC,eAAOnC,GAAP,GAAa+F,SAAb;EACAtG,gBAAQsD,IAAR,GAAekD,GAAf;;EAEA,YAAIC,MAAJ,EAAY;EACV;EACA;EACAzG,kBAAQ4B,MAAR,GAAiB,MAAjB;EACA5B,kBAAQO,GAAR,GAAc9B,SAAd;EACD;;EAED,eAAO,CAAC,CAAEgI,MAAV;EACD;;EAED,WAAK,IAAIZ,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;EACpD,YAAInB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;EACA,YAAInD,SAASgC,MAAMQ,UAAnB;;EAEA,YAAIR,MAAMC,MAAN,KAAiB,MAArB,EAA6B;EAC3B;EACA;EACA;EACA,iBAAO4B,OAAO,KAAP,CAAP;EACD;;EAED,YAAI7B,MAAMC,MAAN,IAAgB,KAAKoB,IAAzB,EAA+B;EAC7B,cAAIW,WAAWnI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,UAAnB,CAAf;EACA,cAAIiC,aAAapI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CAAjB;;EAEA,cAAIgC,YAAYC,UAAhB,EAA4B;EAC1B,gBAAI,KAAKZ,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;EAC9B,qBAAO2B,OAAO7B,MAAME,QAAb,EAAuB,IAAvB,CAAP;EACD,aAFD,MAEO,IAAI,KAAKmB,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;EACvC,qBAAO0B,OAAO7B,MAAMG,UAAb,CAAP;EACD;EAEF,WAPD,MAOO,IAAI6B,QAAJ,EAAc;EACnB,gBAAI,KAAKX,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;EAC9B,qBAAO2B,OAAO7B,MAAME,QAAb,EAAuB,IAAvB,CAAP;EACD;EAEF,WALM,MAKA,IAAI+B,UAAJ,EAAgB;EACrB,gBAAI,KAAKZ,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;EAChC,qBAAO0B,OAAO7B,MAAMG,UAAb,CAAP;EACD;EAEF,WALM,MAKA;EACL,kBAAM,IAAIpB,KAAJ,CAAU,wCAAV,CAAN;EACD;EACF;EACF;EACF,KAnGiB;;EAqGlBQ,YAAQ,gBAASzD,IAAT,EAAeD,GAAf,EAAoB;EAC1B,WAAK,IAAIsF,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;EACpD,YAAInB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;EACA,YAAInB,MAAMC,MAAN,IAAgB,KAAKoB,IAArB,IACAxH,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CADA,IAEA,KAAKqB,IAAL,GAAYrB,MAAMG,UAFtB,EAEkC;EAChC,cAAI+B,eAAelC,KAAnB;EACA;EACD;EACF;;EAED,UAAIkC,iBACCpG,SAAS,OAAT,IACAA,SAAS,UAFV,KAGAoG,aAAajC,MAAb,IAAuBpE,GAHvB,IAIAA,OAAOqG,aAAa/B,UAJxB,EAIoC;EAClC;EACA;EACA+B,uBAAe,IAAf;EACD;;EAED,UAAIlE,SAASkE,eAAeA,aAAa1B,UAA5B,GAAyC,EAAtD;EACAxC,aAAOlC,IAAP,GAAcA,IAAd;EACAkC,aAAOnC,GAAP,GAAaA,GAAb;;EAEA,UAAIqG,YAAJ,EAAkB;EAChB,aAAKhF,MAAL,GAAc,MAAd;EACA,aAAK0B,IAAL,GAAYsD,aAAa/B,UAAzB;EACA,eAAO9D,gBAAP;EACD;;EAED,aAAO,KAAK8F,QAAL,CAAcnE,MAAd,CAAP;EACD,KArIiB;;EAuIlBmE,cAAU,kBAASnE,MAAT,EAAiBoC,QAAjB,EAA2B;EACnC,UAAIpC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;EAC3B,cAAMkC,OAAOnC,GAAb;EACD;;EAED,UAAImC,OAAOlC,IAAP,KAAgB,OAAhB,IACAkC,OAAOlC,IAAP,KAAgB,UADpB,EACgC;EAC9B,aAAK8C,IAAL,GAAYZ,OAAOnC,GAAnB;EACD,OAHD,MAGO,IAAImC,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;EACnC,aAAK6F,IAAL,GAAY,KAAK9F,GAAL,GAAWmC,OAAOnC,GAA9B;EACA,aAAKqB,MAAL,GAAc,QAAd;EACA,aAAK0B,IAAL,GAAY,KAAZ;EACD,OAJM,MAIA,IAAIZ,OAAOlC,IAAP,KAAgB,QAAhB,IAA4BsE,QAAhC,EAA0C;EAC/C,aAAKxB,IAAL,GAAYwB,QAAZ;EACD;;EAED,aAAO/D,gBAAP;EACD,KAxJiB;;EA0JlB+F,YAAQ,gBAASjC,UAAT,EAAqB;EAC3B,WAAK,IAAIgB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;EACpD,YAAInB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;EACA,YAAInB,MAAMG,UAAN,KAAqBA,UAAzB,EAAqC;EACnC,eAAKgC,QAAL,CAAcnC,MAAMQ,UAApB,EAAgCR,MAAMI,QAAtC;EACAG,wBAAcP,KAAd;EACA,iBAAO3D,gBAAP;EACD;EACF;EACF,KAnKiB;;EAqKlB,aAAS,gBAAS4D,MAAT,EAAiB;EACxB,WAAK,IAAIkB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;EACpD,YAAInB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;EACA,YAAInB,MAAMC,MAAN,KAAiBA,MAArB,EAA6B;EAC3B,cAAIjC,SAASgC,MAAMQ,UAAnB;EACA,cAAIxC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;EAC3B,gBAAIuG,SAASrE,OAAOnC,GAApB;EACA0E,0BAAcP,KAAd;EACD;EACD,iBAAOqC,MAAP;EACD;EACF;;EAED;EACA;EACA,YAAM,IAAItD,KAAJ,CAAU,uBAAV,CAAN;EACD,KArLiB;;EAuLlBuD,mBAAe,uBAAStB,QAAT,EAAmBrB,UAAnB,EAA+BC,OAA/B,EAAwC;EACrD,WAAKX,QAAL,GAAgB;EACd9E,kBAAUyC,OAAOoE,QAAP,CADI;EAEdrB,oBAAYA,UAFE;EAGdC,iBAASA;EAHK,OAAhB;;EAMA,UAAI,KAAK1C,MAAL,KAAgB,MAApB,EAA4B;EAC1B;EACA;EACA,aAAKrB,GAAL,GAAW9B,SAAX;EACD;;EAED,aAAOsC,gBAAP;EACD;EArMiB,GAApB;EAuMD,CAlsBA;EAmsBC;EACA;EACA;EACC,YAAW;EACV,SAAO,QAAS,QAAOrB,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,IAA5C;EACD,CAFD,MAEQuH,SAAS,aAAT,GAxsBT,CAAD;;ECPA,IAAMC,QAAQ7I,OAAOC,SAAP,CAAiBiG,QAA/B;EACA,IAAM4C,WAAWC,MAAM9I,SAAN,CAAgBiG,QAAjC;;EAEA;;;;;AAKA,EAAO,SAAS8C,QAAT,CAAmBzE,KAAnB,EAA0B;EAC/B,SAAOsE,MAAMzG,IAAN,CAAWmC,KAAX,MAAsB,iBAA7B;EACD;;AAED,EAAO,SAAS0E,UAAT,CAAqB1E,KAArB,EAA4B;EACjC,SAAO,OAAOA,KAAP,KAAiB,UAAxB;EACD;;AAYD,EAAO,SAAS2E,SAAT,CAAoB3E,KAApB,EAA2B;EAChC,MAAI4E,MAAM5E,KAAN,CAAJ,EAAkB,OAAO6E,OAAO7E,KAAP,CAAP;EAClB,MAAI0E,WAAW1E,MAAM8E,SAAjB,CAAJ,EAAiC,OAAOH,UAAU3E,MAAM8E,SAAN,EAAV,CAAP;EACjC,MAAIJ,WAAW1E,MAAM+E,QAAjB,CAAJ,EAAgC,OAAOJ,UAAU3E,MAAM+E,QAAN,EAAV,CAAP;EAChC,MAAIL,WAAW1E,MAAMgF,IAAjB,CAAJ,EAA4B,OAAOhF,MAAMgF,IAAN,EAAP;EAC5B,MAAI,CAACV,KAAD,EAAQC,QAAR,EAAkBU,OAAlB,CAA0BjF,MAAM2B,QAAhC,IAA4C,CAAC,CAAjD,EAAoD,OAAOuD,gBAAgBlF,KAAhB,CAAP;EACpD,MAAI0E,WAAW1E,MAAM2B,QAAjB,CAAJ,EAAgC,OAAO3B,MAAM2B,QAAN,EAAP;EAChC,SAAO2C,MAAMzG,IAAN,CAAWmC,KAAX,CAAP;EACD;;EAED,SAASkF,eAAT,CAA0BlF,KAA1B,EAAiC;EAC/B,MAAMmF,QAAQ,EAAd;EACA,SAAOC,KAAKT,SAAL,CAAe3E,KAAf,EAAsB,UAAC0C,GAAD,EAAM1C,KAAN,EAAgB;EAC3C,QAAIqF,SAASrF,KAAT,CAAJ,EAAqB;EACnB,UAAImF,MAAMF,OAAN,CAAcjF,KAAd,MAAyB,CAAC,CAA9B,EAAiC;EAC/B;EACD;EACDmF,YAAM/C,IAAN,CAAWpC,KAAX;EACD;EACD,WAAOA,KAAP;EACD,GARM,CAAP;EASD;;AAED,EAAO,SAAS7C,MAAT,CAAiBmI,KAAjB,EAAwB;EAC7B,SAAO7J,OAAO0B,MAAP,CAAcmI,KAAd,CAAP;EACD;;AAED,EAAO,SAASV,KAAT,CAAgB5E,KAAhB,EAAuB;EAC5B,SAAOA,UAAU,IAAV,IAAkBA,UAAUnE,SAAnC;EACD;;AAED,EAAO,SAAS0J,OAAT,CAAkBvF,KAAlB,EAAyB;EAC9B;EACA,SAAOsE,MAAMzG,IAAN,CAAWmC,KAAX,MAAsB,gBAA7B;EACD;;EASD;;;;;;;;AAQA,EAAO,SAASwF,MAAT,CAAiB/C,MAAjB,EAAyBgD,QAAzB,EAAmC;EACxChD,WAASA,UAAU,EAAnB;EACA,OAAK,IAAMiD,CAAX,IAAgBjD,MAAhB,EAAwB;EACtB,QAAIA,OAAO7G,cAAP,CAAsB8J,CAAtB,CAAJ,EAA8B;EAC5B,UAAID,SAAShD,OAAOiD,CAAP,CAAT,EAAoBA,CAApB,EAAuBjD,MAAvB,MAAmC,KAAvC,EAA8C;EAC/C;EACF;EACD,SAAOA,MAAP;EACD;;EAED;;;;;;;;;;;AAWA,EAAO,SAASkD,MAAT,CAAiBlD,MAAjB,EAAyB;EAC9BA,WAAS4C,SAAS5C,MAAT,IAAmBA,MAAnB,GAA4B,EAArC;EACA,MAAMmD,OAAOpB,MAAM9I,SAAN,CAAgB2H,KAAhB,CAAsBxF,IAAtB,CAA2BgI,SAA3B,EAAsC,CAAtC,CAAb;EACAD,OAAK7G,OAAL,CAAa,UAAC+G,GAAD;EAAA,WAASrK,OAAOkK,MAAP,CAAclD,MAAd,EAAsBqD,GAAtB,CAAT;EAAA,GAAb;EACA,SAAOrD,MAAP;EACD;;AAED,EAAO,SAASsD,IAAT,CAAeC,GAAf,EAAoB;EACzB,SAAOA,IAAIA,IAAIpD,MAAJ,GAAa,CAAjB,CAAP;EACD;;EAeD;;;;;;AAMA,EAAO,SAASyC,QAAT,CAAmBrF,KAAnB,EAA0B;EAC/B,MAAMpC,cAAcoC,KAAd,yCAAcA,KAAd,CAAN;EACA,SAAOA,UAAU,IAAV,KAAmBpC,SAAS,QAAT,IAAqBA,SAAS,UAAjD,CAAP;EACD;;EAED;;;;;;;;AAQA,EAAO,SAASqI,KAAT,CAAgBC,KAAhB,EAAuB5C,IAAvB,EAA6B6C,IAA7B,EAAmC;EACxC,MAAIN,UAAUjD,MAAV,KAAqB,CAAzB,EAA4B;EAC1BU,WAAO4C,KAAP;EACAA,YAAQ,CAAR;EACD;EACDC,SAAOA,QAAQ,CAAf;;EAEA,MAAMH,MAAM,EAAZ;EACA,OAAK,IAAI/C,IAAIiD,KAAb,EAAoBjD,IAAIK,IAAxB,EAA8BL,KAAKkD,IAAnC,EAAyC;EACvCH,QAAI5D,IAAJ,CAASa,CAAT;EACD;EACD,SAAO+C,GAAP;EACD;;ECzJD;EACA,IAAMI,eAAe,SAArB;EACA,IAAMC,eAAe,SAArB;AACA,EAAO,IAAMC,SAAS,IAAIC,MAAJ,CAAcH,aAAaI,MAA3B,SAAqCH,aAAaG,MAAlD,CAAf;AACP,EAAO,IAAMC,gBAAgB,IAAIF,MAAJ,SAAiBD,OAAOE,MAAxB,eAAtB;;EAEP;AACA,EAAO,IAAME,UAAU,OAAhB;AACP,EAAO,IAAMC,SAAS,oBAAf;AACP,EAAO,IAAMC,OAAO,YAAb;;EAEP;AACA,EAAO,IAAMC,aAAa,YAAnB;AACP,EAAO,IAAMC,YAAY,IAAIP,MAAJ,YAAoBD,OAAOE,MAA3B,qBAAlB;AACP,EAAO,IAAMO,UAAU,IAAIR,MAAJ,SAAiBD,OAAOE,MAAxB,SAAkCI,KAAKJ,MAAvC,SAAiDG,OAAOH,MAAxD,OAAhB;AACP,EAAO,IAAMQ,WAAW,IAAIT,MAAJ,CAAcM,WAAWL,MAAzB,cAAwCK,WAAWL,MAAnD,SAA6DM,UAAUN,MAAvE,QAAjB;;EAEP;AACA,EAAO,IAAMS,aAAa,IAAIV,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCG,OAAOH,MAA3C,OAAnB;AACP,EAAO,IAAMP,UAAQ,IAAIM,MAAJ,SAAiBU,WAAWT,MAA5B,cAA2CS,WAAWT,MAAtD,SAAd;AACP,EAAO,IAAMU,eAAe,IAAIX,MAAJ,UAAkBU,WAAWT,MAA7B,gBAA8CS,WAAWT,MAAzD,UAArB;;AAEP,EAAO,IAAMxG,QAAQ,IAAIuG,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCO,QAAQP,MAA5C,SAAsDP,QAAMO,MAA5D,OAAd;;EAEP;AACA,EAAO,IAAMW,OAAO,IAAIZ,MAAJ,SAAiBM,WAAWL,MAA5B,qBAAkDxG,MAAMwG,MAAxD,OAAb;AACP,EAAO,IAAMY,cAAc,IAAIb,MAAJ,OAAeM,WAAWL,MAA1B,mBAA8CxG,MAAMwG,MAApD,QAA+D,GAA/D,CAApB;;EAEP;AACA,EAAO,IAAMa,UAAU,IAAId,MAAJ,YAAoBM,WAAWL,MAA/B,2BAAhB;AACP,EAAO,IAAMc,cAAc,IAAIf,MAAJ,OAAeQ,QAAQP,MAAvB,QAAkC,GAAlC,CAApB;AACP,EAAO,IAAMe,eAAe,IAAIhB,MAAJ,OAAeS,SAASR,MAAxB,OAArB;AACP,EAAO,IAAMgB,aAAa,IAAIjB,MAAJ,OAAeI,OAAOH,MAAtB,OAAnB;AACP,EAAO,IAAMiB,WAAW,IAAIlB,MAAJ,OAAeK,KAAKJ,MAApB,QAA+B,GAA/B,CAAjB;AACP,EAAO,IAAMkB,aAAa,IAAInB,MAAJ,OAAeD,OAAOE,MAAtB,OAAnB;AACP,EAAO,IAAMmB,YAAY,IAAIpB,MAAJ,OAAeW,aAAaV,MAA5B,OAAlB;AACP,EAAO,IAAMoB,cAAc,IAAIrB,MAAJ,OAAeG,QAAQF,MAAvB,OAApB;;EAEP;AACA,EAAO,IAAMqB,mBAAmB,IAAItB,MAAJ,SAAiBM,WAAWL,MAA5B,mBAAgDxG,MAAMwG,MAAtD,CAAzB;AACP,EAAO,IAAMsB,YAAY,IAAIvB,MAAJ,CAAcsB,iBAAiBrB,MAA/B,kBAAkDqB,iBAAiBrB,MAAnE,QAAlB;AACP,EAAO,IAAMuB,SAAS,IAAIxB,MAAJ,CAAcM,WAAWL,MAAzB,oBAA8CsB,UAAUtB,MAAxD,SAAoE,GAApE,CAAf;AACP,EAAO,IAAMwB,gBAAgB,IAAIzB,MAAJ,OAAeM,WAAWL,MAA1B,sBAAiDsB,UAAUtB,MAA3D,SAAtB;AACP,EAAO,IAAMyB,aAAa,IAAI1B,MAAJ,OAAeyB,cAAcxB,MAA7B,OAAnB;;AAEP,EAAO,IAAM0B,YAAY,CACvB,UADuB,EAEvB,WAFuB,EAGvB,gCAHuB,CAAlB;;AAMP,EAAO,SAASC,SAAT,CAAoBC,GAApB,EAAyB;EAC9B,SAAOR,YAAYS,IAAZ,CAAiBD,GAAjB,CAAP;EACD;;AAED,EAAO,SAASE,SAAT,CAAoBF,GAApB,EAAyB;EAC9B,SAAOd,YAAYe,IAAZ,CAAiBD,GAAjB,CAAP;EACD;;AAMD,EAAO,SAASG,UAAT,CAAqBH,GAArB,EAA0B;EAC/B,SAAOb,aAAac,IAAb,CAAkBD,GAAlB,CAAP;EACD;;AAED,EAAO,SAASI,UAAT,CAAqBJ,GAArB,EAA0B;EAC/B,SAAOpI,MAAMyI,IAAN,CAAWL,GAAX,CAAP;EACD;;AAED,EAAO,SAASM,YAAT,CAAuBN,GAAvB,EAA4B;EACjC,MAAIO,MAAMP,IAAIQ,KAAJ,CAAUpB,UAAV,CAAV;EACA,MAAImB,GAAJ,EAAS;EACP,WAAOE,OAAOT,GAAP,CAAP;EACD;EACDO,QAAMP,IAAIQ,KAAJ,CAAUnB,QAAV,CAAN;EACA,MAAIkB,GAAJ,EAAS;EACP,WAAOP,IAAIU,WAAJ,OAAsB,MAA7B;EACD;EACDH,QAAMP,IAAIQ,KAAJ,CAAUlB,UAAV,CAAN;EACA,MAAIiB,GAAJ,EAAS;EACP,WAAOP,IAAI/E,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAP;EACD;EACD,QAAM,IAAI9B,SAAJ,qBAA+B6G,GAA/B,mBAAN;EACD;;ECnFD,SAASW,SAAT,GAAsB;EACpB,OAAK3J,IAAL,GAAY,KAAKR,WAAL,CAAiBQ,IAA7B;EACA,MAAIyB,MAAMmI,iBAAV,EAA6B;EAC3BnI,UAAMmI,iBAAN,CAAwB,IAAxB,EAA8B,KAAKpK,WAAnC;EACD;EACF;;EAED,SAASqK,eAAT,CAA0BnL,GAA1B,EAA+BoL,KAA/B,EAAsC;EACpCH,YAAUlL,IAAV,CAAe,IAAf;;EAEA,OAAKsL,KAAL,GAAaD,MAAMC,KAAnB;EACA,OAAKC,IAAL,GAAYF,MAAME,IAAlB;EACA,OAAKC,IAAL,GAAYH,MAAMG,IAAlB;;EAEA,MAAMjM,UAAUkM,UAAUJ,MAAMC,KAAhB,EAAuBD,MAAME,IAA7B,CAAhB;EACA,OAAKG,OAAL,GAAeC,UAAU1L,IAAIyL,OAAd,EAAuBL,KAAvB,CAAf;EACA,OAAKO,KAAL,GAAarM,UACX,IADW,IACH,KAAKqM,KAAL,IAAc,KAAKF,OADhB,KAERzL,IAAI2L,KAAJ,GAAY,YAAY3L,IAAI2L,KAA5B,GAAoC,EAF5B,CAAb;EAGD;;AAED,EAAO,SAASC,iBAAT,CAA4BH,OAA5B,EAAqCL,KAArC,EAA4C;EACjDD,kBAAgBpL,IAAhB,CAAqB,IAArB,EAA2B,EAAE0L,SAASA,OAAX,EAA3B,EAAiDL,KAAjD;EACD;EACDQ,kBAAkBhO,SAAlB,GAA8BiO,MAAA,CAAS9I,MAAMnF,SAAf,CAA9B;EACAgO,kBAAkBhO,SAAlB,CAA4BkD,WAA5B,GAA0C8K,iBAA1C;;AAEA,EAAO,SAASE,UAAT,CAAqBC,CAArB,EAAwBX,KAAxB,EAA+B;EACpCS,QAAA,CAAS,IAAT,EAAeE,CAAf;EACA,OAAKC,aAAL,GAAqBD,CAArB;;EAEAZ,kBAAgBpL,IAAhB,CAAqB,IAArB,EAA2BgM,CAA3B,EAA8BX,KAA9B;EACD;EACDU,WAAWlO,SAAX,GAAuBiO,MAAA,CAAS9I,MAAMnF,SAAf,CAAvB;EACAkO,WAAWlO,SAAX,CAAqBkD,WAArB,GAAmCgL,UAAnC;;AAEA,EAAO,SAASG,WAAT,CAAsBF,CAAtB,EAAyBG,GAAzB,EAA8B;EACnC;EACA,MAAIH,aAAaE,WAAjB,EAA8B;EAC5B,WAAOF,CAAP;EACD;EACDF,QAAA,CAAS,IAAT,EAAeE,CAAf;EACA,OAAKC,aAAL,GAAqBD,CAArB;;EAEAZ,kBAAgBpL,IAAhB,CAAqB,IAArB,EAA2BgM,CAA3B,EAA8BG,IAAId,KAAlC;EACD;EACDa,YAAYrO,SAAZ,GAAwBiO,MAAA,CAAS9I,MAAMnF,SAAf,CAAxB;EACAqO,YAAYrO,SAAZ,CAAsBkD,WAAtB,GAAoCmL,WAApC;;AAEA,EAAO,SAASE,gBAAT,CAA2BV,OAA3B,EAAoC;EACzCR,YAAUlL,IAAV,CAAe,IAAf;EACA,OAAK0L,OAAL,GAAeA,UAAU,EAAzB;EACD;EACDU,iBAAiBvO,SAAjB,GAA6BiO,MAAA,CAAS9I,MAAMnF,SAAf,CAA7B;EACAuO,iBAAiBvO,SAAjB,CAA2BkD,WAA3B,GAAyCqL,gBAAzC;;AAEA,EAAO,SAASC,cAAT,CAAyBX,OAAzB,EAAkC;EACvCR,YAAUlL,IAAV,CAAe,IAAf;EACA,OAAK0L,OAAL,GAAeA,UAAU,EAAzB;EACD;EACDW,eAAexO,SAAf,GAA2BiO,MAAA,CAAS9I,MAAMnF,SAAf,CAA3B;EACAwO,eAAexO,SAAf,CAAyBkD,WAAzB,GAAuCsL,cAAvC;;EAEA,SAASZ,SAAT,CAAoBH,KAApB,EAA2BC,IAA3B,EAAiC;EAC/B,MAAMe,QAAQhB,MAAMiB,KAAN,CAAY,IAAZ,CAAd;EACA,MAAMC,QAAQC,KAAKC,GAAL,CAASnB,OAAO,CAAhB,EAAmB,CAAnB,CAAd;EACA,MAAMoB,MAAMF,KAAKG,GAAL,CAASrB,OAAO,CAAhB,EAAmBe,MAAMvH,MAAzB,CAAZ;;EAEA,MAAMxF,UAAUuM,KAAA,CACPU,KADO,EACAG,MAAM,CADN,EAEbE,GAFa,CAET;EAAA,WAAK,CACPC,MAAMvB,IAAP,GAAe,KAAf,GAAuB,KADf,EAERwB,MAAMD,CAAN,EAASH,GAAT,CAFQ,EAGR,IAHQ,EAIRL,MAAMQ,IAAI,CAAV,CAJQ,EAKRE,IALQ,CAKH,EALG,CAAL;EAAA,GAFS,EAQbA,IARa,CAQR,IARQ,CAAhB;;EAUA,SAAOzN,OAAP;EACD;;EAED,SAASwN,KAAT,CAAgBE,CAAhB,EAAmBP,GAAnB,EAAwB;EACtB,MAAM3H,SAAS,CAAC2H,MAAM,EAAP,EAAW3H,MAA1B;EACA,MAAMwF,MAAM0C,IAAI,EAAhB;EACA,MAAMC,QAAQvG,MAAM5B,SAASwF,IAAIxF,MAAnB,EAA2BiI,IAA3B,CAAgC,GAAhC,CAAd;EACA,SAAOE,QAAQ3C,GAAf;EACD;;EAED,SAASoB,SAAT,CAAoBwB,GAApB,EAAyB9B,KAAzB,EAAgC;EAC9B8B,QAAMA,OAAO,EAAb;EACA,MAAI9B,MAAMG,IAAV,EAAgB;EACd2B,WAAO,YAAY9B,MAAMG,IAAzB;EACD;EACD,MAAIH,MAAME,IAAV,EAAgB;EACd4B,WAAO,YAAY9B,MAAME,IAAzB;EACD;EACD,SAAO4B,GAAP;EACD;;ECjGc,iBAAUC,SAAV,EAAqB1B,OAArB,EAA8B;EAC3C,MAAI,CAAC0B,SAAL,EAAgB;EACd1B,cAAUA,uBAAqB0B,SAArB,gBAAV;EACA,UAAM,IAAIf,cAAJ,CAAmBX,OAAnB,CAAN;EACD;EACF;;ECHD,IAAM2B,QAAQ;EACZC,UAAQ,kBAAY;EAClB,WAAO,KAAKC,QAAL,CAAcC,MAAd,CAAqB,UAACC,GAAD,EAAMC,GAAN;EAAA,aAAc5B,MAAA,CAAS2B,GAAT,EAAcC,GAAd,CAAd;EAAA,KAArB,EAAuD5B,MAAA,CAAS,IAAT,CAAvD,CAAP;EACD,GAHW;EAIZ6B,OAAK,aAAUC,IAAV,EAAgB;EAAA;;EACnB,QAAMC,QAAQ,KAAKC,iBAAL,CAAuBF,IAAvB,CAAd;EACA,QAAMG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiC/B,IAAA,CAAO,KAAKyB,QAAZ,CAA/C;EACA,WAAOM,MAAML,MAAN,CAAa,UAACrL,QAAD,EAAQ0C,GAAR;EAAA,aAAgB,MAAKoJ,YAAL,CAAkB9L,QAAlB,EAAyB0C,GAAzB,CAAhB;EAAA,KAAb,EAA4DkJ,KAA5D,CAAP;EACD,GARW;EASZG,OAAK,aAAUN,IAAV,EAAgBO,CAAhB,EAAmB;EACtB,QAAMN,QAAQ,KAAKC,iBAAL,CAAuBF,IAAvB,CAAd;EACA,QAAIG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiC/B,IAAA,CAAO,KAAKyB,QAAZ,CAA7C;EACAM,UAAMO,IAAN,CAAW,UAACvJ,GAAD,EAAMO,CAAN,EAAY;EACrB,UAAI,CAAC0G,QAAA,CAAWiC,KAAX,CAAL,EAAwB;EACtB,eAAO,IAAP;EACD;EACD,UAAI3I,MAAMyI,MAAM9I,MAAN,GAAe,CAAzB,EAA4B;EAC1BgJ,cAAMlJ,GAAN,IAAasJ,CAAb;EACA,eAAO,IAAP;EACD;EACD,UAAInQ,cAAc+P,MAAMlJ,GAAN,CAAlB,EAA8B;EAC5BkJ,cAAMlJ,GAAN,IAAa,EAAb;EACD;EACDkJ,cAAQA,MAAMlJ,GAAN,CAAR;EACD,KAZD;EAaD,GAzBW;EA0BZwJ,WAAS,iBAAUZ,GAAV,EAAe;EACtB,WAAO,KAAKF,QAAL,CAAcc,OAAd,CAAsBZ,GAAtB,CAAP;EACD,GA5BW;EA6BZlJ,QAAM,cAAUkJ,GAAV,EAAe;EACnB,WAAO,KAAKF,QAAL,CAAchJ,IAAd,CAAmBkJ,GAAnB,CAAP;EACD,GA/BW;EAgCZzI,OAAK,aAAUyI,GAAV,EAAe;EAClB,QAAI,CAACzF,UAAUjD,MAAf,EAAuB;EACrB,aAAO,KAAKwI,QAAL,CAAcvI,GAAd,EAAP;EACD;EACD,QAAMI,IAAI,KAAKmI,QAAL,CAAce,SAAd,CAAwB;EAAA,aAASP,UAAUN,GAAnB;EAAA,KAAxB,CAAV;EACA,QAAIrI,MAAM,CAAC,CAAX,EAAc;EACZ,YAAM,IAAI1B,SAAJ,CAAc,6BAAd,CAAN;EACD;EACD,WAAO,KAAK6J,QAAL,CAAcgB,MAAd,CAAqBnJ,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,CAAP;EACD,GAzCW;EA0CZ4I,kBAAgB,wBAAUnJ,GAAV,EAAeqF,SAAf,EAAuB;EACrCA,gBAASA,aAAW;EAAA,aAAM,IAAN;EAAA,KAApB;EACA,SAAK,IAAI9E,IAAI,KAAKmI,QAAL,CAAcxI,MAAd,GAAuB,CAApC,EAAuCK,KAAK,CAA5C,EAA+CA,GAA/C,EAAoD;EAClD,UAAMoJ,YAAY,KAAKjB,QAAL,CAAcnI,CAAd,CAAlB;EACA,UAAI,CAAC8E,UAAOsE,SAAP,CAAL,EAAwB;EACxB,UAAI3J,OAAO2J,SAAX,EAAsB;EACpB,eAAOA,SAAP;EACD;EACF;EACD,WAAO,IAAP;EACD,GApDW;EAqDZP,gBAAc,sBAAUpO,GAAV,EAAegF,GAAf,EAAoB;EAChC,QAAI6I,YAAJ;EACA,QAAI5B,KAAA,CAAQjM,GAAR,CAAJ,EAAkB;EAChB6N,YAAM1P,SAAN;EACD,KAFD,MAEO;EACL6B,YAAMqH,SAASrH,GAAT,CAAN;EACA6N,YAAM7I,QAAQ,MAAR,GAAiB4J,SAAS5O,GAAT,CAAjB,GAAiCA,IAAIgF,GAAJ,CAAvC;EACA,UAAIiH,UAAA,CAAajM,IAAI6O,qBAAjB,CAAJ,EAA6C;EAC3ChB,cAAM7N,IAAI6O,qBAAJ,CAA0B7J,GAA1B,CAAN;EACD;EACF;EACD,QAAIiH,KAAA,CAAQ4B,GAAR,KAAgB,KAAKiB,IAAL,CAAUC,gBAA9B,EAAgD;EAC9C,YAAM,IAAIlL,SAAJ,0BAAqCmB,GAArC,CAAN;EACD;EACD,WAAO6I,GAAP;EACD,GApEW;;EAsEZ;;;;;;;;EAQAI,qBAAmB,2BAAUvD,GAAV,EAAe;EAChCA,UAAMvD,OAAOuD,GAAP,CAAN;EACA,QAAMsE,MAAM,EAAZ;EACA,QAAItN,OAAO,EAAX;EACA,QAAIuN,UAAJ;EACA,QAAI1J,IAAI,CAAR;EACA,WAAOA,IAAImF,IAAIxF,MAAf,EAAuB;EACrB,cAAQwF,IAAInF,CAAJ,CAAR;EACE,aAAK,GAAL;EACEb;;EAEA,cAAMwK,YAAYxE,IAAInF,IAAI,CAAR,CAAlB;EACA,cAAI,OAAOoF,IAAP,CAAYuE,SAAZ,CAAJ,EAA4B;EAAE;EAC5BD,gBAAIvE,IAAInD,OAAJ,CAAY2H,SAAZ,EAAuB3J,IAAI,CAA3B,CAAJ;EACA4J,mBAAOF,MAAM,CAAC,CAAd,kBAA+BC,SAA/B,UAA6CxE,GAA7C;EACAhJ,mBAAOgJ,IAAI/E,KAAJ,CAAUJ,IAAI,CAAd,EAAiB0J,CAAjB,CAAP;EACAvK;EACAa,gBAAI0J,IAAI,CAAR;EACD,WAND,MAMO;EAAE;EACPA,gBAAIG,kBAAkB1E,GAAlB,EAAuBnF,IAAI,CAA3B,CAAJ;EACA4J,mBAAOF,MAAM,CAAC,CAAd,sBAAmCvE,GAAnC;EACAhJ,mBAAOgJ,IAAI/E,KAAJ,CAAUJ,IAAI,CAAd,EAAiB0J,CAAjB,CAAP;EACA,gBAAI,CAACI,SAAA,CAAkB3N,IAAlB,CAAL,EAA8B;EAAE;EAC9BA,qBAAOyF,OAAO,KAAK2G,GAAL,CAASpM,IAAT,CAAP,CAAP;EACD;EACDgD;EACAa,gBAAI0J,IAAI,CAAR;EACD;EACD;EACF,aAAK,GAAL;EAAS;EACPvK;EACAa;EACA;EACF;EAAQ;EACN7D,kBAAQgJ,IAAInF,CAAJ,CAAR;EACAA;EA5BJ;EA8BD;EACDb;;EAEA,QAAI,CAACsK,IAAI9J,MAAT,EAAiB;EACf,YAAM,IAAIrB,SAAJ,oBAA+B6G,GAA/B,OAAN;EACD;EACD,WAAOsE,GAAP;;EAEA,aAAStK,IAAT,GAAiB;EACf,UAAIhD,KAAKwD,MAAT,EAAiB8J,IAAItK,IAAJ,CAAShD,IAAT;EACjBA,aAAO,EAAP;EACD;EACF;EA/HW,CAAd;;EAkIA,SAAS2F,QAAT,CAAmBrH,GAAnB,EAAwB;EACtB,MAAIiM,UAAA,CAAajM,IAAIoH,SAAjB,CAAJ,EAAiC;EAC/B,WAAOpH,IAAIoH,SAAJ,EAAP;EACD;EACD,MAAI6E,UAAA,CAAajM,IAAIqH,QAAjB,CAAJ,EAAgC;EAC9B,WAAOrH,IAAIqH,QAAJ,EAAP;EACD;EACD,SAAOrH,GAAP;EACD;;EAED,SAAS4O,QAAT,CAAmB5O,GAAnB,EAAwB;EACtB,MAAI,CAACiM,KAAA,CAAQjM,IAAIsP,IAAZ,CAAL,EAAwB,OAAOtP,IAAIsP,IAAX;EACxB,MAAIrD,OAAA,CAAUjM,GAAV,KAAkBiM,QAAA,CAAWjM,GAAX,CAAtB,EAAuC,OAAOA,IAAIkF,MAAX;EACvC,SAAOlF,IAAIsP,IAAX;EACD;;EAED,SAASF,iBAAT,CAA4B1E,GAA5B,EAAiCiC,KAAjC,EAAwC;EACtC,MAAIZ,QAAQ,CAAZ,CADsC;EAEtC,OAAK,IAAIxG,IAAIoH,KAAb,EAAoBpH,IAAImF,IAAIxF,MAA5B,EAAoCK,GAApC,EAAyC;EACvC,QAAImF,IAAInF,CAAJ,MAAW,GAAf,EAAoB;EAClBwG;EACD;EACD,QAAIrB,IAAInF,CAAJ,MAAW,GAAf,EAAoB;EAClBwG;EACA,UAAIA,UAAU,CAAd,EAAiB;EACf,eAAOxG,CAAP;EACD;EACF;EACF;EACD,SAAO,CAAC,CAAR;EACD;;AAED,EAAO,SAASgK,OAAT,CAAkB3B,GAAlB,EAAuBkB,IAAvB,EAA6B;EAClC,MAAMU,iBAAiB;EACrBC,qBAAiB,IADI;EAErBV,sBAAkB,KAFG;EAGrBW,oBAAgB,KAHK;EAIrBC,YAAQ,EAJa;EAKrBC,UAAM;EALe,GAAvB;EAOA,MAAM1B,QAAQjC,MAAA,CAASuB,KAAT,CAAd;EACAU,QAAMY,IAAN,GAAa7C,MAAA,CAASuD,cAAT,EAAyBV,IAAzB,CAAb;EACAZ,QAAMR,QAAN,GAAiB,CAACE,OAAO,EAAR,CAAjB;EACA,SAAOM,KAAP;EACD;;EChLD,SAAS2B,UAAT,CAAqBD,IAArB,EAA2B7B,IAA3B,EAAiC;EAC/B,MAAM+B,OAAOC,SAASC,aAAT,CAAuB,MAAvB,CAAb;EACAF,OAAKG,IAAL,GAAYL,IAAZ;;EAEA,MAAMM,OAAOH,SAASI,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAb;EACAD,OAAKE,YAAL,CAAkBN,IAAlB,EAAwBI,KAAKG,UAA7B;;EAEA,MAAMC,IAAIP,SAASC,aAAT,CAAuB,GAAvB,CAAV;EACAM,IAAEL,IAAF,GAASlC,IAAT;EACA,MAAMwC,WAAWD,EAAEL,IAAnB;EACAC,OAAKM,WAAL,CAAiBV,IAAjB;;EAEA,SAAOS,QAAP;EACD;;AAED,EAAO,SAASrO,OAAT,CAAkBuO,QAAlB,EAA4Bb,IAA5B,EAAkCc,OAAlC,EAA2C;EAChDd,SAAOA,QAAQc,QAAQd,IAAvB;EACA,MAAI/H,QAAQ+H,IAAR,CAAJ,EAAmB;EACjBA,WAAOA,KAAK,CAAL,CAAP;EACD;EACD,MAAIA,KAAK1K,MAAL,IAAemD,KAAKuH,IAAL,MAAe,GAAlC,EAAuC;EACrCA,YAAQ,GAAR;EACD;EACD,MAAMe,MAAMd,WAAWD,IAAX,EAAiBa,QAAjB,CAAZ;EACA,SAAOE,IAAIC,OAAJ,CAAY,2BAAZ,EAAyC,UAAClG,GAAD,EAAMmG,MAAN,EAAc9C,IAAd,EAAuB;EACrE,QAAM1F,UAAO0F,KAAKrB,KAAL,CAAW,GAAX,EAAgBvH,GAAhB,EAAb;EACA,QAAI,SAASwF,IAAT,CAActC,OAAd,CAAJ,EAAyB;EACvB,aAAOqC,GAAP;EACD;EACD,WAAOmG,SAAS9C,IAAT,GAAgB2C,QAAQI,OAA/B;EACD,GANM,CAAP;EAOD;;AAED;EAAA,oEAAO,iBAAqBH,GAArB;EAAA;EAAA;EAAA;EAAA;EAAA,6CACE,IAAIpO,OAAJ,CAAY,UAACL,OAAD,EAAUC,MAAV,EAAqB;EACtC,kBAAM4O,MAAM,IAAIC,cAAJ,EAAZ;EACAD,kBAAIE,MAAJ,GAAa,YAAM;EACjB,oBAAIF,IAAIG,MAAJ,IAAc,GAAd,IAAqBH,IAAIG,MAAJ,GAAa,GAAtC,EAA2C;EACzChP,0BAAQ6O,IAAII,YAAZ;EACD,iBAFD,MAEO;EACLhP,yBAAO,IAAIgB,KAAJ,CAAU4N,IAAIK,UAAd,CAAP;EACD;EACF,eAND;EAOAL,kBAAIM,OAAJ,GAAc,YAAM;EAClBlP,uBAAO,IAAIgB,KAAJ,CAAU,kDAAV,CAAP;EACD,eAFD;EAGA4N,kBAAIO,IAAJ,CAAS,KAAT,EAAgBX,GAAhB;EACAI,kBAAIQ,IAAJ;EACD,aAdM,CADF;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,GAAP;;EAAA,kBAAsBC,IAAtB;EAAA;EAAA;EAAA;;ECjCe,SAASC,cAAT,CAAyBC,MAAzB,EAAiChB,OAAjC,EAA0C;EACvDA,YAAUzI,OAAO,EAAE0J,QAAQ,IAAV,EAAP,EAAyBjB,OAAzB,CAAV;EACA,MAAIkB,QAAQ,KAAZ;;EAEAF,SAAOrQ,OAAP,CAAe,UAACmK,KAAD,EAAQjG,CAAR,EAAc;EAC3B,QAAIsM,eAAerG,KAAf,EAAsBoG,KAAtB,EAA6BlB,OAA7B,CAAJ,EAA2C;EACzCoB,eAASJ,OAAOnM,IAAI,CAAX,CAAT,EAAwBmL,QAAQiB,MAAhC;EACD;;EAED,QAAInG,MAAMtL,IAAN,KAAe,KAAf,IAAwBsL,MAAM9J,IAAN,KAAe,KAA3C,EAAkDkQ,QAAQ,IAAR;EAClD,QAAIpG,MAAMtL,IAAN,KAAe,KAAf,IAAwBsL,MAAM9J,IAAN,KAAe,QAA3C,EAAqDkQ,QAAQ,KAAR;;EAErD,QAAIG,gBAAgBvG,KAAhB,EAAuBoG,KAAvB,EAA8BlB,OAA9B,CAAJ,EAA4C;EAC1CsB,gBAAUN,OAAOnM,IAAI,CAAX,CAAV,EAAyBmL,QAAQiB,MAAjC;EACD;EACF,GAXD;EAYD;;EAED,SAASE,cAAT,CAAyBrG,KAAzB,EAAgCoG,KAAhC,EAAuClB,OAAvC,EAAgD;EAC9C,MAAIkB,KAAJ,EAAW,OAAO,KAAP;EACX,MAAIpG,MAAMtL,IAAN,KAAe,KAAnB,EAA0B,OAAOsL,MAAMyG,SAAN,IAAmBvB,QAAQwB,aAAlC;EAC1B,MAAI1G,MAAMtL,IAAN,KAAe,OAAnB,EAA4B,OAAOsL,MAAMyG,SAAN,IAAmBvB,QAAQyB,eAAlC;EAC7B;;EAED,SAASJ,eAAT,CAA0BvG,KAA1B,EAAiCoG,KAAjC,EAAwClB,OAAxC,EAAiD;EAC/C,MAAIkB,KAAJ,EAAW,OAAO,KAAP;EACX,MAAIpG,MAAMtL,IAAN,KAAe,KAAnB,EAA0B,OAAOsL,MAAM4G,UAAN,IAAoB1B,QAAQ2B,cAAnC;EAC1B,MAAI7G,MAAMtL,IAAN,KAAe,OAAnB,EAA4B,OAAOsL,MAAM4G,UAAN,IAAoB1B,QAAQ4B,gBAAnC;EAC7B;;EAED,SAASR,QAAT,CAAmBtG,KAAnB,EAA0BmG,MAA1B,EAAkC;EAChC,MAAI,CAACnG,KAAD,IAAUA,MAAMtL,IAAN,KAAe,MAA7B,EAAqC;;EAErC,MAAMqS,QAAQZ,SAAS,OAAT,GAAmB,YAAjC;EACAnG,QAAMlJ,KAAN,GAAckJ,MAAMlJ,KAAN,CAAYsO,OAAZ,CAAoB2B,KAApB,EAA2B,EAA3B,CAAd;EACD;;EAED,SAASP,SAAT,CAAoBxG,KAApB,EAA2BmG,MAA3B,EAAmC;EACjC,MAAI,CAACnG,KAAD,IAAUA,MAAMtL,IAAN,KAAe,MAA7B,EAAqC;;EAErC,MAAMsS,SAASb,SAAS,OAAT,GAAmB,eAAlC;EACAnG,QAAMlJ,KAAN,GAAckJ,MAAMlJ,KAAN,CAAYsO,OAAZ,CAAoB4B,MAApB,EAA4B,EAA5B,CAAd;EACD;;ECpCM,SAASC,KAAT,CAAgBhH,KAAhB,EAAuBE,IAAvB,EAA6B+E,OAA7B,EAAsC;EAC3CvB,SAAOlD,QAAA,CAAWR,KAAX,CAAP,EAA0B,eAA1B;;EAEA,MAAMiH,UAAU,4CAAhB;EACA,MAAIC,aAAa,CAAjB;EACA,MAAMC,aAAaC,WAAWpH,KAAX,CAAnB;EACA,MAAIqH,eAAe,CAAnB;EACA,MAAMpB,SAAS,EAAf;;EAEA,OAAK,IAAIxG,KAAT,EAAiBA,QAAQwH,QAAQ3H,IAAR,CAAaU,KAAb,CAAzB,EAA+CqH,eAAeJ,QAAQK,SAAtE,EAAiF;EAC/E,QAAI7H,MAAM8H,KAAN,GAAcF,YAAlB,EAAgC;EAC9BpB,aAAOhN,IAAP,CAAYuO,eAAeH,YAAf,EAA6B5H,MAAM8H,KAAnC,CAAZ;EACD;EACDtB,WAAOhN,IAAP,CAAYwG,MAAM,CAAN,IACRgI,cAAchI,MAAM,CAAN,CAAd,EAAwBA,MAAM,CAAN,EAASiI,IAAT,EAAxB,EAAyCjI,MAAM8H,KAA/C,CADQ,GAERI,gBAAgBlI,MAAM,CAAN,CAAhB,EAA0BA,MAAM,CAAN,EAASiI,IAAT,EAA1B,EAA2CjI,MAAM8H,KAAjD,CAFJ;EAGD;EACD,MAAIvH,MAAMvG,MAAN,GAAe4N,YAAnB,EAAiC;EAC/BpB,WAAOhN,IAAP,CAAYuO,eAAeH,YAAf,EAA6BrH,MAAMvG,MAAnC,CAAZ;EACD;EACDuM,iBAAeC,MAAf,EAAuBhB,OAAvB;EACA,SAAOgB,MAAP;;EAEA,WAASwB,aAAT,CAAwBG,GAAxB,EAA6B/Q,QAA7B,EAAoCgR,GAApC,EAAyC;EACvC,QAAMpI,QAAQ5I,SAAM4I,KAAN,CAAYmE,OAAZ,CAAd;EACA,QAAM7D,QAAQ;EACZtL,YAAM,KADM;EAEZqT,cAAQZ,UAFI;EAGZjH,YAAMkH,WAAW9E,GAAX,CAAewF,GAAf,CAHM;EAIZrB,iBAAWoB,IAAI1N,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAJnB;EAKZyM,kBAAYiB,IAAI1N,KAAJ,CAAU,CAAC,CAAX,MAAkB,KALlB;EAMZ0N,cANY;EAOZ/Q,qBAPY;EAQZmJ,kBARY;EASZE;EATY,KAAd;EAWA,QAAI,CAACT,KAAL,EAAY;EACV,YAAM,IAAIc,iBAAJ,uBAA4CR,KAA5C,CAAN;EACD;EACDA,UAAM9J,IAAN,GAAawJ,MAAM,CAAN,CAAb;EACAM,UAAMgI,IAAN,GAAatI,MAAM,CAAN,CAAb;EACA,WAAOM,KAAP;EACD;;EAED,WAAS4H,eAAT,CAA0BC,GAA1B,EAA+B/Q,QAA/B,EAAsCgR,GAAtC,EAA2C;EACzC,WAAO;EACLpT,YAAM,OADD;EAELwL,YAAMkH,WAAW9E,GAAX,CAAewF,GAAf,CAFD;EAGLrB,iBAAWoB,IAAI1N,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAH1B;EAILyM,kBAAYiB,IAAI1N,KAAJ,CAAU,CAAC,CAAX,MAAkB,KAJzB;EAKL0N,cALK;EAML/Q,qBANK;EAOLmJ,kBAPK;EAQLE;EARK,KAAP;EAUD;;EAED,WAASsH,cAAT,CAAyBtG,KAAzB,EAAgCG,GAAhC,EAAqC;EACnC,QAAM2G,eAAehI,MAAM9F,KAAN,CAAYgH,KAAZ,EAAmBG,GAAnB,CAArB;EACA6F,iBAAa1G,IAAA,CAAQwH,YAAD,CAAe/G,KAAf,CAAqB,IAArB,CAAP,EAAmCxH,MAAhD;;EAEA,WAAO;EACLhF,YAAM,MADD;EAELmT,WAAKI,YAFA;EAGLnR,aAAOmR;EAHF,KAAP;EAKD;EACF;;EAED,SAASZ,UAAT,CAAqBa,IAArB,EAA2B;EACzB,MAAIC,mBAAmB,CAAvB;EACA,MAAIC,iBAAiB,CAAC,CAAtB;;EAEA,SAAO;EACL9F,SAAK,aAAUwF,GAAV,EAAe;EAClB,UAAM7G,QAAQiH,KAAK/N,KAAL,CAAWiO,iBAAiB,CAA5B,EAA+BN,GAA/B,EAAoC5G,KAApC,CAA0C,IAA1C,CAAd;EACAiH,0BAAoBlH,MAAMvH,MAAN,GAAe,CAAnC;EACA0O,uBAAiBN,GAAjB;EACA,aAAOK,mBAAmB,CAA1B;EACD;EANI,GAAP;EAQD;;ECzFc,oBAAUE,QAAV,EAAoB;EACjC,SAAO;EACL,UAAM,WAAC5G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM6G,CAAhB;EAAA,KADD;EAEL,UAAM,WAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM6G,CAAhB;EAAA,KAFD;EAGL,SAAK,WAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM,IAAN,IAAc6G,MAAM,IAApB,IAA4B7G,IAAI6G,CAA1C;EAAA,KAHA;EAIL,SAAK,WAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM,IAAN,IAAc6G,MAAM,IAApB,IAA4B7G,IAAI6G,CAA1C;EAAA,KAJA;EAKL,UAAM,WAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM,IAAN,IAAc6G,MAAM,IAApB,IAA4B7G,KAAK6G,CAA3C;EAAA,KALD;EAML,UAAM,WAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAU7G,MAAM,IAAN,IAAc6G,MAAM,IAApB,IAA4B7G,KAAK6G,CAA3C;EAAA,KAND;EAOL,gBAAY,kBAAC7G,CAAD,EAAI6G,CAAJ,EAAU;EACpB,UAAI,CAAC7G,CAAL,EAAQ,OAAO,KAAP;EACR,UAAI,OAAOA,EAAE1F,OAAT,KAAqB,UAAzB,EAAqC,OAAO,KAAP;EACrC,aAAO0F,EAAE1F,OAAF,CAAUuM,CAAV,IAAe,CAAC,CAAvB;EACD,KAXI;EAYL,WAAO,aAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAUD,SAAS5G,CAAT,KAAe4G,SAASC,CAAT,CAAzB;EAAA,KAZF;EAaL,UAAM,YAAC7G,CAAD,EAAI6G,CAAJ;EAAA,aAAUD,SAAS5G,CAAT,KAAe4G,SAASC,CAAT,CAAzB;EAAA;EAbD,GAAP;EAeD;;ECZD,IAAMtJ,cAAYuJ,UAAUF,QAAV,CAAlB;;AAEA,EAAO,SAASG,OAAT,CAAkBC,GAAlB,EAAuB/F,KAAvB,EAA8B;EACnCiB,SAAOjB,KAAP,EAAc,oCAAd;EACA,MAAMgG,cAAc7E,SAApB;EACA,MAAInE,cAAJ;EACA,OAAK,IAAI3F,IAAI,CAAb,EAAgBA,IAAI2O,YAAYhP,MAAhC,EAAwCK,GAAxC,EAA6C;EAC3C,QAAM4O,aAAaD,YAAY3O,CAAZ,CAAnB;EACA,QAAM6O,QAAQ,IAAIvL,MAAJ,QAAgBwG,aAAA,CAAsBvG,MAAtC,UAAiDqL,WAAWrL,MAA5D,UAAuEuG,aAAA,CAAsBvG,MAA7F,QAAd;EACA,QAAKoC,QAAQ+I,IAAI/I,KAAJ,CAAUkJ,KAAV,CAAb,EAAgC;EAC9B,UAAMnH,IAAI+G,QAAQ9I,MAAM,CAAN,CAAR,EAAkBgD,KAAlB,CAAV;EACA,UAAMmG,KAAK7J,YAAUU,MAAM,CAAN,EAASiI,IAAT,EAAV,CAAX;EACA,UAAMW,IAAIE,QAAQ9I,MAAM,CAAN,CAAR,EAAkBgD,KAAlB,CAAV;EACA,aAAOmG,GAAGpH,CAAH,EAAM6G,CAAN,CAAP;EACD;EACF;;EAED,MAAK5I,QAAQ+I,IAAI/I,KAAJ,CAAUmE,SAAV,CAAb,EAA4C;EAC1C,QAAMiF,MAAMC,UAAUrJ,MAAM,CAAN,CAAV,EAAoBgD,KAApB,CAAZ;EACA,QAAMsG,OAAOD,UAAUrJ,MAAM,CAAN,CAAV,EAAoBgD,KAApB,CAAb;EACA,QAAM3F,QAAQ,EAAd;EACA,SAAK,IAAI0G,IAAIqF,GAAb,EAAkBrF,KAAKuF,IAAvB,EAA6BvF,GAA7B,EAAkC;EAChC1G,YAAM7D,IAAN,CAAWuK,CAAX;EACD;EACD,WAAO1G,KAAP;EACD;;EAED,SAAOgM,UAAUN,GAAV,EAAe/F,KAAf,CAAP;EACD;;AAED,EAAO,SAASqG,SAAT,CAAoB7J,GAApB,EAAyBwD,KAAzB,EAAgC;EACrCxD,QAAMA,OAAOA,IAAIyI,IAAJ,EAAb;EACA,MAAI,CAACzI,GAAL,EAAU,OAAOvM,SAAP;;EAEV,MAAIkR,SAAA,CAAkB3E,GAAlB,CAAJ,EAA4B;EAC1B,WAAO2E,YAAA,CAAqB3E,GAArB,CAAP;EACD;EACD,MAAI2E,UAAA,CAAmB3E,GAAnB,CAAJ,EAA6B;EAC3B,WAAOwD,MAAMJ,GAAN,CAAUpD,GAAV,CAAP;EACD;EACD,QAAM,IAAI7G,SAAJ,oBAA8B6G,GAA9B,iBAAN;EACD;;AAED,EAAO,SAASmJ,QAAT,CAAmBhG,GAAnB,EAAwB;EAC7B,SAAO,CAAC4G,QAAQ5G,GAAR,CAAR;EACD;;AAED,EAAO,SAAS4G,OAAT,CAAkB5G,GAAlB,EAAuB;EAC5B,SAAOA,QAAQ,KAAR,IAAiB1P,cAAc0P,GAA/B,IAAsCA,QAAQ,IAArD;EACD;;EChDD,IAAM6G,SAAS;EACbC;EAAA,sEAAiB,kBAAgBC,SAAhB,EAA2B1G,KAA3B;EAAA;EAAA,2EAiBf,iBAA+B2G,QAA/B;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,wBACMA,SAAS3U,IAAT,KAAkB,KADxB;EAAA;EAAA;EAAA;;EAAA;EAAA,yBAE0B,KAAK4U,SAAL,CAAeD,QAAf,EAAyB3G,KAAzB,CAF1B;;EAAA;EAEU6G,yBAFV;EAAA,mDAGWA,YAAY5W,SAAZ,GAAwB,EAAxB,GAA6B4W,OAHxC;;EAAA;EAAA,wBAKMF,SAAS3U,IAAT,KAAkB,OALxB;EAAA;EAAA;EAAA;;EAAA,mDAMW,KAAK8U,WAAL,CAAiBH,QAAjB,EAA2B3G,KAA3B,CANX;;EAAA;EAAA,mDAQS2G,SAASvS,KARlB;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,SAjBe;;EAAA,wBAiBA2S,cAjBA;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;EAAA;EAAA;EACf9F,qBAAOjB,KAAP,EAAc,0CAAd;;EAEIwF,kBAHW,GAGJ,EAHI;EAAA;EAAA;EAAA;EAAA;EAAA,0BAIGkB,SAJH;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAIJtI,iBAJI;EAAA;EAAA;EAAA,qBAMG2I,eAAe9U,IAAf,CAAoB,IAApB,EAA0BmM,GAA1B,CANH;;EAAA;EAMXoH,kBANW;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA,oBAQP,wBAAanH,gBARN;EAAA;EAAA;EAAA;;EAST,2BAAE2I,YAAF,GAAiBxB,IAAjB;EATS;;EAAA;EAAA,oBAYL,IAAIrH,WAAJ,eAAmBC,GAAnB,CAZK;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,gDAeRoH,IAfQ;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAjB;;EAAA;EAAA;EAAA;;EAAA;EAAA,KADa;;EA8BboB;EAAA,uEAAW,kBAAgBD,QAAhB,EAA0B3G,KAA1B;EAAA;EAAA;EAAA;EAAA;EAAA,oBACL2G,SAASnT,IAAT,KAAkB,UADb;EAAA;EAAA;EAAA;;EAAA,oBAED,IAAI6K,gBAAJ,CAAqB,UAArB,CAFC;;EAAA;EAAA,oBAILsI,SAASnT,IAAT,KAAkB,OAJb;EAAA;EAAA;EAAA;;EAAA,oBAKD,IAAI6K,gBAAJ,CAAqB,OAArB,CALC;;EAAA;EAAA,gDAOFsI,SAASH,MAAT,CAAgBxG,KAAhB,CAPE;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAX;;EAAA;EAAA;EAAA;;EAAA;EAAA,KA9Ba;;EAwCb8G;EAAA,uEAAa,kBAAgBH,QAAhB,EAA0B3G,KAA1B;EAAA;EAAA;EAAA;EAAA;EAAA;EACL6G,qBADK,GACK,KAAKR,SAAL,CAAeM,QAAf,EAAyB3G,KAAzB,CADL;EAAA,gDAEJ6G,YAAY5W,SAAZ,GAAwB,EAAxB,GAA6B8I,UAAU8N,OAAV,CAFzB;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAb;;EAAA;EAAA;EAAA;;EAAA;EAAA,KAxCa;;EA6CbR,aAAW,sBAAUM,QAAV,EAAoB3G,KAApB,EAA2B;EACpCiB,WAAOjB,KAAP,EAAc,sCAAd;EACA,WAAO2G,SAASM,OAAT,CAAiBxH,MAAjB,CACL,UAAClI,IAAD,EAAO4E,MAAP;EAAA,aAAkBA,OAAOqK,MAAP,CAAcjP,IAAd,EAAoByI,KAApB,CAAlB;EAAA,KADK,EAEL8F,QAAQa,SAASO,OAAjB,EAA0BlH,KAA1B,CAFK,CAAP;EAGD;EAlDY,CAAf;;AAqDA,EAAe,mBAAY;EACzB,MAAMmH,WAAW5V,OAAOiV,MAAP,CAAjB;EACA,SAAOW,QAAP;EACD;;ECxDD,SAAS5L,MAAT,CAAe6L,MAAf,EAAuBpH,KAAvB,EAA8B;EAC5B,MAAMlO,MAAM,EAAZ;EACA,MAAIkL,cAAJ;EACAxB,cAAYqJ,SAAZ,GAAwB,CAAxB;EACA,SAAQ7H,QAAQxB,YAAYqB,IAAZ,CAAiBuK,MAAjB,CAAhB,EAA2C;EACzC,QAAMtN,IAAIkD,MAAM,CAAN,CAAV;EACA,QAAMoD,IAAIpD,MAAM,CAAN,CAAV;EACAlL,QAAIgI,CAAJ,IAASuM,UAAUjG,CAAV,EAAaJ,KAAb,CAAT;EACD;EACD,SAAOlO,GAAP;EACD;;AAED,EAAe,gBAAY;EACzB,MAAIuV,WAAW,EAAf;;EAEA,MAAMC,eAAe;EACnBd;EAAA,wEAAQ,iBAAgBxG,KAAhB;EAAA;EAAA;EAAA;EAAA;EAAA;EACAlO,mBADA,GACMyJ,OAAK,KAAK+B,KAAL,CAAWgI,IAAhB,EAAsBtF,KAAtB,CADN;EAEAuH,oBAFA,GAEO,KAAKC,OAFZ;;EAAA,sBAGF,OAAOD,KAAKf,MAAZ,KAAuB,UAHrB;EAAA;EAAA;EAAA;;EAAA,iDAIG,EAJH;;EAAA;EAAA,iDAMCe,KAAKf,MAAL,CAAYxG,KAAZ,EAAmBlO,GAAnB,CAND;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA,OADmB;EASnByS,WAAO,eAAUjH,KAAV,EAAiBkG,MAAjB,EAAyB;EAC9B,WAAKxR,IAAL,GAAY,KAAZ;EACA,WAAKsL,KAAL,GAAaA,KAAb;EACA,WAAK9J,IAAL,GAAY8J,MAAM9J,IAAlB;;EAEA,UAAMgU,UAAUH,SAAS,KAAK7T,IAAd,CAAhB;EACAyN,aAAOuG,OAAP,WAAuB,KAAKhU,IAA5B;EACA,WAAKgU,OAAL,GAAejW,OAAOiW,OAAP,CAAf;EACA,UAAI,KAAKA,OAAL,CAAajD,KAAjB,EAAwB;EACtB,aAAKiD,OAAL,CAAajD,KAAb,CAAmBjH,KAAnB,EAA0BkG,MAA1B;EACD;EACF;EApBkB,GAArB;;EAuBA,WAASiE,QAAT,CAAmBjU,IAAnB,EAAyBkU,GAAzB,EAA8B;EAC5BL,aAAS7T,IAAT,IAAiBkU,GAAjB;EACD;;EAED,WAASC,SAAT,CAAoBrK,KAApB,EAA2BkG,MAA3B,EAAmC;EACjC,QAAM2D,WAAW5V,OAAO+V,YAAP,CAAjB;EACAH,aAAS5C,KAAT,CAAejH,KAAf,EAAsBkG,MAAtB;EACA,WAAO2D,QAAP;EACD;;EAED,WAASS,KAAT,GAAkB;EAChBP,eAAW,EAAX;EACD;;EAED,SAAO;EACLM,wBADK;EAELF,sBAFK;EAGLG;EAHK,GAAP;EAKD;;ECzDD,IAAMC,UAAU,IAAIlN,MAAJ,MAAcwG,KAAA,CAAcvG,MAA5B,EAAsC,GAAtC,CAAhB;;AAEA,EAAe,iBAAU4H,OAAV,EAAmB;EAChCA,YAAUzI,OAAO,EAAP,EAAWyI,OAAX,CAAV;EACA,MAAIyE,UAAU,EAAd;;EAEA,MAAMa,kBAAkB;EACtBtB,YAAQ,gBAAUuB,MAAV,EAAkB/H,KAAlB,EAAyB;EAC/B,UAAMsF,OAAO,KAAKA,IAAL,CAAUxG,GAAV,CAAc;EAAA,eAAOuH,UAAUtU,GAAV,EAAeiO,KAAf,CAAP;EAAA,OAAd,CAAb;EACAsF,WAAKhF,OAAL,CAAayH,MAAb;EACA,aAAO,KAAK5L,MAAL,CAAY6L,KAAZ,CAAkB,IAAlB,EAAwB1C,IAAxB,CAAP;EACD,KALqB;EAMtBf,WAAO,eAAU/H,GAAV,EAAe;EACpB,UAAIQ,QAAQmE,UAAA,CAAmBtE,IAAnB,CAAwBL,GAAxB,CAAZ;EACAyE,aAAOjE,KAAP,EAAc,qBAAqBR,GAAnC;;EAEA,UAAMhJ,OAAOwJ,MAAM,CAAN,CAAb;EACA,UAAMiL,UAAUjL,MAAM,CAAN,KAAY,EAA5B;EACA,UAAMb,YAAS8K,QAAQzT,IAAR,CAAf;EACA,UAAI,OAAO2I,SAAP,KAAkB,UAAtB,EAAkC;EAChC,YAAIqG,QAAQhB,cAAZ,EAA4B;EAC1B,gBAAM,IAAI7L,SAAJ,wBAAmCnC,IAAnC,CAAN;EACD;EACD,aAAKA,IAAL,GAAYA,IAAZ;EACA,aAAK2I,MAAL,GAAc;EAAA,iBAAK+L,CAAL;EAAA,SAAd;EACA,aAAK5C,IAAL,GAAY,EAAZ;EACA,eAAO,IAAP;EACD;;EAED,UAAMA,OAAO,EAAb;EACA,aAAQtI,QAAQ6K,QAAQhL,IAAR,CAAaoL,QAAQhD,IAAR,EAAb,CAAhB,EAA+C;EAC7C,YAAM7E,IAAIpD,MAAM,CAAN,CAAV;EACA,YAAMmL,KAAK,IAAIxN,MAAJ,CAAcyF,CAAd,YAAwB,GAAxB,CAAX;EACA,YAAMgI,WAAWD,GAAGtL,IAAH,CAAQG,MAAMO,KAAd,CAAjB;EACA,YAAM8K,oBAAoBD,YAAYA,SAAStD,KAAT,KAAmB9H,MAAM8H,KAA/D;EACAuD,4BAAoB/C,KAAK9O,IAAL,QAAc4J,CAAd,QAApB,GAA0CkF,KAAK9O,IAAL,CAAU4J,CAAV,CAA1C;EACD;;EAED,WAAK5M,IAAL,GAAYA,IAAZ;EACA,WAAK2I,MAAL,GAAcA,SAAd;EACA,WAAKmJ,IAAL,GAAYA,IAAZ;;EAEA,aAAO,IAAP;EACD;EArCqB,GAAxB;;EAwCA,WAASqC,SAAT,CAAoBnL,GAApB,EAAyB;EACvB,QAAM2K,WAAW5V,OAAOuW,eAAP,CAAjB;EACA,WAAOX,SAAS5C,KAAT,CAAe/H,GAAf,CAAP;EACD;;EAED,WAASiL,QAAT,CAAmBjU,IAAnB,EAAyB2I,SAAzB,EAAiC;EAC/B8K,YAAQzT,IAAR,IAAgB2I,SAAhB;EACD;;EAED,WAASyL,KAAT,GAAkB;EAChBX,cAAU,EAAV;EACD;;EAED,SAAO;EACLU,wBADK,EACMF,kBADN,EACgBG;EADhB,GAAP;EAGD;;EC9Dc,iBAAUU,GAAV,EAAeC,MAAf,EAAuB;EACpC,MAAMC,SAAS;EACbC,UAAM,cAAUjF,MAAV,EAAkB;EACtB,WAAKA,MAAL,GAAcA,MAAd;EACA,WAAKkF,QAAL,GAAgB,EAAhB;EACA,aAAO,IAAP;EACD,KALY;EAMbC,QAAI,YAAUnV,IAAV,EAAgBoV,EAAhB,EAAoB;EACtB,WAAKF,QAAL,CAAclV,IAAd,IAAsBoV,EAAtB;EACA,aAAO,IAAP;EACD,KATY;EAUbC,aAAS,iBAAUC,KAAV,EAAiB/W,GAAjB,EAAsB;EAC7B,UAAMgX,IAAI,KAAKL,QAAL,CAAcI,KAAd,CAAV;EACA,UAAI,OAAOC,CAAP,KAAa,UAAjB,EAA6B;EAC3BA,UAAEhX,GAAF;EACA,eAAO,IAAP;EACD;EACF,KAhBY;EAiBbuI,WAAO,iBAAY;EACjB,WAAKuO,OAAL,CAAa,OAAb;EACA,UAAIvL,cAAJ;EACA,aAAO,CAAC,KAAK0L,aAAN,KAAwB1L,QAAQ,KAAKkG,MAAL,CAAYyF,KAAZ,EAAhC,CAAP,EAA6D;EAC3D,YAAI,KAAKJ,OAAL,CAAa,OAAb,EAAsBvL,KAAtB,CAAJ,EAAkC;EAClC,YAAIA,MAAMtL,IAAN,KAAe,KAAf,IACA,KAAK6W,OAAL,UAAoBvL,MAAM9J,IAA1B,EAAkC8J,KAAlC,CADJ,EAC8C;EAC5C;EACD;EACD,YAAMqJ,WAAWuC,WAAW5L,KAAX,EAAkB,KAAKkG,MAAvB,CAAjB;EACA,aAAKqF,OAAL,CAAa,UAAb,EAAyBlC,QAAzB;EACD;EACD,UAAI,CAAC,KAAKqC,aAAV,EAAyB,KAAKH,OAAL,CAAa,KAAb;EACzB,aAAO,IAAP;EACD,KA/BY;EAgCbnR,UAAM,gBAAY;EAChB,WAAKsR,aAAL,GAAqB,IAArB;EACA,aAAO,IAAP;EACD;EAnCY,GAAf;;EAsCA,WAASzE,KAAT,CAAgBf,MAAhB,EAAwB;EACtB,QAAIlG,cAAJ;EACA,QAAMoJ,YAAY,EAAlB;EACA,WAAQpJ,QAAQkG,OAAOyF,KAAP,EAAhB,EAAiC;EAC/BvC,gBAAUlQ,IAAV,CAAe0S,WAAW5L,KAAX,EAAkBkG,MAAlB,CAAf;EACD;EACD,WAAOkD,SAAP;EACD;;EAED,WAASwC,UAAT,CAAqB5L,KAArB,EAA4BkG,MAA5B,EAAoC;EAClC,QAAI;EACF,UAAIpF,MAAM,IAAV;EACA,UAAId,MAAMtL,IAAN,KAAe,KAAnB,EAA0B;EACxBoM,cAAM+K,SAAS7L,KAAT,EAAgBkG,MAAhB,CAAN;EACD,OAFD,MAEO,IAAIlG,MAAMtL,IAAN,KAAe,OAAnB,EAA4B;EACjCoM,cAAMgL,WAAW9L,MAAMlJ,KAAjB,CAAN;EACD,OAFM,MAEA;EAAE;EACPgK,cAAMd,KAAN;EACD;EACDc,UAAId,KAAJ,GAAYA,KAAZ;EACA,aAAOc,GAAP;EACD,KAXD,CAWE,OAAOH,CAAP,EAAU;EACV,YAAM,IAAID,UAAJ,CAAeC,CAAf,EAAkBX,KAAlB,CAAN;EACD;EACF;;EAED,WAAS6L,QAAT,CAAmB7L,KAAnB,EAA0BkG,MAA1B,EAAkC;EAChC,QAAIlG,MAAM9J,IAAN,KAAe,UAAf,IAA6B8J,MAAM9J,IAAN,KAAe,OAAhD,EAAyD,OAAO8J,KAAP;EACzD,WAAOgL,IAAIX,SAAJ,CAAcrK,KAAd,EAAqBkG,MAArB,CAAP;EACD;;EAED,WAAS4F,UAAT,CAAqB5M,GAArB,EAA0B;EACxB,QAAIQ,QAAQmE,UAAA,CAAmB3E,GAAnB,CAAZ;EACAyE,WAAOjE,KAAP,6BAAuCR,GAAvC;;EAEA,QAAM0K,UAAUlK,MAAM,CAAN,CAAhB;EACAR,UAAMA,IAAI6M,MAAJ,CAAWrM,MAAM8H,KAAN,GAAc9H,MAAM,CAAN,EAAShG,MAAlC,CAAN;;EAEA,QAAMiQ,UAAU,EAAhB;EACA,WAAQjK,QAAQmE,MAAA,CAAetE,IAAf,CAAoBL,GAApB,CAAhB,EAA2C;EACzCyK,cAAQzQ,IAAR,CAAa,CAACwG,MAAM,CAAN,EAASiI,IAAT,EAAD,CAAb;EACD;;EAED,WAAO;EACLjT,YAAM,OADD;EAELkV,eAASA,OAFJ;EAGLD,eAASA,QAAQnI,GAAR,CAAY;EAAA,eAAOyJ,OAAOZ,SAAP,CAAiBnL,GAAjB,CAAP;EAAA,OAAZ;EAHJ,KAAP;EAKD;;EAED,WAAS8M,WAAT,CAAsB9F,MAAtB,EAA8B;EAC5B,QAAM+F,IAAIhY,OAAOiX,MAAP,CAAV;EACA,WAAOe,EAAEd,IAAF,CAAOjF,MAAP,CAAP;EACD;;EAED,SAAO;EACLe,gBADK;EAEL4E,sBAFK;EAGLG,4BAHK;EAILF;EAJK,GAAP;EAMD;;ECzGD;;;;;;AAMA;EAQA;;;;;;AAMA,EAAO,SAASI,SAAT,CAAoBtS,QAApB,EAA8B2C,QAA9B,EAAwC;EAC7C,MAAI4P,MAAMpV,QAAQL,OAAR,CAAgB,MAAhB,CAAV;EACA,MAAMG,SAAS,EAAf;EACA+C,WAAS/D,OAAT,CAAiB,UAAUuW,IAAV,EAAgBC,GAAhB,EAAqB;EACpCF,UAAMA,IACHnV,IADG,CACE;EAAA,aAAMuF,SAAS6P,IAAT,EAAeC,GAAf,EAAoBzS,QAApB,CAAN;EAAA,KADF,EAEH5C,IAFG,CAEE;EAAA,aAAKH,OAAOqC,IAAP,CAAY0R,CAAZ,CAAL;EAAA,KAFF,CAAN;EAGD,GAJD;EAKA,SAAOuB,IAAInV,IAAJ,CAAS;EAAA,WAAMH,MAAN;EAAA,GAAT,CAAP;EACD;;ECxBc,cAAUyV,MAAV,EAAkBC,MAAlB,EAA0B;EAAA;EAAA,sEAgCvC,kBAAuB7J,KAAvB,EAA8BzE,OAA9B;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EACMuO,wBADN,GACmBD,OAAO/D,OAAP,CAAe,KAAKgE,UAApB,EAAgC9J,KAAhC,CADnB;;;EAGE,kBAAI,CAACrG,QAAQmQ,UAAR,CAAL,EAA0B;EACxB,oBAAIjR,SAASiR,UAAT,KAAwBA,WAAW9S,MAAX,GAAoB,CAAhD,EAAmD;EACjD8S,+BAAa,CAACA,UAAD,CAAb;EACD,iBAFD,MAEO,IAAIrQ,SAASqQ,UAAT,CAAJ,EAA0B;EAC/BA,+BAAaja,OAAO+G,IAAP,CAAYkT,UAAZ,EAAwBhL,GAAxB,CAA4B,UAAChI,GAAD;EAAA,2BAAS,CAACA,GAAD,EAAMgT,WAAWhT,GAAX,CAAN,CAAT;EAAA,mBAA5B,CAAb;EACD;EACF;;EATH,oBAUM,CAAC6C,QAAQmQ,UAAR,CAAD,IAAwB,CAACA,WAAW9S,MAV1C;EAAA;EAAA;EAAA;;EAAA,gDAWW4S,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKuD,aAArC,EAAoDhK,KAApD,CAXX;;EAAA;EAcQiK,oBAdR,GAciB1O,QAAK0O,MAAL,IAAe,CAdhC;EAeQC,mBAfR,GAeiB3O,QAAK2O,KAAL,KAAeja,SAAhB,GAA6B6Z,WAAW9S,MAAxC,GAAiDuE,QAAK2O,KAftE;;;EAiBEJ,2BAAaA,WAAWrS,KAAX,CAAiBwS,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;EACA,kBAAI,KAAKC,QAAT,EAAmBL,WAAW/S,OAAX;;EAEbyI,sBApBR,GAoBmBsK,WAAWhL,GAAX,CAAe,UAAC4K,IAAD,EAAOrS,CAAP,EAAa;EAC3C,oBAAMqI,MAAM,EAAZ;EACAA,oBAAI,OAAKtE,QAAT,IAAqBsO,IAArB;EACAhK,oBAAI0K,OAAJ,GAAc;EACZC,yBAAOhT,MAAM,CADD;EAEZyN,yBAAOzN,IAAI,CAFC;EAGZiT,0BAAQjT,CAHI;EAIZ8C,wBAAM9C,MAAMyS,WAAW9S,MAAX,GAAoB,CAJpB;EAKZA,0BAAQ8S,WAAW9S,MALP;EAMZuT,0BAAQT,WAAW9S,MAAX,GAAoBK,CANhB;EAOZmT,2BAASV,WAAW9S,MAAX,GAAoBK,CAApB,GAAwB;EAPrB,iBAAd;EASA,uBAAOqI,GAAP;EACD,eAbgB,CApBnB;EAmCM8F,kBAnCN,GAmCa,EAnCb;EAoCMiF,sBApCN,GAoCiB,KApCjB;EAAA;EAAA,qBAqCQjB,UAAUhK,QAAV;EAAA,mFAAoB,iBAAMhO,OAAN;EAAA;EAAA;EAAA;EAAA;EAAA,+BACpBiZ,QADoB;EAAA;EAAA;EAAA;;EAAA;;EAAA;;EAGxBzK,gCAAMxJ,IAAN,CAAWhF,OAAX;EAHwB;EAAA;EAAA,iCAKRoY,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,OAAKC,SAArC,EAAgD1G,KAAhD,CALQ;;EAAA;EAKtBwF,8BALsB;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA,gCAOlB,uBAAanH,gBAPK;EAAA;EAAA;EAAA;;EAQpBmH,kCAAQ,YAAEwB,YAAV;EACA,8BAAI,YAAErJ,OAAF,KAAc,OAAlB,EAA2B;EACzB8M,uCAAW,IAAX;EACD;EAXmB;EAAA;;EAAA;EAAA;;EAAA;EAcxBzK,gCAAM/I,GAAN,CAAUzF,OAAV;;EAdwB;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,iBAApB;;EAAA;EAAA;EAAA;EAAA,kBArCR;;EAAA;EAAA,gDAqDSgU,IArDT;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAhCuC;;EAAA,oBAgCxBgB,MAhCwB;EAAA;EAAA;EAAA;;EACvC,MAAMnI,mBAAmBwL,OAAOa,KAAP,CAAarM,gBAAtC;EACA,MAAM8J,KAAK,IAAIxN,MAAJ,CAAW,OAAKM,WAAWL,MAAhB,0BACdxG,MAAMwG,MADQ,uBAERW,KAAKX,MAFG,gDAIRW,KAAKX,MAJG,SAAX,CAAX;;EAMAgP,SAAOe,WAAP,CAAmB,KAAnB,EAA0B,EAAEpG,YAAF,EAASiC,cAAT,EAA1B;;EAEA,WAASjC,KAAT,CAAgBqG,QAAhB,EAA0BC,YAA1B,EAAwC;EAAA;;EACtC,QAAM7N,QAAQmL,GAAGtL,IAAH,CAAQ+N,SAAStF,IAAjB,CAAd;EACArE,WAAOjE,KAAP,oBAA8B4N,SAASzF,GAAvC;EACA,SAAK/J,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;EACA,SAAK8M,UAAL,GAAkB9M,MAAM,CAAN,CAAlB;EACA,SAAKmN,QAAL,GAAgB,CAAC,CAACnN,MAAM,CAAN,CAAlB;;EAEA,SAAK0J,SAAL,GAAiB,EAAjB;EACA,SAAKsD,aAAL,GAAqB,EAArB;;EAEA,QAAIc,UAAJ;EACA,QAAMtC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,OADS,EACA;EAAA,aAAOmC,IAAI,MAAKpE,SAAhB;EAAA,KADA,EAEZiC,EAFY,CAET,UAFS,EAEG;EAAA,aAAOmC,IAAI,MAAKd,aAAhB;EAAA,KAFH,EAGZrB,EAHY,CAGT,YAHS,EAGK;EAAA,aAAMH,OAAO9Q,IAAP,EAAN;EAAA,KAHL,EAIZiR,EAJY,CAIT,UAJS,EAIG;EAAA,aAAOmC,EAAEtU,IAAF,CAAO4H,GAAP,CAAP;EAAA,KAJH,EAKZuK,EALY,CAKT,KALS,EAKF,YAAM;EACf,YAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,KAPY,CAAf;;EASAqD,WAAOlO,KAAP;EACD;EAwDF;;ECxFc,iBAAUsP,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAM1B,KAAK,IAAIxN,MAAJ,OAAeM,WAAWL,MAA1B,kBAAX;EADuC,MAE/BoQ,WAF+B,GAEfnB,OAAOa,KAFQ,CAE/BM,WAF+B;;;EAIvCpB,SAAOe,WAAP,CAAmB,QAAnB,EAA6B;EAC3BpG,WAAO,eAAUjH,KAAV,EAAiB;EACtB,UAAMN,QAAQM,MAAMgI,IAAN,CAAWtI,KAAX,CAAiBmL,EAAjB,CAAd;EACAlH,aAAOjE,KAAP,qBAA+BM,MAAM6H,GAArC;EACA,WAAKrO,GAAL,GAAWkG,MAAM,CAAN,CAAX;EACA,WAAK5I,KAAL,GAAa4I,MAAM,CAAN,CAAb;EACD,KAN0B;EAO3BwJ,YAAQ,gBAAUxG,KAAV,EAAiB;EACvB,UAAMN,MAAMnO,OAAOyZ,WAAP,CAAZ;EACAtL,UAAI,KAAK5I,GAAT,IAAgB8S,OAAOvD,SAAP,CAAiB,KAAKjS,KAAtB,EAA6B4L,KAA7B,CAAhB;EACAA,YAAMxJ,IAAN,CAAWkJ,GAAX;EACA,aAAOrL,QAAQL,OAAR,CAAgB,EAAhB,CAAP;EACD;EAZ0B,GAA7B;EAcD;;EClBc,kBAAU4V,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAM1B,KAAK,IAAIxN,MAAJ,OAAeM,WAAWL,MAA1B,OAAX;EADuC,MAE/BqQ,YAF+B,GAEdpB,OAAOa,KAFO,CAE/BO,YAF+B;;;EAIvCrB,SAAOe,WAAP,CAAmB,SAAnB,EAA8B;EAC5BpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,UAAM7N,QAAQ4N,SAAStF,IAAT,CAActI,KAAd,CAAoBmL,EAApB,CAAd;EACAlH,aAAOjE,KAAP,EAAiB4N,SAAStF,IAA1B;;EAEA,WAAKlK,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;EACA,WAAK0J,SAAL,GAAiB,EAAjB;;EAEA,UAAM8B,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;EACArC,aAAOG,EAAP,CAAU,gBAAV,EAA4B;EAAA,eAASH,OAAO9Q,IAAP,EAAT;EAAA,OAA5B,EACGiR,EADH,CACM,UADN,EACkB;EAAA,eAAO,MAAKjC,SAAL,CAAelQ,IAAf,CAAoB4H,GAApB,CAAP;EAAA,OADlB,EAEGuK,EAFH,CAEM,KAFN,EAEa,aAAK;EACd,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OAJH;EAKAqD,aAAOlO,KAAP;EACD,KAf2B;EAgB5BkM;EAAA,wEAAQ,iBAAgBxG,KAAhB,EAAuBzE,OAAvB;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,uBACaqO,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKC,SAArC,EAAgD1G,KAAhD,CADb;;EAAA;EACAwF,oBADA;EAEA9F,mBAFA,GAEMnO,OAAO0Z,YAAP,CAFN;;EAGNvL,oBAAI,KAAKtE,QAAT,IAAqBoK,IAArB;EACAxF,sBAAMxJ,IAAN,CAAWkJ,GAAX;;EAJM;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAhB4B,GAA9B;EAuBD;;EC/Bc,eAAUkK,MAAV,EAAkBC,MAAlB,EAA0B;EACvCD,SAAOe,WAAP,CAAmB,MAAnB,EAA2B;;EAEzBpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,WAAKK,IAAL,GAAYN,SAAStF,IAArB;EACA,WAAK6F,KAAL,GAAa,EAAb;EACA,WAAKnB,aAAL,GAAqB,EAArB;;EAEA,UAAIc,IAAI,EAAR;EACA,UAAMtC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,UADS,EACG,iBAAS;EACvB,cAAKwC,KAAL,CAAW3U,IAAX,CAAgB;EACdmJ,eAAKrC,MAAMgI,IADG;EAEdoB,qBAAWoE,IAAI;EAFD,SAAhB;EAID,OANY,EAOZnC,EAPY,CAOT,UAPS,EAOG;EAAA,eAAOmC,IAAI,MAAKd,aAAhB;EAAA,OAPH,EAQZrB,EARY,CAQT,aARS,EAQM;EAAA,eAASH,OAAO9Q,IAAP,EAAT;EAAA,OARN,EASZiR,EATY,CAST,UATS,EASG;EAAA,eAAOmC,EAAEtU,IAAF,CAAO4H,GAAP,CAAP;EAAA,OATH,EAUZuK,EAVY,CAUT,KAVS,EAUF,aAAK;EACd,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OAZY,CAAf;;EAcAqD,aAAOlO,KAAP;EACD,KAvBwB;;EAyBzBkM,YAAQ,gBAAUxG,KAAV,EAAiBzE,IAAjB,EAAuB;EAC7B,WAAK,IAAIlE,IAAI,CAAb,EAAgBA,IAAI,KAAK8T,KAAL,CAAWnU,MAA/B,EAAuCK,GAAvC,EAA4C;EAC1C,YAAM+T,SAAS,KAAKD,KAAL,CAAW9T,CAAX,CAAf;EACA,YAAMsI,MAAMkK,OAAO/D,OAAP,CAAesF,OAAOzL,GAAtB,EAA2BK,KAA3B,CAAZ;EACA,YAAMkL,OAAOrB,OAAO/D,OAAP,CAAe,KAAKoF,IAApB,EAA0BlL,KAA1B,CAAb;EACA,YAAIL,QAAQuL,IAAZ,EAAkB;EAChB,iBAAOtB,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC2E,OAAO1E,SAAvC,EAAkD1G,KAAlD,CAAP;EACD;EACF;EACD,aAAO4J,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKuD,aAArC,EAAoDhK,KAApD,CAAP;EACD;EAnCwB,GAA3B;EAqCD;;ECtCc,kBAAU4J,MAAV,EAAkB;EAC/BA,SAAOe,WAAP,CAAmB,SAAnB,EAA8B;EAC5BpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EACvC,UAAMrC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;EACArC,aACGG,EADH,CACM,OADN,EACe,iBAAS;EACpB,YAAIrL,MAAM9J,IAAN,KAAe,YAAnB,EAAiCgV,OAAO9Q,IAAP;EAClC,OAHH,EAIGiR,EAJH,CAIM,KAJN,EAIa,aAAK;EACd,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OANH;EAOAqD,aAAOlO,KAAP;EACD;EAX2B,GAA9B;EAaD;;ECXD,IAAM+Q,eAAe,SAArB;;AAEA,EAAe,kBAAUzB,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAMyB,SAAS,IAAI3Q,MAAJ,eAAuBvG,MAAMwG,MAA7B,OAAf;;EAEAgP,SAAOe,WAAP,CAAmB,SAAnB,EAA8B;EAC5BpG,WAAO,eAAUjH,KAAV,EAAiB;EACtB,UAAIN,QAAQqO,aAAaxO,IAAb,CAAkBS,MAAMgI,IAAxB,CAAZ;EACA,UAAItI,KAAJ,EAAW;EACT,aAAKuO,WAAL,GAAmBvO,MAAM,CAAN,CAAnB;EACD;;EAEDA,cAAQ5I,MAAMyI,IAAN,CAAWS,MAAMgI,IAAjB,CAAR;EACA,UAAItI,KAAJ,EAAW;EACT,aAAK5I,KAAL,GAAa4I,MAAM,CAAN,CAAb;EACD;;EAEDA,cAAQsO,OAAOzO,IAAP,CAAYS,MAAMgI,IAAlB,CAAR;EACA,UAAItI,KAAJ,EAAW;EACT,aAAKwO,IAAL,GAAYxO,MAAM,CAAN,CAAZ;EACD;EACF,KAhB2B;EAiB5BwJ;EAAA,wEAAQ,iBAAgBxG,KAAhB,EAAuBzE,OAAvB;EAAA;EAAA;EAAA;EAAA;EAAA;EACFgH,wBADE;;EAAA,qBAEFvC,MAAMY,IAAN,CAAWW,eAFT;EAAA;EAAA;EAAA;;EAAA,qBAGAzF,WAAWe,IAAX,CAAgB,KAAKzI,KAArB,CAHA;EAAA;EAAA;EAAA;;EAIIuS,wBAJJ,GAIe,KAAKvS,KAAL,CAAWqD,KAAX,CAAiB,CAAjB,EAAoB,CAAC,CAArB,CAJf;EAAA;EAAA,uBAKemS,OAAO6B,cAAP,CAAsB9E,QAAtB,EAAgC3G,MAAMT,MAAN,EAAhC,EAAgDS,MAAMY,IAAtD,CALf;;EAAA;EAKF2B,wBALE;EAAA;EAAA;;EAAA;EAOFA,2BAAWsH,OAAOxD,SAAP,CAAiB,KAAKjS,KAAtB,EAA6B4L,KAA7B,CAAX;;EAPE;EAAA;EAAA;;EAAA;EAUJuC,2BAAW,KAAKgJ,WAAhB;;EAVI;EAYNtK,uBAAOsB,QAAP;;EAEMmJ,4BAdA,GAce1L,MAAMY,IAAN,CAAWa,MAd1B;EAeAkK,+BAfA,GAekB3L,MAAMY,IAAN,CAAWgL,SAf7B;;;EAiBN5L,sBAAMY,IAAN,CAAWa,MAAX,GAAoB,EAApB;EACAzB,sBAAMY,IAAN,CAAWgL,SAAX,GAAuB,QAAvB;EACA,oBAAI,KAAKJ,IAAT,EAAe;EACbjQ,0BAAKgH,QAAL,IAAiBsH,OAAOxD,SAAP,CAAiB,KAAKmF,IAAtB,EAA4BxL,KAA5B,CAAjB;EACD;EArBK;EAAA,uBAsBkB4J,OAAOiC,WAAP,CAAmBtJ,QAAnB,EAA6BvC,MAAMY,IAAN,CAAWc,IAAxC,CAtBlB;;EAAA;EAsBAgF,yBAtBA;;EAuBN1G,sBAAMxJ,IAAN,CAAW+E,OAAX;EAvBM;EAAA,uBAwBaqO,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgCC,SAAhC,EAA2C1G,KAA3C,CAxBb;;EAAA;EAwBAwF,oBAxBA;;EAyBNxF,sBAAM/I,GAAN,CAAUsE,OAAV;EACAyE,sBAAMY,IAAN,CAAWa,MAAX,GAAoBiK,YAApB;EACA1L,sBAAMY,IAAN,CAAWgL,SAAX,GAAuBD,eAAvB;EA3BM,iDA4BCnG,IA5BD;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAjB4B,GAA9B;EAgDD;;ECpDc,oBAAUoE,MAAV,EAAkBC,MAAlB,EAA0B;EAAA,sBACeA,OAAOa,KADtB;EAAA,MAC/BO,YAD+B,iBAC/BA,YAD+B;EAAA,MACjBD,WADiB,iBACjBA,WADiB;EAAA,MACJc,cADI,iBACJA,cADI;;;EAGvClC,SAAOe,WAAP,CAAmB,WAAnB,EAAgC;EAC9BpG,WAAO,eAAUjH,KAAV,EAAiB;EACtB,UAAMN,QAAQM,MAAMgI,IAAN,CAAWtI,KAAX,CAAiB/B,UAAjB,CAAd;EACAgG,aAAOjE,KAAP,0BAAoCM,MAAMgI,IAA1C;EACA,WAAKlK,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;EACD,KAL6B;EAM9BwJ,YAAQ,gBAAUxG,KAAV,EAAiBzE,OAAjB,EAAuB;EAC7B,UAAI/J,UAAUwO,MAAMC,cAAN,CACZ,KAAK7E,QADO,EAEZ,eAAO;EACL,YAAM1B,QAAQ7J,OAAO+C,cAAP,CAAsB8M,GAAtB,CAAd;EACA,eAAOhG,UAAUuR,YAAV,IAA0BvR,UAAUsR,WAA3C;EACD,OALW,CAAd;EAOA,UAAI,CAACxZ,OAAL,EAAc;EACZA,kBAAUD,OAAOua,cAAP,CAAV;EACA9L,cAAMM,OAAN,CAAc9O,OAAd;EACD;EACD,UAAI,OAAOA,QAAQ,KAAK4J,QAAb,CAAP,KAAkC,QAAtC,EAAgD;EAC9C5J,gBAAQ,KAAK4J,QAAb,IAAyB,CAAzB;EACD;EACD,aAAO,EAAE5J,QAAQ,KAAK4J,QAAb,CAAT;EACD;EAtB6B,GAAhC;EAwBD;;EC5Bc,gBAAUwO,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAMkC,UAAU,IAAIpR,MAAJ,WAAmBqR,MAAOpR,MAA1B,uBAAhB;EACA,MAAMqR,eAAe,IAAItR,MAAJ,CAAWqR,MAAOpR,MAAlB,EAA0B,GAA1B,CAArB;;EAEAgP,SAAOe,WAAP,CAAmB,OAAnB,EAA4B;;EAE1BpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EACvC,UAAI7N,QAAQ+O,QAAQlP,IAAR,CAAa+N,SAAStF,IAAtB,CAAZ;EACArE,aAAOjE,KAAP,oBAA8B4N,SAASzF,GAAvC;;EAEA,WAAK+G,KAAL,GAAalP,MAAM,CAAN,KAAY,EAAzB;EACA,UAAMmP,aAAanP,MAAM,CAAN,CAAnB;;EAEA,WAAKmP,UAAL,GAAkB,EAAlB;;EAEA,aAAQnP,QAAQiP,aAAapP,IAAb,CAAkBsP,UAAlB,CAAhB,EAAgD;EAC9C,aAAKA,UAAL,CAAgB3V,IAAhB,CAAqBwG,MAAM,CAAN,CAArB;EACD;EACDiE,aAAO,KAAKkL,UAAL,CAAgBnV,MAAvB,yBAAoD4T,SAASzF,GAA7D;EACD,KAfyB;;EAiB1BqB,YAAQ,gBAAUxG,KAAV,EAAiBzE,OAAjB,EAAuB;EAC7B,UAAM2Q,QAAQrC,OAAOxD,SAAP,CAAiB,KAAK6F,KAAtB,EAA6BlM,KAA7B,CAAd;EACA,UAAMoM,cAAc,WAASF,KAAT,SAAoB,KAAKC,UAAL,CAAgBlN,IAAhB,CAAqB,GAArB,CAAxC;;EAEA,UAAMoN,SAASrM,MAAMY,IAAN,CAAWyL,MAAX,GAAoBrM,MAAMY,IAAN,CAAWyL,MAAX,IAAqB,EAAxD;EACA,UAAI1C,MAAM0C,OAAOD,WAAP,CAAV;;EAEA,UAAIzC,QAAQ1Z,SAAZ,EAAuB;EACrB0Z,cAAM0C,OAAOD,WAAP,IAAsB,CAA5B;EACD;;EAED,UAAM3L,YAAY,KAAK0L,UAAL,CAAgBxC,GAAhB,CAAlB;EACAA,YAAM,CAACA,MAAM,CAAP,IAAY,KAAKwC,UAAL,CAAgBnV,MAAlC;EACAqV,aAAOD,WAAP,IAAsBzC,GAAtB;;EAEA,aAAOE,OAAOxD,SAAP,CAAiB5F,SAAjB,EAA4BT,KAA5B,CAAP;EACD;EAjCyB,GAA5B;EAmCD;;EC1Cc,aAAU4J,MAAV,EAAkBC,MAAlB,EAA0B;EACvCD,SAAOe,WAAP,CAAmB,IAAnB,EAAyB;;EAEvBpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,WAAKyB,QAAL,GAAgB,EAAhB;EACA,WAAKtC,aAAL,GAAqB,EAArB;;EAEA,UAAIc,UAAJ;EACA,UAAMtC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,OADS,EACA;EAAA,eAAM,MAAK2D,QAAL,CAAc9V,IAAd,CAAmB;EACpC0U,gBAAMN,SAAStF,IADqB;EAEpCoB,qBAAYoE,IAAI;EAFoB,SAAnB,CAAN;EAAA,OADA,EAKZnC,EALY,CAKT,WALS,EAKI,iBAAS;EACxB,cAAK2D,QAAL,CAAc9V,IAAd,CAAmB;EACjB0U,gBAAM5N,MAAMgI,IADK;EAEjBoB,qBAAWoE,IAAI;EAFE,SAAnB;EAID,OAVY,EAWZnC,EAXY,CAWT,UAXS,EAWG;EAAA,eAAOmC,IAAI,MAAKd,aAAhB;EAAA,OAXH,EAYZrB,EAZY,CAYT,WAZS,EAYI;EAAA,eAASH,OAAO9Q,IAAP,EAAT;EAAA,OAZJ,EAaZiR,EAbY,CAaT,UAbS,EAaG;EAAA,eAAOmC,EAAEtU,IAAF,CAAO4H,GAAP,CAAP;EAAA,OAbH,EAcZuK,EAdY,CAcT,KAdS,EAcF,aAAK;EACd,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OAhBY,CAAf;;EAkBAqD,aAAOlO,KAAP;EACD,KA1BsB;;EA4BvBkM,YAAQ,gBAAUxG,KAAV,EAAiBzE,IAAjB,EAAuB;EAAA;EAAA;EAAA;;EAAA;EAC7B,6BAAqB,KAAK+Q,QAA1B,8HAAoC;EAAA,cAAzBlB,MAAyB;;EAClC,cAAMF,OAAOrB,OAAO/D,OAAP,CAAesF,OAAOF,IAAtB,EAA4BlL,KAA5B,CAAb;EACA,cAAI6J,OAAOlE,QAAP,CAAgBuF,IAAhB,CAAJ,EAA2B;EACzB,mBAAOtB,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC2E,OAAO1E,SAAvC,EAAkD1G,KAAlD,CAAP;EACD;EACF;EAN4B;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;EAO7B,aAAO4J,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKuD,aAArC,EAAoDhK,KAApD,CAAP;EACD;EApCsB,GAAzB;EAsCD;;ECnCc,oBAAU4J,MAAV,EAAkBC,MAAlB,EAA0B;EAAA,sBACeA,OAAOa,KADtB;EAAA,MAC/BO,YAD+B,iBAC/BA,YAD+B;EAAA,MACjBD,WADiB,iBACjBA,WADiB;EAAA,MACJuB,cADI,iBACJA,cADI;;;EAGvC3C,SAAOe,WAAP,CAAmB,WAAnB,EAAgC;EAC9BpG,WAAO,eAAUjH,KAAV,EAAiB;EACtB,UAAMN,QAAQM,MAAMgI,IAAN,CAAWtI,KAAX,CAAiB/B,UAAjB,CAAd;EACAgG,aAAOjE,KAAP,0BAAoCM,MAAMgI,IAA1C;EACA,WAAKlK,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;EACD,KAL6B;EAM9BwJ,YAAQ,gBAAUxG,KAAV,EAAiBzE,OAAjB,EAAuB;EAC7B,UAAI/J,UAAUwO,MAAMC,cAAN,CACZ,KAAK7E,QADO,EAEZ,eAAO;EACL,YAAM1B,QAAQ7J,OAAO+C,cAAP,CAAsB8M,GAAtB,CAAd;EACA,eAAOhG,UAAUuR,YAAV,IAA0BvR,UAAUsR,WAA3C;EACD,OALW,CAAd;EAOA,UAAI,CAACxZ,OAAL,EAAc;EACZA,kBAAUD,OAAOgb,cAAP,CAAV;EACAvM,cAAMM,OAAN,CAAc9O,OAAd;EACD;EACD,UAAI,OAAOA,QAAQ,KAAK4J,QAAb,CAAP,KAAkC,QAAtC,EAAgD;EAC9C5J,gBAAQ,KAAK4J,QAAb,IAAyB,CAAzB;EACD;EACD,UAAMuE,MAAMnO,QAAQ,KAAK4J,QAAb,CAAZ;EACA5J,cAAQ,KAAK4J,QAAb;EACA,aAAOuE,GAAP;EACD;EAxB6B,GAAhC;EA0BD;;EC9BD;;;;;;AAMA,EAAe,iBAAUiK,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAMwB,eAAe,KAArB;;EAEAzB,SAAOe,WAAP,CAAmB,QAAnB,EAA6B;EAC3BpG,WAAO,eAAUjH,KAAV,EAAiBuN,YAAjB,EAA+B;EACpC,UAAI7N,QAAQqO,aAAaxO,IAAb,CAAkBS,MAAMgI,IAAxB,CAAZ;EACA,UAAItI,KAAJ,EAAW;EACT,aAAKwP,YAAL,GAAoBxP,MAAM,CAAN,CAApB;EACD;;EAEDA,cAAQgP,MAAOnP,IAAP,CAAYS,MAAMgI,IAAlB,CAAR;EACA,UAAItI,KAAJ,EAAW;EACT,aAAKyP,MAAL,GAAczP,MAAM,CAAN,CAAd;EACD;;EAED,WAAK0P,IAAL,GAAY9C,OAAOmB,MAAP,CAAcxG,KAAd,CAAoBsG,YAApB,CAAZ;EACD,KAb0B;EAc3BrE;EAAA,wEAAQ,iBAAgBxG,KAAhB,EAAuBzE,OAAvB;EAAA;EAAA;EAAA;EAAA;EAAA;EACAkR,sBADA,GACSzM,MAAMY,IAAN,CAAWW,eAAX,GACXsI,OAAOxD,SAAP,CAAiB,KAAKoG,MAAtB,EAA8BzM,KAA9B,CADW,GAEX,KAAKwM,YAHH;;EAINvL,uBAAOwL,MAAP;;EAEA;EACAzM,sBAAMY,IAAN,CAAWgL,SAAX,GAAuB,OAAvB;EAPM;EAAA,uBAQahC,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKiG,IAArC,EAA2C1M,KAA3C,CARb;;EAAA;EAQAwF,oBARA;;EASN,oBAAIxF,MAAMY,IAAN,CAAWa,MAAX,CAAkB,EAAlB,MAA0BxR,SAA9B,EAAyC;EACvC+P,wBAAMY,IAAN,CAAWa,MAAX,CAAkB,EAAlB,IAAwB+D,IAAxB;EACD;EAXK;EAAA,uBAYkBoE,OAAOiC,WAAP,CAAmBY,MAAnB,EAA2BzM,MAAMY,IAAN,CAAWc,IAAtC,CAZlB;;EAAA;EAYAgF,yBAZA;;EAaN1G,sBAAMxJ,IAAN,CAAW+E,OAAX;EACAyE,sBAAMY,IAAN,CAAWgL,SAAX,GAAuB,QAAvB;EAdM;EAAA,uBAegBhC,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgCC,SAAhC,EAA2C1G,KAA3C,CAfhB;;EAAA;EAeA6G,uBAfA;;EAgBN7G,sBAAM/I,GAAN,CAAUsE,OAAV;EAhBM,iDAiBCsL,OAjBD;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAd2B,GAA7B;;EAmCA+C,SAAOe,WAAP,CAAmB,OAAnB,EAA4B;EAC1BpG,WAAO,eAAUjH,KAAV,EAAiBuN,YAAjB,EAA+B;EAAA;;EACpC,UAAM7N,QAAQ,MAAMH,IAAN,CAAWS,MAAMgI,IAAjB,CAAd;EACA,WAAKqH,KAAL,GAAa3P,QAAQA,MAAM,CAAN,CAAR,GAAmB,EAAhC;;EAEA,WAAK0P,IAAL,GAAY,EAAZ;EACA,UAAMlE,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,cADS,EACO;EAAA,eAAMH,OAAO9Q,IAAP,EAAN;EAAA,OADP,EAEZiR,EAFY,CAET,UAFS,EAEG;EAAA,eAAO,MAAK+D,IAAL,CAAUlW,IAAV,CAAe4H,GAAf,CAAP;EAAA,OAFH,EAGZuK,EAHY,CAGT,KAHS,EAGF,YAAM;EACf,cAAM,IAAI1T,KAAJ,UAAiBqI,MAAM6H,GAAvB,iBAAN;EACD,OALY,CAAf;EAMAqD,aAAOlO,KAAP;EACD,KAbyB;EAc1BkM;EAAA,yEAAQ,kBAAgBxG,KAAhB;EAAA;EAAA;EAAA;EAAA;EAAA;EACA4M,4BADA,GACe5M,MAAMY,IAAN,CAAWa,MAAX,CAAkB,KAAKkL,KAAvB,CADf;;EAAA,sBAEOC,iBAAiB3c,SAFxB;EAAA;EAAA;EAAA;;EAAA,+BAGF2c,YAHE;EAAA;EAAA;;EAAA;EAAA;EAAA,uBAIIhD,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKiG,IAArC,EAA2C1M,KAA3C,CAJJ;;EAAA;EAAA;;EAAA;EAEAwF,oBAFA;;EAAA,sBAMFxF,MAAMY,IAAN,CAAWgL,SAAX,KAAyB,OANvB;EAAA;EAAA;EAAA;;EAOJ5L,sBAAMY,IAAN,CAAWa,MAAX,CAAkB,KAAKkL,KAAvB,IAAgCnH,IAAhC;EAPI,kDAQG,EARH;;EAAA;EAAA,kDAUCA,IAVD;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAd0B,GAA5B;EA2BD;;EC1Ec,cAAUoE,MAAV,EAAkB;EAC/BA,SAAOe,WAAP,CAAmB,KAAnB,EAA0B;EACxBpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,WAAKrH,MAAL,GAAc,EAAd;;EAEA,UAAMgF,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;EACArC,aACGG,EADH,CACM,OADN,EACe,iBAAS;EACpB,YAAIrL,MAAM9J,IAAN,KAAe,QAAnB,EAA6BgV,OAAO9Q,IAAP,GAA7B,KACK,MAAK8L,MAAL,CAAYhN,IAAZ,CAAiB8G,KAAjB;EACN,OAJH,EAKGqL,EALH,CAKM,KALN,EAKa,YAAM;EACf,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OAPH;EAQAqD,aAAOlO,KAAP;EACD,KAduB;EAexBkM,YAAQ,gBAAUxG,KAAV,EAAiBzE,IAAjB,EAAuB;EAC7B,aAAO,KAAKiI,MAAL,CAAY1E,GAAZ,CAAgB;EAAA,eAASxB,MAAM6H,GAAf;EAAA,OAAhB,EAAoClG,IAApC,CAAyC,EAAzC,CAAP;EACD;EAjBuB,GAA1B;EAmBD;;EChBc,mBAAU2K,MAAV,EAAkBC,MAAlB,EAA0B;EACvC,MAAM1B,KAAK,IAAIxN,MAAJ,CAAW,OAAKM,WAAWL,MAAhB,0BAChBxG,MAAMwG,MADU,uBAEVW,KAAKX,MAFK,SAAX,CAAX;;EAIAgP,SAAOe,WAAP,CAAmB,UAAnB,EAA+B;;EAE7BpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,UAAM7N,QAAQmL,GAAGtL,IAAH,CAAQ+N,SAAStF,IAAjB,CAAd;EACArE,aAAOjE,KAAP,oBAA8B4N,SAASzF,GAAvC;;EAEA,WAAK/J,QAAL,GAAgB4B,MAAM,CAAN,CAAhB;EACA,WAAK8M,UAAL,GAAkB9M,MAAM,CAAN,CAAlB;EACA,WAAK0J,SAAL,GAAiB,EAAjB;;EAEA,UAAIoE,UAAJ;EACA,UAAMtC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,OADS,EACA;EAAA,eAAOmC,IAAI,MAAKpE,SAAhB;EAAA,OADA,EAEZiC,EAFY,CAET,iBAFS,EAEU;EAAA,eAASH,OAAO9Q,IAAP,EAAT;EAAA,OAFV,EAGZiR,EAHY,CAGT,UAHS,EAGG;EAAA,eAAOmC,EAAEtU,IAAF,CAAO4H,GAAP,CAAP;EAAA,OAHH,EAIZuK,EAJY,CAIT,KAJS,EAIF,YAAM;EACf,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OANY,CAAf;;EAQAqD,aAAOlO,KAAP;EACD,KApB4B;;EAsB7BkM;EAAA,wEAAQ,kBAAgBxG,KAAhB,EAAuBzE,OAAvB;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EACFuO,0BADE,GACWD,OAAO/D,OAAP,CAAe,KAAKgE,UAApB,EAAgC9J,KAAhC,KAA0C,EADrD;EAEAiK,sBAFA,GAES1O,QAAK0O,MAAL,IAAe,CAFxB;EAGAC,qBAHA,GAGS3O,QAAK2O,KAAL,KAAeja,SAAhB,GAA6B6Z,WAAW9S,MAAxC,GAAiDuE,QAAK2O,KAH9D;;;EAKNJ,6BAAaA,WAAWrS,KAAX,CAAiBwS,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;EACM2C,oBANA,GAMOtR,QAAKsR,IAAL,IAAa/C,WAAW9S,MAN/B;EAOAwI,wBAPA,GAOWsK,WAAWhL,GAAX,CAAe,UAAC4K,IAAD,EAAOrS,CAAP,EAAa;EAC3C,sBAAMqI,MAAM,EAAZ;EACAA,sBAAI,OAAKtE,QAAT,IAAqBsO,IAArB;EACA,yBAAOhK,GAAP;EACD,iBAJgB,CAPX;EAaFoN,mBAbE;EAcFtH,oBAdE,GAcK,EAdL;EAAA;EAAA,uBAeAgE,UAAUhK,QAAV;EAAA,qFAAoB,iBAAOhO,OAAP,EAAgBmY,GAAhB;EAAA;EAAA;EAAA;EAAA;EAAA;EACxBmD,kCAAMpO,KAAKqO,KAAL,CAAWpD,MAAMkD,IAAjB,IAAyB,CAA/B;EACMG,+BAFkB,GAEXrD,MAAMkD,IAAP,GAAe,CAFH;;EAGxB,gCAAIG,QAAQ,CAAZ,EAAe;EACb,kCAAIF,QAAQ,CAAZ,EAAe;EACbtH,wCAAQ,OAAR;EACD;EACDA,yDAAyBsH,GAAzB;EACD;;EAEDtH,uDAAyBwH,GAAzB;EACAhN,kCAAMxJ,IAAN,CAAWhF,OAAX;EAXwB;EAAA,mCAYVoY,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,OAAKC,SAArC,EAAgD1G,KAAhD,CAZU;;EAAA;EAYxBwF,gCAZwB;;EAaxBA,oCAAQ,OAAR;EACAxF,kCAAM/I,GAAN,CAAUzF,OAAV;EAdwB,6DAejBgU,IAfiB;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,mBAApB;;EAAA;EAAA;EAAA;EAAA,oBAfA;;EAAA;EAgCN,oBAAIsH,MAAM,CAAV,EAAa;EACXtH,0BAAQ,OAAR;EACD;EAlCK,kDAmCCA,IAnCD;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,OAAR;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAtB6B,GAA/B;EA4DD;;ECrEc,iBAAUoE,MAAV,EAAkBC,MAAlB,EAA0B;EACvCD,SAAOe,WAAP,CAAmB,QAAnB,EAA6B;EAC3BpG,WAAO,eAAUqG,QAAV,EAAoBC,YAApB,EAAkC;EAAA;;EACvC,WAAKnE,SAAL,GAAiB,EAAjB;EACA,WAAKsD,aAAL,GAAqB,EAArB;EACA,UAAIc,UAAJ;EACA,UAAMtC,SAASoB,OAAOmB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZlC,EADY,CACT,OADS,EACA,aAAK;EAChBmC,YAAI,MAAKpE,SAAT;EACA,cAAKwE,IAAL,GAAYN,SAAStF,IAArB;EACD,OAJY,EAKZqD,EALY,CAKT,UALS,EAKG;EAAA,eAAOmC,IAAI,MAAKd,aAAhB;EAAA,OALH,EAMZrB,EANY,CAMT,eANS,EAMQ;EAAA,eAASH,OAAO9Q,IAAP,EAAT;EAAA,OANR,EAOZiR,EAPY,CAOT,UAPS,EAOG;EAAA,eAAOmC,EAAEtU,IAAF,CAAO4H,GAAP,CAAP;EAAA,OAPH,EAQZuK,EARY,CAQT,KARS,EAQF,aAAK;EACd,cAAM,IAAI1T,KAAJ,UAAiB2V,SAASzF,GAA1B,iBAAN;EACD,OAVY,CAAf;;EAYAqD,aAAOlO,KAAP;EACD,KAlB0B;;EAoB3BkM,YAAQ,gBAAUxG,KAAV,EAAiBzE,IAAjB,EAAuB;EAC7B,UAAM2P,OAAOrB,OAAO/D,OAAP,CAAe,KAAKoF,IAApB,EAA0BlL,KAA1B,CAAb;EACA,aAAO6J,OAAOtD,OAAP,CAAe2E,IAAf,IACHtB,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKC,SAArC,EAAgD1G,KAAhD,CADG,GAEH4J,OAAOG,QAAP,CAAgBtD,eAAhB,CAAgC,KAAKuD,aAArC,EAAoDhK,KAApD,CAFJ;EAGD;EAzB0B,GAA7B;EA2BD;;ECbc,eAAUiN,MAAV,EAAkBpD,MAAlB,EAA0B;EACvCqD,SAAOD,MAAP,EAAepD,MAAf;EACAsD,UAAQF,MAAR,EAAgBpD,MAAhB;EACAuD,OAAKH,MAAL,EAAapD,MAAb;EACAwD,UAAQJ,MAAR,EAAgBpD,MAAhB;EACAyD,QAAML,MAAN,EAAcpD,MAAd;EACA0D,YAAUN,MAAV,EAAkBpD,MAAlB;EACA2D,MAAIP,MAAJ,EAAYpD,MAAZ;EACA4D,KAAGR,MAAH,EAAWpD,MAAX;EACA6D,UAAQT,MAAR,EAAgBpD,MAAhB;EACA8D,YAAUV,MAAV,EAAkBpD,MAAlB;EACA+D,SAAOX,MAAP,EAAepD,MAAf;EACAgE,MAAIZ,MAAJ,EAAYpD,MAAZ;EACAiE,WAASb,MAAT,EAAiBpD,MAAjB;EACAkE,SAAOd,MAAP,EAAepD,MAAf;EACD;;EC9BD,IAAMmE,aAAa,CACjB,SADiB,EACN,UADM,EACM,OADN,EACe,OADf,EACwB,KADxB,EAC+B,MAD/B,EACuC,MADvC,EAC+C,QAD/C,EAEjB,WAFiB,EAEJ,SAFI,EAEO,UAFP,EAEmB,UAFnB,CAAnB;EAIA,IAAMC,WAAW,CACf,QADe,EACL,QADK,EACK,SADL,EACgB,WADhB,EAC6B,UAD7B,EACyC,QADzC,EACmD,UADnD,CAAjB;EAGA,IAAMC,kBAAkBF,WAAWlP,GAAX,CAAeqP,IAAf,CAAxB;EACA,IAAMC,gBAAgBH,SAASnP,GAAT,CAAaqP,IAAb,CAAtB;EACA,IAAME,WAAW;EACf,KAAG,IADY;EAEf,KAAG,IAFY;EAGf,KAAG,IAHY;EAIf,aAAW;EAJI,CAAjB;;EAOA,SAASF,IAAT,CAAe3R,GAAf,EAAoB;EAClB,SAAOA,IAAI/E,KAAJ,CAAU,CAAV,EAAa,CAAb,CAAP;EACD;;EAED;EACA,IAAM6W,QAAQ;EACZC,eAAa,qBAAUC,CAAV,EAAa;EACxB,QAAMC,MAAMH,MAAMI,UAAN,CAAiBF,CAAjB,IAAsB,EAAtB,GAA2B,EAAvC;EACA,WAAO,CAAC,EAAD,EAAKC,GAAL,EAAU,EAAV,EAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,EAAsC,EAAtC,EAA0C,EAA1C,EAA8C,EAA9C,CAAP;EACD,GAJW;;EAMZE,gBAAc,sBAAUH,CAAV,EAAa;EACzB,QAAII,MAAM,CAAV;EACA,SAAK,IAAIvX,IAAI,CAAb,EAAgBA,IAAImX,EAAEK,QAAF,EAApB,EAAkC,EAAExX,CAApC,EAAuC;EACrCuX,aAAON,MAAMC,WAAN,CAAkBC,CAAlB,EAAqBnX,CAArB,CAAP;EACD;EACD,WAAOuX,MAAMJ,EAAEM,OAAF,EAAb;EACD,GAZW;;EAcZ;EACA;EACAC,iBAAe,uBAAUP,CAAV,EAAaQ,QAAb,EAAuB;EACpC;EACA,QAAMC,MAAM,KAAKN,YAAL,CAAkBH,CAAlB,KAAwBQ,WAAWR,EAAEU,MAAF,EAAnC,CAAZ;EACA;EACA,QAAMC,OAAO,IAAIC,IAAJ,CAASZ,EAAEa,WAAF,EAAT,EAA0B,CAA1B,EAA6B,CAA7B,CAAb;EACA,QAAM/a,OAAQ,IAAI6a,KAAKD,MAAL,EAAJ,GAAoBF,QAAlC;EACA,WAAOM,QAAQC,GAAR,CAAY7Q,KAAKqO,KAAL,CAAW,CAACkC,MAAM3a,IAAP,IAAe,CAA1B,IAA+B,CAA3C,EAA8C,CAA9C,CAAP;EACD,GAvBW;;EAyBZoa,cAAY,oBAAUF,CAAV,EAAa;EACvB,QAAMgB,OAAOhB,EAAEa,WAAF,EAAb;EACA,WAAO,CAAC,EAAE,CAACG,OAAO,CAAR,MAAe,CAAf,KAAqBA,OAAO,GAAP,IAAeA,OAAO,GAAP,KAAe,CAAf,IAAoBA,IAAxD,CAAF,CAAR;EACD,GA5BW;;EA8BZC,aAAW,mBAAUjB,CAAV,EAAa;EACtB,QAAMhS,MAAMgS,EAAEM,OAAF,GAAY/Y,QAAZ,EAAZ;EACA,QAAM+O,QAAQ4K,SAASlT,IAAI/E,KAAJ,CAAU,CAAC,CAAX,CAAT,CAAd;EACA,WAAO4W,SAASvJ,KAAT,KAAmBuJ,SAAS,SAAT,CAA1B;EACD,GAlCW;;EAoCZsB,WAAS,iBAAUnB,CAAV,EAAa;EACpB,WAAOkB,SAASlB,EAAEa,WAAF,GAAgBtZ,QAAhB,GAA2B6Z,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAT,EAAqD,EAArD,CAAP;EACD;EAtCW,CAAd;;EAyCA,IAAMN,UAAU;EACdC,OAAK,aAAUnb,KAAV,EAAiBgN,IAAjB,EAAuByO,EAAvB,EAA2B;EAC9B,QAAI,CAACA,EAAL,EAASA,KAAK,GAAL;EACT,QAAI1b,SAASC,MAAM2B,QAAN,EAAb;EACA,QAAIwZ,MAAMnO,OAAOjN,OAAO6C,MAAxB;;EAEA,WAAOuY,QAAQ,CAAf,EAAkB;EAChBpb,eAAS0b,KAAK1b,MAAd;EACD;;EAED,WAAOA,MAAP;EACD;EAXa,CAAhB;;EAcA,IAAM2b,cAAc;EAClB1N,KAAG,WAAUoM,CAAV,EAAa;EACd,WAAOJ,cAAcI,EAAEU,MAAF,EAAd,CAAP;EACD,GAHiB;EAIlBa,KAAG,WAAUvB,CAAV,EAAa;EACd,WAAOP,SAASO,EAAEU,MAAF,EAAT,CAAP;EACD,GANiB;EAOlBc,KAAG,WAAUxB,CAAV,EAAa;EACd,WAAON,gBAAgBM,EAAEK,QAAF,EAAhB,CAAP;EACD,GATiB;EAUlBoB,KAAG,WAAUzB,CAAV,EAAa;EACd,WAAOR,WAAWQ,EAAEK,QAAF,EAAX,CAAP;EACD,GAZiB;EAalBqB,KAAG,WAAU1B,CAAV,EAAa;EACd,WAAOA,EAAE2B,cAAF,EAAP;EACD,GAfiB;EAgBlBC,KAAG,WAAU5B,CAAV,EAAa;EACd,WAAOF,MAAMqB,OAAN,CAAcnB,CAAd,CAAP;EACD,GAlBiB;EAmBlBA,KAAG,WAAUA,EAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,GAAEM,OAAF,EAAZ,EAAyB,CAAzB,CAAP;EACD,GArBiB;EAsBlB7Q,KAAG,WAAUuQ,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAEM,OAAF,EAAZ,EAAyB,CAAzB,EAA4B,GAA5B,CAAP;EACD,GAxBiB;EAyBlBuB,KAAG,WAAU7B,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAE8B,QAAF,EAAZ,EAA0B,CAA1B,CAAP;EACD,GA3BiB;EA4BlBC,KAAG,WAAU/B,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAE8B,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,CAAP;EACD,GA9BiB;EA+BlBvP,KAAG,WAAUyN,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYjB,MAAMK,YAAN,CAAmBH,CAAnB,CAAZ,EAAmC,CAAnC,CAAP;EACD,GAjCiB;EAkClB1U,KAAG,WAAU0U,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAE8B,QAAF,EAAZ,EAA0B,CAA1B,EAA6B,GAA7B,CAAP;EACD,GApCiB;EAqClBvR,KAAG,WAAUyP,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAE8B,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,EAAwC,GAAxC,CAAP;EACD,GAvCiB;EAwClBE,KAAG,WAAUhC,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAEiC,eAAF,EAAZ,EAAiC,CAAjC,CAAP;EACD,GA1CiB;EA2ClBC,KAAG,WAAUlC,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAEK,QAAF,KAAe,CAA3B,EAA8B,CAA9B,CAAP;EACD,GA7CiB;EA8ClB8B,KAAG,WAAUnC,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAEoC,UAAF,EAAZ,EAA4B,CAA5B,CAAP;EACD,GAhDiB;EAiDlB9F,KAAG,WAAU0D,CAAV,EAAa;EACd,WAAQA,EAAE8B,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;EACD,GAnDiB;EAoDlBO,KAAG,WAAUrC,CAAV,EAAa;EACd,WAAQA,EAAE8B,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;EACD,GAtDiB;EAuDlBQ,KAAG,WAAUtC,CAAV,EAAa;EACd,WAAOF,MAAMmB,SAAN,CAAgBjB,CAAhB,CAAP;EACD,GAzDiB;EA0DlBjF,KAAG,WAAUiF,CAAV,EAAa;EACd,WAAO9P,KAAKqS,KAAL,CAAWvC,EAAEwC,OAAF,KAAc,IAAzB,CAAP;EACD,GA5DiB;EA6DlBC,KAAG,WAAUzC,CAAV,EAAa;EACd,WAAOc,QAAQC,GAAR,CAAYf,EAAE0C,UAAF,EAAZ,EAA4B,CAA5B,CAAP;EACD,GA/DiB;EAgElBC,KAAG,WAAU3C,CAAV,EAAa;EACd,WAAOA,EAAEU,MAAF,MAAc,CAArB;EACD,GAlEiB;EAmElBkC,KAAG,WAAU5C,CAAV,EAAa;EACd,WAAOF,MAAMS,aAAN,CAAoBP,CAApB,EAAuB,CAAvB,CAAP;EACD,GArEiB;EAsElB6C,KAAG,WAAU7C,CAAV,EAAa;EACd,WAAOA,EAAEU,MAAF,EAAP;EACD,GAxEiB;EAyElBoC,KAAG,WAAU9C,CAAV,EAAa;EACd,WAAOF,MAAMS,aAAN,CAAoBP,CAApB,EAAuB,CAAvB,CAAP;EACD,GA3EiB;EA4ElBtG,KAAG,WAAUsG,CAAV,EAAa;EACd,WAAOA,EAAE+C,kBAAF,EAAP;EACD,GA9EiB;EA+ElBC,KAAG,WAAUhD,CAAV,EAAa;EACd,WAAOA,EAAEiD,kBAAF,EAAP;EACD,GAjFiB;EAkFlBC,KAAG,WAAUlD,CAAV,EAAa;EACd,WAAOA,EAAEa,WAAF,GAAgBtZ,QAAhB,GAA2B6Z,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAP;EACD,GApFiB;EAqFlB+B,KAAG,WAAUnD,CAAV,EAAa;EACd,WAAOA,EAAEa,WAAF,EAAP;EACD,GAvFiB;EAwFlBuC,KAAG,WAAUpD,CAAV,EAAa;EACd,QAAMqD,KAAKrD,EAAEsD,iBAAF,KAAwB,EAAxB,GAA6B,GAAxC;EACA,WAAO,CAACD,KAAK,CAAL,GAAS,GAAT,GAAe,GAAhB,IAAuBvC,QAAQC,GAAR,CAAY7Q,KAAKqT,GAAL,CAASF,EAAT,CAAZ,EAA0B,CAA1B,CAA9B;EACD,GA3FiB;EA4FlB,OAAK,aAAY;EACf,WAAO,GAAP;EACD;EA9FiB,CAApB;EAgGA/B,YAAY/G,CAAZ,GAAgB+G,YAAYE,CAA5B;EACAF,YAAYkC,CAAZ,GAAgBlC,YAAYU,CAA5B;;AAEA,EAAe,mBAAUhC,CAAV,EAAayD,MAAb,EAAqB;EAClC,MAAIlK,SAAS,EAAb;EACA,MAAImK,YAAYD,MAAhB;;EAEA,SAAO,IAAP,EAAa;EACX,QAAMrM,IAAI,KAAV;EACA,QAAMuM,UAAUvM,EAAE/I,IAAF,CAAOqV,SAAP,CAAhB;;EAEA;EACA,QAAI,CAACC,OAAL,EAAc;EACZ,aAAOpK,SAASmK,SAAhB;EACD;;EAED;EACAnK,cAAUmK,UAAUza,KAAV,CAAgB,CAAhB,EAAmBmO,EAAEf,SAAF,GAAc,CAAjC,CAAV;EACAqN,gBAAYA,UAAUza,KAAV,CAAgBmO,EAAEf,SAAlB,CAAZ;;EAEA;EACA,QAAMgL,KAAKsC,QAAQ,CAAR,EAAW3a,MAAX,CAAkB,CAAlB,CAAX;EACA,QAAM4a,OAAOtC,YAAYD,EAAZ,CAAb;EACA9H,cAAUqK,OAAOA,KAAKngB,IAAL,CAAU,IAAV,EAAgBuc,CAAhB,CAAP,GAA4B,MAAMqB,EAA5C;EACD;EACF;;ECjMD,IAAMwC,YAAY;EAChB,OAAK,OADW;EAEhB,OAAK,MAFW;EAGhB,OAAK,MAHW;EAIhB,OAAK,OAJW;EAKhB,OAAK;EALW,CAAlB;EAOA,IAAMC,cAAc;EAClB,WAAS,GADS;EAElB,UAAQ,GAFU;EAGlB,UAAQ,GAHU;EAIlB,WAAS,GAJS;EAKlB,WAAS;EALS,CAApB;;EAQA,IAAMrL,UAAU;EACd,SAAO;EAAA,WAAKvI,KAAKqT,GAAL,CAAS3R,CAAT,CAAL;EAAA,GADO;EAEd,YAAU,gBAACA,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,IAAIrO,GAAhB;EAAA,GAFI;EAGd,gBAAc;EAAA,WAAOgH,YAAUyD,GAAV,EAAehF,MAAf,CAAsB,CAAtB,EAAyB+a,WAAzB,KAAyC/V,IAAI/E,KAAJ,CAAU,CAAV,CAAhD;EAAA,GAHA;EAId,UAAQ;EAAA,WAAKiH,KAAK8T,IAAL,CAAUpS,CAAV,CAAL;EAAA,GAJM;EAKd,YAAU,gBAACA,CAAD,EAAIrO,GAAJ;EAAA,WAAY6G,MAAM9I,SAAN,CAAgB2iB,MAAhB,CAAuBxgB,IAAvB,CAA4BmO,CAA5B,EAA+BrO,GAA/B,CAAZ;EAAA,GALI;EAMd,UAAQ,cAACqO,CAAD,EAAIrO,GAAJ,EAAY;EAClB,QAAI2gB,OAAOtS,CAAX;EACA,QAAIA,MAAM,KAAV,EAAiB;EACfsS,aAAO,IAAItD,IAAJ,EAAP;EACD,KAFD,MAEO,IAAIrR,QAAA,CAAWqC,CAAX,CAAJ,EAAmB;EACxBsS,aAAO,IAAItD,IAAJ,CAAShP,CAAT,CAAP;EACD;EACD,WAAOuS,YAAYD,IAAZ,IAAoBE,SAASF,IAAT,EAAe3gB,GAAf,CAApB,GAA0CqO,CAAjD;EACD,GAda;EAed,aAAW,kBAACA,CAAD,EAAIrO,GAAJ;EAAA,WAAY4T,SAASvF,CAAT,IAAcA,CAAd,GAAkBrO,GAA9B;EAAA,GAfG;EAgBd,gBAAc,oBAACqO,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,IAAIrO,GAAhB;EAAA,GAhBA;EAiBd,cAAY;EAAA,WAAKqO,EAAElD,WAAF,EAAL;EAAA,GAjBE;EAkBd,YAAU2V,MAlBI;;EAoBd,iBAAe;EAAA,WAAOA,OAAOC,SAAStW,GAAT,CAAP,CAAP;EAAA,GApBD;EAqBd,WAAS;EAAA,WAAK4D,EAAE,CAAF,CAAL;EAAA,GArBK;EAsBd,WAAS;EAAA,WAAK1B,KAAKqO,KAAL,CAAW3M,CAAX,CAAL;EAAA,GAtBK;EAuBd,UAAQ,cAACA,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,EAAEnB,IAAF,CAAOlN,QAAQ9B,SAAR,GAAoB,GAApB,GAA0B8B,GAAjC,CAAZ;EAAA,GAvBM;EAwBd,UAAQ;EAAA,WAAKgM,IAAA,CAAOqC,CAAP,CAAL;EAAA,GAxBM;EAyBd,YAAU;EAAA,WAAKrH,YAAUqH,CAAV,EAAasC,OAAb,CAAqB,MAArB,EAA6B,EAA7B,CAAL;EAAA,GAzBI;EA0Bd,SAAO,aAACtI,GAAD,EAAMrI,GAAN;EAAA,WAAcqI,IAAI0E,GAAJ,CAAQ;EAAA,aAAKsB,EAAErO,GAAF,CAAL;EAAA,KAAR,CAAd;EAAA,GA1BO;EA2Bd,WAASghB,UAAU,UAAC3S,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,IAAIrO,GAAhB;EAAA,GAAV,CA3BK;EA4Bd,YAAUghB,UAAU,UAAC3S,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,IAAIrO,GAAhB;EAAA,GAAV,CA5BI;EA6Bd,mBAAiB;EAAA,WAAKqO,EAAEsC,OAAF,CAAU,KAAV,EAAiB,QAAjB,CAAL;EAAA,GA7BH;EA8Bd,UAAQqQ,UAAU,UAAC3S,CAAD,EAAIrO,GAAJ;EAAA,WAAYkL,OAAOmD,CAAP,IAAYnD,OAAOlL,GAAP,CAAxB;EAAA,GAAV,CA9BM;EA+Bd,aAAW,iBAACqO,CAAD,EAAIrO,GAAJ;EAAA,WAAYA,MAAMqO,CAAlB;EAAA,GA/BG;EAgCd,YAAU,gBAACA,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,EAAE5B,KAAF,CAAQzM,GAAR,EAAakN,IAAb,CAAkB,EAAlB,CAAZ;EAAA,GAhCI;EAiCd,kBAAgB,sBAACmB,CAAD,EAAIrB,CAAJ;EAAA,WAAUqB,EAAEsC,OAAF,CAAU3D,CAAV,EAAa,EAAb,CAAV;EAAA,GAjCF;EAkCd,aAAW,iBAACqB,CAAD,EAAI4S,OAAJ,EAAaC,WAAb;EAAA,WACTla,YAAUqH,CAAV,EAAa5B,KAAb,CAAmBwU,OAAnB,EAA4B/T,IAA5B,CAAiCgU,WAAjC,CADS;EAAA,GAlCG;EAoCd,mBAAiB,uBAAC7S,CAAD,EAAI8S,IAAJ,EAAUC,IAAV;EAAA,WAAmBpa,YAAUqH,CAAV,EAAasC,OAAb,CAAqBwQ,IAArB,EAA2BC,IAA3B,CAAnB;EAAA,GApCH;EAqCd,aAAW;EAAA,WAAK/S,EAAErJ,OAAF,EAAL;EAAA,GArCG;EAsCd,WAAS,eAACqJ,CAAD,EAAIrO,GAAJ,EAAY;EACnB,QAAMqhB,MAAM1U,KAAK2U,GAAL,CAAS,EAAT,EAAathB,OAAO,CAApB,CAAZ;EACA,WAAO2M,KAAKqS,KAAL,CAAW3Q,IAAIgT,GAAf,EAAoBrhB,GAApB,IAA2BqhB,GAAlC;EACD,GAzCa;EA0Cd,YAAU;EAAA,WAAOra,YAAUyD,GAAV,EAAekG,OAAf,CAAuB,MAAvB,EAA+B,EAA/B,CAAP;EAAA,GA1CI;EA2Cd,UAAQ;EAAA,WAAKtC,EAAEpJ,MAAP;EAAA,GA3CM;EA4Cd,WAAS,eAACoJ,CAAD,EAAI3B,KAAJ,EAAWzH,MAAX,EAAsB;EAC7B,QAAIA,WAAW/G,SAAf,EAA0B+G,SAAS,CAAT;EAC1B,WAAOoJ,EAAE3I,KAAF,CAAQgH,KAAR,EAAeA,QAAQzH,MAAvB,CAAP;EACD,GA/Ca;EAgDd,UAAQ,cAACoJ,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,EAAEkT,IAAF,CAAOvhB,GAAP,CAAZ;EAAA,GAhDM;EAiDd,WAAS,eAACqO,CAAD,EAAIrO,GAAJ;EAAA,WAAYgH,YAAUqH,CAAV,EAAa5B,KAAb,CAAmBzM,GAAnB,CAAZ;EAAA,GAjDK;EAkDd,WAAS,eAACqO,CAAD;EAAA,WAAOrH,YAAUqH,CAAV,EAAa6E,IAAb,EAAP;EAAA,GAlDK;EAmDd,gBAAc;EAAA,WAAKlM,YAAUqH,CAAV,EAAasC,OAAb,CAAqB,2DAArB,EAAkF,EAAlF,CAAL;EAAA,GAnDA;EAoDd,oBAAkB;EAAA,WAAK3J,YAAUqH,CAAV,EAAasC,OAAb,CAAqB,KAArB,EAA4B,EAA5B,CAAL;EAAA,GApDJ;EAqDd,WAAS,eAACtC,CAAD,EAAIrO,GAAJ;EAAA,WAAYqO,IAAIrO,GAAhB;EAAA,GArDK;EAsDd,cAAY,kBAACqO,CAAD,EAAIrB,CAAJ,EAAOwU,CAAP,EAAa;EACvBnT,QAAIrH,YAAUqH,CAAV,CAAJ;EACAmT,QAAKA,MAAMtjB,SAAP,GAAoB,KAApB,GAA4BsjB,CAAhC;EACAxU,QAAIA,KAAK,EAAT;EACA,QAAIqB,EAAEpJ,MAAF,IAAY+H,CAAhB,EAAmB,OAAOqB,CAAP;EACnB,WAAOA,EAAEiJ,MAAF,CAAS,CAAT,EAAYtK,IAAIwU,EAAEvc,MAAlB,IAA4Buc,CAAnC;EACD,GA5Da;EA6Dd,mBAAiB,uBAACnT,CAAD,EAAIrB,CAAJ,EAAOwU,CAAP,EAAa;EAC5B,QAAIA,MAAMtjB,SAAV,EAAqBsjB,IAAI,KAAJ;EACrB,QAAMnZ,MAAMgG,EAAE5B,KAAF,CAAQ,GAAR,CAAZ;EACA,QAAIiL,MAAMrP,IAAI3C,KAAJ,CAAU,CAAV,EAAasH,CAAb,EAAgBE,IAAhB,CAAqB,GAArB,CAAV;EACA,QAAI7E,IAAIpD,MAAJ,GAAa+H,CAAjB,EAAoB0K,OAAO8J,CAAP;EACpB,WAAO9J,GAAP;EACD,GAnEa;EAoEd,UAAQ,iBAAUrP,GAAV,EAAe;EACrB,QAAM+W,IAAI,EAAV;EACA,WAAO,CAAC/W,OAAO,EAAR,EAAY+B,MAAZ,CAAmB,eAAO;EAC/B,UAAIgV,EAAEnhB,cAAF,CAAiB2P,GAAjB,CAAJ,EAA2B;EACzB,eAAO,KAAP;EACD;EACDwR,QAAExR,GAAF,IAAS,IAAT;EACA,aAAO,IAAP;EACD,KANM,CAAP;EAOD,GA7Ea;EA8Ed,YAAU;EAAA,WAAO5G,YAAUyD,GAAV,EAAe+V,WAAf,EAAP;EAAA,GA9EI;EA+Ed,gBAAc;EAAA,WAAKrK,EAAE1J,KAAF,CAAQ,GAAR,EAAaM,GAAb,CAAiB0U,kBAAjB,EAAqCvU,IAArC,CAA0C,GAA1C,CAAL;EAAA,GA/EA;EAgFd,gBAAc;EAAA,WAAKiJ,EAAE1J,KAAF,CAAQ,GAAR,EAAaM,GAAb,CAAiB2U,kBAAjB,EAAqCxU,IAArC,CAA0C,GAA1C,CAAL;EAAA;EAhFA,CAAhB;;EAmFA,SAAS4T,MAAT,CAAiBrW,GAAjB,EAAsB;EACpB,SAAOzD,YAAUyD,GAAV,EAAekG,OAAf,CAAuB,YAAvB,EAAqC;EAAA,WAAK2P,UAAU3B,CAAV,CAAL;EAAA,GAArC,CAAP;EACD;;EAED,SAASoC,QAAT,CAAmBtW,GAAnB,EAAwB;EACtB,SAAOzD,YAAUyD,GAAV,EAAekG,OAAf,CAAuB,wBAAvB,EAAiD;EAAA,WAAK4P,YAAY5B,CAAZ,CAAL;EAAA,GAAjD,CAAP;EACD;;EAED,SAASgD,QAAT,CAAmBtT,CAAnB,EAAsB;EACpB,MAAM0K,IAAI,CAAC1K,IAAI,EAAL,EAAS5B,KAAT,CAAe,GAAf,CAAV;EACA,SAAQsM,EAAE9T,MAAF,GAAW,CAAZ,GAAiB8T,EAAE,CAAF,EAAK9T,MAAtB,GAA+B,CAAtC;EACD;;EAED,SAAS2c,WAAT,CAAsB5U,CAAtB,EAAyB6G,CAAzB,EAA4B;EAC1B,SAAOlH,KAAKC,GAAL,CAAS+U,SAAS3U,CAAT,CAAT,EAAsB2U,SAAS9N,CAAT,CAAtB,CAAP;EACD;;EAED,SAAS7M,WAAT,CAAoBjH,GAApB,EAAyB;EACvB,SAAOA,MAAM,EAAb;EACD;;EAED,SAASihB,SAAT,CAAoBnK,EAApB,EAAwB;EACtB,SAAO,UAAC7J,CAAD,EAAI6G,CAAJ,EAAU;EACf,QAAMgO,IAAID,YAAY5U,CAAZ,EAAe6G,CAAf,CAAV;EACA,WAAOgD,GAAG7J,CAAH,EAAM6G,CAAN,EAASiO,OAAT,CAAiBD,CAAjB,CAAP;EACD,GAHD;EAID;;EAED,SAASjB,WAAT,CAAsBD,IAAtB,EAA4B;EAC1B,SAAOA,gBAAgBtD,IAAhB,IAAwB,CAAChY,MAAMsb,KAAKoB,OAAL,EAAN,CAAhC;EACD;;AAED,EAAe,SAASC,WAAT,CAAsBnK,MAAtB,EAA8B;EAC3C,SAAO7L,MAAA,CAASkJ,OAAT,EAAkB,UAACmL,IAAD,EAAO5e,IAAP;EAAA,WAAgBoW,OAAOoK,cAAP,CAAsBxgB,IAAtB,EAA4B4e,IAA5B,CAAhB;EAAA,GAAlB,CAAP;EACD;;EAED2B,YAAY9M,OAAZ,GAAsBA,OAAtB;;EC3HA,IAAMgN,UAAU;EACdxL,QAAM,cAAUf,GAAV,EAAevL,MAAf,EAAuBqG,OAAvB,EAAgC;EACpC,QAAIA,QAAQjJ,KAAZ,EAAmB;EACjB,WAAKA,KAAL,GAAa,EAAb;EACD;EACD,SAAKiJ,OAAL,GAAeA,OAAf;EACA,SAAKkF,GAAL,GAAWA,GAAX;EACA,SAAKvL,MAAL,GAAcA,MAAd;EACA,SAAK4O,MAAL,GAAcmJ,OAAOxM,GAAP,EAAYvL,MAAZ,CAAd;EACA,SAAK4N,QAAL,GAAgBoK,QAAhB;;EAEAC,SAAK,IAAL,EAAWvK,MAAX;EACA5C,gBAAQ,IAAR,EAAc4C,MAAd;;EAEA,WAAO,IAAP;EACD,GAfa;EAgBdtF,SAAO,kBAAUiB,IAAV,EAAgBjD,QAAhB,EAA0B;EAC/B,QAAMiB,SAAS6Q,KAAA,CAAgB7O,IAAhB,EAAsBjD,QAAtB,EAAgC,KAAKC,OAArC,CAAf;EACA,WAAO,KAAKuI,MAAL,CAAYxG,KAAZ,CAAkBf,MAAlB,CAAP;EACD,GAnBa;EAoBdgD,UAAQ,gBAAUpI,GAAV,EAAesB,GAAf,EAAoBkB,IAApB,EAA0B;EAChCA,WAAO7C,MAAA,CAAS,EAAT,EAAa,KAAKyE,OAAlB,EAA2B5B,IAA3B,CAAP;EACA,QAAMZ,QAAQV,OAAA,CAAcI,GAAd,EAAmBkB,IAAnB,CAAd;EACA,WAAO,KAAKmJ,QAAL,CAActD,eAAd,CAA8BrI,GAA9B,EAAmC4B,KAAnC,CAAP;EACD,GAxBa;EAyBdyL;EAAA,sEAAgB,iBAAgBjG,IAAhB,EAAsB9F,GAAtB,EAA2BkB,IAA3B;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,qBACI,KAAK2D,KAAL,CAAWiB,IAAX,CADJ;;EAAA;EACRpH,iBADQ;EAAA,+CAEP,KAAKoI,MAAL,CAAYpI,GAAZ,EAAiBsB,GAAjB,EAAsBkB,IAAtB,CAFO;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAhB;;EAAA;EAAA;EAAA;;EAAA;EAAA,KAzBc;EA6BdiL;EAAA,uEAAa,kBAAgBpO,IAAhB,EAAsBiE,IAAtB;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,qBACYiF,OAAA,CAAiBlJ,IAAjB,EAAuBiE,IAAvB,EAA6B,KAAKc,OAAlC,CADZ;;EAAA;EACLD,sBADK;EAAA,gDAEJ,KAAK+R,YAAL,CAAkB/R,QAAlB,yDAA4B;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,+BACfoE,IAAA,CAAcpE,QAAd,CADe;;EAAA;EAC3B/F,2BAD2B;EAAA,0DAE1B,MAAK+H,KAAL,CAAW/H,GAAX,EAAgB+F,QAAhB,CAF0B;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,eAA5B,GAFI;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAb;;EAAA;EAAA;EAAA;;EAAA;EAAA,KA7Bc;EAoCdgS;EAAA,uEAAY,kBAAgB9W,IAAhB,EAAsBiC,GAAtB,EAA2BkB,IAA3B;EAAA;EAAA;EAAA;EAAA;EAAA;EACVA,qBAAO7C,MAAA,CAAS,EAAT,EAAa6C,IAAb,CAAP;EADU;EAAA,qBAEc,KAAKiL,WAAL,CAAiBpO,IAAjB,EAAuBmD,KAAKc,IAA5B,CAFd;;EAAA;EAEJgF,uBAFI;EAAA,gDAGH,KAAKF,MAAL,CAAYE,SAAZ,EAAuBhH,GAAvB,EAA4BkB,IAA5B,CAHG;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAZ;;EAAA;EAAA;EAAA;;EAAA;EAAA,KApCc;EAyCd0T;EAAA,uEAAc,kBAAgBxd,GAAhB,EAAqB0d,MAArB;EAAA;EAAA;EAAA;EAAA;EAAA;EACNC,0BADM,GACS,KAAKjS,OAAL,CAAajJ,KADtB;;EAAA,oBAERkb,gBAAgB,KAAKlb,KAAL,CAAWzC,GAAX,CAFR;EAAA;EAAA;EAAA;;EAAA,gDAGH,KAAKyC,KAAL,CAAWzC,GAAX,CAHG;;EAAA;EAAA;EAAA,qBAKQ0d,QALR;;EAAA;EAKNpgB,mBALM;;EAMZ,kBAAIqgB,YAAJ,EAAkB;EAChB,qBAAKlb,KAAL,CAAWzC,GAAX,IAAkB1C,KAAlB;EACD;EARW,gDASLA,KATK;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAd;;EAAA;EAAA;EAAA;;EAAA;EAAA,KAzCc;EAoDdiS,aAAW,sBAAU7J,GAAV,EAAewD,KAAf,EAAsB;EAC/B,QAAM5B,MAAM,KAAK2M,MAAL,CAAY3B,UAAZ,CAAuB5M,IAAIyI,IAAJ,EAAvB,CAAZ;EACA,WAAO,KAAK8E,QAAL,CAAc1D,SAAd,CAAwBjI,GAAxB,EAA6B4B,KAA7B,CAAP;EACD,GAvDa;EAwDdgU,kBAAgB,wBAAUxgB,IAAV,EAAgB2I,MAAhB,EAAwB;EACtC,WAAO,KAAKA,MAAL,CAAYsL,QAAZ,CAAqBjU,IAArB,EAA2B2I,MAA3B,CAAP;EACD,GA1Da;EA2DdwO,eAAa,qBAAUnX,IAAV,EAAgBkU,GAAhB,EAAqB;EAChC,WAAO,KAAKA,GAAL,CAASD,QAAT,CAAkBjU,IAAlB,EAAwBkU,GAAxB,CAAP;EACD,GA7Da;EA8DdgN,UAAQ,gBAAUA,OAAV,EAAkB;EACxB,WAAOA,QAAOziB,IAAP,CAAY,IAAZ,EAAkB4X,MAAlB,CAAP;EACD,GAhEa;EAiEd8K,WAAS,iBAAU/T,IAAV,EAAgB;EACvBA,WAAOA,QAAQ,EAAf;EACA,QAAM1P,OAAO,IAAb;EACA,WAAO,UAAU0jB,QAAV,EAAoBlV,GAApB,EAAyBkJ,EAAzB,EAA6B;EAClC3H,aAAOlD,OAAA,CAAU,KAAK2D,IAAf,KAAwB3D,QAAA,CAAW,KAAK2D,IAAhB,CAA/B,EACE,+CADF;EAEAd,WAAKc,IAAL,GAAY,KAAKA,IAAjB;EACAxQ,WAAKqjB,UAAL,CAAgBK,QAAhB,EAA0BlV,GAA1B,EAA+BkB,IAA/B,EAAqCtM,IAArC,CAA0C;EAAA,eAAQsU,GAAG,IAAH,EAASpD,IAAT,CAAR;EAAA,OAA1C,EAAkEoD,EAAlE;EACD,KALD;EAMD;EA1Ea,CAAhB;;EA6EA,SAASiM,oBAAT,CAA+BzgB,KAA/B,EAAsC;EACpC,MAAI2J,OAAA,CAAU3J,KAAV,CAAJ,EAAsB,OAAOA,KAAP;EACtB,MAAI2J,QAAA,CAAW3J,KAAX,CAAJ,EAAuB,OAAO,CAACA,KAAD,CAAP;EACvB,QAAM,IAAIuB,SAAJ,CAAc,mBAAmBvB,KAAjC,CAAN;EACD;;AAED,EAAe,SAASyV,MAAT,CAAiBrH,OAAjB,EAA0B;EACvCA,YAAUzE,MAAA,CAAS;EACjB2D,UAAM,CAAC,GAAD,CADW;EAEjBnI,WAAO,KAFU;EAGjBqJ,aAAS,EAHQ;EAIjBrB,qBAAiB,IAJA;EAKjB4C,oBAAgB,KALC;EAMjBH,mBAAe,KANE;EAOjBI,sBAAkB,KAPD;EAQjBH,qBAAiB,KARA;EASjBR,YAAQ,IATS;EAUjBjC,oBAAgB,KAVC;EAWjBX,sBAAkB;EAXD,GAAT,EAYP2B,OAZO,CAAV;EAaAA,UAAQd,IAAR,GAAemT,qBAAqBrS,QAAQd,IAA7B,CAAf;;EAEA,MAAMuL,SAASlP,MAAA,CAASkW,OAAT,CAAf;EACAhH,SAAOxE,IAAP,CAAYH,KAAZ,EAAmBC,OAAO/F,OAAP,CAAnB,EAAoCA,OAApC;EACA,SAAOyK,MAAP;EACD;;EAEDpD,OAAOiL,OAAP,GAAiBjL,MAAjB;EACAA,OAAOlE,QAAP,GAAkBA,QAAlB;EACAkE,OAAOtD,OAAP,GAAiBA,OAAjB;EACAsD,OAAO/D,OAAP,GAAiBA,OAAjB;EACA+D,OAAOxD,SAAP,GAAmBA,SAAnB;EACAwD,OAAOa,KAAP,GAAe;EACb1M,wBADa;EAEbF,sCAFa;EAGbO,oCAHa;EAIbC,gCAJa;EAKb0M,eAAa,EALA;EAMbC,gBAAc,EAND;EAObsB,kBAAgB,EAPH;EAQbT,kBAAgB;EARH,CAAf;;;;;;;;"}