{"version":3,"file":"mock.mjs","sources":["../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTrim.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toNumber.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toFinite.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toInteger.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_apply.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_shortOut.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSetToString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyObject.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overRest.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRest.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIterateeCall.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createAssigner.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeysIn.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeysIn.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/assignIn.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSlice.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castSlice.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicode.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_asciiToArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_unicodeToArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToArray.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createCaseFirst.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/upperFirst.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/capitalize.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castFunction.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isString.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseValues.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/values.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsRegExp.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isRegExp.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRandom.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRange.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createRange.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/range.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_shuffleSelf.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayShuffle.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseShuffle.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/shuffle.js","../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/times.js","../src/mock/utils/type.js","../src/mock/utils/extend.js","../src/mock/utils/each.js","../src/mock/utils/heredoc.js","../src/mock/util.js","../src/mock/random.ts","../src/mock/constant.js","../packages/game-random/dist/index.js","../src/mock/random/basic/number.js","../src/mock/parser.js","../src/mock/random/helper.js","../src/mock/handle/array.js","../src/mock/random/basic/boolean.js","../src/mock/random/basic/character.js","../src/mock/random/basic/string.js","../src/mock/handle/boolean.js","../src/mock/handle/function.js","../src/mock/handle/number.js","../src/mock/handle/object.js","../src/mock/regexp/parser.js","../src/mock/regexp/handler.js","../src/mock/handle/regexp.js","../src/mock/handle/path.js","../src/mock/handle/placeholder.js","../src/mock/handle/string.js","../src/mock/handle/gen.js","../src/mock/handler.js","../src/mock/schema/schema.js","../src/mock/valid/valid.js","../src/mock/_mocked.js","../src/mock/xhr/ajax-tools.js","../src/mock/xhr/fetch/src/utils/is.js","../src/mock/xhr/fetch/src/INTERNALS.js","../src/mock/xhr/fetch/src/body/consumeBody.js","../src/mock/xhr/fetch/src/body.js","../src/mock/xhr/fetch/src/body/exactContentType.js","../src/mock/xhr/fetch/src/utils/is-redirect.js","../src/mock/xhr/fetch/src/response.js","../src/mock/xhr/fetch/fetch.js","../src/mock/xhr/XMLHttpRequest/constant.js","../src/mock/xhr/XMLHttpRequest/xhr.js","../src/mock/xhr/index.js","../src/mock/mock.ts","../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js","../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js","../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js","../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js","../node_modules/.pnpm/color@3.1.3/node_modules/color/index.js","../src/mock/random/color/color_dict.js","../src/mock/random/color.js","../src/mock/random/name.js","../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","../src/mock/random/address_dict.js","../src/mock/random/date/_patternLetters.js","../src/mock/random/date.js","../src/mock/random/misc/id.js","../src/mock/random/misc/guid.js","../src/mock/random/misc.js","../src/mock/random/text/text_en.js","../src/mock/random/text/text-ch.js","../src/mock/random/web/web_dict.js","../src/mock/random/web/web_func.js","../src/mock/random/image.js","../src/mock/random/address.js","../src/mock/random/file.js","../src/registerAll.ts","../src/mock.ts"],"sourcesContent":["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n  copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nexport default baseValues;\n","import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nexport default baseIsRegExp;\n","import baseIsRegExp from './_baseIsRegExp.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nexport default isRegExp;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n    nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n  return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nexport default baseRandom;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nexport default baseRange;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n  var index = -1,\n      length = array.length,\n      lastIndex = length - 1;\n\n  size = size === undefined ? length : size;\n  while (++index < size) {\n    var rand = baseRandom(index, lastIndex),\n        value = array[rand];\n\n    array[rand] = array[index];\n    array[index] = value;\n  }\n  array.length = size;\n  return array;\n}\n\nexport default shuffleSelf;\n","import copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n  return shuffleSelf(copyArray(array));\n}\n\nexport default arrayShuffle;\n","import shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n  return shuffleSelf(values(collection));\n}\n\nexport default baseShuffle;\n","import arrayShuffle from './_arrayShuffle.js';\nimport baseShuffle from './_baseShuffle.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n  var func = isArray(collection) ? arrayShuffle : baseShuffle;\n  return func(collection);\n}\n\nexport default shuffle;\n","import baseTimes from './_baseTimes.js';\nimport castFunction from './_castFunction.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n *  _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\nfunction times(n, iteratee) {\n  n = toInteger(n);\n  if (n < 1 || n > MAX_SAFE_INTEGER) {\n    return [];\n  }\n  var index = MAX_ARRAY_LENGTH,\n      length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n  iteratee = castFunction(iteratee);\n  n -= MAX_ARRAY_LENGTH;\n\n  var result = baseTimes(length, iteratee);\n  while (++index < n) {\n    iteratee(index);\n  }\n  return result;\n}\n\nexport default times;\n","// 使用 lodash 提供的方式\nimport { isObject, isArray } from 'lodash-es';\nexport function type(obj) {\n    return obj === null || obj === undefined\n        ? String(obj)\n        : Object.prototype.toString\n              .call(obj)\n              .match(/\\[object (\\w+)\\]/)[1]\n              .toLowerCase();\n}\n\nexport function isObjectOrArray(value) {\n    return isObject(value) || isArray(value);\n}\n\nexport function isNumeric(value) {\n    return !isNaN(parseFloat(value)) && isFinite(value);\n}\nexport { isString, isObject, isArray, isRegExp, isFunction } from 'lodash-es';\n","// import { isObject, isArray } from \"./type.js\";\n// export function extend() {\n//     var target = arguments[0] || {},\n//         i = 1,\n//         length = arguments.length,\n//         options,\n//         name,\n//         src,\n//         copy,\n//         clone;\n\n//     if (length === 1) {\n//         target = this;\n//         i = 0;\n//     }\n\n//     for (; i < length; i++) {\n//         options = arguments[i];\n//         if (!options) continue;\n\n//         for (name in options) {\n//             src = target[name];\n//             copy = options[name];\n\n//             if (target === copy) continue;\n//             if (copy === undefined) continue;\n\n//             if (isArray(copy) || isObject(copy)) {\n//                 if (isArray(copy)) clone = src && isArray(src) ? src : [];\n//                 if (isObject(copy)) clone = src && isObject(src) ? src : {};\n\n//                 target[name] = extend(clone, copy);\n//             } else {\n//                 target[name] = copy;\n//             }\n//         }\n//     }\n\n//     return target;\n// }\n/* eslint-disable no-invalid-this*/\nimport { assignIn } from 'lodash-es';\nexport function extend(...args) {\n    return assignIn(this, ...args);\n}\n","import { type } from '../utils/type';\nexport function each(obj, iterator, context) {\n    // each\n    let i;\n    let key;\n    if (type(obj) === 'number') {\n        // 表示重复几次\n        [...Array(obj).keys()].forEach((index) => iterator(index, index));\n    } else if (obj.length === +obj.length) {\n        for (i = 0; i < obj.length; i++) {\n            if (iterator.call(context, obj[i], i, obj) === false) break;\n        }\n    } else {\n        for (key in obj) {\n            if (iterator.call(context, obj[key], key, obj) === false) break;\n        }\n    }\n}\n","/*\n    ### Mock.heredoc(fn)\n\n    * Mock.heredoc(fn)\n\n    以直观、安全的方式书写（多行）HTML 模板。\n\n    **使用示例**如下所示：\n\n        var tpl = Mock.heredoc(function() {\n            /*!\n        {{email}}{{age}}\n        <!-- Mock {\n            email: '@EMAIL',\n            age: '@INT(1,100)'\n        } -->\n            *\\/\n        })\n\n    **相关阅读**\n    * [Creating multiline strings in JavaScript](http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript)、\n*/\nexport function heredoc(fn) {\n    // 1. 移除起始的 function(){ /*!\n    // 2. 移除末尾的 */ }\n    // 3. 移除起始和末尾的空格\n    return fn\n        .toString()\n        .replace(/^[^\\/]+\\/\\*!?/, '')\n        .replace(/\\*\\/[^\\/]+$/, '')\n        .replace(/^[\\s\\xA0]+/, '')\n        .replace(/[\\s\\xA0]+$/, ''); // .trim()\n}\n","/*\n    ## Utilities\n*/\nexport { type } from './utils/type';\nexport { extend } from './utils/extend';\nexport { isObjectOrArray, isNumeric, isString, isObject, isArray, isRegExp, isFunction } from './utils/type';\nexport { each } from './utils/each';\nexport { heredoc } from './utils/heredoc';\nexport function keys(obj) {\n    return Object.keys(obj);\n}\nexport function values(obj) {\n    return Object.values(obj);\n}\nexport function noop() {}\n","/*\n    ## Mock.Random\n\n    工具类，用于生成各种随机数据。\n*/\n\nconst Random: Record<string, any> = {};\nexport default Random;\nexport const registerRandom = (name: string, fn: any) => {\n    Random[name] = fn;\n};\n","/*\n    ## Constant\n\n    常量集合。\n */\n/*\n    RE_KEY\n        'name|min-max': value\n        'name|count': value\n        'name|min-max.dmin-dmax': value\n        'name|min-max.dcount': value\n        'name|count.dmin-dmax': value\n        'name|count.dcount': value\n        'name|+step': value\n\n        1 name, 2 step, 3 range [ min, max ], 4 drange [ dmin, dmax ]\n\n    RE_PLACEHOLDER\n        placeholder(*)\n\n    [正则查看工具](http://www.regexper.com/)\n\n    #26 生成规则 支持 负数，例如 number|-100-100\n*/\nexport default {\n    GUID: 1,\n    RE_KEY: /(.+)\\|(?:\\+(\\d+)|([\\+\\-]?\\d+-?[\\+\\-]?\\d*)?(?:\\.(\\d+-?\\d*))?)/,\n    RE_RANGE: /([\\+\\-]?\\d+)-?([\\+\\-]?\\d+)?/,\n    RE_PLACEHOLDER: /\\\\*@([^@#%&()\\?\\s]+)(?:\\((.*?)\\))?/g,\n    // /\\\\*@([^@#%&()\\?\\s\\/\\.]+)(?:\\((.*?)\\))?/g\n    // RE_INDEX: /^index$/,\n    // RE_KEY: /^key$/\n};\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar alea$1 = {exports: {}};\n\n(function (module) {\n// A port of an algorithm by Johannes Baagøe <baagoe@baagoe.com>, 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe <baagoe@baagoe.org>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n  var me = this, mash = Mash();\n\n  me.next = function() {\n    var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n    me.s0 = me.s1;\n    me.s1 = me.s2;\n    return me.s2 = t - (me.c = t | 0);\n  };\n\n  // Apply the seeding algorithm from Baagoe.\n  me.c = 1;\n  me.s0 = mash(' ');\n  me.s1 = mash(' ');\n  me.s2 = mash(' ');\n  me.s0 -= mash(seed);\n  if (me.s0 < 0) { me.s0 += 1; }\n  me.s1 -= mash(seed);\n  if (me.s1 < 0) { me.s1 += 1; }\n  me.s2 -= mash(seed);\n  if (me.s2 < 0) { me.s2 += 1; }\n  mash = null;\n}\n\nfunction copy(f, t) {\n  t.c = f.c;\n  t.s0 = f.s0;\n  t.s1 = f.s1;\n  t.s2 = f.s2;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new Alea(seed),\n      state = opts && opts.state,\n      prng = xg.next;\n  prng.int32 = function() { return (xg.next() * 0x100000000) | 0; };\n  prng.double = function() {\n    return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n  };\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nfunction Mash() {\n  var n = 0xefc8249d;\n\n  var mash = function(data) {\n    data = String(data);\n    for (var i = 0; i < data.length; i++) {\n      n += data.charCodeAt(i);\n      var h = 0.02519603282416938 * n;\n      n = h >>> 0;\n      h -= n;\n      h *= n;\n      n = h >>> 0;\n      h -= n;\n      n += h * 0x100000000; // 2^32\n    }\n    return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n  };\n\n  return mash;\n}\n\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.alea = impl;\n}\n\n})(\n  commonjsGlobal,\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(alea$1));\n\nvar xor128$1 = {exports: {}};\n\n(function (module) {\n// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia.  See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  me.x = 0;\n  me.y = 0;\n  me.z = 0;\n  me.w = 0;\n\n  // Set up generator function.\n  me.next = function() {\n    var t = me.x ^ (me.x << 11);\n    me.x = me.y;\n    me.y = me.z;\n    me.z = me.w;\n    return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n  };\n\n  if (seed === (seed | 0)) {\n    // Integer seed.\n    me.x = seed;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 64; k++) {\n    me.x ^= strseed.charCodeAt(k) | 0;\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.x = f.x;\n  t.y = f.y;\n  t.z = f.z;\n  t.w = f.w;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xor128 = impl;\n}\n\n})(\n  commonjsGlobal,\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(xor128$1));\n\nvar xorwow$1 = {exports: {}};\n\n(function (module) {\n// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia.  See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  // Set up generator function.\n  me.next = function() {\n    var t = (me.x ^ (me.x >>> 2));\n    me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n    return (me.d = (me.d + 362437 | 0)) +\n       (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n  };\n\n  me.x = 0;\n  me.y = 0;\n  me.z = 0;\n  me.w = 0;\n  me.v = 0;\n\n  if (seed === (seed | 0)) {\n    // Integer seed.\n    me.x = seed;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 64; k++) {\n    me.x ^= strseed.charCodeAt(k) | 0;\n    if (k == strseed.length) {\n      me.d = me.x << 10 ^ me.x >>> 4;\n    }\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.x = f.x;\n  t.y = f.y;\n  t.z = f.z;\n  t.w = f.w;\n  t.v = f.v;\n  t.d = f.d;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xorwow = impl;\n}\n\n})(\n  commonjsGlobal,\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(xorwow$1));\n\nvar xorshift7$1 = {exports: {}};\n\n(function (module) {\n// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this;\n\n  // Set up generator function.\n  me.next = function() {\n    // Update xor generator.\n    var X = me.x, i = me.i, t, v;\n    t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n    t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n    t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n    t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n    t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n    X[i] = v;\n    me.i = (i + 1) & 7;\n    return v;\n  };\n\n  function init(me, seed) {\n    var j, X = [];\n\n    if (seed === (seed | 0)) {\n      // Seed state array using a 32-bit integer.\n      X[0] = seed;\n    } else {\n      // Seed state using a string.\n      seed = '' + seed;\n      for (j = 0; j < seed.length; ++j) {\n        X[j & 7] = (X[j & 7] << 15) ^\n            (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n      }\n    }\n    // Enforce an array length of 8, not all zeroes.\n    while (X.length < 8) X.push(0);\n    for (j = 0; j < 8 && X[j] === 0; ++j);\n    if (j == 8) X[7] = -1; else X[j];\n\n    me.x = X;\n    me.i = 0;\n\n    // Discard an initial 256 values.\n    for (j = 256; j > 0; --j) {\n      me.next();\n    }\n  }\n\n  init(me, seed);\n}\n\nfunction copy(f, t) {\n  t.x = f.x.slice();\n  t.i = f.i;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  if (seed == null) seed = +(new Date);\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (state.x) copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xorshift7 = impl;\n}\n\n})(\n  commonjsGlobal,\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(xorshift7$1));\n\nvar xor4096$1 = {exports: {}};\n\n(function (module) {\n// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated.  For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1);                        // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897);   // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C.  This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this;\n\n  // Set up generator function.\n  me.next = function() {\n    var w = me.w,\n        X = me.X, i = me.i, t, v;\n    // Update Weyl generator.\n    me.w = w = (w + 0x61c88647) | 0;\n    // Update xor generator.\n    v = X[(i + 34) & 127];\n    t = X[i = ((i + 1) & 127)];\n    v ^= v << 13;\n    t ^= t << 17;\n    v ^= v >>> 15;\n    t ^= t >>> 12;\n    // Update Xor generator array state.\n    v = X[i] = v ^ t;\n    me.i = i;\n    // Result is the combination.\n    return (v + (w ^ (w >>> 16))) | 0;\n  };\n\n  function init(me, seed) {\n    var t, v, i, j, w, X = [], limit = 128;\n    if (seed === (seed | 0)) {\n      // Numeric seeds initialize v, which is used to generates X.\n      v = seed;\n      seed = null;\n    } else {\n      // String seeds are mixed into v and X one character at a time.\n      seed = seed + '\\0';\n      v = 0;\n      limit = Math.max(limit, seed.length);\n    }\n    // Initialize circular array and weyl value.\n    for (i = 0, j = -32; j < limit; ++j) {\n      // Put the unicode characters into the array, and shuffle them.\n      if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n      // After 32 shuffles, take v as the starting w value.\n      if (j === 0) w = v;\n      v ^= v << 10;\n      v ^= v >>> 15;\n      v ^= v << 4;\n      v ^= v >>> 13;\n      if (j >= 0) {\n        w = (w + 0x61c88647) | 0;     // Weyl.\n        t = (X[j & 127] ^= (v + w));  // Combine xor and weyl to init array.\n        i = (0 == t) ? i + 1 : 0;     // Count zeroes.\n      }\n    }\n    // We have detected all zeroes; make the key nonzero.\n    if (i >= 128) {\n      X[(seed && seed.length || 0) & 127] = -1;\n    }\n    // Run the generator 512 times to further mix the state before using it.\n    // Factoring this as a function slows the main generator, so it is just\n    // unrolled here.  The weyl generator is not advanced while warming up.\n    i = 127;\n    for (j = 4 * 128; j > 0; --j) {\n      v = X[(i + 34) & 127];\n      t = X[i = ((i + 1) & 127)];\n      v ^= v << 13;\n      t ^= t << 17;\n      v ^= v >>> 15;\n      t ^= t >>> 12;\n      X[i] = v ^ t;\n    }\n    // Storing state as object members is faster than using closure variables.\n    me.w = w;\n    me.X = X;\n    me.i = i;\n  }\n\n  init(me, seed);\n}\n\nfunction copy(f, t) {\n  t.i = f.i;\n  t.w = f.w;\n  t.X = f.X.slice();\n  return t;\n}\nfunction impl(seed, opts) {\n  if (seed == null) seed = +(new Date);\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (state.X) copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xor4096 = impl;\n}\n\n})(\n  commonjsGlobal,                                     // window object or global\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(xor4096$1));\n\nvar tychei$1 = {exports: {}};\n\n(function (module) {\n// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  // Set up generator function.\n  me.next = function() {\n    var b = me.b, c = me.c, d = me.d, a = me.a;\n    b = (b << 25) ^ (b >>> 7) ^ c;\n    c = (c - d) | 0;\n    d = (d << 24) ^ (d >>> 8) ^ a;\n    a = (a - b) | 0;\n    me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n    me.c = c = (c - d) | 0;\n    me.d = (d << 16) ^ (c >>> 16) ^ a;\n    return me.a = (a - b) | 0;\n  };\n\n  /* The following is non-inverted tyche, which has better internal\n   * bit diffusion, but which is about 25% slower than tyche-i in JS.\n  me.next = function() {\n    var a = me.a, b = me.b, c = me.c, d = me.d;\n    a = (me.a + me.b | 0) >>> 0;\n    d = me.d ^ a; d = d << 16 ^ d >>> 16;\n    c = me.c + d | 0;\n    b = me.b ^ c; b = b << 12 ^ d >>> 20;\n    me.a = a = a + b | 0;\n    d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n    me.c = c = c + d | 0;\n    b = b ^ c;\n    return me.b = (b << 7 ^ b >>> 25);\n  }\n  */\n\n  me.a = 0;\n  me.b = 0;\n  me.c = 2654435769 | 0;\n  me.d = 1367130551;\n\n  if (seed === Math.floor(seed)) {\n    // Integer seed.\n    me.a = (seed / 0x100000000) | 0;\n    me.b = seed | 0;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 20; k++) {\n    me.b ^= strseed.charCodeAt(k) | 0;\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.a = f.a;\n  t.b = f.b;\n  t.c = f.c;\n  t.d = f.d;\n  return t;\n}\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); };\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.tychei = impl;\n}\n\n})(\n  commonjsGlobal,\n  module,    // present in node.js\n  (typeof undefined) == 'function'    // present with an AMD loader\n);\n}(tychei$1));\n\nvar seedrandom$1 = {exports: {}};\n\n/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (module) {\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256,        // each RC4 output is 0 <= x < 256\n    chunks = 6,         // at least six RC4 outputs for each double\n    digits = 52,        // there are 52 significant digits in a double\n    rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n    startdenom = math.pow(width, chunks),\n    significance = math.pow(2, digits),\n    overflow = significance * 2,\n    mask = width - 1,\n    nodecrypto;         // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n  var key = [];\n  options = (options == true) ? { entropy: true } : (options || {});\n\n  // Flatten the seed string or build one from local entropy if needed.\n  var shortseed = mixkey(flatten(\n    options.entropy ? [seed, tostring(pool)] :\n    (seed == null) ? autoseed() : seed, 3), key);\n\n  // Use the seed to initialize an ARC4 generator.\n  var arc4 = new ARC4(key);\n\n  // This function returns a random double in [0, 1) that contains\n  // randomness in every bit of the mantissa of the IEEE 754 value.\n  var prng = function() {\n    var n = arc4.g(chunks),             // Start with a numerator n < 2 ^ 48\n        d = startdenom,                 //   and denominator d = 2 ^ 48.\n        x = 0;                          //   and no 'extra last byte'.\n    while (n < significance) {          // Fill up all significant digits by\n      n = (n + x) * width;              //   shifting numerator and\n      d *= width;                       //   denominator and generating a\n      x = arc4.g(1);                    //   new least-significant-byte.\n    }\n    while (n >= overflow) {             // To avoid rounding up, before adding\n      n /= 2;                           //   last byte, shift everything\n      d /= 2;                           //   right using integer math until\n      x >>>= 1;                         //   we have exactly the desired bits.\n    }\n    return (n + x) / d;                 // Form the number within [0, 1).\n  };\n\n  prng.int32 = function() { return arc4.g(4) | 0; };\n  prng.quick = function() { return arc4.g(4) / 0x100000000; };\n  prng.double = prng;\n\n  // Mix the randomness into accumulated entropy.\n  mixkey(tostring(arc4.S), pool);\n\n  // Calling convention: what to return as a function of prng, seed, is_math.\n  return (options.pass || callback ||\n      function(prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) { copy(state, arc4); }\n          // Only provide the .state method if requested via options.state.\n          prng.state = function() { return copy(arc4, {}); };\n        }\n\n        // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n        if (is_math_call) { math[rngname] = prng; return seed; }\n\n        // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(\n  prng,\n  shortseed,\n  'global' in options ? options.global : (this == math),\n  options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation.  The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4.  Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n  var t, keylen = key.length,\n      me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n  // The empty key [] is treated as [0].\n  if (!keylen) { key = [keylen++]; }\n\n  // Set up S using the standard key scheduling algorithm.\n  while (i < width) {\n    s[i] = i++;\n  }\n  for (i = 0; i < width; i++) {\n    s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n    s[j] = t;\n  }\n\n  // The \"g\" method returns the next (count) outputs as one number.\n  (me.g = function(count) {\n    // Using instance members instead of closure state nearly doubles speed.\n    var t, r = 0,\n        i = me.i, j = me.j, s = me.S;\n    while (count--) {\n      t = s[i = mask & (i + 1)];\n      r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n    }\n    me.i = i; me.j = j;\n    return r;\n    // For robust unpredictability, the function call below automatically\n    // discards an initial batch of values.  This is called RC4-drop[256].\n    // See http://google.com/search?q=rsa+fluhrer+response&btnI\n  })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n  t.i = f.i;\n  t.j = f.j;\n  t.S = f.S.slice();\n  return t;\n}\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n  var result = [], typ = (typeof obj), prop;\n  if (depth && typ == 'object') {\n    for (prop in obj) {\n      try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n    }\n  }\n  return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n  var stringseed = seed + '', smear, j = 0;\n  while (j < stringseed.length) {\n    key[mask & j] =\n      mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n  }\n  return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n  try {\n    var out;\n    if (nodecrypto && (out = nodecrypto.randomBytes)) {\n      // The use of 'out' to remember randomBytes makes tight minified code.\n      out = out(width);\n    } else {\n      out = new Uint8Array(width);\n      (global.crypto || global.msCrypto).getRandomValues(out);\n    }\n    return tostring(out);\n  } catch (e) {\n    var browser = global.navigator,\n        plugins = browser && browser.plugins;\n    return [+new Date, global, plugins, global.screen, tostring(pool)];\n  }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n  return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool.  Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif (module.exports) {\n  module.exports = seedrandom;\n  // When in node.js, try using crypto package for autoseeding.\n  try {\n    nodecrypto = require('crypto');\n  } catch (ex) {}\n} else {\n  // When included as a plain script, set up Math.seedrandom global.\n  math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n  // global: `self` in browsers (including strict mode and web workers),\n  // otherwise `this` in Node and other environments\n  (typeof self !== 'undefined') ? self : commonjsGlobal,\n  [],     // pool: entropy pool starts empty\n  Math    // math: package containing random, pow, and seedrandom\n);\n}(seedrandom$1));\n\n// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random();       // 0 <= x < 1.  Every bit is random.\n// var x = random.quick(); // 0 <= x < 1.  32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = alea$1.exports;\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = xor128$1.exports;\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = xorwow$1.exports;\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three.  It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = xorshift7$1.exports;\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures.  Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = xor4096$1.exports;\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = tychei$1.exports;\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = seedrandom$1.exports;\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nvar seedrandom = sr;\n\nlet globalSeed;\nconst GlobalSeedAtom = val => {\n  if (val) {\n    globalSeed = val;\n    return val;\n  }\n  return globalSeed;\n};\n\nfunction _random(lower, upper, floating, seed) {\n  const step = upper - lower;\n  seed = seed ?? GlobalSeedAtom();\n  const result = lower + step * (seed !== undefined ? seedrandom.alea(seed).quick() : Math.random());\n  return floating ? result : Math.floor(result);\n}\nfunction random(...args) {\n  args = args.filter(i => i !== undefined);\n  const [a, b, c, d] = args;\n  switch (args.length) {\n    case 0:\n      return _random(0, 1, true);\n    case 1:\n      switch (typeof a) {\n        case 'string':\n          return _random(0, 1, false, a);\n        case 'boolean':\n          return _random(0, 1, a);\n        case 'number':\n          return _random(0, a, false);\n      }\n    case 2:\n      switch (typeof b) {\n        case 'string':\n          return _random(0, a, false, b);\n        case 'boolean':\n          return _random(0, 1, b);\n        case 'number':\n          return _random(a, b, false);\n      }\n    case 3:\n      switch (typeof c) {\n        case 'string':\n          return _random(a, b, false, c);\n        case 'boolean':\n          return _random(a, b, c);\n      }\n    default:\n      return _random(a, b, c, d);\n  }\n}\n\nfunction sample(arr, seed) {\n  return arr[random(0, arr.length, false, seed)];\n}\nfunction _sampleSize(collection, n, seed) {\n  const copy = [...collection];\n  if (n >= collection.length) return copy;\n  if (n < 0) return [];\n  const temp = [];\n  while (temp.length < n) {\n    const result = random(0, copy.length, seed);\n    temp.push(copy.splice(result, 1)[0]);\n  }\n  return temp;\n}\nfunction sampleSize(collection, ...args) {\n  args = args.filter(i => i !== undefined);\n  const [a, b] = args;\n  switch (args.length) {\n    case 0:\n      return _sampleSize(collection, 1);\n    case 1:\n      switch (typeof a) {\n        case 'string':\n          return _sampleSize(collection, 1, a);\n        case 'number':\n          return _sampleSize(collection, a);\n      }\n    default:\n      return _sampleSize(collection, a, b);\n  }\n}\n\nexport { GlobalSeedAtom, random, sample, sampleSize };\n","import { random } from 'game-random';\nconst isNumber = function (el) {\n    return typeof el === 'number' && !isNaN(el);\n};\nconst numberGate = function (input) {\n    if (isNumber(input)) return input;\n    const res = parseInt(input);\n    return isNumber(res) ? res : undefined;\n};\n// 返回一个随机的整数。\nconst integer = function (min, max) {\n    min = numberGate(min);\n    if (!isNumber(min)) min = -9007199254740992;\n    max = numberGate(max);\n    if (!isNumber(max)) max = 9007199254740992;\n    return random(min, max, false);\n};\nconst natural = function (min, max) {\n    return Math.abs(integer(min, max));\n};\n\nconst float = function (min, max, dmin, dmax, count, dcount) {\n    min = numberGate(min);\n    if (!isNumber(min)) min = -9007199254740992;\n    max = numberGate(max);\n    if (!isNumber(max)) max = 9007199254740992;\n    dmin = numberGate(dmin) || 1;\n    dmax = numberGate(dmax) || 17;\n    if (dmin < 1) dmin = 1;\n    if (dmax > 17) dmax = 17;\n    dcount = dcount ?? random(dmin, dmax, false);\n    let decimal = '';\n    for (let index = 0; index < dcount - 1; index++) {\n        decimal += random(0, 9);\n    }\n    decimal += random(1, 9);\n    let pre = random(min, max).toString();\n    return parseFloat(pre + '.' + decimal);\n};\nexport { integer, isNumber, random, natural, integer as int, float };\n","/*\n    ## Parser\n\n    解析数据模板（属性名部分）。\n\n    * Parser.parse( name )\n\n        ```json\n        {\n            parameters: [ name, inc, range, decimal ],\n            rnage: [ min , max ],\n\n            min: min,\n            max: max,\n            count : count,\n\n            decimal: decimal,\n            dmin: dmin,\n            dmax: dmax,\n            dcount: dcount\n        }\n        ```\n */\n\nimport Constant from './constant';\nimport { integer } from './random/basic/number';\n/* jshint -W041 */\nexport function parser(name = '') {\n    if (typeof name !== 'string') name = name + '';\n    const parameters = name.match(Constant.RE_KEY);\n\n    const range = parameters && parameters[3] && parameters[3].match(Constant.RE_RANGE);\n    const min = range && range[1] && parseInt(range[1], 10); // || 1\n    const max = range && range[2] && parseInt(range[2], 10); // || 1\n    // repeat || min-max || 1\n    const count = range ? (!range[2] && parseInt(range[1], 10)) || integer(min, max) : undefined;\n\n    const decimal = parameters && parameters[4] && parameters[4].match(Constant.RE_RANGE);\n    const dmin = decimal && decimal[1] && parseInt(decimal[1], 10); // || 0,\n    const dmax = decimal && decimal[2] && parseInt(decimal[2], 10); // || 0,\n    // int || dmin-dmax || 0\n    const dcount = decimal ? (!decimal[2] && parseInt(decimal[1], 10)) || integer(dmin, dmax) : undefined;\n\n    const result = {\n        // 1 name, 2 inc, 3 range, 4 decimal\n        parameters,\n        // 1 min, 2 max\n        range,\n        min,\n        max,\n        // min-max\n        count,\n        // 是否有 decimal\n        decimal,\n        dmin,\n        dmax,\n        dcount, // dmin-dimax\n    };\n\n    const isReturn = Object.keys(result).some((key) => key !== undefined);\n    if (isReturn) return result;\n    return {};\n}\n","/*\n    ## Helpers\n*/\nimport { random, sample, sampleSize } from 'game-random';\nimport { shuffle as _shuffle, capitalize as _capitalize } from 'lodash-es';\nconst capitalize = (info = 'undefined') => _capitalize(info);\nconst upper = function (str) {\n    return (str + '').toUpperCase();\n};\n\nconst lower = function (str) {\n    return (str + '').toLowerCase();\n};\n\n// 从数组中随机选取一个元素，并返回。\n// 更改 pick 函数 , 函数不进行重载\nconst pick = function (arr, ...args) {\n    let min;\n    let max;\n    let count;\n    if (arr === undefined) return undefined;\n    switch (args.length) {\n        case 0:\n            return sample(arr);\n        case 1:\n            [count] = args;\n            return sampleSize(arr, count);\n        case 2:\n            [min, max] = args;\n            return sampleSize(arr, random(min, max));\n        default:\n            return sample([arr, ...args]);\n    }\n};\n/*\n    打乱数组中元素的顺序，并返回。\n    Given an array, scramble the order and return it.\n*/\nconst shuffle = function (arr, min, max) {\n    const result = _shuffle(arr);\n    switch (arguments.length) {\n        case 0:\n        case 1:\n            return result;\n        case 2:\n            return result.slice(0, min);\n        /* falls through */\n        case 3:\n            return result.slice(min, max);\n    }\n};\n/*\n        * Random.order(item, item)\n        * Random.order([item, item ...])\n\n        顺序获取数组中的元素\n\n        [JSON导入数组支持数组数据录入](https://github.com/thx/RAP/issues/22)\n\n        不支持单独调用！\n    */\nconst Cache = {};\nconst order = function (...array) {\n    // 重载 (item1,item2,item3) 和 ([item1,item2,item3])\n    if (array.length === 1) array = array[0];\n\n    // options.context.path/templatePath\n    const options = order.options;\n    const templatePath = options.context.templatePath.join('.');\n\n    const cache = (Cache[templatePath] = Cache[templatePath] || {\n        index: 0,\n        array: array,\n    });\n\n    return cache.array[cache.index++ % cache.array.length];\n};\nexport { capitalize, upper, lower, pick, shuffle, order };\n","import { pick } from '../random/helper';\nimport { gen } from './gen';\nexport function array({\n    name,\n    rule: { min, max, parameters, count },\n    template,\n    context: { path, templatePath, root, templateRoot },\n}) {\n    let result = [];\n\n    // 'name|1': []\n    // 'name|count': []\n    // 'name|min-max': []\n    if (template.length === 0) return [];\n\n    // 'arr': [{ 'email': '@EMAIL' }, { 'email': '@EMAIL' }]\n    if (!parameters) {\n        template.forEach((item, index) => {\n            result.push(\n                gen(item, index, {\n                    path: [...path, index],\n                    templatePath: [...templatePath, index],\n                    currentContext: result,\n                    templateCurrentContext: template,\n                    root: root || result,\n                    templateRoot: templateRoot || template,\n                }),\n            );\n        });\n    } else {\n        // 'method|1': ['GET', 'POST', 'HEAD', 'DELETE']\n        if (min === 1 && max === undefined) {\n            // fix #17\n            result = pick(\n                gen(template, undefined, {\n                    path: [...path, name],\n                    templatePath: [...templatePath, name],\n                    currentContext: result,\n                    templateCurrentContext: template,\n                    root: root || result,\n                    templateRoot: templateRoot || template,\n                }),\n            );\n        } else {\n            // 'data|+1': [{}, {}]\n            if (parameters[2]) {\n                template.__order_index = template.__order_index || 0;\n                const index = template.__order_index % template.length;\n                result = gen(template[index], undefined, {\n                    path: [...path, name],\n                    templatePath: [...templatePath, name],\n                    currentContext: result,\n                    templateCurrentContext: template,\n                    root: root || result,\n                    templateRoot: templateRoot || template,\n                });\n\n                template.__order_index += +parameters[2];\n            } else {\n                // 'data|1-10': [{}]\n                [...Array(Math.min(count, 10000)).keys()].forEach(() => {\n                    template.forEach((item, index) => {\n                        result.push(\n                            gen(item, result.length, {\n                                path: [...path, result.length],\n                                templatePath: [...templatePath, index],\n                                currentContext: result,\n                                templateCurrentContext: template,\n                                root: root || result,\n                                templateRoot: templateRoot || template,\n                            }),\n                        );\n                    });\n                });\n            }\n        }\n    }\n    return result;\n}\n","import { random } from 'game-random';\nconst boolean = function (min, max, cur = false) {\n    // ! cur:boolean 是划分概率的一个启动符号\n    // if (cur) {\n    //     min = isNumber(min) ? parseInt(min, 10) : 1;\n    //     max = isNumber(max) ? parseInt(max, 10) : 1;\n    //     return Math.random() > (1.0 / (min + max)) * min ? !cur : cur;\n    // }\n    if (cur) {\n        return random(0, min + max) > min ? !cur : !!cur;\n    }\n    return random(10, -10) > 0;\n};\nexport { boolean, boolean as bool };\n","import { sample } from 'game-random';\nconst pools = {\n    lower: 'abcdefghijklmnopqrstuvwxyz',\n    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n    number: '0123456789',\n    symbol: '!@#$%^&*()[]',\n};\npools.alpha = pools.lower + pools.upper;\npools.default = pools.lower + pools.upper + pools.number + pools.symbol;\n\nconst character = function (pool = 'default') {\n    if (pools.hasOwnProperty(pool.toLocaleLowerCase())) {\n        pool = pools[pool.toLowerCase()];\n    }\n    return sample(pool);\n};\nexport { character, character as char };\n","import { natural } from './number';\nimport { times } from 'lodash-es';\nimport { character } from './character';\nconst string = function (...args) {\n    let len;\n    let pool;\n    let min;\n    let max;\n    switch (args.length) {\n        case 0: // ()\n            len = natural(3, 7);\n            break;\n        case 1: // ( length )\n            [len] = args;\n            break;\n        case 2:\n            // ( pool, length )\n            if (typeof args[0] === 'string') {\n                [pool, len] = args;\n            } else {\n                // ( min, max )\n                [min, max] = args;\n                len = natural(min, max);\n            }\n            break;\n        case 3:\n            // (pool,min,max)\n            [pool, min, max] = args;\n            len = natural(min, max);\n            break;\n    }\n    return times(len, () => character(pool)).join('');\n};\nexport { string, string as str };\n","import { bool } from '../random/basic';\nexport function boolean({ rule: { max, min, parameters }, template = false }) {\n    // 'prop|multiple': false, 当前值是相反值的概率倍数\n    // 'prop|probability-probability': false, 当前值与相反值的概率\n    return parameters ? bool(min, max, !!template) : !!template;\n}\n","function _function(options) {\n    const {\n        template,\n        context: { currentContext },\n    } = options;\n    // ( context, options )\n    return template.call(currentContext, options);\n}\nexport { _function as function };\n","import { float } from '../random/basic/number';\nexport function number({ rule: { min, max, dmax, dmin, decimal, range, count, dcount, parameters }, template = '' }) {\n    let result;\n\n    if (decimal) {\n        if (min === undefined && max === undefined) min = max = parseInt(template);\n        if (max === undefined && min) max = min;\n        result = float(min ?? 0, max, dmin, dmax, count, dcount); // 内置字符串转数字\n        // console.log(min, max, dmax, dmin, decimal, range, count, dcount, template);\n        // console.log(result);\n    } else {\n        // integer\n        // 'grade1|1-100': 1,\n        result = range && !parameters[2] ? count : template;\n    }\n    return result;\n}\n","import { shuffle } from '../random/helper';\nimport Constant from '../constant';\nimport { type as Type } from '../util';\nimport { gen } from './gen';\nexport function object({ template, rule: { min, count }, context: { path, templatePath, root, templateRoot } }) {\n    const result = {};\n    let keys = [];\n    const fnKeys = [];\n\n    // 'obj|min-max': {}\n    /* jshint -W041 */\n    if (min != undefined) {\n        keys = shuffle(Object.keys(template)).slice(0, min);\n        keys.forEach((key) => {\n            const parsedKey = key.replace(Constant.RE_KEY, '$1');\n\n            result[parsedKey] = gen(template[key], key, {\n                path: [...path, parsedKey],\n                templatePath: [...templatePath, key],\n                currentContext: result,\n                templateCurrentContext: template,\n                root: root || result,\n                templateRoot: templateRoot || template,\n            });\n        });\n    } else {\n        // 'obj': {}\n        for (const key in template) {\n            (typeof template[key] === 'function' ? fnKeys : keys).push(key);\n        }\n        keys = keys.concat(fnKeys);\n\n        /*\n            会改变非函数属性的顺序\n            keys = Object.keys(template)\n            keys.sort(function(a, b) {\n                var afn = typeof template[a] === 'function'\n                var bfn = typeof template[b] === 'function'\n                if (afn === bfn) return 0\n                if (afn && !bfn) return 1\n                if (!afn && bfn) return -1\n            })\n        */\n\n        keys.forEach((key) => {\n            const parsedKey = key.replace(Constant.RE_KEY, '$1');\n            result[parsedKey] = gen(template[key], key, {\n                path: [...path, parsedKey],\n                templatePath: [...templatePath, key],\n                currentContext: result,\n                templateCurrentContext: template,\n                root: root || result,\n                templateRoot: templateRoot || template,\n            });\n            // 'id|+1': 1\n            const inc = key.match(Constant.RE_KEY);\n            if (inc && inc[2] && Type(template[key]) === 'number') {\n                template[key] += parseInt(inc[2], 10);\n            }\n        });\n    }\n    return result;\n}\n","/*eslint-disable*/\n// https://github.com/nuysoft/regexp\n// forked from https://github.com/ForbesLindesay/regexp\n\nfunction parse(n) {\n    if ('string' != typeof n) {\n        var l = new TypeError('The regexp to parse must be represented as a string.');\n        throw l;\n    }\n    return (index = 1), (cgs = {}), parser.parse(n);\n}\n\nfunction Token(n) {\n    (this.type = n), (this.offset = Token.offset()), (this.text = Token.text());\n}\n\nfunction Alternate(n, l) {\n    Token.call(this, 'alternate'), (this.left = n), (this.right = l);\n}\n\nfunction Match(n) {\n    Token.call(this, 'match'), (this.body = n.filter(Boolean));\n}\n\nfunction Group(n, l) {\n    Token.call(this, n), (this.body = l);\n}\n\nfunction CaptureGroup(n) {\n    Group.call(this, 'capture-group'), (this.index = cgs[this.offset] || (cgs[this.offset] = index++)), (this.body = n);\n}\n\nfunction Quantified(n, l) {\n    Token.call(this, 'quantified'), (this.body = n), (this.quantifier = l);\n}\n\nfunction Quantifier(n, l) {\n    Token.call(this, 'quantifier'), (this.min = n), (this.max = l), (this.greedy = !0);\n}\n\nfunction CharSet(n, l) {\n    Token.call(this, 'charset'), (this.invert = n), (this.body = l);\n}\n\nfunction CharacterRange(n, l) {\n    Token.call(this, 'range'), (this.start = n), (this.end = l);\n}\n\nfunction Literal(n) {\n    Token.call(this, 'literal'), (this.body = n), (this.escaped = this.body != this.text);\n}\n\nfunction Unicode(n) {\n    Token.call(this, 'unicode'), (this.code = n.toUpperCase());\n}\n\nfunction Hex(n) {\n    Token.call(this, 'hex'), (this.code = n.toUpperCase());\n}\n\nfunction Octal(n) {\n    Token.call(this, 'octal'), (this.code = n.toUpperCase());\n}\n\nfunction BackReference(n) {\n    Token.call(this, 'back-reference'), (this.code = n.toUpperCase());\n}\n\nfunction ControlCharacter(n) {\n    Token.call(this, 'control-character'), (this.code = n.toUpperCase());\n}\n\nvar parser = (function () {\n        function n(n, l) {\n            function u() {\n                this.constructor = n;\n            }\n            (u.prototype = l.prototype), (n.prototype = new u());\n        }\n        function l(n, l, u, t, r) {\n            function e(n, l) {\n                function u(n) {\n                    function l(n) {\n                        return n.charCodeAt(0).toString(16).toUpperCase();\n                    }\n                    return n\n                        .replace(/\\\\/g, '\\\\\\\\')\n                        .replace(/\"/g, '\\\\\"')\n                        .replace(/\\x08/g, '\\\\b')\n                        .replace(/\\t/g, '\\\\t')\n                        .replace(/\\n/g, '\\\\n')\n                        .replace(/\\f/g, '\\\\f')\n                        .replace(/\\r/g, '\\\\r')\n                        .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function (n) {\n                            return '\\\\x0' + l(n);\n                        })\n                        .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function (n) {\n                            return '\\\\x' + l(n);\n                        })\n                        .replace(/[\\u0180-\\u0FFF]/g, function (n) {\n                            return '\\\\u0' + l(n);\n                        })\n                        .replace(/[\\u1080-\\uFFFF]/g, function (n) {\n                            return '\\\\u' + l(n);\n                        });\n                }\n                var t, r;\n                switch (n.length) {\n                    case 0:\n                        t = 'end of input';\n                        break;\n\n                    case 1:\n                        t = n[0];\n                        break;\n\n                    default:\n                        t = n.slice(0, -1).join(', ') + ' or ' + n[n.length - 1];\n                }\n                return (r = l ? '\"' + u(l) + '\"' : 'end of input'), 'Expected ' + t + ' but ' + r + ' found.';\n            }\n            (this.expected = n),\n                (this.found = l),\n                (this.offset = u),\n                (this.line = t),\n                (this.column = r),\n                (this.name = 'SyntaxError'),\n                (this.message = e(n, l));\n        }\n        function u(n) {\n            function u() {\n                return n.substring(Lt, qt);\n            }\n            function t() {\n                return Lt;\n            }\n            function r(l) {\n                function u(l, u, t) {\n                    var r, e;\n                    for (r = u; t > r; r++)\n                        (e = n.charAt(r)),\n                            '\\n' === e\n                                ? (l.seenCR || l.line++, (l.column = 1), (l.seenCR = !1))\n                                : '\\r' === e || '\\u2028' === e || '\\u2029' === e\n                                ? (l.line++, (l.column = 1), (l.seenCR = !0))\n                                : (l.column++, (l.seenCR = !1));\n                }\n                return (\n                    Mt !== l &&\n                        (Mt > l &&\n                            ((Mt = 0),\n                            (Dt = {\n                                line: 1,\n                                column: 1,\n                                seenCR: !1,\n                            })),\n                        u(Dt, Mt, l),\n                        (Mt = l)),\n                    Dt\n                );\n            }\n            function e(n) {\n                Ht > qt || (qt > Ht && ((Ht = qt), (Ot = [])), Ot.push(n));\n            }\n            function o(n) {\n                var l = 0;\n                for (n.sort(); l < n.length; ) n[l - 1] === n[l] ? n.splice(l, 1) : l++;\n            }\n            function c() {\n                var l, u, t, r, o;\n                return (\n                    (l = qt),\n                    (u = i()),\n                    null !== u\n                        ? ((t = qt),\n                          124 === n.charCodeAt(qt) ? ((r = fl), qt++) : ((r = null), 0 === Wt && e(sl)),\n                          null !== r\n                              ? ((o = c()), null !== o ? ((r = [r, o]), (t = r)) : ((qt = t), (t = il)))\n                              : ((qt = t), (t = il)),\n                          null === t && (t = al),\n                          null !== t\n                              ? ((Lt = l), (u = hl(u, t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function i() {\n                var n, l, u, t, r;\n                if (((n = qt), (l = f()), null === l && (l = al), null !== l))\n                    if (((u = qt), Wt++, (t = d()), Wt--, null === t ? (u = al) : ((qt = u), (u = il)), null !== u)) {\n                        for (t = [], r = h(), null === r && (r = a()); null !== r; )\n                            t.push(r), (r = h()), null === r && (r = a());\n                        null !== t\n                            ? ((r = s()),\n                              null === r && (r = al),\n                              null !== r\n                                  ? ((Lt = n), (l = dl(l, t, r)), null === l ? ((qt = n), (n = l)) : (n = l))\n                                  : ((qt = n), (n = il)))\n                            : ((qt = n), (n = il));\n                    } else (qt = n), (n = il);\n                else (qt = n), (n = il);\n                return n;\n            }\n            function a() {\n                var n;\n                return (n = x()), null === n && ((n = Q()), null === n && (n = B())), n;\n            }\n            function f() {\n                var l, u;\n                return (\n                    (l = qt),\n                    94 === n.charCodeAt(qt) ? ((u = pl), qt++) : ((u = null), 0 === Wt && e(vl)),\n                    null !== u && ((Lt = l), (u = wl())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function s() {\n                var l, u;\n                return (\n                    (l = qt),\n                    36 === n.charCodeAt(qt) ? ((u = Al), qt++) : ((u = null), 0 === Wt && e(Cl)),\n                    null !== u && ((Lt = l), (u = gl())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function h() {\n                var n, l, u;\n                return (\n                    (n = qt),\n                    (l = a()),\n                    null !== l\n                        ? ((u = d()),\n                          null !== u\n                              ? ((Lt = n), (l = bl(l, u)), null === l ? ((qt = n), (n = l)) : (n = l))\n                              : ((qt = n), (n = il)))\n                        : ((qt = n), (n = il)),\n                    n\n                );\n            }\n            function d() {\n                var n, l, u;\n                return (\n                    Wt++,\n                    (n = qt),\n                    (l = p()),\n                    null !== l\n                        ? ((u = k()),\n                          null === u && (u = al),\n                          null !== u\n                              ? ((Lt = n), (l = Tl(l, u)), null === l ? ((qt = n), (n = l)) : (n = l))\n                              : ((qt = n), (n = il)))\n                        : ((qt = n), (n = il)),\n                    Wt--,\n                    null === n && ((l = null), 0 === Wt && e(kl)),\n                    n\n                );\n            }\n            function p() {\n                var n;\n                return (\n                    (n = v()),\n                    null === n &&\n                        ((n = w()),\n                        null === n &&\n                            ((n = A()), null === n && ((n = C()), null === n && ((n = g()), null === n && (n = b()))))),\n                    n\n                );\n            }\n            function v() {\n                var l, u, t, r, o, c;\n                return (\n                    (l = qt),\n                    123 === n.charCodeAt(qt) ? ((u = xl), qt++) : ((u = null), 0 === Wt && e(yl)),\n                    null !== u\n                        ? ((t = T()),\n                          null !== t\n                              ? (44 === n.charCodeAt(qt) ? ((r = ml), qt++) : ((r = null), 0 === Wt && e(Rl)),\n                                null !== r\n                                    ? ((o = T()),\n                                      null !== o\n                                          ? (125 === n.charCodeAt(qt)\n                                                ? ((c = Fl), qt++)\n                                                : ((c = null), 0 === Wt && e(Ql)),\n                                            null !== c\n                                                ? ((Lt = l), (u = Sl(t, o)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                                : ((qt = l), (l = il)))\n                                          : ((qt = l), (l = il)))\n                                    : ((qt = l), (l = il)))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function w() {\n                var l, u, t, r;\n                return (\n                    (l = qt),\n                    123 === n.charCodeAt(qt) ? ((u = xl), qt++) : ((u = null), 0 === Wt && e(yl)),\n                    null !== u\n                        ? ((t = T()),\n                          null !== t\n                              ? (n.substr(qt, 2) === Ul ? ((r = Ul), (qt += 2)) : ((r = null), 0 === Wt && e(El)),\n                                null !== r\n                                    ? ((Lt = l), (u = Gl(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                    : ((qt = l), (l = il)))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function A() {\n                var l, u, t, r;\n                return (\n                    (l = qt),\n                    123 === n.charCodeAt(qt) ? ((u = xl), qt++) : ((u = null), 0 === Wt && e(yl)),\n                    null !== u\n                        ? ((t = T()),\n                          null !== t\n                              ? (125 === n.charCodeAt(qt) ? ((r = Fl), qt++) : ((r = null), 0 === Wt && e(Ql)),\n                                null !== r\n                                    ? ((Lt = l), (u = Bl(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                    : ((qt = l), (l = il)))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function C() {\n                var l, u;\n                return (\n                    (l = qt),\n                    43 === n.charCodeAt(qt) ? ((u = jl), qt++) : ((u = null), 0 === Wt && e($l)),\n                    null !== u && ((Lt = l), (u = ql())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function g() {\n                var l, u;\n                return (\n                    (l = qt),\n                    42 === n.charCodeAt(qt) ? ((u = Ll), qt++) : ((u = null), 0 === Wt && e(Ml)),\n                    null !== u && ((Lt = l), (u = Dl())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function b() {\n                var l, u;\n                return (\n                    (l = qt),\n                    63 === n.charCodeAt(qt) ? ((u = Hl), qt++) : ((u = null), 0 === Wt && e(Ol)),\n                    null !== u && ((Lt = l), (u = Wl())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function k() {\n                var l;\n                return 63 === n.charCodeAt(qt) ? ((l = Hl), qt++) : ((l = null), 0 === Wt && e(Ol)), l;\n            }\n            function T() {\n                var l, u, t;\n                if (\n                    ((l = qt),\n                    (u = []),\n                    zl.test(n.charAt(qt)) ? ((t = n.charAt(qt)), qt++) : ((t = null), 0 === Wt && e(Il)),\n                    null !== t)\n                )\n                    for (; null !== t; )\n                        u.push(t), zl.test(n.charAt(qt)) ? ((t = n.charAt(qt)), qt++) : ((t = null), 0 === Wt && e(Il));\n                else u = il;\n                return null !== u && ((Lt = l), (u = Jl(u))), null === u ? ((qt = l), (l = u)) : (l = u), l;\n            }\n            function x() {\n                var l, u, t, r;\n                return (\n                    (l = qt),\n                    40 === n.charCodeAt(qt) ? ((u = Kl), qt++) : ((u = null), 0 === Wt && e(Nl)),\n                    null !== u\n                        ? ((t = R()),\n                          null === t && ((t = F()), null === t && ((t = m()), null === t && (t = y()))),\n                          null !== t\n                              ? (41 === n.charCodeAt(qt) ? ((r = Pl), qt++) : ((r = null), 0 === Wt && e(Vl)),\n                                null !== r\n                                    ? ((Lt = l), (u = Xl(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                    : ((qt = l), (l = il)))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function y() {\n                var n, l;\n                return (\n                    (n = qt),\n                    (l = c()),\n                    null !== l && ((Lt = n), (l = Yl(l))),\n                    null === l ? ((qt = n), (n = l)) : (n = l),\n                    n\n                );\n            }\n            function m() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Zl ? ((u = Zl), (qt += 2)) : ((u = null), 0 === Wt && e(_l)),\n                    null !== u\n                        ? ((t = c()),\n                          null !== t\n                              ? ((Lt = l), (u = nu(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function R() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === lu ? ((u = lu), (qt += 2)) : ((u = null), 0 === Wt && e(uu)),\n                    null !== u\n                        ? ((t = c()),\n                          null !== t\n                              ? ((Lt = l), (u = tu(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function F() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === ru ? ((u = ru), (qt += 2)) : ((u = null), 0 === Wt && e(eu)),\n                    null !== u\n                        ? ((t = c()),\n                          null !== t\n                              ? ((Lt = l), (u = ou(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function Q() {\n                var l, u, t, r, o;\n                if (\n                    (Wt++,\n                    (l = qt),\n                    91 === n.charCodeAt(qt) ? ((u = iu), qt++) : ((u = null), 0 === Wt && e(au)),\n                    null !== u)\n                )\n                    if (\n                        (94 === n.charCodeAt(qt) ? ((t = pl), qt++) : ((t = null), 0 === Wt && e(vl)),\n                        null === t && (t = al),\n                        null !== t)\n                    ) {\n                        for (r = [], o = S(), null === o && (o = U()); null !== o; )\n                            r.push(o), (o = S()), null === o && (o = U());\n                        null !== r\n                            ? (93 === n.charCodeAt(qt) ? ((o = fu), qt++) : ((o = null), 0 === Wt && e(su)),\n                              null !== o\n                                  ? ((Lt = l), (u = hu(t, r)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                  : ((qt = l), (l = il)))\n                            : ((qt = l), (l = il));\n                    } else (qt = l), (l = il);\n                else (qt = l), (l = il);\n                return Wt--, null === l && ((u = null), 0 === Wt && e(cu)), l;\n            }\n            function S() {\n                var l, u, t, r;\n                return (\n                    Wt++,\n                    (l = qt),\n                    (u = U()),\n                    null !== u\n                        ? (45 === n.charCodeAt(qt) ? ((t = pu), qt++) : ((t = null), 0 === Wt && e(vu)),\n                          null !== t\n                              ? ((r = U()),\n                                null !== r\n                                    ? ((Lt = l), (u = wu(u, r)), null === u ? ((qt = l), (l = u)) : (l = u))\n                                    : ((qt = l), (l = il)))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    Wt--,\n                    null === l && ((u = null), 0 === Wt && e(du)),\n                    l\n                );\n            }\n            function U() {\n                var n, l;\n                return Wt++, (n = G()), null === n && (n = E()), Wt--, null === n && ((l = null), 0 === Wt && e(Au)), n;\n            }\n            function E() {\n                var l, u;\n                return (\n                    (l = qt),\n                    Cu.test(n.charAt(qt)) ? ((u = n.charAt(qt)), qt++) : ((u = null), 0 === Wt && e(gu)),\n                    null !== u && ((Lt = l), (u = bu(u))),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function G() {\n                var n;\n                return (\n                    (n = L()),\n                    null === n &&\n                        ((n = Y()),\n                        null === n &&\n                            ((n = H()),\n                            null === n &&\n                                ((n = O()),\n                                null === n &&\n                                    ((n = W()),\n                                    null === n &&\n                                        ((n = z()),\n                                        null === n &&\n                                            ((n = I()),\n                                            null === n &&\n                                                ((n = J()),\n                                                null === n &&\n                                                    ((n = K()),\n                                                    null === n &&\n                                                        ((n = N()),\n                                                        null === n &&\n                                                            ((n = P()),\n                                                            null === n &&\n                                                                ((n = V()),\n                                                                null === n &&\n                                                                    ((n = X()),\n                                                                    null === n &&\n                                                                        ((n = _()),\n                                                                        null === n &&\n                                                                            ((n = nl()),\n                                                                            null === n &&\n                                                                                ((n = ll()),\n                                                                                null === n &&\n                                                                                    ((n = ul()),\n                                                                                    null === n &&\n                                                                                        (n = tl()))))))))))))))))),\n                    n\n                );\n            }\n            function B() {\n                var n;\n                return (n = j()), null === n && ((n = q()), null === n && (n = $())), n;\n            }\n            function j() {\n                var l, u;\n                return (\n                    (l = qt),\n                    46 === n.charCodeAt(qt) ? ((u = ku), qt++) : ((u = null), 0 === Wt && e(Tu)),\n                    null !== u && ((Lt = l), (u = xu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function $() {\n                var l, u;\n                return (\n                    Wt++,\n                    (l = qt),\n                    mu.test(n.charAt(qt)) ? ((u = n.charAt(qt)), qt++) : ((u = null), 0 === Wt && e(Ru)),\n                    null !== u && ((Lt = l), (u = bu(u))),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    Wt--,\n                    null === l && ((u = null), 0 === Wt && e(yu)),\n                    l\n                );\n            }\n            function q() {\n                var n;\n                return (\n                    (n = M()),\n                    null === n &&\n                        ((n = D()),\n                        null === n &&\n                            ((n = Y()),\n                            null === n &&\n                                ((n = H()),\n                                null === n &&\n                                    ((n = O()),\n                                    null === n &&\n                                        ((n = W()),\n                                        null === n &&\n                                            ((n = z()),\n                                            null === n &&\n                                                ((n = I()),\n                                                null === n &&\n                                                    ((n = J()),\n                                                    null === n &&\n                                                        ((n = K()),\n                                                        null === n &&\n                                                            ((n = N()),\n                                                            null === n &&\n                                                                ((n = P()),\n                                                                null === n &&\n                                                                    ((n = V()),\n                                                                    null === n &&\n                                                                        ((n = X()),\n                                                                        null === n &&\n                                                                            ((n = Z()),\n                                                                            null === n &&\n                                                                                ((n = _()),\n                                                                                null === n &&\n                                                                                    ((n = nl()),\n                                                                                    null === n &&\n                                                                                        ((n = ll()),\n                                                                                        null === n &&\n                                                                                            ((n = ul()),\n                                                                                            null === n &&\n                                                                                                (n =\n                                                                                                    tl()))))))))))))))))))),\n                    n\n                );\n            }\n            function L() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Fu ? ((u = Fu), (qt += 2)) : ((u = null), 0 === Wt && e(Qu)),\n                    null !== u && ((Lt = l), (u = Su())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function M() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Fu ? ((u = Fu), (qt += 2)) : ((u = null), 0 === Wt && e(Qu)),\n                    null !== u && ((Lt = l), (u = Uu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function D() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Eu ? ((u = Eu), (qt += 2)) : ((u = null), 0 === Wt && e(Gu)),\n                    null !== u && ((Lt = l), (u = Bu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function H() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === ju ? ((u = ju), (qt += 2)) : ((u = null), 0 === Wt && e($u)),\n                    null !== u && ((Lt = l), (u = qu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function O() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Lu ? ((u = Lu), (qt += 2)) : ((u = null), 0 === Wt && e(Mu)),\n                    null !== u && ((Lt = l), (u = Du())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function W() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Hu ? ((u = Hu), (qt += 2)) : ((u = null), 0 === Wt && e(Ou)),\n                    null !== u && ((Lt = l), (u = Wu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function z() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === zu ? ((u = zu), (qt += 2)) : ((u = null), 0 === Wt && e(Iu)),\n                    null !== u && ((Lt = l), (u = Ju())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function I() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Ku ? ((u = Ku), (qt += 2)) : ((u = null), 0 === Wt && e(Nu)),\n                    null !== u && ((Lt = l), (u = Pu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function J() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Vu ? ((u = Vu), (qt += 2)) : ((u = null), 0 === Wt && e(Xu)),\n                    null !== u && ((Lt = l), (u = Yu())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function K() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Zu ? ((u = Zu), (qt += 2)) : ((u = null), 0 === Wt && e(_u)),\n                    null !== u && ((Lt = l), (u = nt())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function N() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === lt ? ((u = lt), (qt += 2)) : ((u = null), 0 === Wt && e(ut)),\n                    null !== u && ((Lt = l), (u = tt())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function P() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === rt ? ((u = rt), (qt += 2)) : ((u = null), 0 === Wt && e(et)),\n                    null !== u && ((Lt = l), (u = ot())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function V() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === ct ? ((u = ct), (qt += 2)) : ((u = null), 0 === Wt && e(it)),\n                    null !== u && ((Lt = l), (u = at())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function X() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === ft ? ((u = ft), (qt += 2)) : ((u = null), 0 === Wt && e(st)),\n                    null !== u && ((Lt = l), (u = ht())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function Y() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === dt ? ((u = dt), (qt += 2)) : ((u = null), 0 === Wt && e(pt)),\n                    null !== u\n                        ? (n.length > qt ? ((t = n.charAt(qt)), qt++) : ((t = null), 0 === Wt && e(vt)),\n                          null !== t\n                              ? ((Lt = l), (u = wt(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function Z() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    92 === n.charCodeAt(qt) ? ((u = At), qt++) : ((u = null), 0 === Wt && e(Ct)),\n                    null !== u\n                        ? (gt.test(n.charAt(qt)) ? ((t = n.charAt(qt)), qt++) : ((t = null), 0 === Wt && e(bt)),\n                          null !== t\n                              ? ((Lt = l), (u = kt(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            function _() {\n                var l, u, t, r;\n                if (\n                    ((l = qt),\n                    n.substr(qt, 2) === Tt ? ((u = Tt), (qt += 2)) : ((u = null), 0 === Wt && e(xt)),\n                    null !== u)\n                ) {\n                    if (\n                        ((t = []),\n                        yt.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(mt)),\n                        null !== r)\n                    )\n                        for (; null !== r; )\n                            t.push(r),\n                                yt.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(mt));\n                    else t = il;\n                    null !== t\n                        ? ((Lt = l), (u = Rt(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                        : ((qt = l), (l = il));\n                } else (qt = l), (l = il);\n                return l;\n            }\n            function nl() {\n                var l, u, t, r;\n                if (\n                    ((l = qt),\n                    n.substr(qt, 2) === Ft ? ((u = Ft), (qt += 2)) : ((u = null), 0 === Wt && e(Qt)),\n                    null !== u)\n                ) {\n                    if (\n                        ((t = []),\n                        St.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(Ut)),\n                        null !== r)\n                    )\n                        for (; null !== r; )\n                            t.push(r),\n                                St.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(Ut));\n                    else t = il;\n                    null !== t\n                        ? ((Lt = l), (u = Et(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                        : ((qt = l), (l = il));\n                } else (qt = l), (l = il);\n                return l;\n            }\n            function ll() {\n                var l, u, t, r;\n                if (\n                    ((l = qt),\n                    n.substr(qt, 2) === Gt ? ((u = Gt), (qt += 2)) : ((u = null), 0 === Wt && e(Bt)),\n                    null !== u)\n                ) {\n                    if (\n                        ((t = []),\n                        St.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(Ut)),\n                        null !== r)\n                    )\n                        for (; null !== r; )\n                            t.push(r),\n                                St.test(n.charAt(qt)) ? ((r = n.charAt(qt)), qt++) : ((r = null), 0 === Wt && e(Ut));\n                    else t = il;\n                    null !== t\n                        ? ((Lt = l), (u = jt(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                        : ((qt = l), (l = il));\n                } else (qt = l), (l = il);\n                return l;\n            }\n            function ul() {\n                var l, u;\n                return (\n                    (l = qt),\n                    n.substr(qt, 2) === Tt ? ((u = Tt), (qt += 2)) : ((u = null), 0 === Wt && e(xt)),\n                    null !== u && ((Lt = l), (u = $t())),\n                    null === u ? ((qt = l), (l = u)) : (l = u),\n                    l\n                );\n            }\n            function tl() {\n                var l, u, t;\n                return (\n                    (l = qt),\n                    92 === n.charCodeAt(qt) ? ((u = At), qt++) : ((u = null), 0 === Wt && e(Ct)),\n                    null !== u\n                        ? (n.length > qt ? ((t = n.charAt(qt)), qt++) : ((t = null), 0 === Wt && e(vt)),\n                          null !== t\n                              ? ((Lt = l), (u = bu(t)), null === u ? ((qt = l), (l = u)) : (l = u))\n                              : ((qt = l), (l = il)))\n                        : ((qt = l), (l = il)),\n                    l\n                );\n            }\n            var rl,\n                el = arguments.length > 1 ? arguments[1] : {},\n                ol = {\n                    regexp: c,\n                },\n                cl = c,\n                il = null,\n                al = '',\n                fl = '|',\n                sl = '\"|\"',\n                hl = function (n, l) {\n                    return l ? new Alternate(n, l[1]) : n;\n                },\n                dl = function (n, l, u) {\n                    return new Match([n].concat(l).concat([u]));\n                },\n                pl = '^',\n                vl = '\"^\"',\n                wl = function () {\n                    return new Token('start');\n                },\n                Al = '$',\n                Cl = '\"$\"',\n                gl = function () {\n                    return new Token('end');\n                },\n                bl = function (n, l) {\n                    return new Quantified(n, l);\n                },\n                kl = 'Quantifier',\n                Tl = function (n, l) {\n                    return l && (n.greedy = !1), n;\n                },\n                xl = '{',\n                yl = '\"{\"',\n                ml = ',',\n                Rl = '\",\"',\n                Fl = '}',\n                Ql = '\"}\"',\n                Sl = function (n, l) {\n                    return new Quantifier(n, l);\n                },\n                Ul = ',}',\n                El = '\",}\"',\n                Gl = function (n) {\n                    return new Quantifier(n, 1 / 0);\n                },\n                Bl = function (n) {\n                    return new Quantifier(n, n);\n                },\n                jl = '+',\n                $l = '\"+\"',\n                ql = function () {\n                    return new Quantifier(1, 1 / 0);\n                },\n                Ll = '*',\n                Ml = '\"*\"',\n                Dl = function () {\n                    return new Quantifier(0, 1 / 0);\n                },\n                Hl = '?',\n                Ol = '\"?\"',\n                Wl = function () {\n                    return new Quantifier(0, 1);\n                },\n                zl = /^[0-9]/,\n                Il = '[0-9]',\n                Jl = function (n) {\n                    return +n.join('');\n                },\n                Kl = '(',\n                Nl = '\"(\"',\n                Pl = ')',\n                Vl = '\")\"',\n                Xl = function (n) {\n                    return n;\n                },\n                Yl = function (n) {\n                    return new CaptureGroup(n);\n                },\n                Zl = '?:',\n                _l = '\"?:\"',\n                nu = function (n) {\n                    return new Group('non-capture-group', n);\n                },\n                lu = '?=',\n                uu = '\"?=\"',\n                tu = function (n) {\n                    return new Group('positive-lookahead', n);\n                },\n                ru = '?!',\n                eu = '\"?!\"',\n                ou = function (n) {\n                    return new Group('negative-lookahead', n);\n                },\n                cu = 'CharacterSet',\n                iu = '[',\n                au = '\"[\"',\n                fu = ']',\n                su = '\"]\"',\n                hu = function (n, l) {\n                    return new CharSet(!!n, l);\n                },\n                du = 'CharacterRange',\n                pu = '-',\n                vu = '\"-\"',\n                wu = function (n, l) {\n                    return new CharacterRange(n, l);\n                },\n                Au = 'Character',\n                Cu = /^[^\\\\\\]]/,\n                gu = '[^\\\\\\\\\\\\]]',\n                bu = function (n) {\n                    return new Literal(n);\n                },\n                ku = '.',\n                Tu = '\".\"',\n                xu = function () {\n                    return new Token('any-character');\n                },\n                yu = 'Literal',\n                mu = /^[^|\\\\\\/.[()?+*$\\^]/,\n                Ru = '[^|\\\\\\\\\\\\/.[()?+*$\\\\^]',\n                Fu = '\\\\b',\n                Qu = '\"\\\\\\\\b\"',\n                Su = function () {\n                    return new Token('backspace');\n                },\n                Uu = function () {\n                    return new Token('word-boundary');\n                },\n                Eu = '\\\\B',\n                Gu = '\"\\\\\\\\B\"',\n                Bu = function () {\n                    return new Token('non-word-boundary');\n                },\n                ju = '\\\\d',\n                $u = '\"\\\\\\\\d\"',\n                qu = function () {\n                    return new Token('digit');\n                },\n                Lu = '\\\\D',\n                Mu = '\"\\\\\\\\D\"',\n                Du = function () {\n                    return new Token('non-digit');\n                },\n                Hu = '\\\\f',\n                Ou = '\"\\\\\\\\f\"',\n                Wu = function () {\n                    return new Token('form-feed');\n                },\n                zu = '\\\\n',\n                Iu = '\"\\\\\\\\n\"',\n                Ju = function () {\n                    return new Token('line-feed');\n                },\n                Ku = '\\\\r',\n                Nu = '\"\\\\\\\\r\"',\n                Pu = function () {\n                    return new Token('carriage-return');\n                },\n                Vu = '\\\\s',\n                Xu = '\"\\\\\\\\s\"',\n                Yu = function () {\n                    return new Token('white-space');\n                },\n                Zu = '\\\\S',\n                _u = '\"\\\\\\\\S\"',\n                nt = function () {\n                    return new Token('non-white-space');\n                },\n                lt = '\\\\t',\n                ut = '\"\\\\\\\\t\"',\n                tt = function () {\n                    return new Token('tab');\n                },\n                rt = '\\\\v',\n                et = '\"\\\\\\\\v\"',\n                ot = function () {\n                    return new Token('vertical-tab');\n                },\n                ct = '\\\\w',\n                it = '\"\\\\\\\\w\"',\n                at = function () {\n                    return new Token('word');\n                },\n                ft = '\\\\W',\n                st = '\"\\\\\\\\W\"',\n                ht = function () {\n                    return new Token('non-word');\n                },\n                dt = '\\\\c',\n                pt = '\"\\\\\\\\c\"',\n                vt = 'any character',\n                wt = function (n) {\n                    return new ControlCharacter(n);\n                },\n                At = '\\\\',\n                Ct = '\"\\\\\\\\\"',\n                gt = /^[1-9]/,\n                bt = '[1-9]',\n                kt = function (n) {\n                    return new BackReference(n);\n                },\n                Tt = '\\\\0',\n                xt = '\"\\\\\\\\0\"',\n                yt = /^[0-7]/,\n                mt = '[0-7]',\n                Rt = function (n) {\n                    return new Octal(n.join(''));\n                },\n                Ft = '\\\\x',\n                Qt = '\"\\\\\\\\x\"',\n                St = /^[0-9a-fA-F]/,\n                Ut = '[0-9a-fA-F]',\n                Et = function (n) {\n                    return new Hex(n.join(''));\n                },\n                Gt = '\\\\u',\n                Bt = '\"\\\\\\\\u\"',\n                jt = function (n) {\n                    return new Unicode(n.join(''));\n                },\n                $t = function () {\n                    return new Token('null-character');\n                },\n                qt = 0,\n                Lt = 0,\n                Mt = 0,\n                Dt = {\n                    line: 1,\n                    column: 1,\n                    seenCR: !1,\n                },\n                Ht = 0,\n                Ot = [],\n                Wt = 0;\n            if ('startRule' in el) {\n                if (!(el.startRule in ol)) throw new Error('Can\\'t start parsing from rule \"' + el.startRule + '\".');\n                cl = ol[el.startRule];\n            }\n            if (((Token.offset = t), (Token.text = u), (rl = cl()), null !== rl && qt === n.length)) return rl;\n            throw (\n                (o(Ot),\n                (Lt = Math.max(qt, Ht)),\n                new l(Ot, Lt < n.length ? n.charAt(Lt) : null, Lt, r(Lt).line, r(Lt).column))\n            );\n        }\n        return (\n            n(l, Error),\n            {\n                SyntaxError: l,\n                parse: u,\n            }\n        );\n    })(),\n    index = 1,\n    cgs = {};\n\nexport { parser as Parser };\n","/*eslint-disable*/\n/*\n    ## RegExp Handler\n\n    https://github.com/ForbesLindesay/regexp\n    https://github.com/dmajda/pegjs\n    http://www.regexper.com/\n\n    每个节点的结构\n        {\n            type: '',\n            offset: number,\n            text: '',\n            body: {},\n            escaped: true/false\n        }\n\n    type 可选值\n        alternate             |         选择\n        match                 匹配\n        capture-group         ()        捕获组\n        non-capture-group     (?:...)   非捕获组\n        positive-lookahead    (?=p)     零宽正向先行断言\n        negative-lookahead    (?!p)     零宽负向先行断言\n        quantified            a*        重复节点\n        quantifier            *         量词\n        charset               []        字符集\n        range                 {m, n}    范围\n        literal               a         直接量字符\n        unicode               \\uxxxx    Unicode\n        hex                   \\x        十六进制\n        octal                 八进制\n        back-reference        \\n        反向引用\n        control-character     \\cX       控制字符\n\n        // Token\n        start               ^       开头\n        end                 $       结尾\n        any-character       .       任意字符\n        backspace           [\\b]    退格直接量\n        word-boundary       \\b      单词边界\n        non-word-boundary   \\B      非单词边界\n        digit               \\d      ASCII 数字，[0-9]\n        non-digit           \\D      非 ASCII 数字，[^0-9]\n        form-feed           \\f      换页符\n        line-feed           \\n      换行符\n        carriage-return     \\r      回车符\n        white-space         \\s      空白符\n        non-white-space     \\S      非空白符\n        tab                 \\t      制表符\n        vertical-tab        \\v      垂直制表符\n        word                \\w      ASCII 字符，[a-zA-Z0-9]\n        non-word            \\W      非 ASCII 字符，[^a-zA-Z0-9]\n        null-character      \\o      NUL 字符\n */\n\nimport * as Util from '../util';\n\nimport { pick } from '../random/helper';\nimport { character, boolean, integer } from '../random/basic';\n/*\n\n    */\nconst Handler = {\n    extend: Util.extend,\n};\n\n// http://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart\n/* let ASCII_CONTROL_CODE_CHART = {\n    '@': ['\\u0000'],\n    A: ['\\u0001'],\n    B: ['\\u0002'],\n    C: ['\\u0003'],\n    D: ['\\u0004'],\n    E: ['\\u0005'],\n    F: ['\\u0006'],\n    G: ['\\u0007', '\\a'],\n    H: ['\\u0008', '\\b'],\n    I: ['\\u0009', '\\t'],\n    J: ['\\u000A', '\\n'],\n    K: ['\\u000B', '\\v'],\n    L: ['\\u000C', '\\f'],\n    M: ['\\u000D', '\\r'],\n    N: ['\\u000E'],\n    O: ['\\u000F'],\n    P: ['\\u0010'],\n    Q: ['\\u0011'],\n    R: ['\\u0012'],\n    S: ['\\u0013'],\n    T: ['\\u0014'],\n    U: ['\\u0015'],\n    V: ['\\u0016'],\n    W: ['\\u0017'],\n    X: ['\\u0018'],\n    Y: ['\\u0019'],\n    Z: ['\\u001A'],\n    '[': ['\\u001B', '\\e'],\n    '\\\\': ['\\u001C'],\n    ']': ['\\u001D'],\n    '^': ['\\u001E'],\n    '_': ['\\u001F']\n}*/\n\n// ASCII printable code chart\n// let LOWER = 'abcdefghijklmnopqrstuvwxyz'\n// let UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n// let NUMBER = '0123456789'\n// let SYMBOL = ' !\"#$%&\\'()*+,-./' + ':;<=>?@' + '[\\\\]^_`' + '{|}~'\nconst LOWER = ascii(97, 122);\nconst UPPER = ascii(65, 90);\nconst NUMBER = ascii(48, 57);\nconst OTHER = ascii(32, 47) + ascii(58, 64) + ascii(91, 96) + ascii(123, 126); // 排除 95 _ ascii(91, 94) + ascii(96, 96)\nconst PRINTABLE = ascii(32, 126);\nconst SPACE = ' \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029';\nconst CHARACTER_CLASSES = {\n    '\\\\w': LOWER + UPPER + NUMBER + '_', // ascii(95, 95)\n    '\\\\W': OTHER.replace('_', ''),\n    '\\\\s': SPACE,\n    '\\\\S': (function () {\n        let result = PRINTABLE;\n        for (let i = 0; i < SPACE.length; i++) {\n            result = result.replace(SPACE[i], '');\n        }\n        return result;\n    })(),\n    '\\\\d': NUMBER,\n    '\\\\D': LOWER + UPPER + OTHER,\n};\n\n// 从 from 到 to 包含两个端点的字符串\nfunction ascii(from, to) {\n    return [...Array(to - from + 1).keys()].map((i) => String.fromCharCode(i + from)).join('');\n}\n\n// let ast = RegExpParser.parse(regexp.source)\nHandler.gen = function (node, result, cache) {\n    cache = cache || {\n        guid: 1,\n    };\n    return Handler[node.type] ? Handler[node.type](node, result, cache) : Handler.token(node, result, cache);\n};\n\nHandler.extend({\n    /* jshint unused:false */\n    token: function (node, result, cache) {\n        switch (node.type) {\n            case 'start':\n            case 'end':\n                return '';\n            case 'any-character':\n                return character();\n            case 'backspace':\n                return '';\n            case 'word-boundary': // TODO\n                return '';\n            case 'non-word-boundary': // TODO\n                break;\n            case 'digit':\n                return pick(NUMBER.split(''));\n            case 'non-digit':\n                return pick((LOWER + UPPER + OTHER).split(''));\n            case 'form-feed':\n                break;\n            case 'line-feed':\n                return node.body || node.text;\n            case 'carriage-return':\n                break;\n            case 'white-space':\n                return pick(SPACE.split(''));\n            case 'non-white-space':\n                return pick((LOWER + UPPER + NUMBER).split(''));\n            case 'tab':\n                break;\n            case 'vertical-tab':\n                break;\n            case 'word': // \\w [a-zA-Z0-9]\n                return pick((LOWER + UPPER + NUMBER).split(''));\n            case 'non-word': // \\W [^a-zA-Z0-9]\n                return pick(OTHER.replace('_', '').split(''));\n            case 'null-character':\n                break;\n        }\n        return node.body || node.text;\n    },\n    /*\n        {\n            type: 'alternate',\n            offset: 0,\n            text: '',\n            left: {\n                boyd: []\n            },\n            right: {\n                boyd: []\n            }\n        }\n    */\n    alternate: function (node, result, cache) {\n        // node.left/right {}\n        return this.gen(boolean() ? node.left : node.right, result, cache);\n    },\n    /*\n        {\n            type: 'match',\n            offset: 0,\n            text: '',\n            body: []\n        }\n    */\n    match: function (node, result, cache) {\n        result = '';\n        // node.body []\n        for (let i = 0; i < node.body.length; i++) {\n            result += this.gen(node.body[i], result, cache);\n        }\n        return result;\n    },\n    // ()\n    'capture-group': function (node, result, cache) {\n        // node.body {}\n        result = this.gen(node.body, result, cache);\n        cache[cache.guid++] = result;\n        return result;\n    },\n    // (?:...)\n    'non-capture-group': function (node, result, cache) {\n        // node.body {}\n        return this.gen(node.body, result, cache);\n    },\n    // (?=p)\n    'positive-lookahead': function (node, result, cache) {\n        // node.body\n        return this.gen(node.body, result, cache);\n    },\n    // (?!p)\n    'negative-lookahead': function (node, result, cache) {\n        // node.body\n        return '';\n    },\n    /*\n        {\n            type: 'quantified',\n            offset: 3,\n            text: 'c*',\n            body: {\n                type: 'literal',\n                offset: 3,\n                text: 'c',\n                body: 'c',\n                escaped: false\n            },\n            quantifier: {\n                type: 'quantifier',\n                offset: 4,\n                text: '*',\n                min: 0,\n                max: Infinity,\n                greedy: true\n            }\n        }\n    */\n    quantified: function (node, result, cache) {\n        result = '';\n        // node.quantifier {}\n        const count = this.quantifier(node.quantifier);\n        // node.body {}\n        for (let i = 0; i < count; i++) {\n            result += this.gen(node.body, result, cache);\n        }\n        return result;\n    },\n    /*\n        quantifier: {\n            type: 'quantifier',\n            offset: 4,\n            text: '*',\n            min: 0,\n            max: Infinity,\n            greedy: true\n        }\n    */\n    quantifier: function (node, result, cache) {\n        const min = Math.max(node.min, 0);\n        const max = isFinite(node.max) ? node.max : min + integer(3, 7);\n        return integer(min, max);\n    },\n    /*\n\n    */\n    charset: function (node, result, cache) {\n        // node.invert\n        if (node.invert) return this['invert-charset'](node, result, cache);\n\n        // node.body []\n        const literal = pick(node.body);\n        return this.gen(literal, result, cache);\n    },\n    'invert-charset': function (node, result, cache) {\n        let pool = PRINTABLE;\n        for (let i = 0, item; i < node.body.length; i++) {\n            item = node.body[i];\n            switch (item.type) {\n                case 'literal': {\n                    pool = pool.replace(item.body, '');\n                    break;\n                }\n                case 'range':\n                    const min = this.gen(item.start, result, cache).charCodeAt();\n                    const max = this.gen(item.end, result, cache).charCodeAt();\n                    for (let ii = min; ii <= max; ii++) {\n                        pool = pool.replace(String.fromCharCode(ii), '');\n                    }\n                /* falls through */\n                default:\n                    const characters = CHARACTER_CLASSES[item.text];\n                    if (characters) {\n                        for (let iii = 0; iii <= characters.length; iii++) {\n                            pool = pool.replace(characters[iii], '');\n                        }\n                    }\n            }\n        }\n        return pick(pool.split(''));\n    },\n    range: function (node, result, cache) {\n        // node.start, node.end\n        const min = this.gen(node.start, result, cache).charCodeAt();\n        const max = this.gen(node.end, result, cache).charCodeAt();\n        return String.fromCharCode(integer(min, max));\n    },\n    literal: function (node, result, cache) {\n        return node.escaped ? node.body : node.text;\n    },\n    // Unicode \\u\n    unicode: function (node, result, cache) {\n        return String.fromCharCode(parseInt(node.code, 16));\n    },\n    // 十六进制 \\xFF\n    hex: function (node, result, cache) {\n        return String.fromCharCode(parseInt(node.code, 16));\n    },\n    // 八进制 \\0\n    octal: function (node, result, cache) {\n        return String.fromCharCode(parseInt(node.code, 8));\n    },\n    // 反向引用\n    'back-reference': function (node, result, cache) {\n        return cache[node.code] || '';\n    },\n    /*\n        http://en.wikipedia.org/wiki/C0_and_C1_control_codes\n    */\n    CONTROL_CHARACTER_MAP: (function () {\n        const CONTROL_CHARACTER = '@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \\\\ ] ^ _'.split(' ');\n        const CONTROL_CHARACTER_UNICODE =\n            '\\u0000 \\u0001 \\u0002 \\u0003 \\u0004 \\u0005 \\u0006 \\u0007 \\u0008 \\u0009 \\u000A \\u000B \\u000C \\u000D \\u000E \\u000F \\u0010 \\u0011 \\u0012 \\u0013 \\u0014 \\u0015 \\u0016 \\u0017 \\u0018 \\u0019 \\u001A \\u001B \\u001C \\u001D \\u001E \\u001F'.split(\n                ' ',\n            );\n        const map = {};\n        for (let i = 0; i < CONTROL_CHARACTER.length; i++) {\n            map[CONTROL_CHARACTER[i]] = CONTROL_CHARACTER_UNICODE[i];\n        }\n        return map;\n    })(),\n    'control-character': function (node, result, cache) {\n        return this.CONTROL_CHARACTER_MAP[node.code];\n    },\n});\n\nexport { Handler };\n","import * as RE from '../regexp/index';\n\nexport function regexp({ rule: { count }, template: { source } }) {\n    // 'name': /regexp/,\n    // 'name|1-5': /regexp/,\n    const Source = count === undefined ? source : Array(count).fill(source).join('');\n    return RE.Handler.gen(RE.Parser.parse(Source));\n}\n","import { gen } from './gen';\nfunction getValueByKeyPath(key, options) {\n    const originalKey = key;\n    const keyPathParts = splitPathToArray(key);\n    let absolutePathParts = [];\n\n    // 绝对路径\n    if (key.charAt(0) === '/') {\n        absolutePathParts = [options.context.path[0]].concat(normalizePath(keyPathParts));\n    } else {\n        // 相对路径\n        if (keyPathParts.length > 1) {\n            absolutePathParts = options.context.path.slice(0);\n            absolutePathParts.pop();\n            absolutePathParts = normalizePath(absolutePathParts.concat(keyPathParts));\n        }\n    }\n\n    try {\n        key = keyPathParts[keyPathParts.length - 1];\n        let currentContext = options.context.root;\n        let templateCurrentContext = options.context.templateRoot;\n        for (let i = 1; i < absolutePathParts.length - 1; i++) {\n            currentContext = currentContext[absolutePathParts[i]];\n            templateCurrentContext = templateCurrentContext[absolutePathParts[i]];\n        }\n        // 引用的值已经计算好\n        if (currentContext && key in currentContext) return currentContext[key];\n\n        // 尚未计算，递归引用数据模板中的属性\n        if (\n            templateCurrentContext &&\n            typeof templateCurrentContext === 'object' &&\n            key in templateCurrentContext &&\n            originalKey !== templateCurrentContext[key] // fix #15 避免自己依赖自己\n        ) {\n            // 先计算被引用的属性值\n            templateCurrentContext[key] = gen(templateCurrentContext[key], key, {\n                currentContext: currentContext,\n                templateCurrentContext: templateCurrentContext,\n            });\n            return templateCurrentContext[key];\n        }\n    } catch (err) {\n        console.log(err);\n    }\n\n    return '@' + keyPathParts.join('/');\n}\n// https://github.com/kissyteam/kissy/blob/master/src/path/src/path.js\nfunction normalizePath(pathParts) {\n    const newPathParts = [];\n    for (let i = 0; i < pathParts.length; i++) {\n        switch (pathParts[i]) {\n            case '..':\n                newPathParts.pop();\n                break;\n            case '.':\n                break;\n            default:\n                newPathParts.push(pathParts[i]);\n        }\n    }\n    return newPathParts;\n}\nfunction splitPathToArray(path) {\n    let parts = path.split(/\\/+/);\n    if (!parts[parts.length - 1]) parts = parts.slice(0, -1);\n    if (!parts[0]) parts = parts.slice(1);\n    return parts;\n}\nexport { getValueByKeyPath, normalizePath, splitPathToArray };\n","import Constant from '../constant';\nimport { type as Type } from '../util';\nimport { pick } from '../random/helper';\nimport Random from '../random';\nimport { gen } from './gen';\nimport { splitPathToArray, getValueByKeyPath } from './path';\n\n// 占位符即是字符串函数的意思\nfunction placeholder(Placeholder, obj, templateContext, options) {\n    // console.log(options.context.path)\n    // 1 key, 2 params\n    Constant.RE_PLACEHOLDER.exec('');\n    let [, key, params] = Constant.RE_PLACEHOLDER.exec(Placeholder);\n\n    const lkey = key && key.toLowerCase();\n    const pathParts = splitPathToArray(key);\n\n    // 占位符优先引用数据模板中的属性\n    if (obj && key in obj) return obj[key];\n\n    // 绝对路径 or 相对路径\n    if (key.charAt(0) === '/' || pathParts.length > 1) return getValueByKeyPath(key, options);\n\n    // 递归引用数据模板中的属性\n    if (\n        templateContext &&\n        typeof templateContext === 'object' &&\n        key in templateContext &&\n        Placeholder !== templateContext[key] // fix #15 避免自己依赖自己\n    ) {\n        // 先计算被引用的属性值\n        templateContext[key] = gen(templateContext[key], key, {\n            currentContext: obj,\n            templateCurrentContext: templateContext,\n        });\n        return templateContext[key];\n    }\n\n    // 如果未找到，则原样返回\n    if (!(key in Random) && !(lkey in Random)) return Placeholder;\n\n    // 解析占位符的参数\n    // !不进行低版本浏览器的匹配\n    if (params) {\n        params = params.split(/\\s*,\\s*/).map((param) => {\n            // 递归解析参数中的占位符\n            Constant.RE_PLACEHOLDER.exec('');\n            if (Constant.RE_PLACEHOLDER.test(param)) {\n                return placeholder(param, obj, templateContext, options);\n            }\n            return param;\n        });\n    } else {\n        params = [];\n    }\n\n    const handle = Random[key] || Random[lkey];\n    switch (Type(handle)) {\n        case 'array': {\n            // 自动从数组中取一个，例如 @areas\n            return pick(handle);\n        }\n        case 'function': {\n            // 执行占位符方法（大多数情况）\n            handle.options = options;\n            const re = handle.apply(Random, params) ?? ''; // 因为是在字符串中，所以默认为空字符串。\n            delete handle.options;\n            return re;\n        }\n    }\n}\nexport { placeholder };\n","import Constant from '../constant';\nimport { isNumeric } from '../util';\nimport { string as _string } from '../random/basic';\nimport { placeholder as Placeholder } from './placeholder';\nexport function string(options) {\n    const {\n        rule: { range, count },\n        context: { currentContext, templateCurrentContext },\n        template = '',\n    } = options;\n    let result = '';\n\n    if (template.length) {\n        //  'foo': '★', count 为 undefined 时\n        // 'star|1-5': '★',\n        result += count === undefined ? template : Array(count).fill(template).join('');\n\n        // 'email|1-10': '@EMAIL, ',\n        const placeholders = result.match(Constant.RE_PLACEHOLDER) || []; // A-Z_0-9 > \\w_\n        placeholders.some((ph, index) => {\n            // 遇到转义斜杠，不需要解析占位符\n            if (/^\\\\/.test(ph)) {\n                placeholders.splice(index--, 1);\n                return;\n            }\n\n            const phed = Placeholder(ph, currentContext, templateCurrentContext, options);\n\n            // 只有一个占位符，并且没有其他字符\n            if (placeholders.length === 1 && ph === result && typeof phed !== typeof result) {\n                if (isNumeric(phed)) {\n                    result = parseFloat(phed, 10);\n                    return true;\n                }\n                if (/^(true|false)$/.test(phed)) {\n                    result = phed === 'true' ? true : phed === 'false' ? false : phed; // 已经是布尔值\n                    return true;\n                } //\n                result = phed;\n                return true;\n            }\n            result = result.replace(ph, phed);\n        });\n    } else {\n        // 'ASCII|1-10': '',\n        // 'ASCII': '',\n        result = range ? _string(count) : template;\n    }\n    return result;\n}\n","import Constant from '../constant';\nimport { type as Type } from '../util';\nimport { parser as Parser } from '../parser';\nimport * as typeset from './index';\nlet GID = 1; // 1.0.1 版本引用了 Constant.GUID 但是那个是常量，后面这个变量需要改变\nexport function gen(template, name = '', context = {}) {\n    const newContext = {\n        // 当前访问路径，只有属性名，不包括生成规则\n        path: context.path || [GID],\n        templatePath: context.templatePath || [GID++],\n        // 最终属性值的上下文\n        currentContext: context.currentContext,\n        // 属性值模板的上下文\n        templateCurrentContext: context.templateCurrentContext || template,\n        // 最终值的根\n        root: context.root || context.currentContext,\n        // 模板的根\n        templateRoot: context.templateRoot || context.templateCurrentContext || template,\n    };\n    // console.log('path:', context.path.join('.'), template)\n\n    const type = Type(template);\n    const func = typeset[type];\n    let data;\n\n    if (func) {\n        data = func({\n            // 属性值类型\n            type,\n            // 属性值模板\n            template,\n            // 属性名 + 生成规则\n            name,\n            // 属性名\n            parsedName: name ? ('' + name).replace(Constant.RE_KEY, '$1') : name,\n            // 解析后的生成规则\n            rule: Parser(name),\n            // 相关上下文\n            context: newContext,\n        });\n        // 循环引用\n        if (!newContext.root) newContext.root = data;\n        return data;\n    }\n    return template;\n}\n","/*\n    ## Handler\n\n    处理数据模板。\n\n    * Handler.gen( template, name?, context? )\n\n        入口方法。\n\n    * Data Template Definition, DTD\n\n        处理数据模板定义。\n\n        * Handler.array( options )\n        * Handler.object( options )\n        * Handler.number( options )\n        * Handler.boolean( options )\n        * Handler.string( options )\n        * Handler.function( options )\n        * Handler.regexp( options )\n\n        处理路径（相对和绝对）。\n\n        * Handler.getValueByKeyPath( key, options )\n\n    * Data Placeholder Definition, DPD\n\n        处理数据占位符定义\n\n        * Handler.placeholder( placeholder, context, templateContext, options )\n\n*/\n\nimport { extend } from './util';\nimport Random from './random';\nimport { gen } from './handle/gen';\n/*\n    template        属性值（即数据模板）\n    name            属性名\n    context         数据上下文，生成后的数据\n    templateContext 模板上下文，\n\n    Handle.gen(template, name, options)\n    context\n        currentContext, templateCurrentContext,\n        path, templatePath\n        root, templateRoot\n*/\nconst Handler = {\n    gen,\n    extend,\n};\n\nimport { array, object, number, boolean, string as _string, function as _function, regexp } from './handle/index';\nHandler.extend({\n    array,\n    object,\n    number,\n    boolean,\n    string: _string,\n    function: _function,\n    regexp,\n});\n\nimport { placeholder } from './handle/placeholder';\nimport { getValueByKeyPath, normalizePath, splitPathToArray } from './handle/path';\nHandler.extend({\n    _all: function () {\n        return Object.keys(Random).reduce((col, key) => {\n            col[key.toLowerCase()] = key;\n            return col;\n        }, {});\n    },\n    // 处理占位符，转换为最终值\n    placeholder,\n    getValueByKeyPath,\n    normalizePath,\n    splitPathToArray,\n});\n\nexport default Handler;\n","/*\n    ## toJSONSchema\n\n    把 Mock.js 风格的数据模板转换成 JSON Schema。\n\n    > [JSON Schema](http://json-schema.org/)\n */\nimport Constant from '../constant';\nimport { type } from '../util';\nimport { parser } from '../parser';\n\nfunction toJSONSchema(template, name, path = [] /* Internal Use Only */) {\n    // type rule properties items\n    const result = {\n        name: typeof name === 'string' ? name.replace(Constant.RE_KEY, '$1') : name,\n        template,\n        type: type(template), // 可能不准确，例如 { 'name|1': [{}, {} ...] }\n        rule: parser(name),\n        path: path.slice(0),\n    };\n    result.path.push(name === undefined ? 'ROOT' : result.name);\n\n    switch (result.type) {\n        case 'array':\n            result.items = template.map((value, index) => toJSONSchema(value, index, result.path));\n            break;\n        case 'object':\n            result.properties = [...Object.entries(template)].map(([name, value]) =>\n                toJSONSchema(value, name, result.path),\n            );\n            break;\n    }\n\n    return result;\n}\nexport { toJSONSchema };\nexport default toJSONSchema;\n","/*eslint-disable*/\n/*\n    ## valid(template, data)\n\n    校验真实数据 data 是否与数据模板 template 匹配。\n\n    实现思路：\n    1. 解析规则。\n        先把数据模板 template 解析为更方便机器解析的 JSON-Schame\n        name               属性名\n        type               属性值类型\n        template           属性值模板\n        properties         对象属性数组\n        items              数组元素数组\n        rule               属性值生成规则\n    2. 递归验证规则。\n        然后用 JSON-Schema 校验真实数据，校验项包括属性名、值类型、值、值生成规则。\n\n    提示信息\n    https://github.com/fge/json-schema-validator/blob/master/src\n    /main/resources/com/github/fge/jsonschema/validator/validation.properties\n\n    [JSON-Schama validator](http://json-schema-validator.herokuapp.com/)\n    [Regexp Demo](http://demos.forbeslindesay.co.uk/regexp/)\n*/\nimport Constant from '../constant';\nimport * as Util from '../util';\nimport { toJSONSchema } from '../schema/schema';\n\nfunction valid(template, data) {\n    const schema = toJSONSchema(template);\n    const result = Diff.diff(schema, data);\n    for (let i = 0; i < result.length; i++) {\n        // console.log(template, data)\n        // console.warn(Assert.message(result[i]))\n    }\n    return result;\n}\n\n/*\n    ## name\n        有生成规则：比较解析后的 name\n        无生成规则：直接比较\n    ## type\n        无类型转换：直接比较\n        有类型转换：先试着解析 template，然后再检查？\n    ## value vs. template\n        基本类型\n            无生成规则：直接比较\n            有生成规则：\n                number\n                    min-max.dmin-dmax\n                    min-max.dcount\n                    count.dmin-dmax\n                    count.dcount\n                    +step\n                    整数部分\n                    小数部分\n                boolean\n                string\n                    min-max\n                    count\n    ## properties\n        对象\n            有生成规则：检测期望的属性个数，继续递归\n            无生成规则：检测全部的属性个数，继续递归\n    ## items\n        数组\n            有生成规则：\n                `'name|1': [{}, {} ...]`            其中之一，继续递归\n                `'name|+1': [{}, {} ...]`           顺序检测，继续递归\n                `'name|min-max': [{}, {} ...]`      检测个数，继续递归\n                `'name|count': [{}, {} ...]`        检测个数，继续递归\n            无生成规则：检测全部的元素个数，继续递归\n*/\nconst Diff = {\n    diff: function diff(schema, data, name /* Internal Use Only */) {\n        const result = [];\n\n        // 先检测名称 name 和类型 type，如果匹配，才有必要继续检测\n        if (this.name(schema, data, name, result) && this.type(schema, data, name, result)) {\n            this.value(schema, data, name, result);\n            this.properties(schema, data, name, result);\n            this.items(schema, data, name, result);\n        }\n\n        return result;\n    },\n    /* jshint unused:false */\n    name: function (schema, data, name, result) {\n        const length = result.length;\n\n        Assert.equal('name', schema.path, name + '', schema.name + '', result);\n\n        return result.length === length;\n    },\n    type: function (schema, data, name, result) {\n        const length = result.length;\n\n        switch (schema.type) {\n            case 'string':\n                // 跳过含有『占位符』的属性值，因为『占位符』返回值的类型可能和模板不一致，例如 '@int' 会返回一个整形值\n                if (schema.template.match(Constant.RE_PLACEHOLDER)) return true;\n                break;\n            case 'array':\n                if (schema.rule.parameters) {\n                    // name|count: array\n                    if (schema.rule.min !== undefined && schema.rule.max === undefined) {\n                        // 跳过 name|1: array，因为最终值的类型（很可能）不是数组，也不一定与 `array` 中的类型一致\n                        if (schema.rule.count === 1) return true;\n                    }\n                    // 跳过 name|+inc: array\n                    if (schema.rule.parameters[2]) return true;\n                }\n                break;\n            case 'function':\n                // 跳过 `'name': function`，因为函数可以返回任何类型的值。\n                return true;\n        }\n\n        Assert.equal('type', schema.path, Util.type(data), schema.type, result);\n\n        return result.length === length;\n    },\n    value: function (schema, data, name, result) {\n        const length = result.length;\n\n        const rule = schema.rule;\n        const templateType = schema.type;\n        if (templateType === 'object' || templateType === 'array' || templateType === 'function') return true;\n\n        // 无生成规则\n        if (!rule.parameters) {\n            switch (templateType) {\n                case 'regexp':\n                    Assert.match('value', schema.path, data, schema.template, result);\n                    return result.length === length;\n                case 'string':\n                    // 同样跳过含有『占位符』的属性值，因为『占位符』的返回值会通常会与模板不一致\n                    if (schema.template.match(Constant.RE_PLACEHOLDER)) return result.length === length;\n                    break;\n            }\n            Assert.equal('value', schema.path, data, schema.template, result);\n            return result.length === length;\n        }\n\n        // 有生成规则\n        let actualRepeatCount;\n        switch (templateType) {\n            case 'number':\n                const parts = (data + '').split('.');\n                parts[0] = +parts[0];\n\n                // 整数部分\n                // |min-max\n                if (rule.min !== undefined && rule.max !== undefined) {\n                    Assert.greaterThanOrEqualTo('value', schema.path, parts[0], Math.min(rule.min, rule.max), result);\n                    // , 'numeric instance is lower than the required minimum (minimum: {expected}, found: {actual})')\n                    Assert.lessThanOrEqualTo('value', schema.path, parts[0], Math.max(rule.min, rule.max), result);\n                }\n                // |count\n                if (rule.min !== undefined && rule.max === undefined) {\n                    Assert.equal('value', schema.path, parts[0], rule.min, result, '[value] ' + name);\n                }\n\n                // 小数部分\n                if (rule.decimal) {\n                    // |dmin-dmax\n                    if (rule.dmin !== undefined && rule.dmax !== undefined) {\n                        Assert.greaterThanOrEqualTo('value', schema.path, parts[1].length, rule.dmin, result);\n                        Assert.lessThanOrEqualTo('value', schema.path, parts[1].length, rule.dmax, result);\n                    }\n                    // |dcount\n                    if (rule.dmin !== undefined && rule.dmax === undefined) {\n                        Assert.equal('value', schema.path, parts[1].length, rule.dmin, result);\n                    }\n                }\n\n                break;\n\n            case 'boolean':\n                break;\n\n            case 'string':\n                // 'aaa'.match(/a/g)\n                actualRepeatCount = data.match(new RegExp(schema.template, 'g'));\n                actualRepeatCount = actualRepeatCount ? actualRepeatCount.length : 0;\n\n                // |min-max\n                if (rule.min !== undefined && rule.max !== undefined) {\n                    Assert.greaterThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.min, result);\n                    Assert.lessThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.max, result);\n                }\n                // |count\n                if (rule.min !== undefined && rule.max === undefined) {\n                    Assert.equal('repeat count', schema.path, actualRepeatCount, rule.min, result);\n                }\n\n                break;\n\n            case 'regexp':\n                actualRepeatCount = data.match(new RegExp(schema.template.source.replace(/^\\^|\\$$/g, ''), 'g'));\n                actualRepeatCount = actualRepeatCount ? actualRepeatCount.length : 0;\n\n                // |min-max\n                if (rule.min !== undefined && rule.max !== undefined) {\n                    Assert.greaterThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.min, result);\n                    Assert.lessThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.max, result);\n                }\n                // |count\n                if (rule.min !== undefined && rule.max === undefined) {\n                    Assert.equal('repeat count', schema.path, actualRepeatCount, rule.min, result);\n                }\n                break;\n        }\n\n        return result.length === length;\n    },\n    properties: function (schema, data, name, result) {\n        const length = result.length;\n\n        const rule = schema.rule;\n        const keys = Util.keys(data);\n        if (!schema.properties) return;\n\n        // 无生成规则\n        if (!schema.rule.parameters) {\n            Assert.equal('properties length', schema.path, keys.length, schema.properties.length, result);\n        } else {\n            // 有生成规则\n            // |min-max\n            if (rule.min !== undefined && rule.max !== undefined) {\n                Assert.greaterThanOrEqualTo(\n                    'properties length',\n                    schema.path,\n                    keys.length,\n                    Math.min(rule.min, rule.max),\n                    result,\n                );\n                Assert.lessThanOrEqualTo(\n                    'properties length',\n                    schema.path,\n                    keys.length,\n                    Math.max(rule.min, rule.max),\n                    result,\n                );\n            }\n            // |count\n            if (rule.min !== undefined && rule.max === undefined) {\n                // |1, |>1\n                if (rule.count !== 1) Assert.equal('properties length', schema.path, keys.length, rule.min, result);\n            }\n        }\n\n        if (result.length !== length) return false;\n\n        for (let i = 0; i < keys.length; i++) {\n            result.push.apply(\n                result,\n                this.diff(\n                    (function () {\n                        let property;\n                        Util.each(schema.properties, function (item /* , index*/) {\n                            if (item.name === keys[i]) property = item;\n                        });\n                        return property || schema.properties[i];\n                    })(),\n                    data[keys[i]],\n                    keys[i],\n                ),\n            );\n        }\n\n        return result.length === length;\n    },\n    items: function (schema, data, name, result) {\n        const length = result.length;\n\n        if (!schema.items) return;\n\n        const rule = schema.rule;\n\n        // 无生成规则\n        if (!schema.rule.parameters) {\n            Assert.equal('items length', schema.path, data.length, schema.items.length, result);\n        } else {\n            // 有生成规则\n            // |min-max\n            if (rule.min !== undefined && rule.max !== undefined) {\n                Assert.greaterThanOrEqualTo(\n                    'items',\n                    schema.path,\n                    data.length,\n                    Math.min(rule.min, rule.max) * schema.items.length,\n                    result,\n                    '[{utype}] array is too short: {path} must have at least {expected} elements but instance has {actual} elements',\n                );\n                Assert.lessThanOrEqualTo(\n                    'items',\n                    schema.path,\n                    data.length,\n                    Math.max(rule.min, rule.max) * schema.items.length,\n                    result,\n                    '[{utype}] array is too long: {path} must have at most {expected} elements but instance has {actual} elements',\n                );\n            }\n            // |count\n            if (rule.min !== undefined && rule.max === undefined) {\n                // |1, |>1\n                if (rule.count === 1) return result.length === length;\n                else Assert.equal('items length', schema.path, data.length, rule.min * schema.items.length, result);\n            }\n            // |+inc\n            if (rule.parameters[2]) return result.length === length;\n        }\n\n        if (result.length !== length) return false;\n\n        for (let i = 0; i < data.length; i++) {\n            result.push.apply(\n                result,\n                this.diff(schema.items[i % schema.items.length], data[i], i % schema.items.length),\n            );\n        }\n\n        return result.length === length;\n    },\n};\n\n/*\n    完善、友好的提示信息\n\n    Equal, not equal to, greater than, less than, greater than or equal to, less than or equal to\n    路径 验证类型 描述\n\n    Expect path.name is less than or equal to expected, but path.name is actual.\n\n    Expect path.name is less than or equal to expected, but path.name is actual.\n    Expect path.name is greater than or equal to expected, but path.name is actual.\n\n*/\nconst Assert = {\n    message: function (item) {\n        return (item.message || \"[{utype}] Expect {path}'{ltype} {action} {expected}, but is {actual}\")\n            .replace('{utype}', item.type.toUpperCase())\n            .replace('{ltype}', item.type.toLowerCase())\n            .replace('{path}', (Util.isArray(item.path) && item.path.join('.')) || item.path)\n            .replace('{action}', item.action)\n            .replace('{expected}', item.expected)\n            .replace('{actual}', item.actual);\n    },\n    equal: function (type, path, actual, expected, result, message) {\n        if (actual === expected) return true;\n        switch (type) {\n            case 'type':\n                // 正则模板 === 字符串最终值\n                if (expected === 'regexp' && actual === 'string') return true;\n                break;\n        }\n\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is equal to',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    // actual matches expected\n    match: function (type, path, actual, expected, result, message) {\n        if (expected.test(actual)) return true;\n\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'matches',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    notEqual: function (type, path, actual, expected, result, message) {\n        if (actual !== expected) return true;\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is not equal to',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    greaterThan: function (type, path, actual, expected, result, message) {\n        if (actual > expected) return true;\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is greater than',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    lessThan: function (type, path, actual, expected, result, message) {\n        if (actual < expected) return true;\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is less to',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    greaterThanOrEqualTo: function (type, path, actual, expected, result, message) {\n        if (actual >= expected) return true;\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is greater than or equal to',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n    lessThanOrEqualTo: function (type, path, actual, expected, result, message) {\n        if (actual <= expected) return true;\n        const item = {\n            path: path,\n            type: type,\n            actual: actual,\n            expected: expected,\n            action: 'is less than or equal to',\n            message: message,\n        };\n        item.message = Assert.message(item);\n        result.push(item);\n        return false;\n    },\n};\n\nvalid.Diff = Diff;\nvalid.Assert = Assert;\n\nexport { valid };\n","// 集中管理 mocked 的 url\nlet mapper = [];\nconst _mocked = {\n    $getAll() {\n        return mapper;\n    },\n    $set(value) {\n        value = { url: value.rurl, type: value.rtype, template: value.template };\n        mapper.push(value);\n    },\n    $delete(key) {\n        mapper.delete(key);\n    },\n    $clear() {\n        mapper = [];\n    },\n};\nexport { _mocked };\n","import { type as Type, isFunction } from '../util';\nimport { gen } from '../handle/gen'; // 从模板生成数据\nimport { _mocked } from '../_mocked';\n\n// 查找与请求参数匹配的数据模板：URL，Type\nfunction find({ url, type }) {\n    type = type.toLowerCase();\n\n    for (const item of _mocked.$getAll()) {\n        const { url: rurl, type: rtype } = item;\n        if (match(rurl, url) && match(rtype, type)) {\n            console.log('[mock]', url, '>', item.rurl);\n            return item;\n        }\n    }\n    return false;\n}\n\nfunction match(expected, actual) {\n    switch (Type(expected)) {\n        case 'string':\n            return expected === actual;\n        case 'regexp':\n            return expected.test(actual);\n        default:\n            return false;\n    }\n}\n\n// 数据模板 ＝> 响应数据\nfunction convert({ template, body }, options) {\n    return isFunction(template)\n        ? template({ ...options, type: options.type.toUpperCase(), body: body ?? null })\n        : gen(template);\n}\nexport { find, convert, match };\n","/**\n * Check if `obj` is a URLSearchParams object\n * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143\n *\n * @param  {*} obj\n * @return {boolean}\n */\nexport const isURLSearchParameters = (object) => {\n    return (\n        typeof object === 'object' &&\n        typeof object.append === 'function' &&\n        typeof object.delete === 'function' &&\n        typeof object.get === 'function' &&\n        typeof object.getAll === 'function' &&\n        typeof object.has === 'function' &&\n        typeof object.set === 'function' &&\n        typeof object.sort === 'function' &&\n        object[Symbol.toStringTag] === 'URLSearchParams' // 获取类名的方式哦\n    );\n};\n","export const BODY = Symbol('Body internals');\nexport const RESPONSE = Symbol('Response internals');\n","/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nexport async function consumeBody(data) {\n    // 标记为已经使用\n    if (data.disturbed) {\n        throw new TypeError(`body used already for: ${data.url}`);\n    }\n    data.disturbed = true;\n\n    // 报错\n    if (data.error) {\n        throw data.error;\n    }\n\n    if (data.body instanceof FormData) {\n        return new Blob([Object.fromEntries(data.body.entries())]);\n    }\n    return data.body;\n}\n","/**\n * Body.js\n *\n * Body interface provides common methods for Request and Response\n */\n\nimport { isURLSearchParameters } from './utils/is';\nimport { BODY as INTERNALS } from './INTERNALS';\n\nimport { consumeBody } from './body/consumeBody';\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nexport default class Body {\n    constructor(body, { size = 0 } = {}) {\n        if (body === null) {\n            // Body is undefined or null\n            body = new Blob([]);\n        } else if (isURLSearchParameters(body)) {\n            // Body is a URLSearchParams\n            body = new Blob([body]);\n        } else if (ArrayBuffer.isView(body)) {\n            // Body is ArrayBufferView\n            body = new Blob([body]);\n        } else {\n            body = new Blob([JSON.stringify(body)]);\n        }\n\n        this[INTERNALS] = {\n            body,\n            boundary: null,\n            disturbed: false,\n            error: null,\n        };\n        this.size = size;\n    }\n\n    get body() {\n        return this[INTERNALS].body;\n    }\n\n    get bodyUsed() {\n        return this[INTERNALS].disturbed;\n    }\n\n    /**\n     * Decode response as ArrayBuffer\n     *\n     * @return  Promise\n     */\n    async arrayBuffer() {\n        const blob = await consumeBody(this[INTERNALS]);\n        return blob.arrayBuffer();\n    }\n\n    /**\n     * Return raw response as Blob\n     *\n     * @return Promise\n     */\n    async blob() {\n        return consumeBody(this[INTERNALS]);\n    }\n\n    /**\n     * Decode response as json\n     *\n     * @return  Promise\n     */\n    async json() {\n        const text = await this.text();\n        return JSON.parse(text || '{}');\n    }\n\n    /**\n     * Decode response as text\n     *\n     * @return  Promise\n     */\n    async text() {\n        const blob = await consumeBody(this[INTERNALS]);\n        return blob.text();\n    }\n\n    /**\n     * Decode response as buffer (non-spec api)\n     *\n     * @return  Promise\n     */\n}\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n    body: { enumerable: true },\n    bodyUsed: { enumerable: true },\n    arrayBuffer: { enumerable: true },\n    blob: { enumerable: true },\n    json: { enumerable: true },\n    text: { enumerable: true },\n});\n","import { isURLSearchParameters } from '../utils/is';\nimport { BODY as INTERNALS } from '../INTERNALS';\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param {any} body Any options.body input\n * @return {string | null}\n */\nexport const extractContentType = (body, request) => {\n    // Body is null or undefined\n    if (body === null) {\n        return null;\n    }\n\n    // Body is string\n    if (typeof body === 'string') {\n        return 'text/plain;charset=UTF-8';\n    }\n\n    // Body is a URLSearchParams\n    if (isURLSearchParameters(body)) {\n        return 'application/x-www-form-urlencoded;charset=UTF-8';\n    }\n\n    // Body is blob\n    if (body instanceof Blob) {\n        return body.type || null;\n    }\n\n    if (body instanceof FormData) {\n        return `multipart/form-data; boundary=${request[INTERNALS].boundary}`;\n    }\n\n    // Body constructor defaults other things to string\n    return 'text/plain;charset=UTF-8';\n};\n","const redirectStatus = new Set([301, 302, 303, 307, 308]);\n\n/**\n * Redirect code matching\n *\n * @param {number} code - Status code\n * @return {boolean}\n */\nexport const isRedirect = (code) => {\n    return redirectStatus.has(code);\n};\n","/**\n * Response.js\n *\n * Response class provides content decoding\n */\n\nimport Body from './body';\nimport { extractContentType } from './body/exactContentType';\nimport { isRedirect } from './utils/is-redirect';\nimport { RESPONSE as INTERNALS } from './INTERNALS';\nconst Response = (globalThis.window && globalThis.window.Response) || class Null {};\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nexport default class fakeResponse extends Body {\n    constructor(body = null, options = {}) {\n        super(body, options);\n        const status = options.status != null ? options.status : 200;\n        const headers = new Headers(options.headers);\n        if (body !== null && !headers.has('Content-Type')) {\n            const contentType = extractContentType(body);\n            if (contentType) {\n                headers.append('Content-Type', contentType);\n            }\n        }\n        this[INTERNALS] = {\n            type: 'default',\n            url: options.url,\n            status,\n            statusText: options.statusText || '',\n            headers,\n            counter: options.counter,\n        };\n    }\n\n    get type() {\n        return this[INTERNALS].type;\n    }\n\n    get url() {\n        return this[INTERNALS].url || '';\n    }\n\n    get status() {\n        return this[INTERNALS].status;\n    }\n\n    /**\n     * Convenience property representing if the request ended normally\n     */\n    get ok() {\n        return this[INTERNALS].status >= 200 && this[INTERNALS].status < 300;\n    }\n\n    get redirected() {\n        return this[INTERNALS].counter > 0;\n    }\n\n    get statusText() {\n        return this[INTERNALS].statusText;\n    }\n\n    get headers() {\n        return this[INTERNALS].headers;\n    }\n\n    /**\n     * Clone this response\n     *\n     * @return  Response\n     */\n    clone() {\n        // Don't allow cloning a used body\n        if (this.bodyUsed) {\n            throw new Error('cannot clone body after it is used');\n        }\n        return new Response(this.body, {\n            type: this.type,\n            url: this.url,\n            status: this.status,\n            statusText: this.statusText,\n            headers: this.headers,\n            ok: this.ok,\n            redirected: this.redirected,\n            size: this.size,\n        });\n    }\n\n    /**\n     * @param {string} url    The URL that the new response is to originate from.\n     * @param {number} status An optional status code for the response (e.g., 302.)\n     * @return {Response}    A Response object.\n     */\n    static redirect(url, status = 302) {\n        if (!isRedirect(status)) {\n            throw new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n        }\n\n        return new Response(null, {\n            headers: {\n                location: new URL(url).toString(),\n            },\n            status,\n        });\n    }\n\n    static error() {\n        const response = new Response(null, { status: 0, statusText: '' });\n        response[INTERNALS].type = 'error';\n        return response;\n    }\n\n    get [Symbol.toStringTag]() {\n        return 'Response';\n    }\n}\n\nObject.defineProperties(Response.prototype, {\n    type: { enumerable: true },\n    url: { enumerable: true },\n    status: { enumerable: true },\n    ok: { enumerable: true },\n    redirected: { enumerable: true },\n    statusText: { enumerable: true },\n    headers: { enumerable: true },\n    clone: { enumerable: true },\n});\n","const window = globalThis.window || {};\nconst realFetch = window.fetch;\nfunction mockFetch() {\n    // 代理 fetch 的初始化函数\n    if (window.fetch && !window.fetch.hasOwnProperty('$mock')) {\n        window.fetch = fakeFetch;\n        window.fetch.$mock = true;\n        console.warn('fetch 已经被代理');\n    }\n}\n\n// 假的 fetch 函数\nimport { find, convert } from '../ajax-tools';\n\n// 假的 Response 对象\n// import fakeResponse from \"./src/response.js\";\nimport fakeResponse from './src/response';\n\nasync function fakeFetch(url, options = {}) {\n    if (window.fetch.$mock === true) {\n        // 只有在 $mock 标记为 true 时才进行代理\n        const savedHook = {\n            url,\n            type: options.method || 'get',\n        };\n        const result = find(savedHook);\n        if (result) {\n            const data = convert({ ...result, body: options.body }, savedHook);\n            console.warn('mock | fetch代理中', url);\n            return new fakeResponse(data, options);\n        }\n    }\n\n    return realFetch(url, options);\n}\nexport { fakeFetch, mockFetch };\n","export default {\n    100: 'Continue',\n    101: 'Switching Protocols',\n    200: 'OK',\n    201: 'Created',\n    202: 'Accepted',\n    203: 'Non-Authoritative Information',\n    204: 'No Content',\n    205: 'Reset Content',\n    206: 'Partial Content',\n    300: 'Multiple Choice',\n    301: 'Moved Permanently',\n    302: 'Found',\n    303: 'See Other',\n    304: 'Not Modified',\n    305: 'Use Proxy',\n    307: 'Temporary Redirect',\n    400: 'Bad Request',\n    401: 'Unauthorized',\n    402: 'Payment Required',\n    403: 'Forbidden',\n    404: 'Not Found',\n    405: 'Method Not Allowed',\n    406: 'Not Acceptable',\n    407: 'Proxy Authentication Required',\n    408: 'Request Timeout',\n    409: 'Conflict',\n    410: 'Gone',\n    411: 'Length Required',\n    412: 'Precondition Failed',\n    413: 'Request Entity Too Large',\n    414: 'Request-URI Too Long',\n    415: 'Unsupported Media Type',\n    416: 'Requested Range Not Satisfiable',\n    417: 'Expectation Failed',\n    422: 'Unprocessable Entity',\n    500: 'Internal Server Error',\n    501: 'Not Implemented',\n    502: 'Bad Gateway',\n    503: 'Service Unavailable',\n    504: 'Gateway Timeout',\n    505: 'HTTP Version Not Supported',\n};\n","// 使用不完全覆盖的方式，使用继承方式继承所有的属性\n// 只在 send 方式调用的时候对其进行数据返回\nimport { find, convert } from '../ajax-tools';\nimport HTTP_STATUS_CODES from './constant';\n\nconst voidFunc = function () {};\nconst window = globalThis.window || {};\nconst XMLHttpRequest = window?.XMLHttpRequest ? window.XMLHttpRequest : class __NULL__ {};\nconst SEND = XMLHttpRequest?.prototype?.send || voidFunc;\nconst OPEN = XMLHttpRequest?.prototype?.open || voidFunc;\n\n// ! 虽然 XMLHttpRequest 不能够修改，但是可以通过设置 getter 和 setter 将属性映射到 $属性上，这样的话，原生 XHR 会将数据写入和读取的位置更改为新的对象属性上，这样就可以被我们修改了。\n\n// 不可以在原生的 XMLHttpRequest 上直接定义 getter 和 setter，\n// 也不可以在 XHR 实例上定义\n// 这样的话会导致无法接收到数据\n// 但是确认为是 mockjs 内的数据返回就可以直接修改 XHR 实例了\nconst defineGetAndSet = function (XHR) {\n    // 将这些 键值对 映射到 $Mock 属性对象的对应值上去\n    const array = ['readyState', 'status', 'response', 'responseText', 'statusText'];\n    Object.defineProperties(\n        XHR,\n        array.reduce((col, cur) => {\n            col[cur] = {\n                get() {\n                    return this.$Mock[cur];\n                },\n                set: function (state) {\n                    this.$Mock[cur] = state;\n                },\n            };\n            return col;\n        }, {}),\n    );\n};\nclass MockXMLHttpRequest extends XMLHttpRequest {\n    constructor(...args) {\n        super(...args);\n    }\n    _send = SEND;\n    _open = OPEN;\n    open(method, url, async, username, password) {\n        // 不进行同步操作\n        this._open(method, url, true, username, password);\n        this.$url = url;\n        this.$type = method.toLowerCase();\n    }\n    send(body) {\n        if (this.$mock) {\n            this.$template = find({ url: this.$url, type: this.$type });\n            if (this.$template) {\n                this.$template = { ...this.$template, body };\n                defineGetAndSet(this);\n                this.dispatchEvent(new Event('loadstart'));\n                setTimeout(this.$done.bind(this), this.timeout || 100);\n                return null;\n            }\n        }\n        this._send(body);\n    }\n    get mock() {\n        return this.$mock;\n    }\n    set mock(value) {\n        if (typeof value === 'boolean') this.$mock = value;\n    }\n    $Mock = {\n        // 原生属性的 getter 和 setter\n        readyState: 0,\n        status: 200,\n        response: '',\n        responseText: '',\n        statusText: '',\n    };\n    $type = 'get';\n    $url = '';\n    $mock = true;\n    $template = null;\n\n    $done() {\n        // 伪造 XHR 返回事件\n        this.readyState = this.HEADERS_RECEIVED;\n        this.dispatchEvent(new Event('readystatechange'));\n        this.readyState = this.LOADING;\n        this.dispatchEvent(new Event('readystatechange'));\n\n        this.status = 200;\n        this.statusText = HTTP_STATUS_CODES[200];\n        const data = convert(this.$template, { url: this.$url, type: this.$type });\n        this.response = data;\n        this.responseText = typeof this.response === 'string' ? this.response : JSON.stringify(this.response);\n        this.readyState = this.DONE;\n        this.dispatchEvent(new Event('readystatechange'));\n        this.dispatchEvent(new Event('load'));\n        this.dispatchEvent(new Event('loadend'));\n    }\n}\nexport { MockXMLHttpRequest };\n","// 在 fetch 的代理中只需要进行 fetch 的数据代理即可\n//\nimport { mockFetch } from './fetch/fetch';\n\nimport { MockXMLHttpRequest } from './XMLHttpRequest/xhr';\nexport const XHR = Object.assign(\n    function () {\n        return new MockXMLHttpRequest(...arguments);\n    },\n    {\n        setup(config) {\n            // TODO\n        },\n        mock() {\n            typeof globalThis.window !== 'undefined' && mockFetch(); // 浏览器直接使用即可\n            const window = globalThis.window || {};\n            // 拦截 XHR\n            if (window.XMLHttpRequest !== XHR) {\n                console.log('XHR 拦截');\n                window.XMLHttpRequest = XHR;\n            }\n        },\n    },\n);\nexport { MockXMLHttpRequest };\n","import Handler from './handler';\nimport { _mocked } from './_mocked';\nimport { XHR } from './xhr/index';\n\nfunction mock(url: string, type: string, template: any): void;\nfunction mock(url: string, template: any): void;\nfunction mock<T>(template: any): T;\nfunction mock(...args: any[]) {\n    let rurl;\n    let rtype = 'get';\n    let template;\n\n    switch (args.length) {\n        case 1:\n            // Mock.mock(template)\n            [template] = args;\n            return Handler.gen(template);\n        // 2 和 3 switch 穿透\n        case 2:\n            // Mock.mock(rurl, template)\n            XHR.mock();\n            [rurl, template] = args;\n            break;\n        case 3:\n            XHR.mock();\n            // Mock.mock(rurl, rtype, template)\n            [rurl, rtype, template] = args;\n            break;\n    }\n\n    _mocked.$set({\n        rurl,\n        rtype,\n        template,\n    });\n    return null;\n}\nexport { mock };\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","/*\n    ## Color 字典数据\n\n    字典数据来源 [A nicer color palette for the web](http://clrs.cc/)\n*/\nexport default {\n    // name value nicer\n    navy: {\n        value: '#000080',\n        nicer: '#001F3F',\n    },\n    blue: {\n        value: '#0000ff',\n        nicer: '#0074D9',\n    },\n    aqua: {\n        value: '#00ffff',\n        nicer: '#7FDBFF',\n    },\n    teal: {\n        value: '#008080',\n        nicer: '#39CCCC',\n    },\n    olive: {\n        value: '#008000',\n        nicer: '#3D9970',\n    },\n    green: {\n        value: '#008000',\n        nicer: '#2ECC40',\n    },\n    lime: {\n        value: '#00ff00',\n        nicer: '#01FF70',\n    },\n    yellow: {\n        value: '#ffff00',\n        nicer: '#FFDC00',\n    },\n    orange: {\n        value: '#ffa500',\n        nicer: '#FF851B',\n    },\n    red: {\n        value: '#ff0000',\n        nicer: '#FF4136',\n    },\n    maroon: {\n        value: '#800000',\n        nicer: '#85144B',\n    },\n    fuchsia: {\n        value: '#ff00ff',\n        nicer: '#F012BE',\n    },\n    purple: {\n        value: '#800080',\n        nicer: '#B10DC9',\n    },\n    silver: {\n        value: '#c0c0c0',\n        nicer: '#DDDDDD',\n    },\n    gray: {\n        value: '#808080',\n        nicer: '#AAAAAA',\n    },\n    black: {\n        value: '#000000',\n        nicer: '#111111',\n    },\n    white: {\n        value: '#FFFFFF',\n        nicer: '#FFFFFF',\n    },\n};\n","/*\n    ## Color\n\n    http://llllll.li/randomColor/\n        A color generator for JavaScript.\n        randomColor generates attractive colors by default. More specifically, randomColor produces bright colors with a reasonably high saturation. This makes randomColor particularly useful for data visualizations and generative art.\n\n    http://randomcolour.com/\n        var bg_colour = Math.floor(Math.random() * 16777215).toString(16);\n        bg_colour = \"#\" + (\"000000\" + bg_colour).slice(-6);\n        document.bgColor = bg_colour;\n\n    http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n        Creating random colors is actually more difficult than it seems. The randomness itself is easy, but aesthetically pleasing randomness is more difficult.\n        https://github.com/devongovett/color-generator\n\n    http://www.paulirish.com/2009/random-hex-color-code-snippets/\n        Random Hex Color Code Generator in JavaScript\n\n    http://chancejs.com/#color\n        chance.color()\n        // => '#79c157'\n        chance.color({format: 'hex'})\n        // => '#d67118'\n        chance.color({format: 'shorthex'})\n        // => '#60f'\n        chance.color({format: 'rgb'})\n        // => 'rgb(110,52,164)'\n\n    http://tool.c7sky.com/webcolor\n        网页设计常用色彩搭配表\n\n    https://github.com/One-com/one-color\n        An OO-based JavaScript color parser/computation toolkit with support for RGB, HSV, HSL, CMYK, and alpha channels.\n        API 很赞\n\n    https://github.com/harthur/color\n        JavaScript color conversion and manipulation library\n\n    https://github.com/leaverou/css-colors\n        Share & convert CSS colors\n    http://leaverou.github.io/css-colors/#slategray\n        Type a CSS color keyword, #hex, hsl(), rgba(), whatever:\n\n    色调 hue\n        http://baike.baidu.com/view/23368.htm\n        色调指的是一幅画中画面色彩的总体倾向，是大的色彩效果。\n    饱和度 saturation\n        http://baike.baidu.com/view/189644.htm\n        饱和度是指色彩的鲜艳程度，也称色彩的纯度。饱和度取决于该色中含色成分和消色成分（灰色）的比例。含色成分越大，饱和度越大；消色成分越大，饱和度越小。\n    亮度 brightness\n        http://baike.baidu.com/view/34773.htm\n        亮度是指发光体（反光体）表面发光（反光）强弱的物理量。\n    照度 luminosity\n        物体被照亮的程度,采用单位面积所接受的光通量来表示,表示单位为勒[克斯](Lux,lx) ,即 1m / m2 。\n\n    http://stackoverflow.com/questions/1484506/random-color-generator-in-javascript\n        var letters = '0123456789ABCDEF'.split('')\n        var color = '#'\n        for (var i = 0; i < 6; i++) {\n            color += letters[Math.floor(Math.random() * 16)]\n        }\n        return color\n\n        // 随机生成一个无脑的颜色，格式为 '#RRGGBB'。\n        // _brainlessColor()\n        var color = Math.floor(\n            Math.random() *\n            (16 * 16 * 16 * 16 * 16 * 16 - 1)\n        ).toString(16)\n        color = \"#\" + (\"000000\" + color).slice(-6)\n        return color.toUpperCase()\n*/\nimport Color from 'color'; // 使用 color 这个库进行颜色转换\nimport DICT from './color/color_dict';\nimport RandomColor from './color/color_dict_cn.json';\nimport { random, sample } from 'game-random';\n\nlet _hue;\nfunction _goldenRatioColor(saturation, value) {\n    return Color(color());\n    // const _goldenRatio = 0.618033988749895;\n    // _hue = _hue || (random(true) );\n    // _hue += _goldenRatio;\n    // _hue %= 1;\n\n    // if (typeof saturation !== 'number') saturation = 0.5;\n    // if (typeof value !== 'number') value = 0.95;\n\n    // return Color.hsv(_hue * 360, saturation * 100, value * 100);\n}\n\n// 中国色 数据来自于 http://zhongguose.com\n\n// 随机生成一个有吸引力的颜色，格式为 '#RRGGBB' hex。\nfunction color(name) {\n    if (name || DICT[name]) return DICT[name].nicer;\n    return sample(RandomColor).hex;\n}\n\n// #DAC0DE\nfunction hex() {\n    const hsv = _goldenRatioColor();\n    return hsv.hex();\n}\n\n// rgb(128,255,255)\nfunction rgb() {\n    const hsv = _goldenRatioColor();\n    return hsv.hsv().string();\n}\n// rgba(128,255,255,0.3)\nfunction rgba() {\n    const hsv = _goldenRatioColor();\n    return hsv.alpha(random(true).toFixed(2)).hsv().string();\n}\n\n// hsl(300,80%,90%)\nfunction hsl() {\n    const hsv = _goldenRatioColor();\n    const num = hsv.hsl();\n    // 防止小数导致判断错误\n    num.color[0] = Math.floor(num.color[0]);\n    return num.string();\n}\nexport { color, hex, rgb, rgba, hsl, _goldenRatioColor };\n","/*\n    ## Name\n\n    [Beyond the Top 1000 Names](http://www.ssa.gov/oact/babynames/limits.html)\n*/\nimport Name from './name.json';\nconst { firstName, lastName, cfirstName, clastName } = Name;\nimport { pick } from './helper';\n\n// 随机生成一个常见的英文名。\nfunction first() {\n    const names = firstName.male.concat();\n    return pick(names);\n}\n\n// 随机生成一个常见的英文姓。\nfunction last() {\n    return pick(lastName);\n}\n\n// 随机生成一个常见的英文姓名。\nfunction name(middle) {\n    middle = middle ? ` ${first()} ` : ' ';\n    return `${first()}${middle}${last()}`;\n}\n\n/*\n    随机生成一个常见的中文姓。\n    [世界常用姓氏排行](http://baike.baidu.com/view/1719115.htm)\n    [玄派网 - 网络小说创作辅助平台](http://xuanpai.sinaapp.com/)\n*/\nfunction cfirst() {\n    return pick(cfirstName);\n} /*\n    随机生成一个常见的中文名。\n    [中国最常见名字前50名_三九算命网](http://www.name999.net/xingming/xingshi/20131004/48.html)\n*/\nfunction clast() {\n    return pick(clastName);\n}\n// 随机生成一个常见的中文姓名。\nfunction cname() {\n    return cfirst() + clast();\n}\nexport { first, last, name, cfirst, clast, cname };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","/*\n    ## Address 字典数据\n\n    字典数据来源 http://www.atatech.org/articles/30028?rnd=254259856\n\n    国标 省（市）级行政区划码表\n\n    华北   北京市 天津市 河北省 山西省 内蒙古自治区\n    东北   辽宁省 吉林省 黑龙江省\n    华东   上海市 江苏省 浙江省 安徽省 福建省 江西省 山东省\n    华南   广东省 广西壮族自治区 海南省\n    华中   河南省 湖北省 湖南省\n    西南   重庆市 四川省 贵州省 云南省 西藏自治区\n    西北   陕西省 甘肃省 青海省 宁夏回族自治区 新疆维吾尔自治区\n    港澳台 香港特别行政区 澳门特别行政区 台湾省\n*/\n\n// DICT  = { id : Name }\n// id 的表示方式是 110100\n// 11 表示 省级, 01 表示 市, 00 表示 区\n// 大致是上面这样分类的\n\nimport DICT from './address_ch.json';\n\n// id pid/parentId name children\n\n// 将扁平数组转化为树状\nfunction createTree(list) {\n    const bugList = []; // 用于一次遍历后没有找到父级元素的元素\n    const { result, mapped } = list.reduce(\n        (all, item) => {\n            const { mapped, result } = all;\n            const { id, pid } = item;\n            mapped[id] = item; // 记录这个点\n\n            if (pid === id) {\n                // 自己为自己父级则为\n                result.push(item);\n                return { mapped, result };\n            }\n            const hasParent = mapped.hasOwnProperty(pid);\n            if (!hasParent) {\n                // 父级尚未插入到mapped记录中\n                bugList.push(item);\n                return { mapped, result };\n            }\n            const parent = mapped[pid];\n            parent.children = [...(parent.children || []), item];\n            return { mapped, result };\n        },\n        {\n            mapped: {}, // 缓存已经记录过的数据\n            result: [],\n        },\n    );\n    bugList.forEach((item) => {\n        const parent = mapped[item.pid];\n        parent.children = [...(parent.children || []), item];\n    });\n    return result;\n}\nconst ids = Object.keys(DICT);\n\n// 转化数组内对象的表现形式\nconst fixed = Object.entries(DICT).map(([id, value]) => {\n    let pid =\n        id.slice(2, 6) === '0000' ? id : id.slice(4, 6) === '00' ? id.slice(0, 2) + '0000' : id.slice(0, 4) + '00';\n    if (!ids.includes(pid)) {\n        // 修复 pid 并不存在，但是是归属于顶级的错误\n        pid = id.slice(0, 2) + '0000';\n    }\n    return {\n        id,\n        pid,\n        name: value,\n    };\n});\n\nconst DICT_FIXED = createTree(fixed);\n\nexport default DICT_FIXED;\n","export default {\n    yyyy: 'getFullYear',\n    yy: function (date) {\n        return ('' + date.getFullYear()).slice(2);\n    },\n    y: 'yy',\n\n    MM: function (date) {\n        const m = date.getMonth() + 1;\n        return m < 10 ? '0' + m : m;\n    },\n    M: function (date) {\n        return date.getMonth() + 1;\n    },\n\n    dd: function (date) {\n        const d = date.getDate();\n        return d < 10 ? '0' + d : d;\n    },\n    d: 'getDate',\n\n    HH: function (date) {\n        const h = date.getHours();\n        return h < 10 ? '0' + h : h;\n    },\n    H: 'getHours',\n    hh: function (date) {\n        const h = date.getHours() % 12;\n        return h < 10 ? '0' + h : h;\n    },\n    h: function (date) {\n        return date.getHours() % 12;\n    },\n\n    mm: function (date) {\n        const m = date.getMinutes();\n        return m < 10 ? '0' + m : m;\n    },\n    m: 'getMinutes',\n\n    ss: function (date) {\n        const s = date.getSeconds();\n        return s < 10 ? '0' + s : s;\n    },\n    s: 'getSeconds',\n\n    SS: function (date) {\n        const ms = date.getMilliseconds();\n        return (ms < 10 && '00' + ms) || (ms < 100 && '0' + ms) || ms;\n    },\n    S: 'getMilliseconds',\n\n    A: function (date) {\n        return date.getHours() < 12 ? 'AM' : 'PM';\n    },\n    a: function (date) {\n        return date.getHours() < 12 ? 'am' : 'pm';\n    },\n    T: 'getTime',\n};\n","/* eslint-disable no-fallthrough*/\n/*\n    ## Date\n*/\nimport { integer } from './basic/number';\n\n// 日期占位符集合。\nimport _patternLetters from './date/_patternLetters';\n\nconst _rformat = new RegExp(`(${Object.keys(_patternLetters).join('|')})`, 'g');\n\n// 返回一个随机的日期字符串。\nfunction date(format = 'yyyy-MM-dd') {\n    return _formatDate(_randomDate(), format);\n}\nfunction datetime(format = 'yyyy-MM-dd HH:mm:ss') {\n    return date(format);\n}\nfunction time(format = 'HH:mm:ss') {\n    return date(format);\n}\nfunction now(unit, format) {\n    // now(unit) now(format)\n    if (arguments.length === 1) {\n        // now(format)\n        if (!/year|month|day|hour|minute|second|week/.test(unit)) {\n            format = unit;\n            unit = '';\n        }\n    }\n    unit = (unit || '').toLowerCase();\n    format = format || 'yyyy-MM-dd HH:mm:ss';\n\n    const date = new Date();\n\n    /* jshint -W086 */\n    // 参考自 http://momentjs.cn/docs/#/manipulating/start-of/\n    switch (unit) {\n        case 'year':\n            date.setMonth(0);\n        case 'month':\n            date.setDate(1);\n        case 'week':\n        case 'day':\n            date.setHours(0);\n        case 'hour':\n            date.setMinutes(0);\n        case 'minute':\n            date.setSeconds(0);\n        case 'second':\n            date.setMilliseconds(0);\n    }\n    switch (unit) {\n        case 'week':\n            date.setDate(date.getDate() - date.getDay());\n    }\n\n    return _formatDate(date, format);\n}\n\nfunction _formatDate(date, format) {\n    return format.replace(_rformat, function creatNewSubString($0, flag) {\n        // 这个函数用于捕获格式化日期的关键字，然后进行替换\n        const targetPattern = _patternLetters[flag];\n        return typeof targetPattern === 'function'\n            ? targetPattern(date)\n            : targetPattern in _patternLetters\n            ? creatNewSubString($0, targetPattern)\n            : date[targetPattern]();\n    });\n}\n\nfunction _randomDate(min = new Date(0), max = new Date()) {\n    return new Date(integer(min.getTime(), max.getTime()));\n}\n\nfunction timestamp(min, max) {\n    if (min instanceof Date && max instanceof Date) return _randomDate(min, max).getTime();\n    return _randomDate().getTime();\n}\n\nexport {\n    _patternLetters,\n    // 日期占位符正则。\n    _rformat,\n    // 格式化日期。\n    _formatDate,\n    // 生成一个随机的 Date 对象。\n    _randomDate,\n    // 返回一个随机的时间字符串。\n    time,\n    // 返回一个随机的日期和时间字符串。\n    datetime,\n    date,\n    // 返回当前的日期和时间字符串。\n    now,\n    // KonghaYao 新增函数：生成固定时间段的时间戳\n    timestamp,\n};\n","import DICT from '../address_dict';\nimport { pick } from '../helper';\nimport { date } from '../date';\nimport { string } from '../basic';\n/*\n    随机生成一个 18 位身份证。\n\n    [身份证](http://baike.baidu.com/view/1697.htm#4)\n        地址码 6 + 出生日期码 8 + 顺序码 3 + 校验码 1\n    [《中华人民共和国行政区划代码》国家标准(GB/T2260)](http://zhidao.baidu.com/question/1954561.html)\n*/\nexport default function id() {\n    let id;\n    let sum = 0;\n    const rank = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];\n    const last = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n\n    id = pick(DICT).id + date('yyyyMMdd') + string('number', 3);\n\n    for (let i = 0; i < id.length; i++) {\n        sum += id[i] * rank[i];\n    }\n    id += last[sum % 11];\n\n    return id;\n}\n","/*\n        随机生成一个 GUID。\n\n        http://www.broofa.com/2008/09/javascript-uuid-function/\n        [UUID 规范](http://www.ietf.org/rfc/rfc4122.txt)\n            UUIDs (Universally Unique IDentifier)\n            GUIDs (Globally Unique IDentifier)\n            The formal definition of the UUID string representation is provided by the following ABNF [7]:\n                UUID                   = time-low \"-\" time-mid \"-\"\n                                       time-high-and-version \"-\"\n                                       clock-seq-and-reserved\n                                       clock-seq-low \"-\" node\n                time-low               = 4hexOctet\n                time-mid               = 2hexOctet\n                time-high-and-version  = 2hexOctet\n                clock-seq-and-reserved = hexOctet\n                clock-seq-low          = hexOctet\n                node                   = 6hexOctet\n                hexOctet               = hexDigit hexDigit\n                hexDigit =\n                    \"0\" / \"1\" / \"2\" / \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" /\n                    \"a\" / \"b\" / \"c\" / \"d\" / \"e\" / \"f\" /\n                    \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\n\n        https://github.com/victorquinn/chancejs/blob/develop/chance.js#L1349\n\n        KonghaYao : GUID 为微软对 GUID 的一种实现，在此实现的 guid 是对 uuid 的字符串转换\n\n        UUID格式：xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16)\n        GUID格式：xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)\n    */\nimport { random } from 'game-random';\nfunction generateGUID() {\n    const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        const r = random(0, 15);\n        const v = c == 'x' ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n    });\n    return uuid;\n}\nexport default function guid() {\n    return generateGUID();\n}\n","/*\n    ## Miscellaneous\n*/\nimport { v4 as uuid } from 'uuid';\nimport id from './misc/id';\nimport guid from './misc/guid';\nimport { natural } from './basic/number';\n/*\n    生成一个全局的自增整数。\n    类似自增主键（auto increment primary key）。\n*/\nlet key = 0;\nconst increment = function (step) {\n    return (key += +step || 1);\n};\nconst inc = increment;\n\n// Dice\nfunction d4() {\n    return natural(1, 4);\n}\nfunction d6() {\n    return natural(1, 6);\n}\nfunction d8() {\n    return natural(1, 8);\n}\nfunction d12() {\n    return natural(1, 12);\n}\nfunction d20() {\n    return natural(1, 20);\n}\nfunction d100() {\n    return natural(1, 100);\n}\nexport { d4, d6, d8, d12, d20, d100, guid, uuid, id, increment, inc };\n","import { random } from 'game-random';\nimport { times } from 'lodash-es';\nimport { character } from '../basic';\nimport { capitalize } from '../helper';\n// 随机生成一个句子，第一个单词的首字母大写。\nfunction sentence(min = 12, max = 18) {\n    switch (arguments.length) {\n        case 1:\n            max = min;\n    }\n    const len = random(min, max);\n    const string = times(len, () => word()).join(' ');\n    return capitalize(string) + '.';\n}\n\n// 随机生成一个单词。\nfunction word(min = 3, max = 10) {\n    switch (arguments.length) {\n        case 1:\n            max = min;\n    }\n    const len = random(min, max);\n    return times(len, () => character('lower')).join('');\n}\n\n// 随机生成一段文本。\nfunction paragraph(min = 3, max = 7) {\n    switch (arguments.length) {\n        case 1:\n            max = min;\n    }\n    const len = random(min, max);\n    return times(len, () => sentence()).join('\\n');\n}\n\n// 随机生成一句标题，其中每个单词的首字母大写。\nfunction title(min = 3, max = 7) {\n    switch (arguments.length) {\n        case 1:\n            max = min;\n    }\n    const len = random(min, max);\n    return times(len, () => word(1, 1))\n        .join('')\n        .toUpperCase();\n}\nexport { word, paragraph, sentence, title };\n","import { natural } from '../basic';\nimport { random, sampleSize } from 'game-random';\nimport { times } from 'lodash-es';\n\nfunction cparagraph(min = 3, max = 7) {\n    const len = random(min, max);\n    return times(len, () => csentence()).join('\\n');\n}\n\n// 随机生成一个中文句子。\nfunction csentence(min = 12, max = 18) {\n    const len = random(min, max);\n    return times(len, () => cword()).join('') + '。';\n}\n// 随机生成一句中文标题。\nfunction ctitle(min = 3, max = 7) {\n    const len = random(min, max);\n    return times(len, () => cword()).join('');\n}\n// 最常用的 500 个汉字 http://baike.baidu.com/view/568436.htm\nconst DICT_HANZI =\n    '的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞';\n// 随机生成一个或多个汉字。\nfunction cword(...args) {\n    let len = 1;\n    let pool = DICT_HANZI;\n    let min;\n    let max;\n    switch (args.length) {\n        case 0: // ()\n            break;\n        case 1: // ( pool )\n            if (typeof args[0] === 'string') {\n                [pool] = args;\n            } else {\n                // ( length )\n                [len] = args;\n            }\n            break;\n        case 2:\n            // ( pool, length )\n            if (typeof args[0] === 'string') {\n                [pool, len] = args;\n            } else {\n                // ( min, max )\n                [min, max] = args;\n                len = natural(min, max);\n            }\n            break;\n        case 3:\n            // (pool,min,max)\n            [pool, min, max] = args;\n            len = natural(min, max);\n            break;\n    }\n\n    return sampleSize(pool, len).join('');\n}\n\nexport { ctitle, csentence, cparagraph, cword };\n","// 协议簇\nconst protocols = 'http ftp gopher mailto mid cid news nntp prospero telnet rlogin tn3270 wais'.split(' ');\n// 域名后缀\nconst tlds = (\n    'com net org edu gov int mil cn ' +\n    // 国内域名\n    'com.cn net.cn gov.cn org.cn ' +\n    // 中文国内域名\n    '中国 中国互联.公司 中国互联.网络 ' +\n    // 新国际域名\n    'tel biz cc tv info name hk mobi asia cd travel pro museum coop aero ' +\n    // 世界各国域名后缀\n    'ad ae af ag ai al am an ao aq ar as at au aw az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cf cg ch ci ck cl cm cn co cq cr cu cv cx cy cz de dj dk dm do dz ec ee eg eh es et ev fi fj fk fm fo fr ga gb gd ge gf gh gi gl gm gn gp gr gt gu gw gy hk hm hn hr ht hu id ie il in io iq ir is it jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md mg mh ml mm mn mo mp mq mr ms mt mv mw mx my mz na nc ne nf ng ni nl no np nr nt nu nz om qa pa pe pf pg ph pk pl pm pn pr pt pw py re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr st su sy sz tc td tf tg th tj tk tm tn to tp tr tt tv tw tz ua ug uk us uy va vc ve vg vn vu wf ws ye yu za zm zr zw'\n).split(' ');\nexport { protocols, tlds };\n","import { pick } from '../helper';\nimport { word } from '../text';\nimport { protocols, tlds } from './web_dict';\n/*\n    随机生成一个 URL。\n\n    [URL 规范](http://www.w3.org/Addressing/URL/url-spec.txt)\n        http                    Hypertext Transfer Protocol\n        ftp                     File Transfer protocol\n        gopher                  The Gopher protocol\n        mailto                  Electronic mail address\n        mid                     Message identifiers for electronic mail\n        cid                     Content identifiers for MIME body part\n        news                    Usenet news\n        nntp                    Usenet news for local NNTP access only\n        prospero                Access using the prospero protocols\n        telnet rlogin tn3270    Reference to interactive sessions\n        wais                    Wide Area Information Servers\n*/\nexport function url(Protocol, host) {\n    return `${Protocol || protocol()}://${host || domain()}/${word()}`;\n}\n\n// 随机生成一个 URL 协议。\nexport function protocol() {\n    return pick(protocols);\n}\n// 随机生成一个域名。\nexport function domain(Tld) {\n    return `${word()}.${Tld || tld()}`;\n}\n/*\n    随机生成一个顶级域名。\n    国际顶级域名 international top-level domain-names, iTLDs\n    国家顶级域名 national top-level domainnames, nTLDs\n    [域名后缀大全](http://www.163ns.com/zixun/post/4417.html)\n*/\nexport function tld() {\n    // Top Level Domain\n    return pick(tlds);\n}\n\nimport { character, natural } from '../basic';\n\n// 随机生成一个邮件地址。\nexport function email(domain) {\n    return `${character('lower')}.${word()}@${domain || word() + '.' + tld()}`;\n}\n// 随机生成一个 IP 地址。\nexport function ip() {\n    // 这里不能用 Array(4).fill fill 是向数组注入同一个值\n    return [...Array(4)].map(() => natural(0, 255)).join('.');\n}\n","/* eslint-disable no-redeclare*/\n/*\n    ## Image\n*/\n\nimport size from './image.json';\nimport { pick } from './helper';\nimport _brandColors from './brandColors.json';\nimport { hex } from './color';\nimport { sample } from 'game-random';\nconst { _adSize, _screenSize, _videoSize } = size;\n\n/*\n    BrandColors\n    http://brandcolors.net/\n    A collection of major brand color codes curated by Galen Gidman.\n    大牌公司的颜色集合\n\n    // 获取品牌和颜色\n    $('h2').each(function(index, item){\n        item = $(item)\n        console.log('\\'' + item.text() + '\\'', ':', '\\'' + item.next().text() + '\\'', ',')\n    })\n*/\n\nconst _brandNames = Object.keys(_brandColors);\n\n/*\n    生成一个随机的图片地址。\n\n    使用 api 替代图片源\n        http://fpoimg.com/\n    参考自\n        http://rensanning.iteye.com/blog/1933310\n        http://code.tutsplus.com/articles/the-top-8-placeholders-for-web-designers--net-19485\n*/\nfunction image(...args) {\n    let size;\n    let background;\n    let foreground;\n    let format;\n    let text;\n    switch (arguments.length) {\n        case 4:\n            [size, background, foreground, text] = args;\n            break;\n        case 3:\n            [size, background, text] = args;\n            break;\n        default:\n            [size, background, foreground, format, text] = args;\n    }\n\n    // Random.image()\n    if (!size) size = sample(_adSize);\n    size = size.replaceAll('\"', '');\n    // 去除前面的 # 号\n    foreground = (foreground || hex()).replace(/^#/, '').replaceAll('\"', '');\n    background = (background || hex()).replace(/^#/, '').replaceAll('\"', '');\n\n    // http://dummyimage.com/600x400/cc00cc/470047.png&text=hello\n    return `http://dummyimage.com/${size}${background ? '/' + background : ''}${foreground ? '/' + foreground : ''}${\n        format ? '.' + format.replaceAll('\"', '') : ''\n    }${text ? '&text=' + text.replaceAll('\"', '') : ''}`;\n}\n/*\n    生成一段随机的 Base64 图片编码。\n\n    https://github.com/imsky/holder\n    Holder renders image placeholders entirely on the client side.\n\n    dataImageHolder: function(size) {\n        return 'holder.js/' + size\n    },\n*/\nfunction dataImage(size, text) {\n    let canvas;\n    if (typeof document !== 'undefined') {\n        canvas = document.createElement('canvas');\n    } else {\n        /*\n            https://github.com/Automattic/node-canvas\n                npm install canvas --save\n            安装问题：\n            * http://stackoverflow.com/questions/22953206/gulp-issues-with-cario-install-command-not-found-when-trying-to-installing-canva\n            * https://github.com/Automattic/node-canvas/issues/415\n            * https://github.com/Automattic/node-canvas/wiki/_pages\n\n            PS：node-canvas 的安装过程实在是太繁琐了，所以不放入 package.json 的 dependencies。\n         */\n        return 'data:image/png;base64,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didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgWENDgwzM6AQK9AgLa6293AgSCBQQ0+PCMToBAr4CA9vrbnQCBYAEBDT48oxMg0CsgoL3+didAIFhAQIMPz+gECPQKCGivv90JEAgW+B//a1ZE6945QgAAAABJRU5ErkJggg==';\n    }\n\n    const ctx = canvas && canvas.getContext && canvas.getContext('2d');\n    if (!canvas || !ctx) return '';\n\n    if (!size) size = pick(_adSize);\n    text = text !== undefined ? text : size;\n\n    size = size.split('x');\n\n    const width = parseInt(size[0], 10);\n    const height = parseInt(size[1], 10);\n    const background = _brandColors[pick(_brandNames)];\n    const foreground = '#FFF';\n    const textHeight = 14;\n    const font = 'sans-serif';\n\n    canvas.width = width;\n    canvas.height = height;\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    ctx.fillStyle = background;\n    ctx.fillRect(0, 0, width, height);\n    ctx.fillStyle = foreground;\n    ctx.font = 'bold ' + textHeight + 'px ' + font;\n    ctx.fillText(text, width / 2, height / 2, width);\n    return canvas.toDataURL('image/png');\n}\nexport { _adSize, _screenSize, _videoSize, image, image as img, _brandColors, _brandNames, dataImage };\n","/*\n    ## Address\n*/\nimport DICT from './address_dict';\nconst REGION = ['东北', '华北', '华东', '华中', '华南', '西南', '西北'];\nimport { pick } from './helper';\nimport { natural } from './basic/number';\n\n// 随机生成一个大区。\nfunction region() {\n    return pick(REGION);\n}\n// 随机生成一个（中国）省（或直辖市、自治区、特别行政区）。\nfunction province() {\n    return pick(DICT).name;\n}\n// 随机生成一个（中国）市。\nfunction city(prefix) {\n    const province = pick(DICT);\n    const city = pick(province.children);\n    return prefix ? [province.name, city.name].join(' ') : city.name;\n}\n// 随机生成一个（中国）县。\nfunction county(prefix) {\n    const province = pick(DICT);\n    const city = pick(province.children);\n    const county = pick(city.children) || {\n        name: '-',\n    };\n    return prefix ? [province.name, city.name, county.name].join(' ') : county.name;\n}\n// 随机生成一个邮政编码（六位数字）。\nfunction zip(len) {\n    let zip = '';\n    for (let i = 0; i < (len || 6); i++) zip += natural(0, 9);\n    return zip;\n}\n\n//  function address() {}\n//  function phone() {}\n//  function areacode() {}\n//  function street() {}\n//  function street_suffixes() {}\n//  function street_suffix() {}\n//  function states() {}\n//  function state() {}\n\nexport { region, province, city, county, zip };\n","// 用于生成 Blob 和 File 型数据的工具\nimport { type } from '../util';\nimport { word } from './text/text_en';\nfunction prepare(anyData) {\n    let prepared;\n    switch (type(anyData)) {\n        case 'array':\n            prepared = anyData;\n            break;\n        default:\n            prepared = [anyData];\n    }\n    return prepared;\n}\nexport function genFile(anyData) {\n    return new File(prepare(anyData), word());\n}\nexport function genBlob(anyData) {\n    return new Blob(prepare(anyData));\n}\n","import * as a1 from './mock/random/basic';\nimport * as a2 from './mock/random/color';\nimport * as a3 from './mock/random/name';\nimport * as a4 from './mock/random/helper';\nimport * as a5 from './mock/random/misc';\nimport * as a6 from './mock/random/text';\nimport * as a7 from './mock/random/web';\nimport * as a8 from './mock/random/date';\nimport * as a9 from './mock/random/image';\nimport * as a10 from './mock/random/address';\nimport * as a11 from './mock/random/file';\nimport { registerRandom } from './mock/random';\n\nexport const registerAll = () => {\n    Object.entries({ ...a1, ...a2, ...a3, ...a4, ...a5, ...a6, ...a7, ...a8, ...a9, ...a10, ...a11 }).map(\n        ([name, fn]) => {\n            registerRandom(name, fn);\n        },\n    );\n};\n","// global require, module, window\nimport Handler from './mock/handler';\nimport * as Util from './mock/util';\nimport Random from './mock/random';\nimport * as RE from './mock/regexp/index';\nimport { toJSONSchema } from './mock/schema/index';\nimport { valid } from './mock/valid/index';\nimport { _mocked } from './mock/_mocked';\nimport { XHR } from './mock/xhr/index';\nimport { mock } from './mock/mock';\nimport { registerAll } from './registerAll';\nregisterAll();\n/* !\n    Mock - 模拟请求 & 模拟数据\n    https://github.com/nuysoft/Mock\n    墨智 mozhi.gyy@taobao.com nuysoft@gmail.com\n\n    此版本为 esm 版本\n    KonghaYao 修改于 2021/6/11\n    https://github.com/KonghaYao/\n*/\n\nconst Mock = {\n    Handler,\n    Random,\n    Util,\n    XHR,\n    RE,\n    toJSONSchema,\n    valid,\n    heredoc: Util.heredoc,\n    setup: function (settings: unknown) {\n        return XHR.setup(settings);\n    },\n    _mocked,\n    mock,\n    version: '2.0.0',\n};\n\nexport default Mock;\nexport { registerRandom } from './mock/random';\nexport * from 'game-random';\n"],"names":["freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","index","length","isArray","INFINITY","symbolProto","symbolToString","baseToString","reWhitespace","trimmedEndIndex","string","reTrimStart","baseTrim","isObject","type","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","MAX_INTEGER","toFinite","sign","toInteger","remainder","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","key","getNative","apply","thisArg","args","copyArray","source","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","baseSetToString$1","setToString","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","proto","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","arg","nativeKeys","baseKeys","keys","nativeKeysIn","baseKeysIn","isProto","keysIn","assignIn","assignIn$1","toString","baseSlice","end","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","castFunction","isString","baseValues","values","baseIsRegExp","nodeIsRegExp","isRegExp","isRegExp$1","nativeFloor","nativeRandom","baseRandom","lower","upper","nativeCeil","baseRange","step","fromRight","createRange","range","range$1","shuffleSelf","size","lastIndex","rand","arrayShuffle","baseShuffle","collection","shuffle","MAX_ARRAY_LENGTH","nativeMin","times","obj","isObjectOrArray","isNumeric","extend","each","iterator","context","i","heredoc","fn","noop","Random","registerRandom","name","Constant","commonjsGlobal","alea$1","module","global","define","Alea","seed","me","mash","Mash","t","copy","f","impl","opts","xg","state","prng","data","h","xor128$1","XorGen","strseed","k","top","bot","xorwow$1","xorshift7$1","X","v","init","j","xor4096$1","w","limit","tychei$1","b","c","d","a","seedrandom$1","pool","math","width","chunks","digits","rngname","startdenom","significance","overflow","mask","nodecrypto","seedrandom","options","callback","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","x","is_math_call","keylen","s","r","depth","typ","prop","stringseed","smear","out","browser","plugins","alea","xor128","xorwow","xorshift7","xor4096","tychei","sr","globalSeed","GlobalSeedAtom","val","_random","floating","random","sample","arr","_sampleSize","temp","sampleSize","isNumber","el","numberGate","input","res","integer","min","max","natural","float","dmin","dmax","dcount","decimal","pre","parser","parameters","info","_capitalize","str","pick","_shuffle","Cache","order","templatePath","cache","template","path","templateRoot","item","gen","boolean","cur","pools","character","len","bool","_function","currentContext","number","fnKeys","parsedKey","inc","Type","Token","Alternate","l","Match","Group","CaptureGroup","cgs","Quantified","Quantifier","CharSet","CharacterRange","Literal","Unicode","Hex","Octal","BackReference","ControlCharacter","u","e","Lt","qt","Mt","Dt","Ht","Ot","o","fl","Wt","sl","il","al","hl","dl","Q","B","pl","vl","wl","Al","Cl","gl","bl","p","Tl","kl","A","C","g","xl","yl","T","ml","Rl","Fl","Ql","Sl","Ul","El","Gl","Bl","jl","$l","ql","Ll","Ml","Dl","Hl","Ol","Wl","zl","Il","Jl","Kl","Nl","R","F","m","y","Pl","Vl","Xl","Yl","Zl","_l","nu","lu","uu","tu","ru","eu","ou","iu","au","S","U","fu","su","hu","cu","pu","vu","wu","du","G","E","Au","Cu","gu","bu","L","Y","H","O","W","z","I","J","K","N","P","V","_","nl","ll","ul","tl","q","$","ku","Tu","xu","mu","Ru","yu","M","D","Z","Fu","Qu","Su","Uu","Eu","Gu","Bu","ju","$u","qu","Lu","Mu","Du","Hu","Ou","Wu","zu","Iu","Ju","Ku","Nu","Pu","Vu","Xu","Yu","Zu","_u","nt","lt","ut","tt","rt","et","ot","ct","it","at","ft","st","ht","dt","pt","vt","wt","At","Ct","gt","bt","kt","Tt","xt","yt","mt","Rt","Ft","Qt","St","Ut","Et","Gt","Bt","jt","$t","rl","ol","cl","Handler","Util.extend","LOWER","ascii","UPPER","NUMBER","OTHER","PRINTABLE","SPACE","CHARACTER_CLASSES","from","to","node","literal","ii","characters","iii","CONTROL_CHARACTER","CONTROL_CHARACTER_UNICODE","map","regexp","Source","RE.Handler","RE.Parser","getValueByKeyPath","originalKey","keyPathParts","splitPathToArray","absolutePathParts","normalizePath","templateCurrentContext","err","pathParts","newPathParts","parts","placeholder","Placeholder","templateContext","params","lkey","param","handle","re","placeholders","ph","phed","_string","GID","newContext","typeset","Parser","col","toJSONSchema","valid","schema","Diff","Assert","Util.type","rule","templateType","actualRepeatCount","Util.keys","property","Util.each","Util.isArray","actual","expected","message","mapper","_mocked","find","url","rurl","rtype","match","convert","body","isURLSearchParameters","BODY","RESPONSE","consumeBody","Body","INTERNALS","text","extractContentType","request","redirectStatus","isRedirect","code","Response","fakeResponse","status","headers","contentType","response","window","realFetch","mockFetch","fakeFetch","savedHook","HTTP_STATUS_CODES","voidFunc","XMLHttpRequest","_a","SEND","OPEN","defineGetAndSet","XHR","MockXMLHttpRequest","__publicField","method","async","username","password","config","mock","colorName","isArrayish","require$$0","concat","slice","swizzle","simpleSwizzleModule","results","colorNames","require$$1","reverseNames","cs","colorStringModule","prefix","model","abbr","hex","rgba","per","keyword","rgb","hexAlpha","i2","clamp","hsl","alpha","hwb","hexDouble","hsla","hwba","num","cssKeywords","reverseKeywords","conversionsModule","channels","labels","delta","rdif","gdif","bdif","diff","diffc","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","distance","xyz","t1","t2","t3","smin","lmin","sv","hsv","hi","vmin","wh","ratio","cmyk","lab","y2","x2","z2","hr","lch","ansi","color","mult","rem","colorString","char","chroma","grayscale","hue","hcg","pure","mg","apple","gray","conversions","buildGraph","graph","models","deriveBFS","fromModel","queue","current","adjacents","adjacent","link","wrapConversion","toModel","route","conversion","wrapRaw","wrappedFn","wrapRounded","routes","routeModels","colorConvert","_slice","skippedModels","hashedModelKeys","limiters","Color","newArr","zeroArray","hashedKeys","places","self","roundToPlace","getset","maxfn","lum","chan","color2","lum1","lum2","contrastRatio","yiq","degrees","mixinColor","weight","color1","w1","w2","newAlpha","assertArray","roundTo","channel","modifier","DICT$1","_goldenRatioColor","saturation","DICT","RandomColor","firstName","lastName","cfirstName","clastName","Name","first","names","last","middle","cfirst","clast","cname","getRandomValues","rnds8","rng","REGEX","validate","uuid","byteToHex","stringify","offset","v4","buf","rnds","createTree","list","bugList","mapped","all","id","pid","parent","ids","fixed","DICT_FIXED","_patternLetters","date","ms","_rformat","format","_formatDate","_randomDate","datetime","time","now","unit","creatNewSubString","$0","flag","targetPattern","timestamp","sum","rank","generateGUID","guid","increment","d4","d6","d8","d12","d20","d100","sentence","word","paragraph","title","cparagraph","csentence","cword","ctitle","DICT_HANZI","protocols","tlds","Protocol","host","protocol","domain","Tld","tld","email","ip","_adSize","_screenSize","_videoSize","_brandNames","_brandColors","image","background","foreground","dataImage","canvas","ctx","height","textHeight","font","REGION","region","province","city","county","zip","prepare","anyData","prepared","genFile","genBlob","registerAll","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","Mock","Util","RE","Util.heredoc","settings"],"mappings":";;;AACA,IAAIA,KAAa,OAAO,UAAU,YAAY,UAAU,OAAO,WAAW,UAAU,QCEhFC,KAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU,MAGxEC,KAAOF,MAAcC,MAAY,SAAS,aAAa,EAAG,GCH1DE,KAASD,GAAK,QCAdE,KAAc,OAAO,WAGrBC,KAAiBD,GAAY,gBAO7BE,KAAuBF,GAAY,UAGnCG,KAAiBJ,KAASA,GAAO,cAAc;AASnD,SAASK,GAAUC,GAAO;AACxB,MAAIC,IAAQL,GAAe,KAAKI,GAAOF,EAAc,GACjDI,IAAMF,EAAMF,EAAc;AAE9B,MAAI;AACF,IAAAE,EAAMF,EAAc,IAAI;AACxB,QAAIK,IAAW;AAAA,EACnB,QAAc;AAAA,EAAE;AAEd,MAAIC,IAASP,GAAqB,KAAKG,CAAK;AAC5C,SAAIG,MACEF,IACFD,EAAMF,EAAc,IAAII,IAExB,OAAOF,EAAMF,EAAc,IAGxBM;AACT;AC1CA,IAAIT,KAAc,OAAO,WAOrBE,KAAuBF,GAAY;AASvC,SAASU,GAAeL,GAAO;AAC7B,SAAOH,GAAqB,KAAKG,CAAK;AACxC;ACdA,IAAIM,KAAU,iBACVC,KAAe,sBAGfT,KAAiBJ,KAASA,GAAO,cAAc;AASnD,SAASc,GAAWR,GAAO;AACzB,SAAIA,KAAS,OACJA,MAAU,SAAYO,KAAeD,KAEtCR,MAAkBA,MAAkB,OAAOE,CAAK,IACpDD,GAAUC,CAAK,IACfK,GAAeL,CAAK;AAC1B;ACDA,SAASS,GAAaT,GAAO;AAC3B,SAAOA,KAAS,QAAQ,OAAOA,KAAS;AAC1C;ACtBA,IAAIU,KAAY;AAmBhB,SAASC,GAASX,GAAO;AACvB,SAAO,OAAOA,KAAS,YACpBS,GAAaT,CAAK,KAAKQ,GAAWR,CAAK,KAAKU;AACjD;ACjBA,SAASE,GAASC,GAAOC,GAAU;AAKjC,WAJIC,IAAQ,IACRC,IAASH,KAAS,OAAO,IAAIA,EAAM,QACnCT,IAAS,MAAMY,CAAM,GAElB,EAAED,IAAQC;AACf,IAAAZ,EAAOW,CAAK,IAAID,EAASD,EAAME,CAAK,GAAGA,GAAOF,CAAK;AAErD,SAAOT;AACT;ACKA,IAAIa,KAAU,MAAM,SCjBhBC,KAAW,OAGXC,KAAczB,KAASA,GAAO,YAAY,QAC1C0B,KAAiBD,KAAcA,GAAY,WAAW;AAU1D,SAASE,GAAarB,GAAO;AAE3B,MAAI,OAAOA,KAAS;AAClB,WAAOA;AAET,MAAIiB,GAAQjB,CAAK;AAEf,WAAOY,GAASZ,GAAOqB,EAAY,IAAI;AAEzC,MAAIV,GAASX,CAAK;AAChB,WAAOoB,KAAiBA,GAAe,KAAKpB,CAAK,IAAI;AAEvD,MAAII,IAAUJ,IAAQ;AACtB,SAAQI,KAAU,OAAQ,IAAIJ,KAAU,CAACkB,KAAY,OAAOd;AAC9D;ACjCA,IAAIkB,KAAe;AAUnB,SAASC,GAAgBC,GAAQ;AAG/B,WAFIT,IAAQS,EAAO,QAEZT,OAAWO,GAAa,KAAKE,EAAO,OAAOT,CAAK,CAAC;AAAG;AAC3D,SAAOA;AACT;ACbA,IAAIU,KAAc;AASlB,SAASC,GAASF,GAAQ;AACxB,SAAOA,KACHA,EAAO,MAAM,GAAGD,GAAgBC,CAAM,IAAI,CAAC,EAAE,QAAQC,IAAa,EAAE;AAE1E;ACSA,SAASE,GAAS3B,GAAO;AACvB,MAAI4B,IAAO,OAAO5B;AAClB,SAAOA,KAAS,SAAS4B,KAAQ,YAAYA,KAAQ;AACvD;ACvBA,IAAIC,KAAM,KAGNC,KAAa,sBAGbC,KAAa,cAGbC,KAAY,eAGZC,KAAe;AAyBnB,SAASC,GAASlC,GAAO;AACvB,MAAI,OAAOA,KAAS;AAClB,WAAOA;AAET,MAAIW,GAASX,CAAK;AAChB,WAAO6B;AAET,MAAIF,GAAS3B,CAAK,GAAG;AACnB,QAAImC,IAAQ,OAAOnC,EAAM,WAAW,aAAaA,EAAM,QAAS,IAAGA;AACnE,IAAAA,IAAQ2B,GAASQ,CAAK,IAAKA,IAAQ,KAAMA;AAAA,EAC1C;AACD,MAAI,OAAOnC,KAAS;AAClB,WAAOA,MAAU,IAAIA,IAAQ,CAACA;AAEhC,EAAAA,IAAQ0B,GAAS1B,CAAK;AACtB,MAAIoC,IAAWL,GAAW,KAAK/B,CAAK;AACpC,SAAQoC,KAAYJ,GAAU,KAAKhC,CAAK,IACpCiC,GAAajC,EAAM,MAAM,CAAC,GAAGoC,IAAW,IAAI,CAAC,IAC5CN,GAAW,KAAK9B,CAAK,IAAI6B,KAAM,CAAC7B;AACvC;AC1DA,IAAIkB,KAAW,OACXmB,KAAc;AAyBlB,SAASC,GAAStC,GAAO;AACvB,MAAI,CAACA;AACH,WAAOA,MAAU,IAAIA,IAAQ;AAG/B,MADAA,IAAQkC,GAASlC,CAAK,GAClBA,MAAUkB,MAAYlB,MAAU,CAACkB,IAAU;AAC7C,QAAIqB,IAAQvC,IAAQ,IAAI,KAAK;AAC7B,WAAOuC,IAAOF;AAAA,EACf;AACD,SAAOrC,MAAUA,IAAQA,IAAQ;AACnC;ACXA,SAASwC,GAAUxC,GAAO;AACxB,MAAII,IAASkC,GAAStC,CAAK,GACvByC,IAAYrC,IAAS;AAEzB,SAAOA,MAAWA,IAAUqC,IAAYrC,IAASqC,IAAYrC,IAAU;AACzE;ACjBA,SAASsC,GAAS1C,GAAO;AACvB,SAAOA;AACT;ACdA,IAAI2C,KAAW,0BACXC,KAAU,qBACVC,KAAS,8BACTC,KAAW;AAmBf,SAASC,GAAW/C,GAAO;AACzB,MAAI,CAAC2B,GAAS3B,CAAK;AACjB,WAAO;AAIT,MAAIE,IAAMM,GAAWR,CAAK;AAC1B,SAAOE,KAAO0C,MAAW1C,KAAO2C,MAAU3C,KAAOyC,MAAYzC,KAAO4C;AACtE;AC/BA,IAAIE,KAAavD,GAAK,oBAAoB,GCAtCwD,KAAc,WAAW;AAC3B,MAAIC,IAAM,SAAS,KAAKF,MAAcA,GAAW,QAAQA,GAAW,KAAK,YAAY,EAAE;AACvF,SAAOE,IAAO,mBAAmBA,IAAO;AAC1C,EAAC;AASD,SAASC,GAASC,GAAM;AACtB,SAAO,CAAC,CAACH,MAAeA,MAAcG;AACxC;AChBA,IAAIC,KAAY,SAAS,WAGrBC,KAAeD,GAAU;AAS7B,SAASE,GAASH,GAAM;AACtB,MAAIA,KAAQ,MAAM;AAChB,QAAI;AACF,aAAOE,GAAa,KAAKF,CAAI;AAAA,IACnC,QAAgB;AAAA,IAAE;AACd,QAAI;AACF,aAAQA,IAAO;AAAA,IACrB,QAAgB;AAAA,IAAE;AAAA,EACf;AACD,SAAO;AACT;ACdA,IAAII,KAAe,uBAGfC,KAAe,+BAGfJ,KAAY,SAAS,WACrB1D,KAAc,OAAO,WAGrB2D,KAAeD,GAAU,UAGzBzD,KAAiBD,GAAY,gBAG7B+D,KAAa;AAAA,EAAO,MACtBJ,GAAa,KAAK1D,EAAc,EAAE,QAAQ4D,IAAc,MAAM,EAC7D,QAAQ,0DAA0D,OAAO,IAAI;AAChF;AAUA,SAASG,GAAa3D,GAAO;AAC3B,MAAI,CAAC2B,GAAS3B,CAAK,KAAKmD,GAASnD,CAAK;AACpC,WAAO;AAET,MAAI4D,IAAUb,GAAW/C,CAAK,IAAI0D,KAAaD;AAC/C,SAAOG,EAAQ,KAAKL,GAASvD,CAAK,CAAC;AACrC;ACpCA,SAAS6D,GAASC,GAAQC,GAAK;AAC7B,SAAOD,KAAU,OAAO,SAAYA,EAAOC,CAAG;AAChD;ACCA,SAASC,GAAUF,GAAQC,GAAK;AAC9B,MAAI/D,IAAQ6D,GAASC,GAAQC,CAAG;AAChC,SAAOJ,GAAa3D,CAAK,IAAIA,IAAQ;AACvC;ACJA,SAASiE,GAAMb,GAAMc,GAASC,GAAM;AAClC,UAAQA,EAAK,QAAM;AAAA,IACjB,KAAK;AAAG,aAAOf,EAAK,KAAKc,CAAO;AAAA,IAChC,KAAK;AAAG,aAAOd,EAAK,KAAKc,GAASC,EAAK,CAAC,CAAC;AAAA,IACzC,KAAK;AAAG,aAAOf,EAAK,KAAKc,GAASC,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AAAA,IAClD,KAAK;AAAG,aAAOf,EAAK,KAAKc,GAASC,EAAK,CAAC,GAAGA,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AAAA,EAC5D;AACD,SAAOf,EAAK,MAAMc,GAASC,CAAI;AACjC;ACVA,SAASC,GAAUC,GAAQxD,GAAO;AAChC,MAAIE,IAAQ,IACRC,IAASqD,EAAO;AAGpB,OADAxD,MAAUA,IAAQ,MAAMG,CAAM,IACvB,EAAED,IAAQC;AACf,IAAAH,EAAME,CAAK,IAAIsD,EAAOtD,CAAK;AAE7B,SAAOF;AACT;AChBA,IAAIyD,KAAY,KACZC,KAAW,IAGXC,KAAY,KAAK;AAWrB,SAASC,GAASrB,GAAM;AACtB,MAAIsB,IAAQ,GACRC,IAAa;AAEjB,SAAO,WAAW;AAChB,QAAIC,IAAQJ,GAAW,GACnBK,IAAYN,MAAYK,IAAQD;AAGpC,QADAA,IAAaC,GACTC,IAAY;AACd,UAAI,EAAEH,KAASJ;AACb,eAAO,UAAU,CAAC;AAAA;AAGpB,MAAAI,IAAQ;AAEV,WAAOtB,EAAK,MAAM,QAAW,SAAS;AAAA,EAC1C;AACA;ACfA,SAAS0B,GAAS9E,GAAO;AACvB,SAAO,WAAW;AAChB,WAAOA;AAAA,EACX;AACA;ACrBA,IAAI+E,KAAkB,WAAW;AAC/B,MAAI;AACF,QAAI3B,IAAOY,GAAU,QAAQ,gBAAgB;AAC7C,WAAAZ,EAAK,CAAE,GAAE,IAAI,CAAA,CAAE,GACRA;AAAA,EACX,QAAc;AAAA,EAAE;AAChB,KCII4B,KAAmBD,KAA4B,SAAS3B,GAAM5B,GAAQ;AACxE,SAAOuD,GAAe3B,GAAM,YAAY;AAAA,IACtC,cAAgB;AAAA,IAChB,YAAc;AAAA,IACd,OAAS0B,GAAStD,CAAM;AAAA,IACxB,UAAY;AAAA,EAChB,CAAG;AACH,IAPwCkB;AASxC,MAAAuC,KAAeD;ACVf,IAAIE,KAAcT,GAASO,EAAe,GCVtCG,KAAmB,kBAGnBC,KAAW;AAUf,SAASC,GAAQrF,GAAOgB,GAAQ;AAC9B,MAAIY,IAAO,OAAO5B;AAClB,SAAAgB,IAASA,KAAiBmE,IAEnB,CAAC,CAACnE,MACNY,KAAQ,YACNA,KAAQ,YAAYwD,GAAS,KAAKpF,CAAK,MACrCA,IAAQ,MAAMA,IAAQ,KAAK,KAAKA,IAAQgB;AACjD;ACXA,SAASsE,GAAgBxB,GAAQC,GAAK/D,GAAO;AAC3C,EAAI+D,KAAO,eAAegB,KACxBA,GAAejB,GAAQC,GAAK;AAAA,IAC1B,cAAgB;AAAA,IAChB,YAAc;AAAA,IACd,OAAS/D;AAAA,IACT,UAAY;AAAA,EAClB,CAAK,IAED8D,EAAOC,CAAG,IAAI/D;AAElB;ACUA,SAASuF,GAAGvF,GAAOmC,GAAO;AACxB,SAAOnC,MAAUmC,KAAUnC,MAAUA,KAASmC,MAAUA;AAC1D;AC9BA,IAAIxC,KAAc,OAAO,WAGrBC,KAAiBD,GAAY;AAYjC,SAAS6F,GAAY1B,GAAQC,GAAK/D,GAAO;AACvC,MAAIyF,IAAW3B,EAAOC,CAAG;AACzB,GAAI,EAAEnE,GAAe,KAAKkE,GAAQC,CAAG,KAAKwB,GAAGE,GAAUzF,CAAK,MACvDA,MAAU,UAAa,EAAE+D,KAAOD,OACnCwB,GAAgBxB,GAAQC,GAAK/D,CAAK;AAEtC;ACZA,SAAS0F,GAAWrB,GAAQsB,GAAO7B,GAAQ8B,GAAY;AACrD,MAAIC,IAAQ,CAAC/B;AACb,EAAAA,MAAWA,IAAS,CAAA;AAKpB,WAHI/C,IAAQ,IACRC,IAAS2E,EAAM,QAEZ,EAAE5E,IAAQC,KAAQ;AACvB,QAAI+C,IAAM4B,EAAM5E,CAAK,GAEjB+E,IAAWF,IACXA,EAAW9B,EAAOC,CAAG,GAAGM,EAAON,CAAG,GAAGA,GAAKD,GAAQO,CAAM,IACxD;AAEJ,IAAIyB,MAAa,WACfA,IAAWzB,EAAON,CAAG,IAEnB8B,IACFP,GAAgBxB,GAAQC,GAAK+B,CAAQ,IAErCN,GAAY1B,GAAQC,GAAK+B,CAAQ;AAAA,EAEpC;AACD,SAAOhC;AACT;AClCA,IAAIiC,KAAY,KAAK;AAWrB,SAASC,GAAS5C,GAAM6C,GAAOC,GAAW;AACxC,SAAAD,IAAQF,GAAUE,MAAU,SAAa7C,EAAK,SAAS,IAAK6C,GAAO,CAAC,GAC7D,WAAW;AAMhB,aALI9B,IAAO,WACPpD,IAAQ,IACRC,IAAS+E,GAAU5B,EAAK,SAAS8B,GAAO,CAAC,GACzCpF,IAAQ,MAAMG,CAAM,GAEjB,EAAED,IAAQC;AACf,MAAAH,EAAME,CAAK,IAAIoD,EAAK8B,IAAQlF,CAAK;AAEnC,IAAAA,IAAQ;AAER,aADIoF,IAAY,MAAMF,IAAQ,CAAC,GACxB,EAAElF,IAAQkF;AACf,MAAAE,EAAUpF,CAAK,IAAIoD,EAAKpD,CAAK;AAE/B,WAAAoF,EAAUF,CAAK,IAAIC,EAAUrF,CAAK,GAC3BoD,GAAMb,GAAM,MAAM+C,CAAS;AAAA,EACtC;AACA;ACrBA,SAASC,GAAShD,GAAM6C,GAAO;AAC7B,SAAOf,GAAYc,GAAS5C,GAAM6C,GAAOvD,EAAQ,GAAGU,IAAO,EAAE;AAC/D;ACbA,IAAI+B,KAAmB;AA4BvB,SAASkB,GAASrG,GAAO;AACvB,SAAO,OAAOA,KAAS,YACrBA,IAAQ,MAAMA,IAAQ,KAAK,KAAKA,KAASmF;AAC7C;ACJA,SAASmB,GAAYtG,GAAO;AAC1B,SAAOA,KAAS,QAAQqG,GAASrG,EAAM,MAAM,KAAK,CAAC+C,GAAW/C,CAAK;AACrE;ACfA,SAASuG,GAAevG,GAAOe,GAAO+C,GAAQ;AAC5C,MAAI,CAACnC,GAASmC,CAAM;AAClB,WAAO;AAET,MAAIlC,IAAO,OAAOb;AAClB,UAAIa,KAAQ,WACH0E,GAAYxC,CAAM,KAAKuB,GAAQtE,GAAO+C,EAAO,MAAM,IACnDlC,KAAQ,YAAYb,KAAS+C,KAE7ByB,GAAGzB,EAAO/C,CAAK,GAAGf,CAAK,IAEzB;AACT;ACjBA,SAASwG,GAAeC,GAAU;AAChC,SAAOL,GAAS,SAAStC,GAAQ4C,GAAS;AACxC,QAAI3F,IAAQ,IACRC,IAAS0F,EAAQ,QACjBd,IAAa5E,IAAS,IAAI0F,EAAQ1F,IAAS,CAAC,IAAI,QAChD2F,IAAQ3F,IAAS,IAAI0F,EAAQ,CAAC,IAAI;AAWtC,SATAd,IAAca,EAAS,SAAS,KAAK,OAAOb,KAAc,cACrD5E,KAAU4E,KACX,QAEAe,KAASJ,GAAeG,EAAQ,CAAC,GAAGA,EAAQ,CAAC,GAAGC,CAAK,MACvDf,IAAa5E,IAAS,IAAI,SAAY4E,GACtC5E,IAAS,IAEX8C,IAAS,OAAOA,CAAM,GACf,EAAE/C,IAAQC,KAAQ;AACvB,UAAIqD,IAASqC,EAAQ3F,CAAK;AAC1B,MAAIsD,KACFoC,EAAS3C,GAAQO,GAAQtD,GAAO6E,CAAU;AAAA,IAE7C;AACD,WAAO9B;AAAA,EACX,CAAG;AACH;ACjCA,IAAInE,KAAc,OAAO;AASzB,SAASiH,GAAY5G,GAAO;AAC1B,MAAI6G,IAAO7G,KAASA,EAAM,aACtB8G,IAAS,OAAOD,KAAQ,cAAcA,EAAK,aAAclH;AAE7D,SAAOK,MAAU8G;AACnB;ACNA,SAASC,GAAUC,GAAGlG,GAAU;AAI9B,WAHIC,IAAQ,IACRX,IAAS,MAAM4G,CAAC,GAEb,EAAEjG,IAAQiG;AACf,IAAA5G,EAAOW,CAAK,IAAID,EAASC,CAAK;AAEhC,SAAOX;AACT;ACbA,IAAI6G,KAAU;AASd,SAASC,GAAgBlH,GAAO;AAC9B,SAAOS,GAAaT,CAAK,KAAKQ,GAAWR,CAAK,KAAKiH;AACrD;ACXA,IAAItH,KAAc,OAAO,WAGrBC,KAAiBD,GAAY,gBAG7BwH,KAAuBxH,GAAY,sBAoBnCyH,KAAcF,GAAgB,2BAAW;AAAE,SAAO;AAAU,GAAI,IAAIA,KAAkB,SAASlH,GAAO;AACxG,SAAOS,GAAaT,CAAK,KAAKJ,GAAe,KAAKI,GAAO,QAAQ,KAC/D,CAACmH,GAAqB,KAAKnH,GAAO,QAAQ;AAC9C;ACpBA,SAASqH,KAAY;AACnB,SAAO;AACT;ACXA,IAAIC,KAAc,OAAO,WAAW,YAAY,WAAW,CAAC,QAAQ,YAAY,SAG5EC,KAAaD,MAAe,OAAO,UAAU,YAAY,UAAU,CAAC,OAAO,YAAY,QAGvFE,KAAgBD,MAAcA,GAAW,YAAYD,IAGrDG,KAASD,KAAgB/H,GAAK,SAAS,QAGvCiI,KAAiBD,KAASA,GAAO,WAAW,QAmB5CE,KAAWD,MAAkBL,IC9B7BJ,KAAU,sBACVW,KAAW,kBACXC,KAAU,oBACVC,KAAU,iBACVC,KAAW,kBACXnF,KAAU,qBACVoF,KAAS,gBACTC,KAAY,mBACZC,KAAY,mBACZC,KAAY,mBACZC,KAAS,gBACTC,KAAY,mBACZC,KAAa,oBAEbC,KAAiB,wBACjBC,KAAc,qBACdC,KAAa,yBACbC,KAAa,yBACbC,KAAU,sBACVC,KAAW,uBACXC,KAAW,uBACXC,KAAW,uBACXC,KAAkB,8BAClBC,KAAY,wBACZC,KAAY,wBAGZC,IAAiB,CAAA;AACrBA,EAAeT,EAAU,IAAIS,EAAeR,EAAU,IACtDQ,EAAeP,EAAO,IAAIO,EAAeN,EAAQ,IACjDM,EAAeL,EAAQ,IAAIK,EAAeJ,EAAQ,IAClDI,EAAeH,EAAe,IAAIG,EAAeF,EAAS,IAC1DE,EAAeD,EAAS,IAAI;AAC5BC,EAAejC,EAAO,IAAIiC,EAAetB,EAAQ,IACjDsB,EAAeX,EAAc,IAAIW,EAAerB,EAAO,IACvDqB,EAAeV,EAAW,IAAIU,EAAepB,EAAO,IACpDoB,EAAenB,EAAQ,IAAImB,EAAetG,EAAO,IACjDsG,EAAelB,EAAM,IAAIkB,EAAejB,EAAS,IACjDiB,EAAehB,EAAS,IAAIgB,EAAef,EAAS,IACpDe,EAAed,EAAM,IAAIc,EAAeb,EAAS,IACjDa,EAAeZ,EAAU,IAAI;AAS7B,SAASa,GAAiBnJ,GAAO;AAC/B,SAAOS,GAAaT,CAAK,KACvBqG,GAASrG,EAAM,MAAM,KAAK,CAAC,CAACkJ,EAAe1I,GAAWR,CAAK,CAAC;AAChE;AClDA,SAASoJ,GAAUhG,GAAM;AACvB,SAAO,SAASpD,GAAO;AACrB,WAAOoD,EAAKpD,CAAK;AAAA,EACrB;AACA;ACRA,IAAIsH,KAAc,OAAO,WAAW,YAAY,WAAW,CAAC,QAAQ,YAAY,SAG5EC,KAAaD,MAAe,OAAO,UAAU,YAAY,UAAU,CAAC,OAAO,YAAY,QAGvFE,KAAgBD,MAAcA,GAAW,YAAYD,IAGrD+B,KAAc7B,MAAiBjI,GAAW,SAG1C+J,KAAY,WAAW;AACzB,MAAI;AAEF,QAAIC,IAAQhC,MAAcA,GAAW,WAAWA,GAAW,QAAQ,MAAM,EAAE;AAE3E,WAAIgC,KAKGF,MAAeA,GAAY,WAAWA,GAAY,QAAQ,MAAM;AAAA,EAC3E,QAAc;AAAA,EAAE;AAChB,KCtBIG,KAAmBF,MAAYA,GAAS,cAmBxCG,KAAeD,KAAmBJ,GAAUI,EAAgB,IAAIL,IChBhExJ,KAAc,OAAO,WAGrBC,KAAiBD,GAAY;AAUjC,SAAS+J,GAAc1J,GAAO2J,GAAW;AACvC,MAAIC,IAAQ3I,GAAQjB,CAAK,GACrB6J,IAAQ,CAACD,KAASxC,GAAYpH,CAAK,GACnC8J,IAAS,CAACF,KAAS,CAACC,KAASlC,GAAS3H,CAAK,GAC3C+J,IAAS,CAACH,KAAS,CAACC,KAAS,CAACC,KAAUL,GAAazJ,CAAK,GAC1DgK,IAAcJ,KAASC,KAASC,KAAUC,GAC1C3J,IAAS4J,IAAcjD,GAAU/G,EAAM,QAAQ,MAAM,IAAI,CAAE,GAC3DgB,IAASZ,EAAO;AAEpB,WAAS2D,KAAO/D;AACd,KAAK2J,KAAa/J,GAAe,KAAKI,GAAO+D,CAAG,MAC5C,EAAEiG;AAAA,KAECjG,KAAO;AAAA,IAEN+F,MAAW/F,KAAO,YAAYA,KAAO;AAAA,IAErCgG,MAAWhG,KAAO,YAAYA,KAAO,gBAAgBA,KAAO;AAAA,IAE7DsB,GAAQtB,GAAK/C,CAAM,OAExBZ,EAAO,KAAK2D,CAAG;AAGnB,SAAO3D;AACT;ACtCA,SAAS6J,GAAQ7G,GAAM8C,GAAW;AAChC,SAAO,SAASgE,GAAK;AACnB,WAAO9G,EAAK8C,EAAUgE,CAAG,CAAC;AAAA,EAC9B;AACA;ACTA,IAAIC,KAAaF,GAAQ,OAAO,MAAM,MAAM,GCCxCtK,KAAc,OAAO,WAGrBC,KAAiBD,GAAY;AASjC,SAASyK,GAAStG,GAAQ;AACxB,MAAI,CAAC8C,GAAY9C,CAAM;AACrB,WAAOqG,GAAWrG,CAAM;AAE1B,MAAI1D,IAAS,CAAA;AACb,WAAS2D,KAAO,OAAOD,CAAM;AAC3B,IAAIlE,GAAe,KAAKkE,GAAQC,CAAG,KAAKA,KAAO,iBAC7C3D,EAAO,KAAK2D,CAAG;AAGnB,SAAO3D;AACT;ACKA,SAASiK,GAAKvG,GAAQ;AACpB,SAAOwC,GAAYxC,CAAM,IAAI4F,GAAc5F,CAAM,IAAIsG,GAAStG,CAAM;AACtE;ACzBA,SAASwG,GAAaxG,GAAQ;AAC5B,MAAI1D,IAAS,CAAA;AACb,MAAI0D,KAAU;AACZ,aAASC,KAAO,OAAOD,CAAM;AAC3B,MAAA1D,EAAO,KAAK2D,CAAG;AAGnB,SAAO3D;AACT;ACZA,IAAIT,KAAc,OAAO,WAGrBC,KAAiBD,GAAY;AASjC,SAAS4K,GAAWzG,GAAQ;AAC1B,MAAI,CAACnC,GAASmC,CAAM;AAClB,WAAOwG,GAAaxG,CAAM;AAE5B,MAAI0G,IAAU5D,GAAY9C,CAAM,GAC5B1D,IAAS,CAAA;AAEb,WAAS2D,KAAOD;AACd,IAAMC,KAAO,kBAAkByG,KAAW,CAAC5K,GAAe,KAAKkE,GAAQC,CAAG,MACxE3D,EAAO,KAAK2D,CAAG;AAGnB,SAAO3D;AACT;ACHA,SAASqK,GAAO3G,GAAQ;AACtB,SAAOwC,GAAYxC,CAAM,IAAI4F,GAAc5F,GAAQ,EAAI,IAAIyG,GAAWzG,CAAM;AAC9E;ACMA,IAAI4G,KAAWlE,GAAe,SAAS1C,GAAQO,GAAQ;AACrD,EAAAqB,GAAWrB,GAAQoG,GAAOpG,CAAM,GAAGP,CAAM;AAC3C,CAAC;AAED,MAAA6G,KAAeD;AChBf,SAASE,GAAS5K,GAAO;AACvB,SAAOA,KAAS,OAAO,KAAKqB,GAAarB,CAAK;AAChD;AChBA,SAAS6K,GAAUhK,GAAOoF,GAAO6E,GAAK;AACpC,MAAI/J,IAAQ,IACRC,IAASH,EAAM;AAEnB,EAAIoF,IAAQ,MACVA,IAAQ,CAACA,IAAQjF,IAAS,IAAKA,IAASiF,IAE1C6E,IAAMA,IAAM9J,IAASA,IAAS8J,GAC1BA,IAAM,MACRA,KAAO9J,IAETA,IAASiF,IAAQ6E,IAAM,IAAMA,IAAM7E,MAAW,GAC9CA,OAAW;AAGX,WADI7F,IAAS,MAAMY,CAAM,GAClB,EAAED,IAAQC;AACf,IAAAZ,EAAOW,CAAK,IAAIF,EAAME,IAAQkF,CAAK;AAErC,SAAO7F;AACT;ACjBA,SAAS2K,GAAUlK,GAAOoF,GAAO6E,GAAK;AACpC,MAAI9J,IAASH,EAAM;AACnB,SAAAiK,IAAMA,MAAQ,SAAY9J,IAAS8J,GAC3B,CAAC7E,KAAS6E,KAAO9J,IAAUH,IAAQgK,GAAUhK,GAAOoF,GAAO6E,CAAG;AACxE;ACdA,IAAIE,KAAgB,mBAChBC,KAAoB,mBACpBC,KAAwB,mBACxBC,KAAsB,mBACtBC,KAAeH,KAAoBC,KAAwBC,IAC3DE,KAAa,kBAGbC,KAAQ,WAGRC,KAAe,OAAO,MAAMD,KAAQN,KAAiBI,KAAeC,KAAa,GAAG;AASxF,SAASG,GAAWhK,GAAQ;AAC1B,SAAO+J,GAAa,KAAK/J,CAAM;AACjC;AChBA,SAASiK,GAAajK,GAAQ;AAC5B,SAAOA,EAAO,MAAM,EAAE;AACxB;ACRA,IAAIwJ,KAAgB,mBAChBC,KAAoB,mBACpBC,KAAwB,mBACxBC,KAAsB,mBACtBC,KAAeH,KAAoBC,KAAwBC,IAC3DE,KAAa,kBAGbK,KAAW,MAAMV,KAAgB,KACjCW,KAAU,MAAMP,KAAe,KAC/BQ,KAAS,4BACTC,KAAa,QAAQF,KAAU,MAAMC,KAAS,KAC9CE,KAAc,OAAOd,KAAgB,KACrCe,KAAa,mCACbC,KAAa,sCACbV,KAAQ,WAGRW,KAAWJ,KAAa,KACxBK,KAAW,MAAMb,KAAa,MAC9Bc,KAAY,QAAQb,KAAQ,QAAQ,CAACQ,IAAaC,IAAYC,EAAU,EAAE,KAAK,GAAG,IAAI,MAAME,KAAWD,KAAW,MAClHG,KAAQF,KAAWD,KAAWE,IAC9BE,KAAW,QAAQ,CAACP,KAAcH,KAAU,KAAKA,IAASI,IAAYC,IAAYN,EAAQ,EAAE,KAAK,GAAG,IAAI,KAGxGY,KAAY,OAAOV,KAAS,QAAQA,KAAS,OAAOS,KAAWD,IAAO,GAAG;AAS7E,SAASG,GAAe/K,GAAQ;AAC9B,SAAOA,EAAO,MAAM8K,EAAS,KAAK,CAAA;AACpC;AC1BA,SAASE,GAAchL,GAAQ;AAC7B,SAAOgK,GAAWhK,CAAM,IACpB+K,GAAe/K,CAAM,IACrBiK,GAAajK,CAAM;AACzB;ACHA,SAASiL,GAAgBC,GAAY;AACnC,SAAO,SAASlL,GAAQ;AACtB,IAAAA,IAASoJ,GAASpJ,CAAM;AAExB,QAAImL,IAAanB,GAAWhK,CAAM,IAC9BgL,GAAchL,CAAM,IACpB,QAEAoL,IAAMD,IACNA,EAAW,CAAC,IACZnL,EAAO,OAAO,CAAC,GAEfqL,IAAWF,IACX5B,GAAU4B,GAAY,CAAC,EAAE,KAAK,EAAE,IAChCnL,EAAO,MAAM,CAAC;AAElB,WAAOoL,EAAIF,CAAU,EAAG,IAAGG;AAAA,EAC/B;AACA;ACXA,IAAIC,KAAaL,GAAgB,aAAa;ACD9C,SAASM,GAAWvL,GAAQ;AAC1B,SAAOsL,GAAWlC,GAASpJ,CAAM,EAAE,YAAa,CAAA;AAClD;ACXA,SAASwL,GAAahN,GAAO;AAC3B,SAAO,OAAOA,KAAS,aAAaA,IAAQ0C;AAC9C;ACNA,IAAI2F,KAAY;AAmBhB,SAAS4E,GAASjN,GAAO;AACvB,SAAO,OAAOA,KAAS,YACpB,CAACiB,GAAQjB,CAAK,KAAKS,GAAaT,CAAK,KAAKQ,GAAWR,CAAK,KAAKqI;AACpE;ACfA,SAAS6E,GAAWpJ,GAAQ6B,GAAO;AACjC,SAAO/E,GAAS+E,GAAO,SAAS5B,GAAK;AACnC,WAAOD,EAAOC,CAAG;AAAA,EACrB,CAAG;AACH;ACaA,SAASoJ,GAAOrJ,GAAQ;AACtB,SAAOA,KAAU,OAAO,KAAKoJ,GAAWpJ,GAAQuG,GAAKvG,CAAM,CAAC;AAC9D;AC3BA,IAAIqE,KAAY;AAShB,SAASiF,GAAapN,GAAO;AAC3B,SAAOS,GAAaT,CAAK,KAAKQ,GAAWR,CAAK,KAAKmI;AACrD;ACVA,IAAIkF,KAAe/D,MAAYA,GAAS,UAmBpCgE,KAAWD,KAAejE,GAAUiE,EAAY,IAAID;AAExD,MAAAG,KAAeD;ACzBf,IAAIE,KAAc,KAAK,OACnBC,KAAe,KAAK;AAWxB,SAASC,GAAWC,GAAOC,GAAO;AAChC,SAAOD,IAAQH,GAAYC,GAAY,KAAMG,IAAQD,IAAQ,EAAE;AACjE;ACdA,IAAIE,KAAa,KAAK,MAClB9H,KAAY,KAAK;AAarB,SAAS+H,GAAU7H,GAAO6E,GAAKiD,GAAMC,GAAW;AAK9C,WAJIjN,IAAQ,IACRC,IAAS+E,GAAU8H,IAAY/C,IAAM7E,MAAU8H,KAAQ,EAAE,GAAG,CAAC,GAC7D3N,IAAS,MAAMY,CAAM,GAElBA;AACL,IAAAZ,EAAO4N,IAAYhN,IAAS,EAAED,CAAK,IAAIkF,GACvCA,KAAS8H;AAEX,SAAO3N;AACT;ACdA,SAAS6N,GAAYD,GAAW;AAC9B,SAAO,SAAS/H,GAAO6E,GAAKiD,GAAM;AAChC,WAAIA,KAAQ,OAAOA,KAAQ,YAAYxH,GAAeN,GAAO6E,GAAKiD,CAAI,MACpEjD,IAAMiD,IAAO,SAGf9H,IAAQ3D,GAAS2D,CAAK,GAClB6E,MAAQ,UACVA,IAAM7E,GACNA,IAAQ,KAER6E,IAAMxI,GAASwI,CAAG,GAEpBiD,IAAOA,MAAS,SAAa9H,IAAQ6E,IAAM,IAAI,KAAMxI,GAASyL,CAAI,GAC3DD,GAAU7H,GAAO6E,GAAKiD,GAAMC,CAAS;AAAA,EAChD;AACA;ACgBA,IAAIE,KAAQD,GAAW;AAEvB,MAAAE,KAAeD;ACnCf,SAASE,GAAYvN,GAAOwN,GAAM;AAChC,MAAItN,IAAQ,IACRC,IAASH,EAAM,QACfyN,IAAYtN,IAAS;AAGzB,OADAqN,IAAOA,MAAS,SAAYrN,IAASqN,GAC9B,EAAEtN,IAAQsN,KAAM;AACrB,QAAIE,IAAOb,GAAW3M,GAAOuN,CAAS,GAClCtO,IAAQa,EAAM0N,CAAI;AAEtB,IAAA1N,EAAM0N,CAAI,IAAI1N,EAAME,CAAK,GACzBF,EAAME,CAAK,IAAIf;AAAA,EAChB;AACD,SAAAa,EAAM,SAASwN,GACRxN;AACT;ACfA,SAAS2N,GAAa3N,GAAO;AAC3B,SAAOuN,GAAYhK,GAAUvD,CAAK,CAAC;AACrC;ACFA,SAAS4N,GAAYC,GAAY;AAC/B,SAAON,GAAYjB,GAAOuB,CAAU,CAAC;AACvC;ACOA,SAASC,GAAQD,GAAY;AAC3B,MAAItL,IAAOnC,GAAQyN,CAAU,IAAIF,KAAeC;AAChD,SAAOrL,EAAKsL,CAAU;AACxB;ACjBA,IAAIvJ,KAAmB,kBAGnByJ,KAAmB,YAGnBC,KAAY,KAAK;AAqBrB,SAASC,GAAM9H,GAAGlG,GAAU;AAE1B,MADAkG,IAAIxE,GAAUwE,CAAC,GACXA,IAAI,KAAKA,IAAI7B;AACf,WAAO;AAET,MAAIpE,IAAQ6N,IACR5N,IAAS6N,GAAU7H,GAAG4H,EAAgB;AAE1C,EAAA9N,IAAWkM,GAAalM,CAAQ,GAChCkG,KAAK4H;AAGL,WADIxO,IAAS2G,GAAU/F,GAAQF,CAAQ,GAChC,EAAEC,IAAQiG;AACf,IAAAlG,EAASC,CAAK;AAEhB,SAAOX;AACT;AC9CO,SAASwB,GAAKmN,GAAK;AACtB,SAAOA,KAAQ,OACT,OAAOA,CAAG,IACV,OAAO,UAAU,SACZ,KAAKA,CAAG,EACR,MAAM,kBAAkB,EAAE,CAAC,EAC3B;AACf;AAEO,SAASC,GAAgBhP,GAAO;AACnC,SAAO2B,GAAS3B,CAAK,KAAKiB,GAAQjB,CAAK;AAC3C;AAEO,SAASiP,GAAUjP,GAAO;AAC7B,SAAO,CAAC,MAAM,WAAWA,CAAK,CAAC,KAAK,SAASA,CAAK;AACtD;ACyBO,SAASkP,MAAU/K,GAAM;AAC5B,SAAOuG,GAAS,MAAM,GAAGvG,CAAI;AACjC;AC3CO,SAASgL,GAAKJ,GAAKK,GAAUC,GAAS;AAEzC,MAAIC,GACAvL;AACJ,MAAInC,GAAKmN,CAAG,MAAM;AAEd,KAAC,GAAG,MAAMA,CAAG,EAAE,KAAI,CAAE,EAAE,QAAQ,CAAChO,MAAUqO,EAASrO,GAAOA,CAAK,CAAC;AAAA,WACzDgO,EAAI,WAAW,CAACA,EAAI;AAC3B,SAAKO,IAAI,GAAGA,IAAIP,EAAI,UACZK,EAAS,KAAKC,GAASN,EAAIO,CAAC,GAAGA,GAAGP,CAAG,MAAM,IADvBO;AACxB;AAAA;AAGJ,SAAKvL,KAAOgL;AACR,UAAIK,EAAS,KAAKC,GAASN,EAAIhL,CAAG,GAAGA,GAAKgL,CAAG,MAAM;AAAO;AAGtE;ACKO,SAASQ,GAAQC,GAAI;AAIxB,SAAOA,EACF,SAAU,EACV,QAAQ,iBAAiB,EAAE,EAC3B,QAAQ,eAAe,EAAE,EACzB,QAAQ,cAAc,EAAE,EACxB,QAAQ,cAAc,EAAE;AACjC;ACxBO,SAASnF,GAAK0E,GAAK;AACtB,SAAO,OAAO,KAAKA,CAAG;AAC1B;AACO,SAAS5B,GAAO4B,GAAK;AACxB,SAAO,OAAO,OAAOA,CAAG;AAC5B;AACO,SAASU,KAAO;AAAA;;;;;;;;;;;;;;;;;8CCRjBC,KAA8B,CAAA,GAEvBC,KAAiB,CAACC,GAAcJ,MAAY;AACrD,EAAAE,GAAOE,CAAI,IAAIJ;AACnB,GCceK,IAAA;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,gBAAgB;AAAA;AAAA;AAAA;AAIpB;AChCA,IAAIC,KAAiB,OAAO,aAAe,MAAc,aAAa,OAAO,SAAW,MAAc,SAAS,OAAO,SAAW,MAAc,SAAS,OAAO,OAAS,MAAc,OAAO,IAEzLC,KAAS,EAAC,SAAS,CAAA,EAAE;AAAA,CAExB,SAAUC,GAAQ;AA4BnB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASC,EAAKC,GAAM;AAClB,UAAIC,IAAK,MAAMC,IAAOC,EAAI;AAE1B,MAAAF,EAAG,OAAO,WAAW;AACnB,YAAIG,IAAI,UAAUH,EAAG,KAAKA,EAAG,IAAI;AACjC,eAAAA,EAAG,KAAKA,EAAG,IACXA,EAAG,KAAKA,EAAG,IACJA,EAAG,KAAKG,KAAKH,EAAG,IAAIG,IAAI;AAAA,MACnC,GAGEH,EAAG,IAAI,GACPA,EAAG,KAAKC,EAAK,GAAG,GAChBD,EAAG,KAAKC,EAAK,GAAG,GAChBD,EAAG,KAAKC,EAAK,GAAG,GAChBD,EAAG,MAAMC,EAAKF,CAAI,GACdC,EAAG,KAAK,MAAKA,EAAG,MAAM,IAC1BA,EAAG,MAAMC,EAAKF,CAAI,GACdC,EAAG,KAAK,MAAKA,EAAG,MAAM,IAC1BA,EAAG,MAAMC,EAAKF,CAAI,GACdC,EAAG,KAAK,MAAKA,EAAG,MAAM,IAC1BC,IAAO;AAAA,IACT;AAEA,aAASG,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,KAAKE,EAAE,IACTF,EAAE,KAAKE,EAAE,IACTF,EAAE,KAAKE,EAAE,IACFF;AAAA,IACT;AAEA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,UAAIC,IAAK,IAAIV,EAAKC,CAAI,GAClBU,IAAQF,KAAQA,EAAK,OACrBG,IAAOF,EAAG;AACd,aAAAE,EAAK,QAAQ,WAAW;AAAE,eAAQF,EAAG,SAAS,aAAe;AAAA,SAC7DE,EAAK,SAAS,WAAW;AACvB,eAAOA,EAAM,KAAIA,EAAM,IAAG,UAAW,KAAK;AAAA,MAC9C,GACEA,EAAK,QAAQA,GACTD,MACE,OAAOA,KAAU,YAAUL,EAAKK,GAAOD,CAAE,GAC7CE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,aAASR,IAAO;AACd,UAAIvJ,IAAI,YAEJsJ,IAAO,SAASU,GAAM;AACxB,QAAAA,IAAO,OAAOA,CAAI;AAClB,iBAAS1B,IAAI,GAAGA,IAAI0B,EAAK,QAAQ1B,KAAK;AACpC,UAAAtI,KAAKgK,EAAK,WAAW1B,CAAC;AACtB,cAAI2B,IAAI,sBAAsBjK;AAC9B,UAAAA,IAAIiK,MAAM,GACVA,KAAKjK,GACLiK,KAAKjK,GACLA,IAAIiK,MAAM,GACVA,KAAKjK,GACLA,KAAKiK,IAAI;AAAA,QACV;AACD,gBAAQjK,MAAM,KAAK;AAAA,MACvB;AAEE,aAAOsJ;AAAA,IACT;AAGA,IAAIN,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,OAAOA;AAAA,EAGd;AAAA,IACEb;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAED,EAAM;AAER,IAAImB,KAAW,EAAC,SAAS,CAAA,EAAE;AAAA,CAE1B,SAAUlB,GAAQ;AAInB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASiB,EAAOf,GAAM;AACpB,UAAIC,IAAK,MAAMe,IAAU;AAEzB,MAAAf,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,GAGPA,EAAG,OAAO,WAAW;AACnB,YAAIG,IAAIH,EAAG,IAAKA,EAAG,KAAK;AACxB,eAAAA,EAAG,IAAIA,EAAG,GACVA,EAAG,IAAIA,EAAG,GACVA,EAAG,IAAIA,EAAG,GACHA,EAAG,KAAMA,EAAG,MAAM,KAAMG,IAAKA,MAAM;AAAA,MAC9C,GAEMJ,OAAUA,IAAO,KAEnBC,EAAG,IAAID,IAGPgB,KAAWhB;AAIb,eAASiB,IAAI,GAAGA,IAAID,EAAQ,SAAS,IAAIC;AACvC,QAAAhB,EAAG,KAAKe,EAAQ,WAAWC,CAAC,IAAI,GAChChB,EAAG,KAAI;AAAA,IAEX;AAEA,aAASI,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACDF;AAAA,IACT;AAEA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,UAAIC,IAAK,IAAIM,EAAOf,CAAI,GACpBU,IAAQF,KAAQA,EAAK,OACrBG,IAAO,WAAW;AAAE,gBAAQF,EAAG,KAAI,MAAO,KAAK;AAAA;AACnD,aAAAE,EAAK,SAAS,WAAW;AACvB;AACE,cAAIO,IAAMT,EAAG,KAAI,MAAO,IACpBU,KAAOV,EAAG,KAAM,MAAK,KAAK,YAC1BzQ,KAAUkR,IAAMC,MAAQ,KAAK;AAAA,eAC1BnR,MAAW;AACpB,eAAOA;AAAA,MACX,GACE2Q,EAAK,QAAQF,EAAG,MAChBE,EAAK,QAAQA,GACTD,MACE,OAAOA,KAAU,YAAUL,EAAKK,GAAOD,CAAE,GAC7CE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,IAAIf,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,SAASA;AAAA,EAGhB;AAAA,IACEb;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAEkB,EAAQ;AAEV,IAAIM,KAAW,EAAC,SAAS,CAAA,EAAE;AAAA,CAE1B,SAAUxB,GAAQ;AAInB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASiB,EAAOf,GAAM;AACpB,UAAIC,IAAK,MAAMe,IAAU;AAGzB,MAAAf,EAAG,OAAO,WAAW;AACnB,YAAIG,IAAKH,EAAG,IAAKA,EAAG,MAAM;AAC1B,eAAAA,EAAG,IAAIA,EAAG,GAAGA,EAAG,IAAIA,EAAG,GAAGA,EAAG,IAAIA,EAAG,GAAGA,EAAG,IAAIA,EAAG,IACzCA,EAAG,IAAKA,EAAG,IAAI,SAAS,MAC5BA,EAAG,IAAKA,EAAG,IAAKA,EAAG,KAAK,KAAOG,IAAKA,KAAK,MAAO;AAAA,MACxD,GAEEH,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,GAEHD,OAAUA,IAAO,KAEnBC,EAAG,IAAID,IAGPgB,KAAWhB;AAIb,eAASiB,IAAI,GAAGA,IAAID,EAAQ,SAAS,IAAIC;AACvC,QAAAhB,EAAG,KAAKe,EAAQ,WAAWC,CAAC,IAAI,GAC5BA,KAAKD,EAAQ,WACff,EAAG,IAAIA,EAAG,KAAK,KAAKA,EAAG,MAAM,IAE/BA,EAAG,KAAI;AAAA,IAEX;AAEA,aAASI,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACDF;AAAA,IACT;AAEA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,UAAIC,IAAK,IAAIM,EAAOf,CAAI,GACpBU,IAAQF,KAAQA,EAAK,OACrBG,IAAO,WAAW;AAAE,gBAAQF,EAAG,KAAI,MAAO,KAAK;AAAA;AACnD,aAAAE,EAAK,SAAS,WAAW;AACvB;AACE,cAAIO,IAAMT,EAAG,KAAI,MAAO,IACpBU,KAAOV,EAAG,KAAM,MAAK,KAAK,YAC1BzQ,KAAUkR,IAAMC,MAAQ,KAAK;AAAA,eAC1BnR,MAAW;AACpB,eAAOA;AAAA,MACX,GACE2Q,EAAK,QAAQF,EAAG,MAChBE,EAAK,QAAQA,GACTD,MACE,OAAOA,KAAU,YAAUL,EAAKK,GAAOD,CAAE,GAC7CE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,IAAIf,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,SAASA;AAAA,EAGhB;AAAA,IACEb;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAEwB,EAAQ;AAEV,IAAIC,KAAc,EAAC,SAAS,CAAA,EAAE;AAAA,CAE7B,SAAUzB,GAAQ;AAMnB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASiB,EAAOf,GAAM;AACpB,UAAIC,IAAK;AAGT,MAAAA,EAAG,OAAO,WAAW;AAEnB,YAAIqB,IAAIrB,EAAG,GAAGf,IAAIe,EAAG,GAAGG,GAAGmB;AAC3B,eAAAnB,IAAIkB,EAAEpC,CAAC,GAAGkB,KAAMA,MAAM,GAAImB,IAAInB,IAAKA,KAAK,IACxCA,IAAIkB,EAAGpC,IAAI,IAAK,CAAC,GAAGqC,KAAKnB,IAAKA,MAAM,IACpCA,IAAIkB,EAAGpC,IAAI,IAAK,CAAC,GAAGqC,KAAKnB,IAAKA,MAAM,GACpCA,IAAIkB,EAAGpC,IAAI,IAAK,CAAC,GAAGqC,KAAKnB,IAAKA,KAAK,GACnCA,IAAIkB,EAAGpC,IAAI,IAAK,CAAC,GAAGkB,IAAIA,IAAKA,KAAK,IAAKmB,KAAKnB,IAAKA,KAAK,GACtDkB,EAAEpC,CAAC,IAAIqC,GACPtB,EAAG,IAAKf,IAAI,IAAK,GACVqC;AAAA,MACX;AAEE,eAASC,EAAKvB,GAAID,GAAM;AACtB,YAAIyB,GAAGH,IAAI;AAEX,YAAItB,OAAUA,IAAO;AAEnB,UAAAsB,EAAE,CAAC,IAAItB;AAAA;AAIP,eADAA,IAAO,KAAKA,GACPyB,IAAI,GAAGA,IAAIzB,EAAK,QAAQ,EAAEyB;AAC7B,YAAAH,EAAEG,IAAI,CAAC,IAAKH,EAAEG,IAAI,CAAC,KAAK,KACnBzB,EAAK,WAAWyB,CAAC,IAAIH,EAAGG,IAAI,IAAK,CAAC,KAAK;AAIhD,eAAOH,EAAE,SAAS;AAAG,UAAAA,EAAE,KAAK,CAAC;AAC7B,aAAKG,IAAI,GAAGA,IAAI,KAAKH,EAAEG,CAAC,MAAM,GAAG,EAAEA;AAAE;AAOrC,aANIA,KAAK,IAAGH,EAAE,CAAC,IAAI,KAASA,EAAEG,CAAC,GAE/BxB,EAAG,IAAIqB,GACPrB,EAAG,IAAI,GAGFwB,IAAI,KAAKA,IAAI,GAAG,EAAEA;AACrB,UAAAxB,EAAG,KAAI;AAAA,MAEV;AAED,MAAAuB,EAAKvB,GAAID,CAAI;AAAA,IACf;AAEA,aAASK,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,EAAE,MAAK,GACfF,EAAE,IAAIE,EAAE,GACDF;AAAA,IACT;AAEA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,MAAIR,KAAQ,SAAMA,IAAO,CAAE,oBAAI;AAC/B,UAAIS,IAAK,IAAIM,EAAOf,CAAI,GACpBU,IAAQF,KAAQA,EAAK,OACrBG,IAAO,WAAW;AAAE,gBAAQF,EAAG,KAAI,MAAO,KAAK;AAAA;AACnD,aAAAE,EAAK,SAAS,WAAW;AACvB;AACE,cAAIO,IAAMT,EAAG,KAAI,MAAO,IACpBU,KAAOV,EAAG,KAAM,MAAK,KAAK,YAC1BzQ,KAAUkR,IAAMC,MAAQ,KAAK;AAAA,eAC1BnR,MAAW;AACpB,eAAOA;AAAA,MACX,GACE2Q,EAAK,QAAQF,EAAG,MAChBE,EAAK,QAAQA,GACTD,MACEA,EAAM,KAAGL,EAAKK,GAAOD,CAAE,GAC3BE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,IAAIf,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,YAAYA;AAAA,EAGnB;AAAA,IACEb;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAEyB,EAAW;AAEb,IAAIK,KAAY,EAAC,SAAS,CAAA,EAAE;AAAA,CAE3B,SAAU9B,GAAQ;AA0BnB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASiB,EAAOf,GAAM;AACpB,UAAIC,IAAK;AAGT,MAAAA,EAAG,OAAO,WAAW;AACnB,YAAI0B,IAAI1B,EAAG,GACPqB,IAAIrB,EAAG,GAAGf,IAAIe,EAAG,GAAGG,GAAGmB;AAE3B,eAAAtB,EAAG,IAAI0B,IAAKA,IAAI,aAAc,GAE9BJ,IAAID,EAAGpC,IAAI,KAAM,GAAG,GACpBkB,IAAIkB,EAAEpC,IAAMA,IAAI,IAAK,GAAI,GACzBqC,KAAKA,KAAK,IACVnB,KAAKA,KAAK,IACVmB,KAAKA,MAAM,IACXnB,KAAKA,MAAM,IAEXmB,IAAID,EAAEpC,CAAC,IAAIqC,IAAInB,GACfH,EAAG,IAAIf,GAECqC,KAAKI,IAAKA,MAAM,MAAQ;AAAA,MACpC;AAEE,eAASH,EAAKvB,GAAID,GAAM;AACtB,YAAII,GAAGmB,GAAGrC,GAAGuC,GAAGE,GAAGL,IAAI,CAAA,GAAIM,KAAQ;AAYnC,aAXI5B,OAAUA,IAAO,MAEnBuB,IAAIvB,GACJA,IAAO,SAGPA,IAAOA,IAAO,MACduB,IAAI,GACJK,KAAQ,KAAK,IAAIA,IAAO5B,EAAK,MAAM,IAGhCd,IAAI,GAAGuC,IAAI,KAAKA,IAAIG,IAAO,EAAEH;AAEhC,UAAIzB,MAAMuB,KAAKvB,EAAK,YAAYyB,IAAI,MAAMzB,EAAK,MAAM,IAEjDyB,MAAM,MAAGE,IAAIJ,IACjBA,KAAKA,KAAK,IACVA,KAAKA,MAAM,IACXA,KAAKA,KAAK,GACVA,KAAKA,MAAM,IACPE,KAAK,MACPE,IAAKA,IAAI,aAAc,GACvBvB,IAAKkB,EAAEG,IAAI,GAAG,KAAMF,IAAII,GACxBzC,IAAUkB,KAAL,IAAUlB,IAAI,IAAI;AAW3B,aAPIA,KAAK,QACPoC,GAAGtB,KAAQA,EAAK,UAAU,KAAK,GAAG,IAAI,KAKxCd,IAAI,KACCuC,IAAI,IAAI,KAAKA,IAAI,GAAG,EAAEA;AACzB,UAAAF,IAAID,EAAGpC,IAAI,KAAM,GAAG,GACpBkB,IAAIkB,EAAEpC,IAAMA,IAAI,IAAK,GAAI,GACzBqC,KAAKA,KAAK,IACVnB,KAAKA,KAAK,IACVmB,KAAKA,MAAM,IACXnB,KAAKA,MAAM,IACXkB,EAAEpC,CAAC,IAAIqC,IAAInB;AAGb,QAAAH,EAAG,IAAI0B,GACP1B,EAAG,IAAIqB,GACPrB,EAAG,IAAIf;AAAA,MACR;AAED,MAAAsC,EAAKvB,GAAID,CAAI;AAAA,IACf;AAEA,aAASK,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,EAAE,MAAK,GACRF;AAAA,IACT;AACA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,MAAIR,KAAQ,SAAMA,IAAO,CAAE,oBAAI;AAC/B,UAAIS,IAAK,IAAIM,EAAOf,CAAI,GACpBU,IAAQF,KAAQA,EAAK,OACrBG,IAAO,WAAW;AAAE,gBAAQF,EAAG,KAAI,MAAO,KAAK;AAAA;AACnD,aAAAE,EAAK,SAAS,WAAW;AACvB;AACE,cAAIO,IAAMT,EAAG,KAAI,MAAO,IACpBU,KAAOV,EAAG,KAAM,MAAK,KAAK,YAC1BzQ,KAAUkR,IAAMC,MAAQ,KAAK;AAAA,eAC1BnR,MAAW;AACpB,eAAOA;AAAA,MACX,GACE2Q,EAAK,QAAQF,EAAG,MAChBE,EAAK,QAAQA,GACTD,MACEA,EAAM,KAAGL,EAAKK,GAAOD,CAAE,GAC3BE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,IAAIf,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,UAAUA;AAAA,EAGjB;AAAA,IACEb;AAAA;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAE8B,EAAS;AAEX,IAAIG,KAAW,EAAC,SAAS,CAAA,EAAE;AAAA,CAE1B,SAAUjC,GAAQ;AAKnB,GAAC,SAASC,GAAQD,GAAQE,GAAQ;AAElC,aAASiB,EAAOf,GAAM;AACpB,UAAIC,IAAK,MAAMe,IAAU;AAGzB,MAAAf,EAAG,OAAO,WAAW;AACnB,YAAI6B,IAAI7B,EAAG,GAAG8B,IAAI9B,EAAG,GAAG+B,IAAI/B,EAAG,GAAGgC,IAAIhC,EAAG;AACzC,eAAA6B,IAAKA,KAAK,KAAOA,MAAM,IAAKC,GAC5BA,IAAKA,IAAIC,IAAK,GACdA,IAAKA,KAAK,KAAOA,MAAM,IAAKC,GAC5BA,IAAKA,IAAIH,IAAK,GACd7B,EAAG,IAAI6B,IAAKA,KAAK,KAAOA,MAAM,KAAMC,GACpC9B,EAAG,IAAI8B,IAAKA,IAAIC,IAAK,GACrB/B,EAAG,IAAK+B,KAAK,KAAOD,MAAM,KAAME,GACzBhC,EAAG,IAAKgC,IAAIH,IAAK;AAAA,MAC5B,GAkBE7B,EAAG,IAAI,GACPA,EAAG,IAAI,GACPA,EAAG,IAAI,aACPA,EAAG,IAAI,YAEHD,MAAS,KAAK,MAAMA,CAAI,KAE1BC,EAAG,IAAKD,IAAO,aAAe,GAC9BC,EAAG,IAAID,IAAO,KAGdgB,KAAWhB;AAIb,eAASiB,IAAI,GAAGA,IAAID,EAAQ,SAAS,IAAIC;AACvC,QAAAhB,EAAG,KAAKe,EAAQ,WAAWC,CAAC,IAAI,GAChChB,EAAG,KAAI;AAAA,IAEX;AAEA,aAASI,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACDF;AAAA,IACT;AACA,aAASG,EAAKP,GAAMQ,GAAM;AACxB,UAAIC,IAAK,IAAIM,EAAOf,CAAI,GACpBU,IAAQF,KAAQA,EAAK,OACrBG,IAAO,WAAW;AAAE,gBAAQF,EAAG,KAAI,MAAO,KAAK;AAAA;AACnD,aAAAE,EAAK,SAAS,WAAW;AACvB;AACE,cAAIO,IAAMT,EAAG,KAAI,MAAO,IACpBU,KAAOV,EAAG,KAAM,MAAK,KAAK,YAC1BzQ,KAAUkR,IAAMC,MAAQ,KAAK;AAAA,eAC1BnR,MAAW;AACpB,eAAOA;AAAA,MACX,GACE2Q,EAAK,QAAQF,EAAG,MAChBE,EAAK,QAAQA,GACTD,MACE,OAAOA,KAAU,YAAUL,EAAKK,GAAOD,CAAE,GAC7CE,EAAK,QAAQ,WAAW;AAAE,eAAON,EAAKI,GAAI,CAAA,CAAE;AAAA,UAEvCE;AAAA,IACT;AAEA,IAAIf,KAAUA,EAAO,UACnBA,EAAO,UAAUW,IACRT,KAAUA,EAAO,MAC1BA,EAAO,WAAW;AAAE,aAAOS;AAAA,IAAO,CAAA,IAElC,KAAK,SAASA;AAAA,EAGhB;AAAA,IACEb;AAAA,IACAE;AAAA;AAAA,IACC;AAAA;AAAA,EACH;AACA,GAAEiC,EAAQ;AAEV,IAAIK,KAAe,EAAC,SAAS,CAAA,EAAE;AAAA,CA0B9B,SAAUtC,GAAQ;AACnB,GAAC,SAAUC,GAAQsC,GAAMC,GAAM;AAK/B,QAAIC,IAAQ,KACRC,IAAS,GACTC,IAAS,IACTC,IAAU,UACVC,IAAaL,EAAK,IAAIC,GAAOC,CAAM,GACnCI,IAAeN,EAAK,IAAI,GAAGG,CAAM,GACjCI,IAAWD,IAAe,GAC1BE,IAAOP,IAAQ,GACfQ;AAMJ,aAASC,EAAW9C,GAAM+C,GAASC,GAAU;AAC3C,UAAIrP,IAAM,CAAA;AACV,MAAAoP,IAAWA,KAAW,KAAQ,EAAE,SAAS,GAAM,IAAIA,KAAW,CAAA;AAG9D,UAAIE,IAAYC,EAAOC;AAAA,QACrBJ,EAAQ,UAAU,CAAC/C,GAAMoD,GAASjB,CAAI,CAAC,IACtCnC,KAAgBqD,GAAQ;AAAA,QAAW;AAAA,MAAC,GAAG1P,CAAG,GAGzC2P,IAAO,IAAIC,EAAK5P,CAAG,GAInBgN,IAAO,WAAW;AAIpB,iBAHI/J,IAAI0M,EAAK,EAAEhB,CAAM,GACjBN,IAAIS,GACJe,IAAI,GACD5M,IAAI8L;AACT,UAAA9L,KAAKA,IAAI4M,KAAKnB,GACdL,KAAKK,GACLmB,IAAIF,EAAK,EAAE,CAAC;AAEd,eAAO1M,KAAK+L;AACV,UAAA/L,KAAK,GACLoL,KAAK,GACLwB,OAAO;AAET,gBAAQ5M,IAAI4M,KAAKxB;AAAA,MACrB;AAEE,aAAArB,EAAK,QAAQ,WAAW;AAAE,eAAO2C,EAAK,EAAE,CAAC,IAAI;AAAA,SAC7C3C,EAAK,QAAQ,WAAW;AAAE,eAAO2C,EAAK,EAAE,CAAC,IAAI;AAAA,SAC7C3C,EAAK,SAASA,GAGduC,EAAOE,GAASE,EAAK,CAAC,GAAGnB,CAAI,IAGrBY,EAAQ,QAAQC,KACpB,SAASrC,GAAMX,GAAMyD,GAAc/C,GAAO;AAUxC,eATIA,MAEEA,EAAM,KAAKL,EAAKK,GAAO4C,CAAI,GAE/B3C,EAAK,QAAQ,WAAW;AAAE,iBAAON,EAAKiD,GAAM,CAAA,CAAE;AAAA,YAK5CG,KAAgBrB,EAAKI,CAAO,IAAI7B,GAAaX,KAIrCW;AAAA,MACb;AAAA,QACLA;AAAA,QACAsC;AAAA,QACA,YAAYF,IAAUA,EAAQ,SAAU,QAAQX;AAAA,QAChDW,EAAQ;AAAA,MAAK;AAAA,IACf;AAYA,aAASQ,EAAK5P,GAAK;AACjB,UAAIyM,GAAGsD,IAAS/P,EAAI,QAChBsM,IAAK,MAAMf,IAAI,GAAGuC,IAAIxB,EAAG,IAAIA,EAAG,IAAI,GAAG0D,IAAI1D,EAAG,IAAI,CAAA;AAMtD,WAHKyD,MAAU/P,IAAM,CAAC+P,GAAQ,IAGvBxE,IAAImD;AACT,QAAAsB,EAAEzE,CAAC,IAAIA;AAET,WAAKA,IAAI,GAAGA,IAAImD,GAAOnD;AACrB,QAAAyE,EAAEzE,CAAC,IAAIyE,EAAElC,IAAImB,IAAQnB,IAAI9N,EAAIuL,IAAIwE,CAAM,KAAKtD,IAAIuD,EAAEzE,CAAC,EAAG,GACtDyE,EAAElC,CAAC,IAAIrB;AAIT,OAACH,EAAG,IAAI,SAAS3L,GAAO;AAItB,iBAFI8L,GAAGwD,IAAI,GACP1E,IAAIe,EAAG,GAAGwB,KAAIxB,EAAG,GAAG0D,IAAI1D,EAAG,GACxB3L;AACL,UAAA8L,IAAIuD,EAAEzE,IAAI0D,IAAQ1D,IAAI,CAAE,GACxB0E,IAAIA,IAAIvB,IAAQsB,EAAEf,KAASe,EAAEzE,CAAC,IAAIyE,EAAElC,KAAImB,IAAQnB,KAAIrB,CAAE,MAAMuD,EAAElC,EAAC,IAAIrB,EAAG;AAExE,eAAAH,EAAG,IAAIf,GAAGe,EAAG,IAAIwB,IACVmC;AAAA,MAIR,GAAEvB,CAAK;AAAA,IACV;AAMA,aAAShC,EAAKC,GAAGF,GAAG;AAClB,aAAAA,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,GACRF,EAAE,IAAIE,EAAE,EAAE,MAAK,GACRF;AAAA,IACT;AAKA,aAAS+C,EAAQxE,GAAKkF,GAAO;AAC3B,UAAI7T,IAAS,CAAA,GAAI8T,IAAO,OAAOnF,GAAMoF;AACrC,UAAIF,KAASC,KAAO;AAClB,aAAKC,KAAQpF;AACX,cAAI;AAAE,YAAA3O,EAAO,KAAKmT,EAAQxE,EAAIoF,CAAI,GAAGF,IAAQ,CAAC,CAAC;AAAA,kBAAe;AAAA,UAAE;AAGpE,aAAQ7T,EAAO,SAASA,IAAS8T,KAAO,WAAWnF,IAAMA,IAAM;AAAA,IACjE;AAOA,aAASuE,EAAOlD,GAAMrM,GAAK;AAEzB,eADIqQ,IAAahE,IAAO,IAAIiE,GAAOxC,IAAI,GAChCA,IAAIuC,EAAW;AACpB,QAAArQ,EAAIiP,IAAOnB,CAAC,IACVmB,KAASqB,KAAStQ,EAAIiP,IAAOnB,CAAC,IAAI,MAAMuC,EAAW,WAAWvC,GAAG;AAErE,aAAO2B,GAASzP,CAAG;AAAA,IACrB;AAOA,aAAS0P,KAAW;AAClB,UAAI;AACF,YAAIa;AACJ,eAAIrB,MAAeqB,IAAMrB,EAAW,eAElCqB,IAAMA,EAAI7B,CAAK,KAEf6B,IAAM,IAAI,WAAW7B,CAAK,IACzBxC,EAAO,UAAUA,EAAO,UAAU,gBAAgBqE,CAAG,IAEjDd,GAASc,CAAG;AAAA,MACpB,QAAW;AACV,YAAIC,IAAUtE,EAAO,WACjBuE,IAAUD,KAAWA,EAAQ;AACjC,eAAO,CAAC,CAAC,oBAAI,QAAMtE,GAAQuE,GAASvE,EAAO,QAAQuD,GAASjB,CAAI,CAAC;AAAA,MAClE;AAAA,IACH;AAMA,aAASiB,GAASnB,GAAG;AACnB,aAAO,OAAO,aAAa,MAAM,GAAGA,CAAC;AAAA,IACvC;AAeA,QANAiB,EAAOd,EAAK,UAAUD,CAAI,GAMtBvC,EAAO,SAAS;AAClB,MAAAA,EAAO,UAAUkD;AAEjB,UAAI;AACF,QAAAD,IAAa,QAAQ,QAAQ;AAAA,MACjC,QAAe;AAAA,MAAE;AAAA,IACjB;AAEE,MAAAT,EAAK,SAASI,CAAO,IAAIM;AAAA,EAK3B;AAAA;AAAA;AAAA,IAGG,OAAO,OAAS,MAAe,OAAOpD;AAAA,IACvC,CAAE;AAAA;AAAA,IACF;AAAA;AAAA,EACF;AACA,GAAEwC,EAAY;AAcd,IAAImC,KAAO1E,GAAO,SAKd2E,KAASxD,GAAS,SAKlByD,KAASnD,GAAS,SAQlBoD,KAAYnD,GAAY,SASxBoD,KAAU/C,GAAU,SAOpBgD,KAAS7C,GAAS,SAIlB8C,KAAKzC,GAAa;AAEtByC,GAAG,OAAON;AACVM,GAAG,SAASL;AACZK,GAAG,SAASJ;AACZI,GAAG,YAAYH;AACfG,GAAG,UAAUF;AACbE,GAAG,SAASD;AAEZ,IAAI5B,KAAa6B;AAEjB,IAAIC;AACC,MAACC,KAAiB,CAAAC,MACjBA,KACFF,KAAaE,GACNA,KAEFF;AAGT,SAASG,GAAQxH,GAAOC,GAAOwH,GAAUhF,GAAM;AAC7C,QAAMrC,IAAOH,IAAQD;AACrB,EAAAyC,IAAOA,KAAQ6E;AACf,QAAM7U,IAASuN,IAAQI,KAAQqC,MAAS,SAAY8C,GAAW,KAAK9C,CAAI,EAAE,MAAK,IAAK,KAAK,OAAQ;AACjG,SAAOgF,IAAWhV,IAAS,KAAK,MAAMA,CAAM;AAC9C;AACA,SAASiV,KAAUlR,GAAM;AACvB,EAAAA,IAAOA,EAAK,OAAO,OAAK,MAAM,MAAS;AACvC,QAAM,CAACkO,GAAGH,GAAGC,GAAGC,CAAC,IAAIjO;AACrB,UAAQA,EAAK,QAAM;AAAA,IACjB,KAAK;AACH,aAAOgR,GAAQ,GAAG,GAAG,EAAI;AAAA,IAC3B,KAAK;AACH,cAAQ,OAAO9C,GAAC;AAAA,QACd,KAAK;AACH,iBAAO8C,GAAQ,GAAG,GAAG,IAAO9C,CAAC;AAAA,QAC/B,KAAK;AACH,iBAAO8C,GAAQ,GAAG,GAAG9C,CAAC;AAAA,QACxB,KAAK;AACH,iBAAO8C,GAAQ,GAAG9C,GAAG,EAAK;AAAA,MAC7B;AAAA,IACH,KAAK;AACH,cAAQ,OAAOH,GAAC;AAAA,QACd,KAAK;AACH,iBAAOiD,GAAQ,GAAG9C,GAAG,IAAOH,CAAC;AAAA,QAC/B,KAAK;AACH,iBAAOiD,GAAQ,GAAG,GAAGjD,CAAC;AAAA,QACxB,KAAK;AACH,iBAAOiD,GAAQ9C,GAAGH,GAAG,EAAK;AAAA,MAC7B;AAAA,IACH,KAAK;AACH,cAAQ,OAAOC,GAAC;AAAA,QACd,KAAK;AACH,iBAAOgD,GAAQ9C,GAAGH,GAAG,IAAOC,CAAC;AAAA,QAC/B,KAAK;AACH,iBAAOgD,GAAQ9C,GAAGH,GAAGC,CAAC;AAAA,MACzB;AAAA,IACH;AACE,aAAOgD,GAAQ9C,GAAGH,GAAGC,GAAGC,CAAC;AAAA,EAC5B;AACH;AAEA,SAASkD,GAAOC,GAAKnF,GAAM;AACzB,SAAOmF,EAAIF,EAAO,GAAGE,EAAI,QAAQ,IAAOnF,CAAI,CAAC;AAC/C;AACA,SAASoF,GAAY9G,GAAY,GAAG0B,GAAM;AACxC,QAAMK,IAAO,CAAC,GAAG/B,CAAU;AAC3B,MAAI,KAAKA,EAAW;AAAQ,WAAO+B;AACnC,MAAI,IAAI;AAAG,WAAO;AAClB,QAAMgF,IAAO,CAAA;AACb,SAAOA,EAAK,SAAS,KAAG;AACtB,UAAMrV,IAASiV,EAAO,GAAG5E,EAAK,QAAQL,CAAI;AAC1C,IAAAqF,EAAK,KAAKhF,EAAK,OAAOrQ,GAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,EACpC;AACD,SAAOqV;AACT;AACA,SAASC,GAAWhH,MAAevK,GAAM;AACvC,EAAAA,IAAOA,EAAK,OAAO,CAAAmL,MAAKA,MAAM,MAAS;AACvC,QAAM,CAAC+C,GAAGH,CAAC,IAAI/N;AACf,UAAQA,EAAK,QAAM;AAAA,IACjB,KAAK;AACH,aAAOqR,GAAY9G,GAAY,CAAC;AAAA,IAClC,KAAK;AACH,cAAQ,OAAO2D,GAAC;AAAA,QACd,KAAK;AACH,iBAAOmD,GAAY9G,GAAY,GAAG2D,CAAC;AAAA,QACrC,KAAK;AACH,iBAAOmD,GAAY9G,GAAY2D,CAAC;AAAA,MACnC;AAAA,IACH;AACE,aAAOmD,GAAY9G,GAAY2D,GAAGH,CAAC;AAAA,EACtC;AACH;ACphCA,MAAMyD,KAAW,SAAUC,GAAI;AAC3B,SAAO,OAAOA,KAAO,YAAY,CAAC,MAAMA,CAAE;AAC9C,GACMC,KAAa,SAAUC,GAAO;AAChC,MAAIH,GAASG,CAAK;AAAG,WAAOA;AAC5B,QAAMC,IAAM,SAASD,CAAK;AAC1B,SAAOH,GAASI,CAAG,IAAIA,IAAM;AACjC,GAEMC,KAAU,SAAUC,GAAKC,GAAK;AAChC,SAAAD,IAAMJ,GAAWI,CAAG,GACfN,GAASM,CAAG,MAAGA,IAAM,oBAC1BC,IAAML,GAAWK,CAAG,GACfP,GAASO,CAAG,MAAGA,IAAM,mBACnBb,EAAOY,GAAKC,GAAK,EAAK;AACjC,GACMC,IAAU,SAAUF,GAAKC,GAAK;AAChC,SAAO,KAAK,IAAIF,GAAQC,GAAKC,CAAG,CAAC;AACrC,GAEME,KAAQ,SAAUH,GAAKC,GAAKG,GAAMC,GAAM5R,GAAO6R,GAAQ;AACzD,EAAAN,IAAMJ,GAAWI,CAAG,GACfN,GAASM,CAAG,MAAGA,IAAM,oBAC1BC,IAAML,GAAWK,CAAG,GACfP,GAASO,CAAG,MAAGA,IAAM,mBAC1BG,IAAOR,GAAWQ,CAAI,KAAK,GAC3BC,IAAOT,GAAWS,CAAI,KAAK,IACvBD,IAAO,MAAGA,IAAO,IACjBC,IAAO,OAAIA,IAAO,KACtBC,IAASA,KAAUlB,EAAOgB,GAAMC,GAAM,EAAK;AAC3C,MAAIE,IAAU;AACd,WAASzV,IAAQ,GAAGA,IAAQwV,IAAS,GAAGxV;AACpC,IAAAyV,KAAWnB,EAAO,GAAG,CAAC;AAE1B,EAAAmB,KAAWnB,EAAO,GAAG,CAAC;AACtB,MAAIoB,IAAMpB,EAAOY,GAAKC,CAAG,EAAE,SAAQ;AACnC,SAAO,WAAWO,IAAM,MAAMD,CAAO;AACzC;ACXO,SAASE,GAAO9G,IAAO,IAAI;AAC9B,EAAI,OAAOA,KAAS,aAAUA,IAAOA,IAAO;AAC5C,QAAM+G,IAAa/G,EAAK,MAAMC,EAAS,MAAM,GAEvC3B,IAAQyI,KAAcA,EAAW,CAAC,KAAKA,EAAW,CAAC,EAAE,MAAM9G,EAAS,QAAQ,GAC5EoG,IAAM/H,KAASA,EAAM,CAAC,KAAK,SAASA,EAAM,CAAC,GAAG,EAAE,GAChDgI,IAAMhI,KAASA,EAAM,CAAC,KAAK,SAASA,EAAM,CAAC,GAAG,EAAE,GAEhDxJ,IAAQwJ,IAAS,CAACA,EAAM,CAAC,KAAK,SAASA,EAAM,CAAC,GAAG,EAAE,KAAM8H,GAAQC,GAAKC,CAAG,IAAI,QAE7EM,IAAUG,KAAcA,EAAW,CAAC,KAAKA,EAAW,CAAC,EAAE,MAAM9G,EAAS,QAAQ,GAC9EwG,IAAOG,KAAWA,EAAQ,CAAC,KAAK,SAASA,EAAQ,CAAC,GAAG,EAAE,GACvDF,IAAOE,KAAWA,EAAQ,CAAC,KAAK,SAASA,EAAQ,CAAC,GAAG,EAAE,GAEvDD,IAASC,IAAW,CAACA,EAAQ,CAAC,KAAK,SAASA,EAAQ,CAAC,GAAG,EAAE,KAAMR,GAAQK,GAAMC,CAAI,IAAI,QAEtFlW,IAAS;AAAA;AAAA,IAEX,YAAAuW;AAAA;AAAA,IAEA,OAAAzI;AAAA,IACA,KAAA+H;AAAA,IACA,KAAAC;AAAA;AAAA,IAEA,OAAAxR;AAAA;AAAA,IAEA,SAAA8R;AAAA,IACA,MAAAH;AAAA,IACA,MAAAC;AAAA,IACA,QAAAC;AAAA;AAAA,EACR;AAGI,SADiB,OAAO,KAAKnW,CAAM,EAAE,KAAK,CAAC2D,MAAQA,MAAQ,MAAS,IAC/C3D,IACd;AACX;ACzDA,MAAM2M,KAAa,CAAC6J,IAAO,gBAAgBC,GAAYD,CAAI,GACrDhJ,KAAQ,SAAUkJ,GAAK;AACzB,UAAQA,IAAM,IAAI;AACtB,GAEMnJ,KAAQ,SAAUmJ,GAAK;AACzB,UAAQA,IAAM,IAAI;AACtB,GAIMC,IAAO,SAAUxB,MAAQpR,GAAM;AACjC,MAAI8R,GACAC,GACAxR;AACJ,MAAI6Q,MAAQ;AACZ,YAAQpR,EAAK,QAAM;AAAA,MACf,KAAK;AACD,eAAOmR,GAAOC,CAAG;AAAA,MACrB,KAAK;AACD,gBAAC7Q,CAAK,IAAIP,GACHuR,GAAWH,GAAK7Q,CAAK;AAAA,MAChC,KAAK;AACD,gBAACuR,GAAKC,CAAG,IAAI/R,GACNuR,GAAWH,GAAKF,EAAOY,GAAKC,CAAG,CAAC;AAAA,MAC3C;AACI,eAAOZ,GAAO,CAACC,GAAK,GAAGpR,CAAI,CAAC;AAAA,IACnC;AACL,GAKMwK,KAAU,SAAU4G,GAAKU,GAAKC,GAAK;AACrC,QAAM9V,IAAS4W,GAASzB,CAAG;AAC3B,UAAQ,UAAU,QAAM;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AACD,aAAOnV;AAAA,IACX,KAAK;AACD,aAAOA,EAAO,MAAM,GAAG6V,CAAG;AAAA,IAE9B,KAAK;AACD,aAAO7V,EAAO,MAAM6V,GAAKC,CAAG;AAAA,EACnC;AACL,GAWMe,KAAQ,CAAA,GACRC,KAAQ,YAAarW,GAAO;AAE9B,EAAIA,EAAM,WAAW,MAAGA,IAAQA,EAAM,CAAC;AAIvC,QAAMsW,IADUD,GAAM,QACO,QAAQ,aAAa,KAAK,GAAG,GAEpDE,IAASH,GAAME,CAAY,IAAIF,GAAME,CAAY,KAAK;AAAA,IACxD,OAAO;AAAA,IACP,OAAOtW;AAAA,EACf;AAEI,SAAOuW,EAAM,MAAMA,EAAM,UAAUA,EAAM,MAAM,MAAM;AACzD;;;;;;;;;AC1EO,SAASvW,GAAM;AAAA,EAClB,MAAA+O;AAAA,EACA,MAAM,EAAE,KAAAqG,GAAK,KAAAC,GAAK,YAAAS,GAAY,OAAAjS,EAAO;AAAA,EACrC,UAAA2S;AAAA,EACA,SAAS,EAAE,MAAAC,GAAM,cAAAH,GAAc,MAAA1X,GAAM,cAAA8X,EAAc;AACvD,GAAG;AACC,MAAInX,IAAS,CAAA;AAKb,MAAIiX,EAAS,WAAW;AAAG,WAAO,CAAA;AAGlC,MAAI,CAACV;AACD,IAAAU,EAAS,QAAQ,CAACG,GAAMzW,MAAU;AAC9B,MAAAX,EAAO;AAAA,QACHqX,GAAID,GAAMzW,GAAO;AAAA,UACb,MAAM,CAAC,GAAGuW,GAAMvW,CAAK;AAAA,UACrB,cAAc,CAAC,GAAGoW,GAAcpW,CAAK;AAAA,UACrC,gBAAgBX;AAAA,UAChB,wBAAwBiX;AAAA,UACxB,MAAM5X,KAAQW;AAAA,UACd,cAAcmX,KAAgBF;AAAA,QAClD,CAAiB;AAAA,MACjB;AAAA,IACA,CAAS;AAAA,WAGGpB,MAAQ,KAAKC,MAAQ;AAErB,IAAA9V,IAAS2W;AAAA,MACLU,GAAIJ,GAAU,QAAW;AAAA,QACrB,MAAM,CAAC,GAAGC,GAAM1H,CAAI;AAAA,QACpB,cAAc,CAAC,GAAGuH,GAAcvH,CAAI;AAAA,QACpC,gBAAgBxP;AAAA,QAChB,wBAAwBiX;AAAA,QACxB,MAAM5X,KAAQW;AAAA,QACd,cAAcmX,KAAgBF;AAAA,MAClD,CAAiB;AAAA,IACjB;AAAA,WAGgBV,EAAW,CAAC,GAAG;AACf,IAAAU,EAAS,gBAAgBA,EAAS,iBAAiB;AACnD,UAAMtW,IAAQsW,EAAS,gBAAgBA,EAAS;AAChD,IAAAjX,IAASqX,GAAIJ,EAAStW,CAAK,GAAG,QAAW;AAAA,MACrC,MAAM,CAAC,GAAGuW,GAAM1H,CAAI;AAAA,MACpB,cAAc,CAAC,GAAGuH,GAAcvH,CAAI;AAAA,MACpC,gBAAgBxP;AAAA,MAChB,wBAAwBiX;AAAA,MACxB,MAAM5X,KAAQW;AAAA,MACd,cAAcmX,KAAgBF;AAAA,IAClD,CAAiB,GAEDA,EAAS,iBAAiB,CAACV,EAAW,CAAC;AAAA,EACvD;AAEgB,KAAC,GAAG,MAAM,KAAK,IAAIjS,GAAO,GAAK,CAAC,EAAE,KAAI,CAAE,EAAE,QAAQ,MAAM;AACpD,MAAA2S,EAAS,QAAQ,CAACG,GAAMzW,MAAU;AAC9B,QAAAX,EAAO;AAAA,UACHqX,GAAID,GAAMpX,EAAO,QAAQ;AAAA,YACrB,MAAM,CAAC,GAAGkX,GAAMlX,EAAO,MAAM;AAAA,YAC7B,cAAc,CAAC,GAAG+W,GAAcpW,CAAK;AAAA,YACrC,gBAAgBX;AAAA,YAChB,wBAAwBiX;AAAA,YACxB,MAAM5X,KAAQW;AAAA,YACd,cAAcmX,KAAgBF;AAAA,UAC9D,CAA6B;AAAA,QAC7B;AAAA,MACA,CAAqB;AAAA,IACrB,CAAiB;AAIb,SAAOjX;AACX;AC7EA,MAAMsX,KAAU,SAAUzB,GAAKC,GAAKyB,IAAM,IAAO;AAO7C,SAAIA,IACOtC,EAAO,GAAGY,IAAMC,CAAG,IAAID,IAAM,CAAC0B,IAAM,CAAC,CAACA,IAE1CtC,EAAO,IAAI,GAAG,IAAI;AAC7B,GCXMuC,KAAQ;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACZ;AACAA,GAAM,QAAQA,GAAM,QAAQA,GAAM;AAClCA,GAAM,UAAUA,GAAM,QAAQA,GAAM,QAAQA,GAAM,SAASA,GAAM;AAEjE,MAAMC,KAAY,SAAUtF,IAAO,WAAW;AAC1C,SAAIqF,GAAM,eAAerF,EAAK,kBAAmB,CAAA,MAC7CA,IAAOqF,GAAMrF,EAAK,YAAa,CAAA,IAE5B+C,GAAO/C,CAAI;AACtB,GCZM/Q,KAAS,YAAa2C,GAAM;AAC9B,MAAI2T,GACAvF,GACA0D,GACAC;AACJ,UAAQ/R,EAAK,QAAM;AAAA,IACf,KAAK;AACD,MAAA2T,IAAM3B,EAAQ,GAAG,CAAC;AAClB;AAAA,IACJ,KAAK;AACD,OAAC2B,CAAG,IAAI3T;AACR;AAAA,IACJ,KAAK;AAED,MAAI,OAAOA,EAAK,CAAC,KAAM,WACnB,CAACoO,GAAMuF,CAAG,IAAI3T,KAGd,CAAC8R,GAAKC,CAAG,IAAI/R,GACb2T,IAAM3B,EAAQF,GAAKC,CAAG;AAE1B;AAAA,IACJ,KAAK;AAED,OAAC3D,GAAM0D,GAAKC,CAAG,IAAI/R,GACnB2T,IAAM3B,EAAQF,GAAKC,CAAG;AACtB;AAAA,EACP;AACD,SAAOpH,GAAMgJ,GAAK,MAAMD,GAAUtF,CAAI,CAAC,EAAE,KAAK,EAAE;AACpD;;;;;;;;;;;;;;;;AC/BO,SAASmF,GAAQ,EAAE,MAAM,EAAE,KAAAxB,GAAK,KAAAD,GAAK,YAAAU,EAAY,GAAE,UAAAU,IAAW,MAAS;AAG1E,SAAOV,IAAaoB,GAAK9B,GAAKC,GAAK,CAAC,CAACmB,CAAQ,IAAI,CAAC,CAACA;AACvD;ACLA,SAASW,GAAU7E,GAAS;AACxB,QAAM;AAAA,IACF,UAAAkE;AAAA,IACA,SAAS,EAAE,gBAAAY,EAAgB;AAAA,EAC9B,IAAG9E;AAEJ,SAAOkE,EAAS,KAAKY,GAAgB9E,CAAO;AAChD;ACNO,SAAS+E,GAAO,EAAE,MAAM,EAAE,KAAAjC,GAAK,KAAAC,GAAK,MAAAI,GAAM,MAAAD,GAAM,SAAAG,GAAS,OAAAtI,GAAO,OAAAxJ,GAAO,QAAA6R,GAAQ,YAAAI,EAAU,GAAI,UAAAU,IAAW,MAAM;AACjH,MAAIjX;AAEJ,SAAIoW,KACIP,MAAQ,UAAaC,MAAQ,WAAWD,IAAMC,IAAM,SAASmB,CAAQ,IACrEnB,MAAQ,UAAaD,MAAKC,IAAMD,IACpC7V,IAASgW,GAAMH,KAAO,GAAGC,GAAKG,GAAMC,GAAM5R,GAAO6R,CAAM,KAMvDnW,IAAS8N,KAAS,CAACyI,EAAW,CAAC,IAAIjS,IAAQ2S,GAExCjX;AACX;ACZO,SAAS0D,GAAO,EAAE,UAAAuT,GAAU,MAAM,EAAE,KAAApB,GAAK,OAAAvR,EAAK,GAAI,SAAS,EAAE,MAAA4S,GAAM,cAAAH,GAAc,MAAA1X,GAAM,cAAA8X,EAAc,EAAA,GAAI;AAC5G,QAAMnX,IAAS,CAAA;AACf,MAAIiK,IAAO,CAAA;AACX,QAAM8N,IAAS,CAAA;AAIf,MAAIlC,KAAO;AACP,IAAA5L,IAAOsE,GAAQ,OAAO,KAAK0I,CAAQ,CAAC,EAAE,MAAM,GAAGpB,CAAG,GAClD5L,EAAK,QAAQ,CAACtG,MAAQ;AAClB,YAAMqU,IAAYrU,EAAI,QAAQ8L,EAAS,QAAQ,IAAI;AAEnD,MAAAzP,EAAOgY,CAAS,IAAIX,GAAIJ,EAAStT,CAAG,GAAGA,GAAK;AAAA,QACxC,MAAM,CAAC,GAAGuT,GAAMc,CAAS;AAAA,QACzB,cAAc,CAAC,GAAGjB,GAAcpT,CAAG;AAAA,QACnC,gBAAgB3D;AAAA,QAChB,wBAAwBiX;AAAA,QACxB,MAAM5X,KAAQW;AAAA,QACd,cAAcmX,KAAgBF;AAAA,MAC9C,CAAa;AAAA,IACb,CAAS;AAAA,OACE;AAEH,eAAWtT,KAAOsT;AACd,OAAC,OAAOA,EAAStT,CAAG,KAAM,aAAaoU,IAAS9N,GAAM,KAAKtG,CAAG;AAElE,IAAAsG,IAAOA,EAAK,OAAO8N,CAAM,GAczB9N,EAAK,QAAQ,CAACtG,MAAQ;AAClB,YAAMqU,IAAYrU,EAAI,QAAQ8L,EAAS,QAAQ,IAAI;AACnD,MAAAzP,EAAOgY,CAAS,IAAIX,GAAIJ,EAAStT,CAAG,GAAGA,GAAK;AAAA,QACxC,MAAM,CAAC,GAAGuT,GAAMc,CAAS;AAAA,QACzB,cAAc,CAAC,GAAGjB,GAAcpT,CAAG;AAAA,QACnC,gBAAgB3D;AAAA,QAChB,wBAAwBiX;AAAA,QACxB,MAAM5X,KAAQW;AAAA,QACd,cAAcmX,KAAgBF;AAAA,MAC9C,CAAa;AAED,YAAMgB,IAAMtU,EAAI,MAAM8L,EAAS,MAAM;AACrC,MAAIwI,KAAOA,EAAI,CAAC,KAAKC,GAAKjB,EAAStT,CAAG,CAAC,MAAM,aACzCsT,EAAStT,CAAG,KAAK,SAASsU,EAAI,CAAC,GAAG,EAAE;AAAA,IAEpD,CAAS;AAAA,EACJ;AACD,SAAOjY;AACX;AClDA,SAASmY,EAAMvR,GAAG;AACd,EAAC,KAAK,OAAOA,GAAK,KAAK,SAASuR,EAAM,OAAM,GAAM,KAAK,OAAOA,EAAM,KAAM;AAC9E;AAEA,SAASC,GAAUxR,GAAGyR,GAAG;AACrB,EAAAF,EAAM,KAAK,MAAM,WAAW,GAAI,KAAK,OAAOvR,GAAK,KAAK,QAAQyR;AAClE;AAEA,SAASC,GAAM1R,GAAG;AACd,EAAAuR,EAAM,KAAK,MAAM,OAAO,GAAI,KAAK,OAAOvR,EAAE,OAAO,OAAO;AAC5D;AAEA,SAAS2R,GAAM3R,GAAGyR,GAAG;AACjB,EAAAF,EAAM,KAAK,MAAMvR,CAAC,GAAI,KAAK,OAAOyR;AACtC;AAEA,SAASG,GAAa5R,GAAG;AACrB,EAAA2R,GAAM,KAAK,MAAM,eAAe,GAAI,KAAK,QAAQE,GAAI,KAAK,MAAM,MAAMA,GAAI,KAAK,MAAM,IAAI9X,OAAY,KAAK,OAAOiG;AACrH;AAEA,SAAS8R,GAAW9R,GAAGyR,GAAG;AACtB,EAAAF,EAAM,KAAK,MAAM,YAAY,GAAI,KAAK,OAAOvR,GAAK,KAAK,aAAayR;AACxE;AAEA,SAASM,GAAW/R,GAAGyR,GAAG;AACtB,EAAAF,EAAM,KAAK,MAAM,YAAY,GAAI,KAAK,MAAMvR,GAAK,KAAK,MAAMyR,GAAK,KAAK,SAAS;AACnF;AAEA,SAASO,GAAQhS,GAAGyR,GAAG;AACnB,EAAAF,EAAM,KAAK,MAAM,SAAS,GAAI,KAAK,SAASvR,GAAK,KAAK,OAAOyR;AACjE;AAEA,SAASQ,GAAejS,GAAGyR,GAAG;AAC1B,EAAAF,EAAM,KAAK,MAAM,OAAO,GAAI,KAAK,QAAQvR,GAAK,KAAK,MAAMyR;AAC7D;AAEA,SAASS,GAAQlS,GAAG;AAChB,EAAAuR,EAAM,KAAK,MAAM,SAAS,GAAI,KAAK,OAAOvR,GAAK,KAAK,UAAU,KAAK,QAAQ,KAAK;AACpF;AAEA,SAASmS,GAAQnS,GAAG;AAChB,EAAAuR,EAAM,KAAK,MAAM,SAAS,GAAI,KAAK,OAAOvR,EAAE,YAAW;AAC3D;AAEA,SAASoS,GAAIpS,GAAG;AACZ,EAAAuR,EAAM,KAAK,MAAM,KAAK,GAAI,KAAK,OAAOvR,EAAE,YAAW;AACvD;AAEA,SAASqS,GAAMrS,GAAG;AACd,EAAAuR,EAAM,KAAK,MAAM,OAAO,GAAI,KAAK,OAAOvR,EAAE,YAAW;AACzD;AAEA,SAASsS,GAActS,GAAG;AACtB,EAAAuR,EAAM,KAAK,MAAM,gBAAgB,GAAI,KAAK,OAAOvR,EAAE,YAAW;AAClE;AAEA,SAASuS,GAAiBvS,GAAG;AACzB,EAAAuR,EAAM,KAAK,MAAM,mBAAmB,GAAI,KAAK,OAAOvR,EAAE,YAAW;AACrE;AAEA,IAAI0P,KAAU,WAAY;AAClB,WAAS1P,EAAEA,GAAGyR,GAAG;AACb,aAASe,IAAI;AACT,WAAK,cAAcxS;AAAA,IACtB;AACD,IAACwS,EAAE,YAAYf,EAAE,WAAazR,EAAE,YAAY,IAAIwS,EAAC;AAAA,EACpD;AACD,WAASf,EAAEzR,GAAGyR,GAAGe,GAAGhJ,GAAGwD,GAAG;AACtB,aAASyF,EAAEzS,GAAGyR,GAAG;AACb,eAASe,EAAExS,GAAG;AACV,iBAASyR,EAAEzR,GAAG;AACV,iBAAOA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;QACvC;AACD,eAAOA,EACF,QAAQ,OAAO,MAAM,EACrB,QAAQ,MAAM,KAAK,EACnB,QAAQ,SAAS,KAAK,EACtB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,4BAA4B,SAAUA,GAAG;AAC9C,iBAAO,SAASyR,EAAEzR,CAAC;AAAA,QAC/C,CAAyB,EACA,QAAQ,yBAAyB,SAAUA,GAAG;AAC3C,iBAAO,QAAQyR,EAAEzR,CAAC;AAAA,QAC9C,CAAyB,EACA,QAAQ,oBAAoB,SAAUA,GAAG;AACtC,iBAAO,SAASyR,EAAEzR,CAAC;AAAA,QAC/C,CAAyB,EACA,QAAQ,oBAAoB,SAAUA,GAAG;AACtC,iBAAO,QAAQyR,EAAEzR,CAAC;AAAA,QAC9C,CAAyB;AAAA,MACR;AACD,UAAIwJ,GAAGwD;AACP,cAAQhN,EAAE,QAAM;AAAA,QACZ,KAAK;AACD,UAAAwJ,IAAI;AACJ;AAAA,QAEJ,KAAK;AACD,UAAAA,IAAIxJ,EAAE,CAAC;AACP;AAAA,QAEJ;AACI,UAAAwJ,IAAIxJ,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,IAAI,SAASA,EAAEA,EAAE,SAAS,CAAC;AAAA,MAC9D;AACD,aAAQgN,IAAIyE,IAAI,MAAMe,EAAEf,CAAC,IAAI,MAAM,gBAAiB,cAAcjI,IAAI,UAAUwD,IAAI;AAAA,IACvF;AACD,IAAC,KAAK,WAAWhN,GACZ,KAAK,QAAQyR,GACb,KAAK,SAASe,GACd,KAAK,OAAOhJ,GACZ,KAAK,SAASwD,GACd,KAAK,OAAO,eACZ,KAAK,UAAUyF,EAAEzS,GAAGyR,CAAC;AAAA,EAC7B;AACD,WAASe,EAAExS,GAAG;AACV,aAASwS,IAAI;AACT,aAAOxS,EAAE,UAAU0S,GAAIC,CAAE;AAAA,IAC5B;AACD,aAASnJ,IAAI;AACT,aAAOkJ;AAAA,IACV;AACD,aAAS1F,EAAEyE,GAAG;AACV,eAAS,EAAEA,GAAGe,GAAGhJ,GAAG;AAChB,YAAIwD,IAAGyF;AACP,aAAKzF,KAAIwF,GAAGhJ,IAAIwD,IAAGA;AACf,UAACyF,KAAIzS,EAAE,OAAOgN,EAAC,GACFyF,OAAT;AAAA,KACOhB,EAAE,UAAUA,EAAE,QAASA,EAAE,SAAS,GAAKA,EAAE,SAAS,MAC1CgB,OAAT,QAA2BA,OAAb,YAA+BA,OAAb,YAC/BhB,EAAE,QAASA,EAAE,SAAS,GAAKA,EAAE,SAAS,OACtCA,EAAE,UAAWA,EAAE,SAAS;AAAA,MAC1C;AACD,aACImB,OAAOnB,MACFmB,KAAKnB,MACAmB,KAAK,GACNC,KAAK;AAAA,QACF,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACxC,IACwB,EAAEA,IAAID,IAAInB,CAAC,GACVmB,KAAKnB,IACVoB;AAAA,IAEP;AACD,aAASJ,EAAEzS,GAAG;AACV,MAAA8S,KAAKH,MAAOA,IAAKG,OAAQA,KAAKH,GAAMI,KAAK,CAAA,IAAMA,GAAG,KAAK/S,CAAC;AAAA,IAC3D;AACD,aAASgT,EAAEhT,GAAG;AACV,UAAIyR,IAAI;AACR,WAAKzR,EAAE,QAAQyR,IAAIzR,EAAE;AAAU,QAAAA,EAAEyR,IAAI,CAAC,MAAMzR,EAAEyR,CAAC,IAAIzR,EAAE,OAAOyR,GAAG,CAAC,IAAIA;AAAA,IACvE;AACD,aAAStG,IAAI;AACT,UAAIsG,GAAG,GAAGjI,GAAGwD,GAAGgG;AAChB,aACKvB,IAAIkB,GACJ,IAAIrK,EAAG,GACC,MAAT,QACQkB,IAAImJ,GACE3S,EAAE,WAAW2S,CAAE,MAAvB,OAA6B3F,IAAIiG,IAAKN,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEU,EAAE,IAClEnG,MAAT,QACQgG,IAAI7H,KAAe6H,MAAT,QAAehG,IAAI,CAACA,GAAGgG,CAAC,GAAKxJ,IAAIwD,MAAQ2F,IAAKnJ,GAAKA,IAAI4J,OACjET,IAAKnJ,GAAKA,IAAI4J,IACb5J,MAAT,SAAeA,IAAI6J,KACV7J,MAAT,QACQkJ,IAAKjB,GAAK,IAAI6B,GAAG,GAAG9J,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACtDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAASnJ,IAAI;AACT,UAAItI,GAAGyR,GAAGe,GAAGhJ,GAAGwD;AAChB,UAAMhN,IAAI2S,GAAMlB,IAAI/H,EAAG,GAAY+H,MAAT,SAAeA,IAAI4B,KAAc5B,MAAT;AAC9C,YAAMe,IAAIG,GAAKO,KAAO1J,IAAI4B,EAAC,GAAK8H,KAAe1J,MAAT,OAAcgJ,IAAIa,MAAQV,IAAKH,GAAKA,IAAIY,IAAeZ,MAAT,MAAa;AAC7F,eAAKhJ,IAAI,CAAA,GAAIwD,IAAI/C,EAAC,GAAa+C,MAAT,SAAeA,IAAI3B,MAAe2B,MAAT;AAC3C,YAAAxD,EAAE,KAAKwD,CAAC,GAAIA,IAAI/C,KAAe+C,MAAT,SAAeA,IAAI3B,EAAG;AAChD,UAAS7B,MAAT,QACQwD,IAAID,EAAG,GACAC,MAAT,SAAeA,IAAIqG,KACVrG,MAAT,QACQ0F,IAAK1S,GAAKyR,IAAI8B,GAAG9B,GAAGjI,GAAGwD,CAAC,GAAayE,MAAT,SAAekB,IAAK3S,IAAKA,IAAIyR,MACzDkB,IAAK3S,GAAKA,IAAIoT,OACpBT,IAAK3S,GAAKA,IAAIoT;AAAA,QACzB;AAAM,UAACT,IAAK3S,GAAKA,IAAIoT;AAAA;AACrB,QAACT,IAAK3S,GAAKA,IAAIoT;AACpB,aAAOpT;AAAA,IACV;AACD,aAASqL,IAAI;AACT,UAAIrL;AACJ,aAAQA,IAAI4M,EAAC,GAAc5M,MAAT,SAAgBA,IAAIwT,EAAC,GAAcxT,MAAT,SAAeA,IAAIyT,GAAG,KAAIzT;AAAA,IACzE;AACD,aAAS0J,IAAI;AACT,UAAI+H,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIe,IAAKf,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEkB,EAAE,IACjE,MAAT,SAAgBjB,IAAKjB,GAAK,IAAImC,GAAE,IACvB,MAAT,SAAejB,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS1E,IAAI;AACT,UAAI0E,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIkB,IAAKlB,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEqB,EAAE,IACjE,MAAT,SAAgBpB,IAAKjB,GAAK,IAAIsC,GAAE,IACvB,MAAT,SAAepB,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASxH,IAAI;AACT,UAAIjK,GAAGyR,GAAGe;AACV,aACKxS,IAAI2S,GACJlB,IAAIpG,EAAG,GACCoG,MAAT,QACQe,IAAIpH,EAAG,GACAoH,MAAT,QACQE,IAAK1S,GAAKyR,IAAIuC,GAAGvC,GAAGe,CAAC,GAAaf,MAAT,SAAekB,IAAK3S,IAAKA,IAAIyR,MACtDkB,IAAK3S,GAAKA,IAAIoT,OACpBT,IAAK3S,GAAKA,IAAIoT,IACtBpT;AAAA,IAEP;AACD,aAASoL,IAAI;AACT,UAAIpL,GAAGyR,GAAGe;AACV,aACIU,KACClT,IAAI2S,GACJlB,IAAIwC,EAAG,GACCxC,MAAT,QACQe,IAAInI,EAAG,GACAmI,MAAT,SAAeA,IAAIa,KACVb,MAAT,QACQE,IAAK1S,GAAKyR,IAAIyC,GAAGzC,GAAGe,CAAC,GAAaf,MAAT,SAAekB,IAAK3S,IAAKA,IAAIyR,MACtDkB,IAAK3S,GAAKA,IAAIoT,OACpBT,IAAK3S,GAAKA,IAAIoT,IACtBF,KACSlT,MAAT,SAAgByR,IAAI,MAAayB,MAAN,KAAYT,EAAE0B,EAAE,IAC3CnU;AAAA,IAEP;AACD,aAASiU,IAAI;AACT,UAAIjU;AACJ,aACKA,IAAI2K,EAAG,GACC3K,MAAT,SACMA,IAAI+K,GAAG,GACA/K,MAAT,SACMA,IAAIoU,GAAC,GAAcpU,MAAT,SAAgBA,IAAIqU,EAAG,GAAYrU,MAAT,SAAgBA,IAAIsU,EAAG,GAAYtU,MAAT,SAAeA,IAAIkL,EAAC,QAC5FlL;AAAA,IAEP;AACD,aAAS2K,IAAI;AACT,UAAI8G,GAAG,GAAGjI,GAAGwD,GAAGgG,GAAG7H;AACnB,aACKsG,IAAIkB,GACG3S,EAAE,WAAW2S,CAAE,MAAvB,OAA6B,IAAI4B,IAAK5B,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE+B,EAAE,IAClE,MAAT,QACQhL,IAAIiL,EAAG,GACAjL,MAAT,QACcxJ,EAAE,WAAW2S,CAAE,MAAtB,MAA4B3F,IAAI0H,IAAK/B,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEkC,EAAE,IAClE3H,MAAT,QACQgG,IAAIyB,EAAG,GACAzB,MAAT,QACehT,EAAE,WAAW2S,CAAE,MAAvB,OACOxH,KAAIyJ,IAAKjC,QACTxH,KAAI,MAAa+H,MAAN,KAAYT,EAAEoC,EAAE,IAC1B1J,OAAT,QACQuH,IAAKjB,GAAK,IAAIqD,GAAGtL,GAAGwJ,CAAC,GAAa,MAAT,SAAeL,IAAKlB,IAAKA,IAAI,MACtDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAAS1G,KAAI;AACT,UAAI0G,GAAG,GAAGjI,GAAGwD;AACb,aACKyE,IAAIkB,GACG3S,EAAE,WAAW2S,CAAE,MAAvB,OAA6B,IAAI4B,IAAK5B,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE+B,EAAE,IAClE,MAAT,QACQhL,IAAIiL,EAAG,GACAjL,MAAT,QACOxJ,EAAE,OAAO2S,GAAI,CAAC,MAAMoC,MAAO/H,IAAI+H,IAAMpC,KAAM,MAAQ3F,IAAI,MAAakG,MAAN,KAAYT,EAAEuC,EAAE,IACtEhI,MAAT,QACQ0F,IAAKjB,GAAK,IAAIwD,GAAGzL,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAAS2C,KAAI;AACT,UAAI3C,GAAG,GAAGjI,GAAGwD;AACb,aACKyE,IAAIkB,GACG3S,EAAE,WAAW2S,CAAE,MAAvB,OAA6B,IAAI4B,IAAK5B,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE+B,EAAE,IAClE,MAAT,QACQhL,IAAIiL,EAAG,GACAjL,MAAT,QACexJ,EAAE,WAAW2S,CAAE,MAAvB,OAA6B3F,IAAI4H,IAAKjC,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEoC,EAAE,IACnE7H,MAAT,QACQ0F,IAAKjB,GAAK,IAAIyD,GAAG1L,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAAS4C,IAAI;AACT,UAAI5C,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIwC,IAAKxC,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE2C,EAAE,IACjE,MAAT,SAAgB1C,IAAKjB,GAAK,IAAI4D,GAAE,IACvB,MAAT,SAAe1C,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS6C,IAAI;AACT,UAAI7C,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAI2C,IAAK3C,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE8C,EAAE,IACjE,MAAT,SAAgB7C,IAAKjB,GAAK,IAAI+D,GAAE,IACvB,MAAT,SAAe7C,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASvG,IAAI;AACT,UAAIuG,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAI8C,IAAK9C,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEiD,EAAE,IACjE,MAAT,SAAgBhD,IAAKjB,GAAK,IAAIkE,GAAE,IACvB,MAAT,SAAehD,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASpH,IAAI;AACT,UAAIoH;AACJ,aAAczR,EAAE,WAAW2S,CAAE,MAAtB,MAA4BlB,IAAIgE,IAAK9C,QAAUlB,IAAI,MAAayB,MAAN,KAAYT,EAAEiD,EAAE,IAAIjE;AAAA,IACxF;AACD,aAASgD,IAAI;AACT,UAAIhD,GAAG,GAAGjI;AACV,UACMiI,IAAIkB,GACL,IAAI,CAAE,GACPiD,GAAG,KAAK5V,EAAE,OAAO2S,CAAE,CAAC,KAAMnJ,IAAIxJ,EAAE,OAAO2S,CAAE,GAAIA,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEoD,EAAE,IACzErM,MAAT;AAEA,eAAgBA,MAAT;AACH,YAAE,KAAKA,CAAC,GAAGoM,GAAG,KAAK5V,EAAE,OAAO2S,CAAE,CAAC,KAAMnJ,IAAIxJ,EAAE,OAAO2S,CAAE,GAAIA,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEoD,EAAE;AAAA;AAChG,YAAIzC;AACT,aAAgB,MAAT,SAAgBV,IAAKjB,GAAK,IAAIqE,GAAG,CAAC,IAAc,MAAT,SAAenD,IAAKlB,IAAKA,IAAI,GAAeA;AAAA,IAC7F;AACD,aAAS7E,IAAI;AACT,UAAI6E,GAAG,GAAGjI,GAAGwD;AACb,aACKyE,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIoD,IAAKpD,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEuD,EAAE,IACjE,MAAT,QACQxM,IAAIyM,EAAG,GACAzM,MAAT,SAAgBA,IAAI0M,EAAG,GAAY1M,MAAT,SAAgBA,IAAI2M,EAAC,GAAc3M,MAAT,SAAeA,IAAI4M,EAAG,MACjE5M,MAAT,QACcxJ,EAAE,WAAW2S,CAAE,MAAtB,MAA4B3F,IAAIqJ,IAAK1D,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAE6D,EAAE,IAClEtJ,MAAT,QACQ0F,IAAKjB,GAAK,IAAI8E,GAAG/M,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAAS2E,IAAI;AACT,UAAIpW,GAAGyR;AACP,aACKzR,IAAI2S,GACJlB,IAAItG,EAAG,GACCsG,MAAT,SAAgBiB,IAAK1S,GAAKyR,IAAI+E,GAAG/E,CAAC,IACzBA,MAAT,SAAekB,IAAK3S,IAAKA,IAAIyR,GAC7BzR;AAAA,IAEP;AACD,aAASmW,IAAI;AACT,UAAI1E,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM8D,MAAO,IAAIA,IAAM9D,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEiE,EAAE,IACrE,MAAT,QACQlN,IAAI2B,EAAG,GACA3B,MAAT,QACQkJ,IAAKjB,GAAK,IAAIkF,GAAGnN,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAASwE,IAAI;AACT,UAAIxE,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMiE,MAAO,IAAIA,IAAMjE,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEoE,EAAE,IACrE,MAAT,QACQrN,IAAI2B,EAAG,GACA3B,MAAT,QACQkJ,IAAKjB,GAAK,IAAIqF,GAAGtN,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAASyE,IAAI;AACT,UAAIzE,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMoE,MAAO,IAAIA,IAAMpE,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEuE,EAAE,IACrE,MAAT,QACQxN,IAAI2B,EAAG,GACA3B,MAAT,QACQkJ,IAAKjB,GAAK,IAAIwF,GAAGzN,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAAS+B,IAAI;AACT,UAAI/B,GAAG,GAAGjI,GAAGwD,GAAGgG;AAChB,UACKE,KACAzB,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIuE,IAAKvE,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE0E,EAAE,IACjE,MAAT;AAEA,YACYnX,EAAE,WAAW2S,CAAE,MAAtB,MAA4BnJ,IAAIkK,IAAKf,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEkB,EAAE,IAClEnK,MAAT,SAAeA,IAAI6J,KACV7J,MAAT,MACF;AACE,eAAKwD,IAAI,CAAA,GAAIgG,IAAIoE,GAAC,GAAapE,MAAT,SAAeA,IAAIqE,MAAerE,MAAT;AAC3C,YAAAhG,EAAE,KAAKgG,CAAC,GAAIA,IAAIoE,MAAepE,MAAT,SAAeA,IAAIqE,EAAG;AAChD,UAASrK,MAAT,QACchN,EAAE,WAAW2S,CAAE,MAAtB,MAA4BK,IAAIsE,IAAK3E,QAAUK,IAAI,MAAaE,MAAN,KAAYT,EAAE8E,EAAE,IAClEvE,MAAT,QACQN,IAAKjB,GAAK,IAAI+F,GAAGhO,GAAGwD,CAAC,GAAa,MAAT,SAAe2F,IAAKlB,IAAKA,IAAI,MACtDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B;AAAA,QACzB;AAAM,UAACT,IAAKlB,GAAKA,IAAI2B;AAAA;AACrB,QAACT,IAAKlB,GAAKA,IAAI2B;AACpB,aAAOF,KAAezB,MAAT,SAAgB,IAAI,MAAayB,MAAN,KAAYT,EAAEgF,EAAE,IAAIhG;AAAA,IAC/D;AACD,aAAS2F,KAAI;AACT,UAAI3F,GAAG,GAAGjI,GAAGwD;AACb,aACIkG,KACCzB,IAAIkB,GACJ,IAAI0E,EAAG,GACC,MAAT,QACcrX,EAAE,WAAW2S,CAAE,MAAtB,MAA4BnJ,IAAIkO,IAAK/E,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEkF,EAAE,IAClEnO,MAAT,QACQwD,IAAIqK,EAAG,GACArK,MAAT,QACQ0F,IAAKjB,GAAK,IAAImG,GAAG,GAAG5K,CAAC,GAAa,MAAT,SAAe2F,IAAKlB,IAAKA,IAAI,MACtDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtBF,KACSzB,MAAT,SAAgB,IAAI,MAAayB,MAAN,KAAYT,EAAEoF,EAAE,IAC3CpG;AAAA,IAEP;AACD,aAAS4F,IAAI;AACN,UAACrX;AACJ,aAAOkT,KAAOlT,IAAI8X,GAAC,GAAc9X,MAAT,SAAeA,IAAI+X,GAAG,IAAG7E,KAAelT,MAAT,QAAiCkT,MAAN,KAAYT,EAAEuF,EAAE,GAAIhY;AAAA,IACzG;AACD,aAAS+X,KAAI;AACT,UAAItG,GAAG;AACP,aACKA,IAAIkB,GACLsF,GAAG,KAAKjY,EAAE,OAAO2S,CAAE,CAAC,KAAM,IAAI3S,EAAE,OAAO2S,CAAE,GAAIA,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEyF,EAAE,IACzE,MAAT,SAAgBxF,IAAKjB,GAAK,IAAI0G,GAAG,CAAC,IACzB,MAAT,SAAexF,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASqG,KAAI;AACT,UAAI9X;AACJ,aACKA,IAAIoY,GAAG,GACCpY,MAAT,SACMA,IAAIqY,GAAG,GACArY,MAAT,SACMA,IAAIsY,GAAG,GACAtY,MAAT,SACMA,IAAIuY,GAAG,GACAvY,MAAT,SACMA,IAAIwY,GAAG,GACAxY,MAAT,SACMA,IAAIyY,GAAG,GACAzY,MAAT,SACMA,IAAI0Y,GAAG,GACA1Y,MAAT,SACMA,IAAI2Y,GAAG,GACA3Y,MAAT,SACMA,IAAI4Y,GAAG,GACA5Y,MAAT,SACMA,IAAI6Y,GAAG,GACA7Y,MAAT,SACMA,IAAI8Y,GAAG,GACA9Y,MAAT,SACMA,IAAI+Y,GAAG,GACA/Y,MAAT,SACMA,IAAI0K,GAAG,GACA1K,MAAT,SACMA,IAAIgZ,GAAG,GACAhZ,MAAT,SACMA,IAAIiZ,GAAI,GACDjZ,MAAT,SACMA,IAAIkZ,GAAI,GACDlZ,MAAT,SACMA,IAAImZ,GAAI,GACDnZ,MAAT,SACKA,IAAIoZ,GAAE,oBAC3EpZ;AAAA,IAEP;AACD,aAASyT,KAAI;AACT,UAAIzT;AACJ,aAAQA,IAAI6K,GAAC,GAAc7K,MAAT,SAAgBA,IAAIqZ,GAAC,GAAcrZ,MAAT,SAAeA,IAAIsZ,GAAG,KAAItZ;AAAA,IACzE;AACD,aAAS6K,KAAI;AACT,UAAI4G,GAAG;AACP,aACKA,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAI4G,IAAK5G,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAE+G,EAAE,IACjE,MAAT,SAAgB9G,IAAKjB,GAAK,IAAIgI,GAAE,IACvB,MAAT,SAAe9G,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS6H,KAAI;AACT,UAAI7H,GAAG;AACP,aACIyB,KACCzB,IAAIkB,GACL+G,GAAG,KAAK1Z,EAAE,OAAO2S,CAAE,CAAC,KAAM,IAAI3S,EAAE,OAAO2S,CAAE,GAAIA,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEkH,EAAE,IACzE,MAAT,SAAgBjH,IAAKjB,GAAK,IAAI0G,GAAG,CAAC,IACzB,MAAT,SAAexF,IAAKlB,IAAKA,IAAI,GAC7ByB,KACSzB,MAAT,SAAgB,IAAI,MAAayB,MAAN,KAAYT,EAAEmH,EAAE,IAC3CnI;AAAA,IAEP;AACD,aAAS4H,KAAI;AACT,UAAIrZ;AACJ,aACKA,IAAI6Z,GAAG,GACC7Z,MAAT,SACMA,IAAI8Z,GAAG,GACA9Z,MAAT,SACMA,IAAIqY,GAAG,GACArY,MAAT,SACMA,IAAIsY,GAAG,GACAtY,MAAT,SACMA,IAAIuY,GAAG,GACAvY,MAAT,SACMA,IAAIwY,GAAG,GACAxY,MAAT,SACMA,IAAIyY,GAAG,GACAzY,MAAT,SACMA,IAAI0Y,GAAG,GACA1Y,MAAT,SACMA,IAAI2Y,GAAG,GACA3Y,MAAT,SACMA,IAAI4Y,GAAG,GACA5Y,MAAT,SACMA,IAAI6Y,GAAG,GACA7Y,MAAT,SACMA,IAAI8Y,GAAG,GACA9Y,MAAT,SACMA,IAAI+Y,GAAG,GACA/Y,MAAT,SACMA,IAAI0K,GAAG,GACA1K,MAAT,SACMA,IAAI+Z,GAAG,GACA/Z,MAAT,SACMA,IAAIgZ,GAAG,GACAhZ,MAAT,SACMA,IAAIiZ,GAAI,GACDjZ,MAAT,SACMA,IAAIkZ,GAAI,GACDlZ,MAAT,SACMA,IAAImZ,GAAI,GACDnZ,MAAT,SACKA,IACGoZ,yBAChFpZ;AAAA,IAEP;AACD,aAASoY,KAAI;AACT,UAAI3G,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMqH,MAAO,IAAIA,IAAMrH,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEwH,EAAE,IACrE,MAAT,SAAgBvH,IAAKjB,GAAK,IAAIyI,GAAE,IACvB,MAAT,SAAevH,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASoI,KAAI;AACT,UAAIpI,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMqH,MAAO,IAAIA,IAAMrH,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEwH,EAAE,IACrE,MAAT,SAAgBvH,IAAKjB,GAAK,IAAI0I,GAAE,IACvB,MAAT,SAAexH,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASqI,KAAI;AACT,UAAIrI,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMyH,MAAO,IAAIA,IAAMzH,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE4H,EAAE,IACrE,MAAT,SAAgB3H,IAAKjB,GAAK,IAAI6I,GAAE,IACvB,MAAT,SAAe3H,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS6G,KAAI;AACT,UAAI7G,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM4H,MAAO,IAAIA,IAAM5H,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE+H,EAAE,IACrE,MAAT,SAAgB9H,IAAKjB,GAAK,IAAIgJ,GAAE,IACvB,MAAT,SAAe9H,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS8G,KAAI;AACT,UAAI9G,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM+H,MAAO,IAAIA,IAAM/H,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEkI,EAAE,IACrE,MAAT,SAAgBjI,IAAKjB,GAAK,IAAImJ,GAAE,IACvB,MAAT,SAAejI,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS+G,KAAI;AACT,UAAI/G,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMkI,MAAO,IAAIA,IAAMlI,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEqI,EAAE,IACrE,MAAT,SAAgBpI,IAAKjB,GAAK,IAAIsJ,GAAE,IACvB,MAAT,SAAepI,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASgH,KAAI;AACT,UAAIhH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMqI,MAAO,IAAIA,IAAMrI,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEwI,EAAE,IACrE,MAAT,SAAgBvI,IAAKjB,GAAK,IAAIyJ,GAAE,IACvB,MAAT,SAAevI,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASiH,KAAI;AACT,UAAIjH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMwI,MAAO,IAAIA,IAAMxI,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE2I,EAAE,IACrE,MAAT,SAAgB1I,IAAKjB,GAAK,IAAI4J,GAAE,IACvB,MAAT,SAAe1I,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASkH,KAAI;AACT,UAAIlH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM2I,MAAO,IAAIA,IAAM3I,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE8I,EAAE,IACrE,MAAT,SAAgB7I,IAAKjB,GAAK,IAAI+J,GAAE,IACvB,MAAT,SAAe7I,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASmH,KAAI;AACT,UAAInH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM8I,MAAO,IAAIA,IAAM9I,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEiJ,EAAE,IACrE,MAAT,SAAgBhJ,IAAKjB,GAAK,IAAIkK,GAAE,IACvB,MAAT,SAAehJ,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASoH,KAAI;AACT,UAAIpH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMiJ,MAAO,IAAIA,IAAMjJ,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEoJ,EAAE,IACrE,MAAT,SAAgBnJ,IAAKjB,GAAK,IAAIqK,GAAE,IACvB,MAAT,SAAenJ,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASqH,KAAI;AACT,UAAIrH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMoJ,MAAO,IAAIA,IAAMpJ,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEuJ,EAAE,IACrE,MAAT,SAAgBtJ,IAAKjB,GAAK,IAAIwK,GAAE,IACvB,MAAT,SAAetJ,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAASsH,KAAI;AACT,UAAItH,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMuJ,MAAO,IAAIA,IAAMvJ,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE0J,EAAE,IACrE,MAAT,SAAgBzJ,IAAKjB,GAAK,IAAI2K,GAAE,IACvB,MAAT,SAAezJ,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS/G,KAAI;AACT,UAAI+G,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM0J,MAAO,IAAIA,IAAM1J,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE6J,EAAE,IACrE,MAAT,SAAgB5J,IAAKjB,GAAK,IAAI8K,GAAE,IACvB,MAAT,SAAe5J,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS4G,KAAI;AACT,UAAI5G,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAM6J,MAAO,IAAIA,IAAM7J,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEgK,EAAE,IACrE,MAAT,QACOzc,EAAE,SAAS2S,KAAOnJ,IAAIxJ,EAAE,OAAO2S,CAAE,GAAIA,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEiK,EAAE,IAClElT,MAAT,QACQkJ,IAAKjB,GAAK,IAAIkL,GAAGnT,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAASsI,KAAI;AACT,UAAItI,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIiK,IAAKjK,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEoK,EAAE,IACjE,MAAT,QACOC,GAAG,KAAK9c,EAAE,OAAO2S,CAAE,CAAC,KAAMnJ,IAAIxJ,EAAE,OAAO2S,CAAE,GAAIA,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEsK,EAAE,IAC1EvT,MAAT,QACQkJ,IAAKjB,GAAK,IAAIuL,GAAGxT,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,aAASuH,KAAI;AACT,UAAIvH,GAAG,GAAGjI,GAAGwD;AACb,UACMyE,IAAIkB,GACN3S,EAAE,OAAO2S,GAAI,CAAC,MAAMsK,MAAO,IAAIA,IAAMtK,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEyK,EAAE,IACrE,MAAT,MACF;AACE,YACM1T,IAAI,CAAE,GACR2T,GAAG,KAAKnd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAE2K,EAAE,IACzEpQ,MAAT;AAEA,iBAAgBA,MAAT;AACH,YAAAxD,EAAE,KAAKwD,CAAC,GACJmQ,GAAG,KAAKnd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAE2K,EAAE;AAAA;AACzF,UAAA5T,IAAI4J;AACT,QAAS5J,MAAT,QACQkJ,IAAKjB,GAAK,IAAI4L,GAAG7T,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B;AAAA,MACzB;AAAM,QAACT,IAAKlB,GAAKA,IAAI2B;AACtB,aAAO3B;AAAA,IACV;AACD,aAASwH,KAAK;AACV,UAAIxH,GAAG,GAAGjI,GAAGwD;AACb,UACMyE,IAAIkB,GACN3S,EAAE,OAAO2S,GAAI,CAAC,MAAM2K,MAAO,IAAIA,IAAM3K,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAE8K,EAAE,IACrE,MAAT,MACF;AACE,YACM/T,IAAI,CAAE,GACRgU,GAAG,KAAKxd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEgL,EAAE,IACzEzQ,MAAT;AAEA,iBAAgBA,MAAT;AACH,YAAAxD,EAAE,KAAKwD,CAAC,GACJwQ,GAAG,KAAKxd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEgL,EAAE;AAAA;AACzF,UAAAjU,IAAI4J;AACT,QAAS5J,MAAT,QACQkJ,IAAKjB,GAAK,IAAIiM,GAAGlU,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B;AAAA,MACzB;AAAM,QAACT,IAAKlB,GAAKA,IAAI2B;AACtB,aAAO3B;AAAA,IACV;AACD,aAASyH,KAAK;AACV,UAAIzH,GAAG,GAAGjI,GAAGwD;AACb,UACMyE,IAAIkB,GACN3S,EAAE,OAAO2S,GAAI,CAAC,MAAMgL,MAAO,IAAIA,IAAMhL,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEmL,EAAE,IACrE,MAAT,MACF;AACE,YACMpU,IAAI,CAAE,GACRgU,GAAG,KAAKxd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEgL,EAAE,IACzEzQ,MAAT;AAEA,iBAAgBA,MAAT;AACH,YAAAxD,EAAE,KAAKwD,CAAC,GACJwQ,GAAG,KAAKxd,EAAE,OAAO2S,CAAE,CAAC,KAAM3F,IAAIhN,EAAE,OAAO2S,CAAE,GAAIA,QAAU3F,IAAI,MAAakG,MAAN,KAAYT,EAAEgL,EAAE;AAAA;AACzF,UAAAjU,IAAI4J;AACT,QAAS5J,MAAT,QACQkJ,IAAKjB,GAAK,IAAIoM,GAAGrU,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B;AAAA,MACzB;AAAM,QAACT,IAAKlB,GAAKA,IAAI2B;AACtB,aAAO3B;AAAA,IACV;AACD,aAAS0H,KAAK;AACV,UAAI1H,GAAG;AACP,aACKA,IAAIkB,GACL3S,EAAE,OAAO2S,GAAI,CAAC,MAAMsK,MAAO,IAAIA,IAAMtK,KAAM,MAAQ,IAAI,MAAaO,MAAN,KAAYT,EAAEyK,EAAE,IACrE,MAAT,SAAgBxK,IAAKjB,GAAK,IAAIqM,GAAE,IACvB,MAAT,SAAenL,IAAKlB,IAAKA,IAAI,GAC7BA;AAAA,IAEP;AACD,aAAS2H,KAAK;AACV,UAAI3H,GAAG,GAAGjI;AACV,aACKiI,IAAIkB,GACE3S,EAAE,WAAW2S,CAAE,MAAtB,MAA4B,IAAIiK,IAAKjK,QAAU,IAAI,MAAaO,MAAN,KAAYT,EAAEoK,EAAE,IACjE,MAAT,QACO7c,EAAE,SAAS2S,KAAOnJ,IAAIxJ,EAAE,OAAO2S,CAAE,GAAIA,QAAUnJ,IAAI,MAAa0J,MAAN,KAAYT,EAAEiK,EAAE,IAClElT,MAAT,QACQkJ,IAAKjB,GAAK,IAAI0G,GAAG3O,CAAC,GAAa,MAAT,SAAemJ,IAAKlB,IAAKA,IAAI,MACnDkB,IAAKlB,GAAKA,IAAI2B,OACpBT,IAAKlB,GAAKA,IAAI2B,IACtB3B;AAAA,IAEP;AACD,QAAIsM,IACAnP,KAAK,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,CAAE,GAC7CoP,KAAK;AAAA,MACD,QAAQ7S;AAAA,IACX,GACD8S,KAAK9S,GACLiI,IAAK,MACLC,KAAK,IACLJ,KAAK,KACLE,KAAK,OACLG,KAAK,SAAUtT,GAAGyR,GAAG;AACjB,aAAOA,IAAI,IAAID,GAAUxR,GAAGyR,EAAE,CAAC,CAAC,IAAIzR;AAAA,IACvC,GACDuT,KAAK,SAAUvT,GAAGyR,GAAGe,GAAG;AACpB,aAAO,IAAId,GAAM,CAAC1R,CAAC,EAAE,OAAOyR,CAAC,EAAE,OAAO,CAACe,CAAC,CAAC,CAAC;AAAA,IAC7C,GACDkB,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAIrC,EAAM,OAAO;AAAA,IAC3B,GACDsC,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAIxC,EAAM,KAAK;AAAA,IACzB,GACDyC,KAAK,SAAUhU,GAAGyR,GAAG;AACjB,aAAO,IAAIK,GAAW9R,GAAGyR,CAAC;AAAA,IAC7B,GACD0C,KAAK,cACLD,KAAK,SAAUlU,GAAGyR,GAAG;AACjB,aAAOA,MAAMzR,EAAE,SAAS,KAAKA;AAAA,IAChC,GACDuU,KAAK,KACLC,KAAK,OACLE,KAAK,KACLC,KAAK,OACLC,KAAK,KACLC,KAAK,OACLC,KAAK,SAAU9U,GAAGyR,GAAG;AACjB,aAAO,IAAIM,GAAW/R,GAAGyR,CAAC;AAAA,IAC7B,GACDsD,KAAK,MACLC,KAAK,QACLC,KAAK,SAAUjV,GAAG;AACd,aAAO,IAAI+R,GAAW/R,GAAG,KAAK;AAAA,IACjC,GACDkV,KAAK,SAAUlV,GAAG;AACd,aAAO,IAAI+R,GAAW/R,GAAGA,CAAC;AAAA,IAC7B,GACDmV,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAItD,GAAW,GAAG,KAAK;AAAA,IACjC,GACDuD,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAIzD,GAAW,GAAG,KAAK;AAAA,IACjC,GACD0D,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAI5D,GAAW,GAAG,CAAC;AAAA,IAC7B,GACD6D,KAAK,UACLC,KAAK,SACLC,KAAK,SAAU9V,GAAG;AACd,aAAO,CAACA,EAAE,KAAK,EAAE;AAAA,IACpB,GACD+V,KAAK,KACLC,KAAK,OACLK,KAAK,KACLC,KAAK,OACLC,KAAK,SAAUvW,GAAG;AACd,aAAOA;AAAA,IACV,GACDwW,KAAK,SAAUxW,GAAG;AACd,aAAO,IAAI4R,GAAa5R,CAAC;AAAA,IAC5B,GACDyW,KAAK,MACLC,KAAK,QACLC,KAAK,SAAU3W,GAAG;AACd,aAAO,IAAI2R,GAAM,qBAAqB3R,CAAC;AAAA,IAC1C,GACD4W,KAAK,MACLC,KAAK,QACLC,KAAK,SAAU9W,GAAG;AACd,aAAO,IAAI2R,GAAM,sBAAsB3R,CAAC;AAAA,IAC3C,GACD+W,KAAK,MACLC,KAAK,QACLC,KAAK,SAAUjX,GAAG;AACd,aAAO,IAAI2R,GAAM,sBAAsB3R,CAAC;AAAA,IAC3C,GACDyX,KAAK,gBACLP,KAAK,KACLC,KAAK,OACLG,KAAK,KACLC,KAAK,OACLC,KAAK,SAAUxX,GAAGyR,GAAG;AACjB,aAAO,IAAIO,GAAQ,CAAC,CAAChS,GAAGyR,CAAC;AAAA,IAC5B,GACDoG,KAAK,kBACLH,KAAK,KACLC,KAAK,OACLC,KAAK,SAAU5X,GAAGyR,GAAG;AACjB,aAAO,IAAIQ,GAAejS,GAAGyR,CAAC;AAAA,IACjC,GACDuG,KAAK,aACLC,KAAK,YACLC,KAAK,cACLC,KAAK,SAAUnY,GAAG;AACd,aAAO,IAAIkS,GAAQlS,CAAC;AAAA,IACvB,GACDuZ,KAAK,KACLC,KAAK,OACLC,KAAK,WAAY;AACb,aAAO,IAAIlI,EAAM,eAAe;AAAA,IACnC,GACDqI,KAAK,WACLF,KAAK,uBACLC,KAAK,0BACLK,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI3I,EAAM,WAAW;AAAA,IAC/B,GACD4I,KAAK,WAAY;AACb,aAAO,IAAI5I,EAAM,eAAe;AAAA,IACnC,GACD6I,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI/I,EAAM,mBAAmB;AAAA,IACvC,GACDgJ,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIlJ,EAAM,OAAO;AAAA,IAC3B,GACDmJ,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIrJ,EAAM,WAAW;AAAA,IAC/B,GACDsJ,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIxJ,EAAM,WAAW;AAAA,IAC/B,GACDyJ,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI3J,EAAM,WAAW;AAAA,IAC/B,GACD4J,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI9J,EAAM,iBAAiB;AAAA,IACrC,GACD+J,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIjK,EAAM,aAAa;AAAA,IACjC,GACDkK,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIpK,EAAM,iBAAiB;AAAA,IACrC,GACDqK,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIvK,EAAM,KAAK;AAAA,IACzB,GACDwK,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI1K,EAAM,cAAc;AAAA,IAClC,GACD2K,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAI7K,EAAM,MAAM;AAAA,IAC1B,GACD8K,KAAK,OACLC,KAAK,WACLC,KAAK,WAAY;AACb,aAAO,IAAIhL,EAAM,UAAU;AAAA,IAC9B,GACDiL,KAAK,OACLC,KAAK,WACLC,KAAK,iBACLC,KAAK,SAAU3c,GAAG;AACd,aAAO,IAAIuS,GAAiBvS,CAAC;AAAA,IAChC,GACD4c,KAAK,MACLC,KAAK,UACLC,KAAK,UACLC,KAAK,SACLC,KAAK,SAAUhd,GAAG;AACd,aAAO,IAAIsS,GAActS,CAAC;AAAA,IAC7B,GACDid,KAAK,OACLC,KAAK,WACLC,KAAK,UACLC,KAAK,SACLC,KAAK,SAAUrd,GAAG;AACd,aAAO,IAAIqS,GAAMrS,EAAE,KAAK,EAAE,CAAC;AAAA,IAC9B,GACDsd,KAAK,OACLC,KAAK,WACLC,KAAK,gBACLC,KAAK,eACLC,KAAK,SAAU1d,GAAG;AACd,aAAO,IAAIoS,GAAIpS,EAAE,KAAK,EAAE,CAAC;AAAA,IAC5B,GACD2d,KAAK,OACLC,KAAK,WACLC,KAAK,SAAU7d,GAAG;AACd,aAAO,IAAImS,GAAQnS,EAAE,KAAK,EAAE,CAAC;AAAA,IAChC,GACD8d,KAAK,WAAY;AACb,aAAO,IAAIvM,EAAM,gBAAgB;AAAA,IACpC,GACDoB,IAAK,GACLD,IAAK,GACLE,KAAK,GACLC,KAAK;AAAA,MACD,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,IACX,GACDC,KAAK,GACLC,KAAK,CAAE,GACPG,IAAK;AACT,QAAI,eAAetE,IAAI;AACnB,UAAI,EAAEA,GAAG,aAAaoP;AAAK,cAAM,IAAI,MAAM,oCAAqCpP,GAAG,YAAY,IAAI;AACnG,MAAAqP,KAAKD,GAAGpP,GAAG,SAAS;AAAA,IACvB;AACD,QAAM2C,EAAM,SAAS/H,GAAK+H,EAAM,OAAOiB,GAAKuL,KAAKE,GAAI,GAAYF,OAAT,QAAepL,MAAO3S,EAAE;AAAS,aAAO+d;AAChG,UACK/K,EAAED,EAAE,GACJL,IAAK,KAAK,IAAIC,GAAIG,EAAE,GACrB,IAAIrB,EAAEsB,IAAIL,IAAK1S,EAAE,SAASA,EAAE,OAAO0S,CAAE,IAAI,MAAMA,GAAI1F,EAAE0F,CAAE,EAAE,MAAM1F,EAAE0F,CAAE,EAAE,MAAM;AAAA,EAElF;AACD,SACI1S,EAAEyR,GAAG,KAAK,GACV;AAAA,IACI,aAAaA;AAAA,IACb,OAAOe;AAAA,EACV;AAEb,EAAQ,GACJzY,KAAQ,GACR8X,KAAM,CAAE;AChjCZ,MAAMqM,KAAU;AAAA,EACZ,QAAQC;AACZ,GA2CMC,KAAQC,GAAM,IAAI,GAAG,GACrBC,KAAQD,GAAM,IAAI,EAAE,GACpBE,KAASF,GAAM,IAAI,EAAE,GACrBG,KAAQH,GAAM,IAAI,EAAE,IAAIA,GAAM,IAAI,EAAE,IAAIA,GAAM,IAAI,EAAE,IAAIA,GAAM,KAAK,GAAG,GACtEI,KAAYJ,GAAM,IAAI,GAAG,GACzBK,KAAQ;AAAA,qBACRC,KAAoB;AAAA,EACtB,OAAOP,KAAQE,KAAQC,KAAS;AAAA;AAAA,EAChC,OAAOC,GAAM,QAAQ,KAAK,EAAE;AAAA,EAC5B,OAAOE;AAAA,EACP,OAAQ,WAAY;AAChB,QAAItlB,IAASqlB;AACb,aAASnW,IAAI,GAAGA,IAAIoW,GAAM,QAAQpW;AAC9B,MAAAlP,IAASA,EAAO,QAAQslB,GAAMpW,CAAC,GAAG,EAAE;AAExC,WAAOlP;AAAA,EACf,EAAQ;AAAA,EACJ,OAAOmlB;AAAA,EACP,OAAOH,KAAQE,KAAQE;AAC3B;AAGA,SAASH,GAAMO,GAAMC,GAAI;AACrB,SAAO,CAAC,GAAG,MAAMA,IAAKD,IAAO,CAAC,EAAE,KAAI,CAAE,EAAE,IAAI,CAACtW,MAAM,OAAO,aAAaA,IAAIsW,CAAI,CAAC,EAAE,KAAK,EAAE;AAC7F;AAGAV,GAAQ,MAAM,SAAUY,GAAM1lB,GAAQgX,GAAO;AACzC,SAAAA,IAAQA,KAAS;AAAA,IACb,MAAM;AAAA,EACd,GACW8N,GAAQY,EAAK,IAAI,IAAIZ,GAAQY,EAAK,IAAI,EAAEA,GAAM1lB,GAAQgX,CAAK,IAAI8N,GAAQ,MAAMY,GAAM1lB,GAAQgX,CAAK;AAC3G;AAEA8N,GAAQ,OAAO;AAAA;AAAA,EAEX,OAAO,SAAUY,GAAM1lB,GAAQgX,GAAO;AAClC,YAAQ0O,EAAK,MAAI;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAOjO,GAAS;AAAA,MACpB,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD;AAAA,MACJ,KAAK;AACD,eAAOd,EAAKwO,GAAO,MAAM,EAAE,CAAC;AAAA,MAChC,KAAK;AACD,eAAOxO,GAAMqO,KAAQE,KAAQE,IAAO,MAAM,EAAE,CAAC;AAAA,MACjD,KAAK;AACD;AAAA,MACJ,KAAK;AACD,eAAOM,EAAK,QAAQA,EAAK;AAAA,MAC7B,KAAK;AACD;AAAA,MACJ,KAAK;AACD,eAAO/O,EAAK2O,GAAM,MAAM,EAAE,CAAC;AAAA,MAC/B,KAAK;AACD,eAAO3O,GAAMqO,KAAQE,KAAQC,IAAQ,MAAM,EAAE,CAAC;AAAA,MAClD,KAAK;AACD;AAAA,MACJ,KAAK;AACD;AAAA,MACJ,KAAK;AACD,eAAOxO,GAAMqO,KAAQE,KAAQC,IAAQ,MAAM,EAAE,CAAC;AAAA,MAClD,KAAK;AACD,eAAOxO,EAAKyO,GAAM,QAAQ,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;AAAA,IAGnD;AACD,WAAOM,EAAK,QAAQA,EAAK;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcD,WAAW,SAAUA,GAAM1lB,GAAQgX,GAAO;AAEtC,WAAO,KAAK,IAAIM,GAAO,IAAKoO,EAAK,OAAOA,EAAK,OAAO1lB,GAAQgX,CAAK;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,OAAO,SAAU0O,GAAM1lB,GAAQgX,GAAO;AAClC,IAAAhX,IAAS;AAET,aAASkP,IAAI,GAAGA,IAAIwW,EAAK,KAAK,QAAQxW;AAClC,MAAAlP,KAAU,KAAK,IAAI0lB,EAAK,KAAKxW,CAAC,GAAGlP,GAAQgX,CAAK;AAElD,WAAOhX;AAAA,EACV;AAAA;AAAA,EAED,iBAAiB,SAAU0lB,GAAM1lB,GAAQgX,GAAO;AAE5C,WAAAhX,IAAS,KAAK,IAAI0lB,EAAK,MAAM1lB,GAAQgX,CAAK,GAC1CA,EAAMA,EAAM,MAAM,IAAIhX,GACfA;AAAA,EACV;AAAA;AAAA,EAED,qBAAqB,SAAU0lB,GAAM1lB,GAAQgX,GAAO;AAEhD,WAAO,KAAK,IAAI0O,EAAK,MAAM1lB,GAAQgX,CAAK;AAAA,EAC3C;AAAA;AAAA,EAED,sBAAsB,SAAU0O,GAAM1lB,GAAQgX,GAAO;AAEjD,WAAO,KAAK,IAAI0O,EAAK,MAAM1lB,GAAQgX,CAAK;AAAA,EAC3C;AAAA;AAAA,EAED,sBAAsB,SAAU0O,GAAM1lB,GAAQgX,GAAO;AAEjD,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBD,YAAY,SAAU0O,GAAM1lB,GAAQgX,GAAO;AACvC,IAAAhX,IAAS;AAET,UAAMsE,IAAQ,KAAK,WAAWohB,EAAK,UAAU;AAE7C,aAASxW,IAAI,GAAGA,IAAI5K,GAAO4K;AACvB,MAAAlP,KAAU,KAAK,IAAI0lB,EAAK,MAAM1lB,GAAQgX,CAAK;AAE/C,WAAOhX;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWD,YAAY,SAAU0lB,GAAM1lB,GAAQgX,GAAO;AACvC,UAAMnB,IAAM,KAAK,IAAI6P,EAAK,KAAK,CAAC,GAC1B5P,IAAM,SAAS4P,EAAK,GAAG,IAAIA,EAAK,MAAM7P,IAAMD,GAAQ,GAAG,CAAC;AAC9D,WAAOA,GAAQC,GAAKC,CAAG;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAID,SAAS,SAAU4P,GAAM1lB,GAAQgX,GAAO;AAEpC,QAAI0O,EAAK;AAAQ,aAAO,KAAK,gBAAgB,EAAEA,GAAM1lB,GAAQgX,CAAK;AAGlE,UAAM2O,IAAUhP,EAAK+O,EAAK,IAAI;AAC9B,WAAO,KAAK,IAAIC,GAAS3lB,GAAQgX,CAAK;AAAA,EACzC;AAAA,EACD,kBAAkB,SAAU0O,GAAM1lB,GAAQgX,GAAO;AAC7C,QAAI7E,IAAOkT;AACX,aAASnW,IAAI,GAAGkI,GAAMlI,IAAIwW,EAAK,KAAK,QAAQxW;AAExC,cADAkI,IAAOsO,EAAK,KAAKxW,CAAC,GACVkI,EAAK,MAAI;AAAA,QACb,KAAK,WAAW;AACZ,UAAAjF,IAAOA,EAAK,QAAQiF,EAAK,MAAM,EAAE;AACjC;AAAA,QACH;AAAA,QACD,KAAK;AACD,gBAAMvB,IAAM,KAAK,IAAIuB,EAAK,OAAOpX,GAAQgX,CAAK,EAAE,cAC1ClB,IAAM,KAAK,IAAIsB,EAAK,KAAKpX,GAAQgX,CAAK,EAAE;AAC9C,mBAAS4O,IAAK/P,GAAK+P,KAAM9P,GAAK8P;AAC1B,YAAAzT,IAAOA,EAAK,QAAQ,OAAO,aAAayT,CAAE,GAAG,EAAE;AAAA,QAGvD;AACI,gBAAMC,IAAaN,GAAkBnO,EAAK,IAAI;AAC9C,cAAIyO;AACA,qBAASC,IAAM,GAAGA,KAAOD,EAAW,QAAQC;AACxC,cAAA3T,IAAOA,EAAK,QAAQ0T,EAAWC,CAAG,GAAG,EAAE;AAAA,MAGtD;AAEL,WAAOnP,EAAKxE,EAAK,MAAM,EAAE,CAAC;AAAA,EAC7B;AAAA,EACD,OAAO,SAAUuT,GAAM1lB,GAAQgX,GAAO;AAElC,UAAMnB,IAAM,KAAK,IAAI6P,EAAK,OAAO1lB,GAAQgX,CAAK,EAAE,cAC1ClB,IAAM,KAAK,IAAI4P,EAAK,KAAK1lB,GAAQgX,CAAK,EAAE;AAC9C,WAAO,OAAO,aAAapB,GAAQC,GAAKC,CAAG,CAAC;AAAA,EAC/C;AAAA,EACD,SAAS,SAAU4P,GAAM1lB,GAAQgX,GAAO;AACpC,WAAO0O,EAAK,UAAUA,EAAK,OAAOA,EAAK;AAAA,EAC1C;AAAA;AAAA,EAED,SAAS,SAAUA,GAAM1lB,GAAQgX,GAAO;AACpC,WAAO,OAAO,aAAa,SAAS0O,EAAK,MAAM,EAAE,CAAC;AAAA,EACrD;AAAA;AAAA,EAED,KAAK,SAAUA,GAAM1lB,GAAQgX,GAAO;AAChC,WAAO,OAAO,aAAa,SAAS0O,EAAK,MAAM,EAAE,CAAC;AAAA,EACrD;AAAA;AAAA,EAED,OAAO,SAAUA,GAAM1lB,GAAQgX,GAAO;AAClC,WAAO,OAAO,aAAa,SAAS0O,EAAK,MAAM,CAAC,CAAC;AAAA,EACpD;AAAA;AAAA,EAED,kBAAkB,SAAUA,GAAM1lB,GAAQgX,GAAO;AAC7C,WAAOA,EAAM0O,EAAK,IAAI,KAAK;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAID,uBAAwB,WAAY;AAChC,UAAMK,IAAoB,mEAAmE,MAAM,GAAG,GAChGC,IACF;AAAA,kDAAkO;AAAA,MAC9N;AAAA,IAChB,GACcC,IAAM,CAAA;AACZ,aAAS/W,IAAI,GAAGA,IAAI6W,EAAkB,QAAQ7W;AAC1C,MAAA+W,EAAIF,EAAkB7W,CAAC,CAAC,IAAI8W,EAA0B9W,CAAC;AAE3D,WAAO+W;AAAA,EACf,EAAQ;AAAA,EACJ,qBAAqB,SAAUP,GAAM1lB,GAAQgX,GAAO;AAChD,WAAO,KAAK,sBAAsB0O,EAAK,IAAI;AAAA,EAC9C;AACL,CAAC;;;;;;AC7WM,SAASQ,GAAO,EAAE,MAAM,EAAE,OAAA5hB,EAAO,GAAE,UAAU,EAAE,QAAAL,EAAM,KAAM;AAG9D,QAAMkiB,IAAS7hB,MAAU,SAAYL,IAAS,MAAMK,CAAK,EAAE,KAAKL,CAAM,EAAE,KAAK,EAAE;AAC/E,SAAOmiB,GAAW,IAAIC,GAAU,MAAMF,CAAM,CAAC;AACjD;ACNA,SAASG,GAAkB3iB,GAAKoP,GAAS;AACrC,QAAMwT,IAAc5iB,GACd6iB,IAAeC,GAAiB9iB,CAAG;AACzC,MAAI+iB,IAAoB,CAAA;AAGxB,EAAI/iB,EAAI,OAAO,CAAC,MAAM,MAClB+iB,IAAoB,CAAC3T,EAAQ,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO4T,GAAcH,CAAY,CAAC,IAG5EA,EAAa,SAAS,MACtBE,IAAoB3T,EAAQ,QAAQ,KAAK,MAAM,CAAC,GAChD2T,EAAkB,IAAG,GACrBA,IAAoBC,GAAcD,EAAkB,OAAOF,CAAY,CAAC;AAIhF,MAAI;AACA,IAAA7iB,IAAM6iB,EAAaA,EAAa,SAAS,CAAC;AAC1C,QAAI3O,IAAiB9E,EAAQ,QAAQ,MACjC6T,IAAyB7T,EAAQ,QAAQ;AAC7C,aAAS7D,IAAI,GAAGA,IAAIwX,EAAkB,SAAS,GAAGxX;AAC9C,MAAA2I,IAAiBA,EAAe6O,EAAkBxX,CAAC,CAAC,GACpD0X,IAAyBA,EAAuBF,EAAkBxX,CAAC,CAAC;AAGxE,QAAI2I,KAAkBlU,KAAOkU;AAAgB,aAAOA,EAAelU,CAAG;AAGtE,QACIijB,KACA,OAAOA,KAA2B,YAClCjjB,KAAOijB,KACPL,MAAgBK,EAAuBjjB,CAAG;AAG1C,aAAAijB,EAAuBjjB,CAAG,IAAI0T,GAAIuP,EAAuBjjB,CAAG,GAAGA,GAAK;AAAA,QAChE,gBAAgBkU;AAAA,QAChB,wBAAwB+O;AAAA,MACxC,CAAa,GACMA,EAAuBjjB,CAAG;AAAA,EAExC,SAAQkjB,GAAK;AACV,YAAQ,IAAIA,CAAG;AAAA,EAClB;AAED,SAAO,MAAML,EAAa,KAAK,GAAG;AACtC;AAEA,SAASG,GAAcG,GAAW;AAC9B,QAAMC,IAAe,CAAA;AACrB,WAAS7X,IAAI,GAAGA,IAAI4X,EAAU,QAAQ5X;AAClC,YAAQ4X,EAAU5X,CAAC,GAAC;AAAA,MAChB,KAAK;AACD,QAAA6X,EAAa,IAAG;AAChB;AAAA,MACJ,KAAK;AACD;AAAA,MACJ;AACI,QAAAA,EAAa,KAAKD,EAAU5X,CAAC,CAAC;AAAA,IACrC;AAEL,SAAO6X;AACX;AACA,SAASN,GAAiBvP,GAAM;AAC5B,MAAI8P,IAAQ9P,EAAK,MAAM,KAAK;AAC5B,SAAK8P,EAAMA,EAAM,SAAS,CAAC,MAAGA,IAAQA,EAAM,MAAM,GAAG,EAAE,IAClDA,EAAM,CAAC,MAAGA,IAAQA,EAAM,MAAM,CAAC,IAC7BA;AACX;AC9DA,SAASC,GAAYC,GAAavY,GAAKwY,GAAiBpU,GAAS;AAG7D,EAAAtD,EAAS,eAAe,KAAK,EAAE;AAC/B,MAAI,CAAA,EAAG9L,GAAKyjB,CAAM,IAAI3X,EAAS,eAAe,KAAKyX,CAAW;AAE9D,QAAMG,IAAO1jB,KAAOA,EAAI,YAAW,GAC7BmjB,IAAYL,GAAiB9iB,CAAG;AAGtC,MAAIgL,KAAOhL,KAAOgL;AAAK,WAAOA,EAAIhL,CAAG;AAGrC,MAAIA,EAAI,OAAO,CAAC,MAAM,OAAOmjB,EAAU,SAAS;AAAG,WAAOR,GAAkB3iB,GAAKoP,CAAO;AAGxF,MACIoU,KACA,OAAOA,KAAoB,YAC3BxjB,KAAOwjB,KACPD,MAAgBC,EAAgBxjB,CAAG;AAGnC,WAAAwjB,EAAgBxjB,CAAG,IAAI0T,GAAI8P,EAAgBxjB,CAAG,GAAGA,GAAK;AAAA,MAClD,gBAAgBgL;AAAA,MAChB,wBAAwBwY;AAAA,IACpC,CAAS,GACMA,EAAgBxjB,CAAG;AAI9B,MAAI,EAAEA,KAAO2L,OAAW,EAAE+X,KAAQ/X;AAAS,WAAO4X;AAIlD,EAAIE,IACAA,IAASA,EAAO,MAAM,SAAS,EAAE,IAAI,CAACE,OAElC7X,EAAS,eAAe,KAAK,EAAE,GAC3BA,EAAS,eAAe,KAAK6X,CAAK,IAC3BL,GAAYK,GAAO3Y,GAAKwY,GAAiBpU,CAAO,IAEpDuU,EACV,IAEDF,IAAS,CAAA;AAGb,QAAMG,IAASjY,GAAO3L,CAAG,KAAK2L,GAAO+X,CAAI;AACzC,UAAQnP,GAAKqP,CAAM,GAAC;AAAA,IAChB,KAAK;AAED,aAAO5Q,EAAK4Q,CAAM;AAAA,IAEtB,KAAK,YAAY;AAEb,MAAAA,EAAO,UAAUxU;AACjB,YAAMyU,IAAKD,EAAO,MAAMjY,IAAQ8X,CAAM,KAAK;AAC3C,oBAAOG,EAAO,SACPC;AAAA,IACV;AAAA,EACJ;AACL;AClEO,SAASpmB,GAAO2R,GAAS;AAC5B,QAAM;AAAA,IACF,MAAM,EAAE,OAAAjF,GAAO,OAAAxJ,EAAO;AAAA,IACtB,SAAS,EAAE,gBAAAuT,GAAgB,wBAAA+O,EAAwB;AAAA,IACnD,UAAA3P,IAAW;AAAA,EACd,IAAGlE;AACJ,MAAI/S,IAAS;AAEb,MAAIiX,EAAS,QAAQ;AAGjB,IAAAjX,KAAUsE,MAAU,SAAY2S,IAAW,MAAM3S,CAAK,EAAE,KAAK2S,CAAQ,EAAE,KAAK,EAAE;AAG9E,UAAMwQ,IAAeznB,EAAO,MAAMyP,EAAS,cAAc,KAAK;AAC9D,IAAAgY,EAAa,KAAK,CAACC,GAAI/mB,MAAU;AAE7B,UAAI,MAAM,KAAK+mB,CAAE,GAAG;AAChB,QAAAD,EAAa,OAAO9mB,KAAS,CAAC;AAC9B;AAAA,MACH;AAED,YAAMgnB,IAAOT,GAAYQ,GAAI7P,GAAgB+O,GAAwB7T,CAAO;AAG5E,UAAI0U,EAAa,WAAW,KAAKC,MAAO1nB,KAAU,OAAO2nB,KAAS,OAAO3nB;AACrE,eAAI6O,GAAU8Y,CAAI,KACd3nB,IAAS,WAAW2nB,GAAM,EAAE,GACrB,MAEP,iBAAiB,KAAKA,CAAI,KAC1B3nB,IAAS2nB,MAAS,SAAS,KAAOA,MAAS,UAAU,KAAQA,GACtD,OAEX3nB,IAAS2nB,GACF;AAEX,MAAA3nB,IAASA,EAAO,QAAQ0nB,GAAIC,CAAI;AAAA,IAC5C,CAAS;AAAA,EACT;AAGQ,IAAA3nB,IAAS8N,IAAQ8Z,GAAQtjB,CAAK,IAAI2S;AAEtC,SAAOjX;AACX;;;;;;;;;;;AC7CA,IAAI6nB,KAAM;AACH,SAASxQ,GAAIJ,GAAUzH,IAAO,IAAIP,IAAU,CAAA,GAAI;AACnD,QAAM6Y,IAAa;AAAA;AAAA,IAEf,MAAM7Y,EAAQ,QAAQ,CAAC4Y,EAAG;AAAA,IAC1B,cAAc5Y,EAAQ,gBAAgB,CAAC4Y,IAAK;AAAA;AAAA,IAE5C,gBAAgB5Y,EAAQ;AAAA;AAAA,IAExB,wBAAwBA,EAAQ,0BAA0BgI;AAAA;AAAA,IAE1D,MAAMhI,EAAQ,QAAQA,EAAQ;AAAA;AAAA,IAE9B,cAAcA,EAAQ,gBAAgBA,EAAQ,0BAA0BgI;AAAA,EAChF,GAGUzV,IAAO0W,GAAKjB,CAAQ,GACpBjU,IAAO+kB,GAAQvmB,CAAI;AACzB,MAAIoP;AAEJ,SAAI5N,KACA4N,IAAO5N,EAAK;AAAA;AAAA,IAEpB,MAAYxB;AAAAA;AAAAA,IAEA,UAAAyV;AAAA;AAAA,IAEA,MAAAzH;AAAA;AAAA,IAEA,YAAYA,MAAQ,KAAKA,GAAM,QAAQC,EAAS,QAAQ,IAAI;AAAA;AAAA,IAE5D,MAAMuY,GAAOxY,CAAI;AAAA;AAAA,IAEjB,SAASsY;AAAA,EACrB,CAAS,GAEIA,EAAW,SAAMA,EAAW,OAAOlX,IACjCA,KAEJqG;AACX;ACGA,MAAM6N,KAAU;AAAA,EACZ,KAAAzN;AAAA,EACA,QAAAvI;AACJ;AAGAgW,GAAQ,OAAO;AAAA,EACX,OAAArkB;AAAA,EACA,QAAAiD;AAAA,EACA,QAAAoU;AAAA,EACA,SAAAR;AAAA,EACA,QAAQsQ;AAAAA,EACR,UAAUhQ;AAAA,EACV,QAAAsO;AACJ,CAAC;AAIDpB,GAAQ,OAAO;AAAA,EACX,MAAM,WAAY;AACd,WAAO,OAAO,KAAKxV,EAAM,EAAE,OAAO,CAAC2Y,GAAKtkB,OACpCskB,EAAItkB,EAAI,YAAa,CAAA,IAAIA,GAClBskB,IACR,CAAE,CAAA;AAAA,EACR;AAAA;AAAA,EAED,aAAAhB;AAAA,EACA,mBAAAX;AAAA,EACA,eAAAK;AAAA,EACA,kBAAAF;AACJ,CAAC;ACnED,SAASyB,GAAajR,GAAUzH,GAAM0H,IAAO,CAAA,GAA4B;AAErE,QAAMlX,IAAS;AAAA,IACX,MAAM,OAAOwP,KAAS,WAAWA,EAAK,QAAQC,EAAS,QAAQ,IAAI,IAAID;AAAA,IACvE,UAAAyH;AAAA,IACA,MAAMzV,GAAKyV,CAAQ;AAAA;AAAA,IACnB,MAAMX,GAAO9G,CAAI;AAAA,IACjB,MAAM0H,EAAK,MAAM,CAAC;AAAA,EAC1B;AAGI,UAFAlX,EAAO,KAAK,KAAKwP,MAAS,SAAY,SAASxP,EAAO,IAAI,GAElDA,EAAO,MAAI;AAAA,IACf,KAAK;AACD,MAAAA,EAAO,QAAQiX,EAAS,IAAI,CAACrX,GAAOe,MAAUunB,GAAatoB,GAAOe,GAAOX,EAAO,IAAI,CAAC;AACrF;AAAA,IACJ,KAAK;AACD,MAAAA,EAAO,aAAa,CAAC,GAAG,OAAO,QAAQiX,CAAQ,CAAC,EAAE;AAAA,QAAI,CAAC,CAACzH,GAAM5P,CAAK,MAC/DsoB,GAAatoB,GAAO4P,GAAMxP,EAAO,IAAI;AAAA,MACrD;AACY;AAAA,EACP;AAED,SAAOA;AACX;ACLA,SAASmoB,GAAMlR,GAAUrG,GAAM;AAC3B,QAAMwX,IAASF,GAAajR,CAAQ,GAC9BjX,IAASqoB,GAAK,KAAKD,GAAQxX,CAAI;AACrC,WAAS1B,IAAI,GAAGA,IAAIlP,EAAO,QAAQkP;AAAK;AAIxC,SAAOlP;AACX;AAsCA,MAAMqoB,KAAO;AAAA,EACT,MAAM,SAAcD,GAAQxX,GAAMpB,GAA8B;AAC5D,UAAMxP,IAAS,CAAA;AAGf,WAAI,KAAK,KAAKooB,GAAQxX,GAAMpB,GAAMxP,CAAM,KAAK,KAAK,KAAKooB,GAAQxX,GAAMpB,GAAMxP,CAAM,MAC7E,KAAK,MAAMooB,GAAQxX,GAAMpB,GAAMxP,CAAM,GACrC,KAAK,WAAWooB,GAAQxX,GAAMpB,GAAMxP,CAAM,GAC1C,KAAK,MAAMooB,GAAQxX,GAAMpB,GAAMxP,CAAM,IAGlCA;AAAA,EACV;AAAA;AAAA,EAED,MAAM,SAAUooB,GAAQxX,GAAMpB,GAAMxP,GAAQ;AACxC,UAAMY,IAASZ,EAAO;AAEtB,WAAAsoB,EAAO,MAAM,QAAQF,EAAO,MAAM5Y,IAAO,IAAI4Y,EAAO,OAAO,IAAIpoB,CAAM,GAE9DA,EAAO,WAAWY;AAAA,EAC5B;AAAA,EACD,MAAM,SAAUwnB,GAAQxX,GAAMpB,GAAMxP,GAAQ;AACxC,UAAMY,IAASZ,EAAO;AAEtB,YAAQooB,EAAO,MAAI;AAAA,MACf,KAAK;AAED,YAAIA,EAAO,SAAS,MAAM3Y,EAAS,cAAc;AAAG,iBAAO;AAC3D;AAAA,MACJ,KAAK;AACD,YAAI2Y,EAAO,KAAK,eAERA,EAAO,KAAK,QAAQ,UAAaA,EAAO,KAAK,QAAQ,UAEjDA,EAAO,KAAK,UAAU,KAG1BA,EAAO,KAAK,WAAW,CAAC;AAAG,iBAAO;AAE1C;AAAA,MACJ,KAAK;AAED,eAAO;AAAA,IACd;AAED,WAAAE,EAAO,MAAM,QAAQF,EAAO,MAAMG,GAAU3X,CAAI,GAAGwX,EAAO,MAAMpoB,CAAM,GAE/DA,EAAO,WAAWY;AAAA,EAC5B;AAAA,EACD,OAAO,SAAUwnB,GAAQxX,GAAMpB,GAAMxP,GAAQ;AACzC,UAAMY,IAASZ,EAAO,QAEhBwoB,IAAOJ,EAAO,MACdK,IAAeL,EAAO;AAC5B,QAAIK,MAAiB,YAAYA,MAAiB,WAAWA,MAAiB;AAAY,aAAO;AAGjG,QAAI,CAACD,EAAK,YAAY;AAClB,cAAQC,GAAY;AAAA,QAChB,KAAK;AACD,iBAAAH,EAAO,MAAM,SAASF,EAAO,MAAMxX,GAAMwX,EAAO,UAAUpoB,CAAM,GACzDA,EAAO,WAAWY;AAAA,QAC7B,KAAK;AAED,cAAIwnB,EAAO,SAAS,MAAM3Y,EAAS,cAAc;AAAG,mBAAOzP,EAAO,WAAWY;AAC7E;AAAA,MACP;AACD,aAAA0nB,EAAO,MAAM,SAASF,EAAO,MAAMxX,GAAMwX,EAAO,UAAUpoB,CAAM,GACzDA,EAAO,WAAWY;AAAA,IAC5B;AAGD,QAAI8nB;AACJ,YAAQD,GAAY;AAAA,MAChB,KAAK;AACD,cAAMzB,KAASpW,IAAO,IAAI,MAAM,GAAG;AACnC,QAAAoW,EAAM,CAAC,IAAI,CAACA,EAAM,CAAC,GAIfwB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,WACvCF,EAAO,qBAAqB,SAASF,EAAO,MAAMpB,EAAM,CAAC,GAAG,KAAK,IAAIwB,EAAK,KAAKA,EAAK,GAAG,GAAGxoB,CAAM,GAEhGsoB,EAAO,kBAAkB,SAASF,EAAO,MAAMpB,EAAM,CAAC,GAAG,KAAK,IAAIwB,EAAK,KAAKA,EAAK,GAAG,GAAGxoB,CAAM,IAG7FwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,UACvCF,EAAO,MAAM,SAASF,EAAO,MAAMpB,EAAM,CAAC,GAAGwB,EAAK,KAAKxoB,GAAQ,aAAawP,CAAI,GAIhFgZ,EAAK,YAEDA,EAAK,SAAS,UAAaA,EAAK,SAAS,WACzCF,EAAO,qBAAqB,SAASF,EAAO,MAAMpB,EAAM,CAAC,EAAE,QAAQwB,EAAK,MAAMxoB,CAAM,GACpFsoB,EAAO,kBAAkB,SAASF,EAAO,MAAMpB,EAAM,CAAC,EAAE,QAAQwB,EAAK,MAAMxoB,CAAM,IAGjFwoB,EAAK,SAAS,UAAaA,EAAK,SAAS,UACzCF,EAAO,MAAM,SAASF,EAAO,MAAMpB,EAAM,CAAC,EAAE,QAAQwB,EAAK,MAAMxoB,CAAM;AAI7E;AAAA,MAEJ,KAAK;AACD;AAAA,MAEJ,KAAK;AAED,QAAA0oB,IAAoB9X,EAAK,MAAM,IAAI,OAAOwX,EAAO,UAAU,GAAG,CAAC,GAC/DM,IAAoBA,IAAoBA,EAAkB,SAAS,GAG/DF,EAAK,QAAQ,UAAaA,EAAK,QAAQ,WACvCF,EAAO,qBAAqB,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM,GAC5FsoB,EAAO,kBAAkB,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM,IAGzFwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,UACvCF,EAAO,MAAM,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM;AAGjF;AAAA,MAEJ,KAAK;AACD,QAAA0oB,IAAoB9X,EAAK,MAAM,IAAI,OAAOwX,EAAO,SAAS,OAAO,QAAQ,YAAY,EAAE,GAAG,GAAG,CAAC,GAC9FM,IAAoBA,IAAoBA,EAAkB,SAAS,GAG/DF,EAAK,QAAQ,UAAaA,EAAK,QAAQ,WACvCF,EAAO,qBAAqB,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM,GAC5FsoB,EAAO,kBAAkB,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM,IAGzFwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,UACvCF,EAAO,MAAM,gBAAgBF,EAAO,MAAMM,GAAmBF,EAAK,KAAKxoB,CAAM;AAEjF;AAAA,IACP;AAED,WAAOA,EAAO,WAAWY;AAAA,EAC5B;AAAA,EACD,YAAY,SAAUwnB,GAAQxX,GAAMpB,GAAMxP,GAAQ;AAC9C,UAAMY,IAASZ,EAAO,QAEhBwoB,IAAOJ,EAAO,MACdne,IAAO0e,GAAU/X,CAAI;AAC3B,QAAKwX,EAAO,YA+BZ;AAAA,UA5BKA,EAAO,KAAK,cAKTI,EAAK,QAAQ,UAAaA,EAAK,QAAQ,WACvCF,EAAO;AAAA,QACH;AAAA,QACAF,EAAO;AAAA,QACPne,EAAK;AAAA,QACL,KAAK,IAAIue,EAAK,KAAKA,EAAK,GAAG;AAAA,QAC3BxoB;AAAA,MACpB,GACgBsoB,EAAO;AAAA,QACH;AAAA,QACAF,EAAO;AAAA,QACPne,EAAK;AAAA,QACL,KAAK,IAAIue,EAAK,KAAKA,EAAK,GAAG;AAAA,QAC3BxoB;AAAA,MACpB,IAGgBwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,UAEnCA,EAAK,UAAU,KAAGF,EAAO,MAAM,qBAAqBF,EAAO,MAAMne,EAAK,QAAQue,EAAK,KAAKxoB,CAAM,KAvBtGsoB,EAAO,MAAM,qBAAqBF,EAAO,MAAMne,EAAK,QAAQme,EAAO,WAAW,QAAQpoB,CAAM,GA2B5FA,EAAO,WAAWY;AAAQ,eAAO;AAErC,eAASsO,IAAI,GAAGA,IAAIjF,EAAK,QAAQiF;AAC7B,QAAAlP,EAAO,KAAK;AAAA,UACRA;AAAA,UACA,KAAK;AAAA,YACA,WAAY;AACT,kBAAI4oB;AACJC,qBAAAA,GAAUT,EAAO,YAAY,SAAUhR,GAAmB;AACtD,gBAAIA,EAAK,SAASnN,EAAKiF,CAAC,MAAG0Z,IAAWxR;AAAA,cAClE,CAAyB,GACMwR,KAAYR,EAAO,WAAWlZ,CAAC;AAAA,YAC9D,EAAwB;AAAA,YACJ0B,EAAK3G,EAAKiF,CAAC,CAAC;AAAA,YACZjF,EAAKiF,CAAC;AAAA,UACT;AAAA,QACjB;AAGQ,aAAOlP,EAAO,WAAWY;AAAA;AAAA,EAC5B;AAAA,EACD,OAAO,SAAUwnB,GAAQxX,GAAMpB,GAAMxP,GAAQ;AACzC,UAAMY,IAASZ,EAAO;AAEtB,QAAI,CAACooB,EAAO;AAAO;AAEnB,UAAMI,IAAOJ,EAAO;AAGpB,QAAI,CAACA,EAAO,KAAK;AACb,MAAAE,EAAO,MAAM,gBAAgBF,EAAO,MAAMxX,EAAK,QAAQwX,EAAO,MAAM,QAAQpoB,CAAM;AAAA,SAC/E;AAsBH,UAnBIwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,WACvCF,EAAO;AAAA,QACH;AAAA,QACAF,EAAO;AAAA,QACPxX,EAAK;AAAA,QACL,KAAK,IAAI4X,EAAK,KAAKA,EAAK,GAAG,IAAIJ,EAAO,MAAM;AAAA,QAC5CpoB;AAAA,QACA;AAAA,MACpB,GACgBsoB,EAAO;AAAA,QACH;AAAA,QACAF,EAAO;AAAA,QACPxX,EAAK;AAAA,QACL,KAAK,IAAI4X,EAAK,KAAKA,EAAK,GAAG,IAAIJ,EAAO,MAAM;AAAA,QAC5CpoB;AAAA,QACA;AAAA,MACpB,IAGgBwoB,EAAK,QAAQ,UAAaA,EAAK,QAAQ,QAAW;AAElD,YAAIA,EAAK,UAAU;AAAG,iBAAOxoB,EAAO,WAAWY;AAC1C,QAAA0nB,EAAO,MAAM,gBAAgBF,EAAO,MAAMxX,EAAK,QAAQ4X,EAAK,MAAMJ,EAAO,MAAM,QAAQpoB,CAAM;AAAA,MACrG;AAED,UAAIwoB,EAAK,WAAW,CAAC;AAAG,eAAOxoB,EAAO,WAAWY;AAAA,IACpD;AAED,QAAIZ,EAAO,WAAWY;AAAQ,aAAO;AAErC,aAASsO,IAAI,GAAGA,IAAI0B,EAAK,QAAQ1B;AAC7B,MAAAlP,EAAO,KAAK;AAAA,QACRA;AAAA,QACA,KAAK,KAAKooB,EAAO,MAAMlZ,IAAIkZ,EAAO,MAAM,MAAM,GAAGxX,EAAK1B,CAAC,GAAGA,IAAIkZ,EAAO,MAAM,MAAM;AAAA,MACjG;AAGQ,WAAOpoB,EAAO,WAAWY;AAAA,EAC5B;AACL,GAcM0nB,IAAS;AAAA,EACX,SAAS,SAAUlR,GAAM;AACrB,YAAQA,EAAK,WAAW,wEACnB,QAAQ,WAAWA,EAAK,KAAK,YAAW,CAAE,EAC1C,QAAQ,WAAWA,EAAK,KAAK,YAAW,CAAE,EAC1C,QAAQ,UAAW0R,GAAa1R,EAAK,IAAI,KAAKA,EAAK,KAAK,KAAK,GAAG,KAAMA,EAAK,IAAI,EAC/E,QAAQ,YAAYA,EAAK,MAAM,EAC/B,QAAQ,cAAcA,EAAK,QAAQ,EACnC,QAAQ,YAAYA,EAAK,MAAM;AAAA,EACvC;AAAA,EACD,OAAO,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAC5D,QAAIF,MAAWC;AAAU,aAAO;AAChC,YAAQxnB,GAAI;AAAA,MACR,KAAK;AAED,YAAIwnB,MAAa,YAAYD,MAAW;AAAU,iBAAO;AACzD;AAAA,IACP;AAED,UAAM3R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA;AAAA,EAED,OAAO,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAC5D,QAAID,EAAS,KAAKD,CAAM;AAAG,aAAO;AAElC,UAAM3R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA,EACD,UAAU,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAC/D,QAAIF,MAAWC;AAAU,aAAO;AAChC,UAAM5R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA,EACD,aAAa,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAClE,QAAIF,IAASC;AAAU,aAAO;AAC9B,UAAM5R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA,EACD,UAAU,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAC/D,QAAIF,IAASC;AAAU,aAAO;AAC9B,UAAM5R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA,EACD,sBAAsB,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AAC3E,QAAIF,KAAUC;AAAU,aAAO;AAC/B,UAAM5R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AAAA,EACD,mBAAmB,SAAU5V,GAAM0V,GAAM6R,GAAQC,GAAUhpB,GAAQipB,GAAS;AACxE,QAAIF,KAAUC;AAAU,aAAO;AAC/B,UAAM5R,IAAO;AAAA,MACT,MAAMF;AAAA,MACN,MAAM1V;AAAA,MACN,QAAQunB;AAAA,MACR,UAAUC;AAAA,MACV,QAAQ;AAAA,MACR,SAASC;AAAA,IACrB;AACQ,WAAA7R,EAAK,UAAUkR,EAAO,QAAQlR,CAAI,GAClCpX,EAAO,KAAKoX,CAAI,GACT;AAAA,EACV;AACL;AAEA+Q,GAAM,OAAOE;AACbF,GAAM,SAASG;AC5cf,IAAIY,KAAS,CAAA;AACb,MAAMC,KAAU;AAAA,EACZ,UAAU;AACN,WAAOD;AAAA,EACV;AAAA,EACD,KAAKtpB,GAAO;AACR,IAAAA,IAAQ,EAAE,KAAKA,EAAM,MAAM,MAAMA,EAAM,OAAO,UAAUA,EAAM,SAAQ,GACtEspB,GAAO,KAAKtpB,CAAK;AAAA,EACpB;AAAA,EACD,QAAQ+D,GAAK;AACT,IAAAulB,GAAO,OAAOvlB,CAAG;AAAA,EACpB;AAAA,EACD,SAAS;AACL,IAAAulB,KAAS,CAAA;AAAA,EACZ;AACL;ACXA,SAASE,GAAK,EAAE,KAAAC,GAAK,MAAA7nB,KAAQ;AACzB,EAAAA,IAAOA,EAAK;AAEZ,aAAW4V,KAAQ+R,GAAQ,WAAW;AAClC,UAAM,EAAE,KAAKG,GAAM,MAAMC,EAAK,IAAKnS;AACnC,QAAIoS,GAAMF,GAAMD,CAAG,KAAKG,GAAMD,GAAO/nB,CAAI;AACrC,qBAAQ,IAAI,UAAU6nB,GAAK,KAAKjS,EAAK,IAAI,GAClCA;AAAA,EAEd;AACD,SAAO;AACX;AAEA,SAASoS,GAAMR,GAAUD,GAAQ;AAC7B,UAAQ7Q,GAAK8Q,CAAQ,GAAC;AAAA,IAClB,KAAK;AACD,aAAOA,MAAaD;AAAA,IACxB,KAAK;AACD,aAAOC,EAAS,KAAKD,CAAM;AAAA,IAC/B;AACI,aAAO;AAAA,EACd;AACL;AAGA,SAASU,GAAQ,EAAE,UAAAxS,GAAU,MAAAyS,EAAI,GAAI3W,GAAS;AAC1C,SAAOpQ,GAAWsU,CAAQ,IACpBA,EAAS,EAAE,GAAGlE,GAAS,MAAMA,EAAQ,KAAK,eAAe,MAAM2W,KAAQ,KAAI,CAAE,IAC7ErS,GAAIJ,CAAQ;AACtB;AC3BO,MAAM0S,KAAwB,CAACjmB,MAE9B,OAAOA,KAAW,YAClB,OAAOA,EAAO,UAAW,cACzB,OAAOA,EAAO,UAAW,cACzB,OAAOA,EAAO,OAAQ,cACtB,OAAOA,EAAO,UAAW,cACzB,OAAOA,EAAO,OAAQ,cACtB,OAAOA,EAAO,OAAQ,cACtB,OAAOA,EAAO,QAAS,cACvBA,EAAO,OAAO,WAAW,MAAM,mBCjB1BkmB,KAAO,OAAO,gBAAgB,GAC9BC,KAAW,OAAO,oBAAoB;ACM5C,eAAeC,GAAYlZ,GAAM;AAEpC,MAAIA,EAAK;AACL,UAAM,IAAI,UAAU,0BAA0BA,EAAK,GAAG,EAAE;AAK5D,MAHAA,EAAK,YAAY,IAGbA,EAAK;AACL,UAAMA,EAAK;AAGf,SAAIA,EAAK,gBAAgB,WACd,IAAI,KAAK,CAAC,OAAO,YAAYA,EAAK,KAAK,SAAS,CAAC,CAAC,IAEtDA,EAAK;AAChB;ACJe,MAAMmZ,GAAK;AAAA,EACtB,YAAYL,GAAM,EAAE,MAAAzb,IAAO,EAAC,IAAK,CAAA,GAAI;AACjC,IAAIyb,MAAS,OAETA,IAAO,IAAI,KAAK,CAAA,CAAE,IACXC,GAAsBD,CAAI,IAEjCA,IAAO,IAAI,KAAK,CAACA,CAAI,CAAC,IACf,YAAY,OAAOA,CAAI,IAE9BA,IAAO,IAAI,KAAK,CAACA,CAAI,CAAC,IAEtBA,IAAO,IAAI,KAAK,CAAC,KAAK,UAAUA,CAAI,CAAC,CAAC,GAG1C,KAAKM,EAAS,IAAI;AAAA,MACd,MAAAN;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,IACnB,GACQ,KAAK,OAAOzb;AAAA,EACf;AAAA,EAED,IAAI,OAAO;AACP,WAAO,KAAK+b,EAAS,EAAE;AAAA,EAC1B;AAAA,EAED,IAAI,WAAW;AACX,WAAO,KAAKA,EAAS,EAAE;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,MAAM,cAAc;AAEhB,YADa,MAAMF,GAAY,KAAKE,EAAS,CAAC,GAClC;EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,MAAM,OAAO;AACT,WAAOF,GAAY,KAAKE,EAAS,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,MAAM,OAAO;AACT,UAAMC,IAAO,MAAM,KAAK;AACxB,WAAO,KAAK,MAAMA,KAAQ,IAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,MAAM,OAAO;AAET,YADa,MAAMH,GAAY,KAAKE,EAAS,CAAC,GAClC;EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAOL;AAGA,OAAO,iBAAiBD,GAAK,WAAW;AAAA,EACpC,MAAM,EAAE,YAAY,GAAM;AAAA,EAC1B,UAAU,EAAE,YAAY,GAAM;AAAA,EAC9B,aAAa,EAAE,YAAY,GAAM;AAAA,EACjC,MAAM,EAAE,YAAY,GAAM;AAAA,EAC1B,MAAM,EAAE,YAAY,GAAM;AAAA,EAC1B,MAAM,EAAE,YAAY,GAAM;AAC9B,CAAC;AC7FM,MAAMG,KAAqB,CAACR,GAAMS,MAEjCT,MAAS,OACF,OAIP,OAAOA,KAAS,WACT,6BAIPC,GAAsBD,CAAI,IACnB,oDAIPA,aAAgB,OACTA,EAAK,QAAQ,OAGpBA,aAAgB,WACT,iCAAiCS,EAAQH,EAAS,EAAE,QAAQ,KAIhE,4BCtCLI,KAAiB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GAQ3CC,KAAa,CAACC,MAChBF,GAAe,IAAIE,CAAI,GCC5BC,KAAY,WAAW,UAAU,WAAW,OAAO,YAAa,MAAW;;AAQlE,MAAMC,WAAqBT,GAAK;AAAA,EAC3C,YAAYL,IAAO,MAAM3W,IAAU,CAAA,GAAI;AACnC,UAAM2W,GAAM3W,CAAO;AACnB,UAAM0X,IAAS1X,EAAQ,UAAU,OAAOA,EAAQ,SAAS,KACnD2X,IAAU,IAAI,QAAQ3X,EAAQ,OAAO;AAC3C,QAAI2W,MAAS,QAAQ,CAACgB,EAAQ,IAAI,cAAc,GAAG;AAC/C,YAAMC,IAAcT,GAAmBR,CAAI;AAC3C,MAAIiB,KACAD,EAAQ,OAAO,gBAAgBC,CAAW;AAAA,IAEjD;AACD,SAAKX,EAAS,IAAI;AAAA,MACd,MAAM;AAAA,MACN,KAAKjX,EAAQ;AAAA,MACb,QAAA0X;AAAA,MACA,YAAY1X,EAAQ,cAAc;AAAA,MAClC,SAAA2X;AAAA,MACA,SAAS3X,EAAQ;AAAA,IAC7B;AAAA,EACK;AAAA,EAED,IAAI,OAAO;AACP,WAAO,KAAKiX,EAAS,EAAE;AAAA,EAC1B;AAAA,EAED,IAAI,MAAM;AACN,WAAO,KAAKA,EAAS,EAAE,OAAO;AAAA,EACjC;AAAA,EAED,IAAI,SAAS;AACT,WAAO,KAAKA,EAAS,EAAE;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKD,IAAI,KAAK;AACL,WAAO,KAAKA,EAAS,EAAE,UAAU,OAAO,KAAKA,EAAS,EAAE,SAAS;AAAA,EACpE;AAAA,EAED,IAAI,aAAa;AACb,WAAO,KAAKA,EAAS,EAAE,UAAU;AAAA,EACpC;AAAA,EAED,IAAI,aAAa;AACb,WAAO,KAAKA,EAAS,EAAE;AAAA,EAC1B;AAAA,EAED,IAAI,UAAU;AACV,WAAO,KAAKA,EAAS,EAAE;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,QAAQ;AAEJ,QAAI,KAAK;AACL,YAAM,IAAI,MAAM,oCAAoC;AAExD,WAAO,IAAIO,GAAS,KAAK,MAAM;AAAA,MAC3B,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,IAAI,KAAK;AAAA,MACT,YAAY,KAAK;AAAA,MACjB,MAAM,KAAK;AAAA,IACvB,CAAS;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,OAAO,SAASlB,GAAKoB,IAAS,KAAK;AAC/B,QAAI,CAACJ,GAAWI,CAAM;AAClB,YAAM,IAAI,WAAW,iEAAiE;AAG1F,WAAO,IAAIF,GAAS,MAAM;AAAA,MACtB,SAAS;AAAA,QACL,UAAU,IAAI,IAAIlB,CAAG,EAAE,SAAU;AAAA,MACpC;AAAA,MACD,QAAAoB;AAAA,IACZ,CAAS;AAAA,EACJ;AAAA,EAED,OAAO,QAAQ;AACX,UAAMG,IAAW,IAAIL,GAAS,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAE,CAAE;AACjE,WAAAK,EAASZ,EAAS,EAAE,OAAO,SACpBY;AAAA,EACV;AAAA,EAED,KAAK,OAAO,WAAW,IAAI;AACvB,WAAO;AAAA,EACV;AACL;AAEA,OAAO,iBAAiBL,GAAS,WAAW;AAAA,EACxC,MAAM,EAAE,YAAY,GAAM;AAAA,EAC1B,KAAK,EAAE,YAAY,GAAM;AAAA,EACzB,QAAQ,EAAE,YAAY,GAAM;AAAA,EAC5B,IAAI,EAAE,YAAY,GAAM;AAAA,EACxB,YAAY,EAAE,YAAY,GAAM;AAAA,EAChC,YAAY,EAAE,YAAY,GAAM;AAAA,EAChC,SAAS,EAAE,YAAY,GAAM;AAAA,EAC7B,OAAO,EAAE,YAAY,GAAM;AAC/B,CAAC;AClID,MAAMM,KAAS,WAAW,UAAU,IAC9BC,KAAYD,GAAO;AACzB,SAASE,KAAY;AAEjB,EAAIF,GAAO,SAAS,CAACA,GAAO,MAAM,eAAe,OAAO,MACpDA,GAAO,QAAQG,IACfH,GAAO,MAAM,QAAQ,IACrB,QAAQ,KAAK,aAAa;AAElC;AASA,eAAeG,GAAU3B,GAAKtW,IAAU,IAAI;AACxC,MAAI8X,GAAO,MAAM,UAAU,IAAM;AAE7B,UAAMI,IAAY;AAAA,MACd,KAAA5B;AAAA,MACA,MAAMtW,EAAQ,UAAU;AAAA,IACpC,GACc/S,IAASopB,GAAK6B,CAAS;AAC7B,QAAIjrB,GAAQ;AACR,YAAM4Q,IAAO6Y,GAAQ,EAAE,GAAGzpB,GAAQ,MAAM+S,EAAQ,QAAQkY,CAAS;AACjE,qBAAQ,KAAK,mBAAmB5B,CAAG,GAC5B,IAAImB,GAAa5Z,GAAMmC,CAAO;AAAA,IACxC;AAAA,EACJ;AAED,SAAO+X,GAAUzB,GAAKtW,CAAO;AACjC;AClCA,MAAemY,KAAA;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACT,GCrCMC,KAAW,WAAY;AAAA,GACvBN,KAAS,WAAW,UAAU,IAC9BO,KAAiBP,MAAAA,QAAAA,GAAQ,iBAAiBA,GAAO,iBAAiB,MAAe;;A/HPvF,IAAAQ;A+HQA,MAAMC,OAAOD,KAAAD,MAAA,gBAAAA,GAAgB,cAAhB,gBAAAC,GAA2B,SAAQF;A/HRhD,IAAAE;A+HSA,MAAME,OAAOF,KAAAD,MAAA,gBAAAA,GAAgB,cAAhB,gBAAAC,GAA2B,SAAQF,IAQ1CK,KAAkB,SAAUC,GAAK;AAGnC,SAAO;AAAA,IACHA;AAAA,IAFU,CAAC,cAAc,UAAU,YAAY,gBAAgB,YAAY,EAGrE,OAAO,CAACxD,GAAK1Q,OACf0Q,EAAI1Q,CAAG,IAAI;AAAA,MACP,MAAM;AACF,eAAO,KAAK,MAAMA,CAAG;AAAA,MACxB;AAAA,MACD,KAAK,SAAU7G,GAAO;AAClB,aAAK,MAAM6G,CAAG,IAAI7G;AAAA,MACrB;AAAA,IACjB,GACmBuX,IACR,EAAE;AAAA,EACb;AACA;AACA,MAAMyD,WAA2BN,GAAe;AAAA,EAC5C,eAAernB,GAAM;AACjB,UAAM,GAAGA,CAAI;AAEjB,IAAA4nB,GAAA,eAAQL;AACR,IAAAK,GAAA,eAAQJ;AA0BR,IAAAI,GAAA,eAAQ;AAAA;AAAA,MAEJ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,YAAY;AAAA,IACpB;AACI,IAAAA,GAAA,eAAQ;AACR,IAAAA,GAAA,cAAO;AACP,IAAAA,GAAA,eAAQ;AACR,IAAAA,GAAA,mBAAY;AAAA,EAvCX;AAAA,EAGD,KAAKC,GAAQvC,GAAKwC,GAAOC,GAAUC,GAAU;AAEzC,SAAK,MAAMH,GAAQvC,GAAK,IAAMyC,GAAUC,CAAQ,GAChD,KAAK,OAAO1C,GACZ,KAAK,QAAQuC,EAAO;EACvB;AAAA,EACD,KAAKlC,GAAM;AACP,QAAI,KAAK,UACL,KAAK,YAAYN,GAAK,EAAE,KAAK,KAAK,MAAM,MAAM,KAAK,MAAK,CAAE,GACtD,KAAK;AACL,kBAAK,YAAY,EAAE,GAAG,KAAK,WAAW,MAAAM,EAAI,GAC1C8B,GAAgB,IAAI,GACpB,KAAK,cAAc,IAAI,MAAM,WAAW,CAAC,GACzC,WAAW,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,WAAW,GAAG,GAC9C;AAGf,SAAK,MAAM9B,CAAI;AAAA,EAClB;AAAA,EACD,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EACf;AAAA,EACD,IAAI,KAAK9pB,GAAO;AACZ,IAAI,OAAOA,KAAU,cAAW,KAAK,QAAQA;AAAA,EAChD;AAAA,EAcD,QAAQ;AAEJ,SAAK,aAAa,KAAK,kBACvB,KAAK,cAAc,IAAI,MAAM,kBAAkB,CAAC,GAChD,KAAK,aAAa,KAAK,SACvB,KAAK,cAAc,IAAI,MAAM,kBAAkB,CAAC,GAEhD,KAAK,SAAS,KACd,KAAK,aAAasrB,GAAkB,GAAG;AACvC,UAAMta,IAAO6Y,GAAQ,KAAK,WAAW,EAAE,KAAK,KAAK,MAAM,MAAM,KAAK,MAAO,CAAA;AACzE,SAAK,WAAW7Y,GAChB,KAAK,eAAe,OAAO,KAAK,YAAa,WAAW,KAAK,WAAW,KAAK,UAAU,KAAK,QAAQ,GACpG,KAAK,aAAa,KAAK,MACvB,KAAK,cAAc,IAAI,MAAM,kBAAkB,CAAC,GAChD,KAAK,cAAc,IAAI,MAAM,MAAM,CAAC,GACpC,KAAK,cAAc,IAAI,MAAM,SAAS,CAAC;AAAA,EAC1C;AACL;AC3FO,MAAM6a,KAAM,OAAO;AAAA,EACtB,WAAY;AACR,WAAO,IAAIC,GAAmB,GAAG,SAAS;AAAA,EAC7C;AAAA,EACD;AAAA,IACI,MAAMM,GAAQ;AAAA,IAEb;AAAA,IACD,OAAO;AACH,aAAO,WAAW,SAAW,OAAejB,GAAS;AACrD,YAAMF,IAAS,WAAW,UAAU;AAEpC,MAAIA,EAAO,mBAAmBY,OAC1B,QAAQ,IAAI,QAAQ,GACpBZ,EAAO,iBAAiBY;AAAA,IAE/B;AAAA,EACJ;AACL;AChBA,SAASQ,MAAQloB,GAAa;AACtB,MAAAulB,GACAC,IAAQ,OACRtS;AAEJ,UAAQlT,EAAK,QAAQ;AAAA,IACjB,KAAK;AAED,cAACkT,CAAQ,IAAIlT,GACN+gB,GAAQ,IAAI7N,CAAQ;AAAA,IAE/B,KAAK;AAED,MAAAwU,GAAI,KAAK,GACR,CAAAnC,GAAMrS,CAAQ,IAAIlT;AACnB;AAAA,IACJ,KAAK;AACD,MAAA0nB,GAAI,KAAK,GAER,CAAAnC,GAAMC,GAAOtS,CAAQ,IAAIlT;AAC1B;AAAA,EACR;AAEA,SAAAolB,GAAQ,KAAK;AAAA,IACT,MAAAG;AAAA,IACA,OAAAC;AAAA,IACA,UAAAtS;AAAA,EAAA,CACH,GACM;AACX;;;;0BClCAiV,KAAiB;AAAA,EAChB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,OAAS,CAAC,GAAG,GAAG,CAAC;AAAA,EACjB,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,MAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,EAClB,YAAc,CAAC,KAAK,IAAI,GAAG;AAAA,EAC3B,OAAS,CAAC,KAAK,IAAI,EAAE;AAAA,EACrB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,YAAc,CAAC,KAAK,KAAK,CAAC;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,OAAS,CAAC,KAAK,KAAK,EAAE;AAAA,EACtB,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,SAAW,CAAC,KAAK,IAAI,EAAE;AAAA,EACvB,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,UAAY,CAAC,GAAG,GAAG,GAAG;AAAA,EACtB,UAAY,CAAC,GAAG,KAAK,GAAG;AAAA,EACxB,eAAiB,CAAC,KAAK,KAAK,EAAE;AAAA,EAC9B,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,WAAa,CAAC,GAAG,KAAK,CAAC;AAAA,EACvB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAe,CAAC,KAAK,GAAG,GAAG;AAAA,EAC3B,gBAAkB,CAAC,IAAI,KAAK,EAAE;AAAA,EAC9B,YAAc,CAAC,KAAK,KAAK,CAAC;AAAA,EAC1B,YAAc,CAAC,KAAK,IAAI,GAAG;AAAA,EAC3B,SAAW,CAAC,KAAK,GAAG,CAAC;AAAA,EACrB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,eAAiB,CAAC,IAAI,IAAI,GAAG;AAAA,EAC7B,eAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC5B,eAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC5B,eAAiB,CAAC,GAAG,KAAK,GAAG;AAAA,EAC7B,YAAc,CAAC,KAAK,GAAG,GAAG;AAAA,EAC1B,UAAY,CAAC,KAAK,IAAI,GAAG;AAAA,EACzB,aAAe,CAAC,GAAG,KAAK,GAAG;AAAA,EAC3B,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,YAAc,CAAC,IAAI,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,IAAI,EAAE;AAAA,EACzB,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,aAAe,CAAC,IAAI,KAAK,EAAE;AAAA,EAC3B,SAAW,CAAC,KAAK,GAAG,GAAG;AAAA,EACvB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,MAAQ,CAAC,KAAK,KAAK,CAAC;AAAA,EACpB,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,OAAS,CAAC,GAAG,KAAK,CAAC;AAAA,EACnB,aAAe,CAAC,KAAK,KAAK,EAAE;AAAA,EAC5B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,WAAa,CAAC,KAAK,IAAI,EAAE;AAAA,EACzB,QAAU,CAAC,IAAI,GAAG,GAAG;AAAA,EACrB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,WAAa,CAAC,KAAK,KAAK,CAAC;AAAA,EACzB,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,sBAAwB,CAAC,KAAK,KAAK,GAAG;AAAA,EACtC,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,eAAiB,CAAC,IAAI,KAAK,GAAG;AAAA,EAC9B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,MAAQ,CAAC,GAAG,KAAK,CAAC;AAAA,EAClB,WAAa,CAAC,IAAI,KAAK,EAAE;AAAA,EACzB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,SAAW,CAAC,KAAK,GAAG,GAAG;AAAA,EACvB,QAAU,CAAC,KAAK,GAAG,CAAC;AAAA,EACpB,kBAAoB,CAAC,KAAK,KAAK,GAAG;AAAA,EAClC,YAAc,CAAC,GAAG,GAAG,GAAG;AAAA,EACxB,cAAgB,CAAC,KAAK,IAAI,GAAG;AAAA,EAC7B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,gBAAkB,CAAC,IAAI,KAAK,GAAG;AAAA,EAC/B,iBAAmB,CAAC,KAAK,KAAK,GAAG;AAAA,EACjC,mBAAqB,CAAC,GAAG,KAAK,GAAG;AAAA,EACjC,iBAAmB,CAAC,IAAI,KAAK,GAAG;AAAA,EAChC,iBAAmB,CAAC,KAAK,IAAI,GAAG;AAAA,EAChC,cAAgB,CAAC,IAAI,IAAI,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,MAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,EAClB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,OAAS,CAAC,KAAK,KAAK,CAAC;AAAA,EACrB,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,QAAU,CAAC,KAAK,KAAK,CAAC;AAAA,EACtB,WAAa,CAAC,KAAK,IAAI,CAAC;AAAA,EACxB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,MAAQ,CAAC,KAAK,KAAK,EAAE;AAAA,EACrB,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,QAAU,CAAC,KAAK,GAAG,GAAG;AAAA,EACtB,eAAiB,CAAC,KAAK,IAAI,GAAG;AAAA,EAC9B,KAAO,CAAC,KAAK,GAAG,CAAC;AAAA,EACjB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,aAAe,CAAC,KAAK,IAAI,EAAE;AAAA,EAC3B,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,YAAc,CAAC,KAAK,KAAK,EAAE;AAAA,EAC3B,UAAY,CAAC,IAAI,KAAK,EAAE;AAAA,EACxB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,QAAU,CAAC,KAAK,IAAI,EAAE;AAAA,EACtB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,WAAa,CAAC,KAAK,IAAI,GAAG;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,aAAe,CAAC,GAAG,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,KAAO,CAAC,KAAK,KAAK,GAAG;AAAA,EACrB,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,QAAU,CAAC,KAAK,IAAI,EAAE;AAAA,EACtB,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,QAAU,CAAC,KAAK,KAAK,CAAC;AAAA,EACtB,aAAe,CAAC,KAAK,KAAK,EAAE;AAC7B,yBCvJAC,KAAiB,SAAoBxd,GAAK;AACzC,SAAI,CAACA,KAAO,OAAOA,KAAQ,WACnB,KAGDA,aAAe,SAAS,MAAM,QAAQA,CAAG,KAC9CA,EAAI,UAAU,MAAMA,EAAI,kBAAkB,YACzC,OAAO,yBAAyBA,GAAMA,EAAI,SAAS,MAAOA,EAAI,YAAY,SAAS;AACvF,GCNIwd,KAAaC,IAEbC,KAAS,MAAM,UAAU,QACzBC,KAAQ,MAAM,UAAU,OAExBC,KAAUC,GAAc,UAAG,SAAiBzoB,GAAM;AAGrD,WAFI0oB,IAAU,CAAA,GAELvd,IAAI,GAAGwI,IAAM3T,EAAK,QAAQmL,IAAIwI,GAAKxI,KAAK;AAChD,QAAIpF,IAAM/F,EAAKmL,CAAC;AAEhB,IAAIid,GAAWriB,CAAG,IAEjB2iB,IAAUJ,GAAO,KAAKI,GAASH,GAAM,KAAKxiB,CAAG,CAAC,IAE9C2iB,EAAQ,KAAK3iB,CAAG;AAAA,EAEjB;AAED,SAAO2iB;AACR;AAEAF,GAAQ,OAAO,SAAUnd,GAAI;AAC5B,SAAO,WAAY;AAClB,WAAOA,EAAGmd,GAAQ,SAAS,CAAC;AAAA,EAC9B;AACA;qBC3BIG,KAAaN,IACbG,KAAUI,IACVntB,KAAiB,OAAO,gBAExBotB,KAAe,uBAAO,OAAO,IAAI;AAGrC,SAASpd,MAAQkd;AAChB,EAAIltB,GAAe,KAAKktB,IAAYld,EAAI,MACvCod,GAAaF,GAAWld,EAAI,CAAC,IAAIA;AAInC,IAAIqd,IAAKC,GAAA,UAAiB;AAAA,EACzB,IAAI,CAAE;AAAA,EACN,KAAK,CAAE;AACR;AAEAD,EAAG,MAAM,SAAUzrB,GAAQ;AAC1B,MAAI2rB,IAAS3rB,EAAO,UAAU,GAAG,CAAC,EAAE,eAChC0T,GACAkY;AACJ,UAAQD,GAAM;AAAA,IACb,KAAK;AACJ,MAAAjY,IAAM+X,EAAG,IAAI,IAAIzrB,CAAM,GACvB4rB,IAAQ;AACR;AAAA,IACD,KAAK;AACJ,MAAAlY,IAAM+X,EAAG,IAAI,IAAIzrB,CAAM,GACvB4rB,IAAQ;AACR;AAAA,IACD;AACC,MAAAlY,IAAM+X,EAAG,IAAI,IAAIzrB,CAAM,GACvB4rB,IAAQ;AACR;AAAA,EACD;AAED,SAAKlY,IAIE,EAAC,OAAOkY,GAAO,OAAOlY,EAAG,IAHxB;AAIT;AAEA+X,EAAG,IAAI,MAAM,SAAUzrB,GAAQ;AAC9B,MAAI,CAACA;AACJ,WAAO;AAGR,MAAI6rB,IAAO,uBACPC,IAAM,mCACNC,IAAO,gIACPC,IAAM,wHACNC,IAAU,WAEVC,IAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GACjB9D,GACAta,GACAqe;AAEJ,MAAI/D,IAAQpoB,EAAO,MAAM8rB,CAAG,GAAG;AAI9B,SAHAK,IAAW/D,EAAM,CAAC,GAClBA,IAAQA,EAAM,CAAC,GAEVta,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAEvB,UAAIse,IAAKte,IAAI;AACb,MAAAoe,EAAIpe,CAAC,IAAI,SAASsa,EAAM,MAAMgE,GAAIA,IAAK,CAAC,GAAG,EAAE;AAAA,IAC7C;AAED,IAAID,MACHD,EAAI,CAAC,IAAI,SAASC,GAAU,EAAE,IAAI;AAAA,EAEnC,WAAU/D,IAAQpoB,EAAO,MAAM6rB,CAAI,GAAG;AAItC,SAHAzD,IAAQA,EAAM,CAAC,GACf+D,IAAW/D,EAAM,CAAC,GAEbta,IAAI,GAAGA,IAAI,GAAGA;AAClB,MAAAoe,EAAIpe,CAAC,IAAI,SAASsa,EAAMta,CAAC,IAAIsa,EAAMta,CAAC,GAAG,EAAE;AAG1C,IAAIqe,MACHD,EAAI,CAAC,IAAI,SAASC,IAAWA,GAAU,EAAE,IAAI;AAAA,EAE9C,WAAU/D,IAAQpoB,EAAO,MAAM+rB,CAAI,GAAG;AACtC,SAAKje,IAAI,GAAGA,IAAI,GAAGA;AAClB,MAAAoe,EAAIpe,CAAC,IAAI,SAASsa,EAAMta,IAAI,CAAC,GAAG,CAAC;AAGlC,IAAIsa,EAAM,CAAC,MACNA,EAAM,CAAC,IACV8D,EAAI,CAAC,IAAI,WAAW9D,EAAM,CAAC,CAAC,IAAI,OAEhC8D,EAAI,CAAC,IAAI,WAAW9D,EAAM,CAAC,CAAC;AAAA,EAG9B,WAAUA,IAAQpoB,EAAO,MAAMgsB,CAAG,GAAG;AACrC,SAAKle,IAAI,GAAGA,IAAI,GAAGA;AAClB,MAAAoe,EAAIpe,CAAC,IAAI,KAAK,MAAM,WAAWsa,EAAMta,IAAI,CAAC,CAAC,IAAI,IAAI;AAGpD,IAAIsa,EAAM,CAAC,MACNA,EAAM,CAAC,IACV8D,EAAI,CAAC,IAAI,WAAW9D,EAAM,CAAC,CAAC,IAAI,OAEhC8D,EAAI,CAAC,IAAI,WAAW9D,EAAM,CAAC,CAAC;AAAA,EAG9B;AAAM,YAAIA,IAAQpoB,EAAO,MAAMisB,CAAO,KAClC7D,EAAM,CAAC,MAAM,gBACT,CAAC,GAAG,GAAG,GAAG,CAAC,IAGdhqB,GAAe,KAAKktB,IAAYlD,EAAM,CAAC,CAAC,KAI7C8D,IAAMZ,GAAWlD,EAAM,CAAC,CAAC,GACzB8D,EAAI,CAAC,IAAI,GAEFA,KANC,OAQD;AAGR,OAAKpe,IAAI,GAAGA,IAAI,GAAGA;AAClB,IAAAoe,EAAIpe,CAAC,IAAIue,GAAMH,EAAIpe,CAAC,GAAG,GAAG,GAAG;AAE9B,SAAAoe,EAAI,CAAC,IAAIG,GAAMH,EAAI,CAAC,GAAG,GAAG,CAAC,GAEpBA;AACR;AAEAT,EAAG,IAAI,MAAM,SAAUzrB,GAAQ;AAC9B,MAAI,CAACA;AACJ,WAAO;AAGR,MAAIssB,IAAM,gLACNlE,IAAQpoB,EAAO,MAAMssB,CAAG;AAE5B,MAAIlE,GAAO;AACV,QAAImE,IAAQ,WAAWnE,EAAM,CAAC,CAAC,GAC3B3Y,KAAM,WAAW2Y,EAAM,CAAC,CAAC,IAAI,MAAO,OAAO,KAC3C7V,IAAI8Z,GAAM,WAAWjE,EAAM,CAAC,CAAC,GAAG,GAAG,GAAG,GACtC,IAAIiE,GAAM,WAAWjE,EAAM,CAAC,CAAC,GAAG,GAAG,GAAG,GACtCvX,IAAIwb,GAAM,MAAME,CAAK,IAAI,IAAIA,GAAO,GAAG,CAAC;AAE5C,WAAO,CAAC9c,GAAG8C,GAAG,GAAG1B,CAAC;AAAA,EAClB;AAED,SAAO;AACR;AAEA4a,EAAG,IAAI,MAAM,SAAUzrB,GAAQ;AAC9B,MAAI,CAACA;AACJ,WAAO;AAGR,MAAIwsB,IAAM,uKACNpE,IAAQpoB,EAAO,MAAMwsB,CAAG;AAE5B,MAAIpE,GAAO;AACV,QAAImE,IAAQ,WAAWnE,EAAM,CAAC,CAAC,GAC3B3Y,KAAM,WAAW2Y,EAAM,CAAC,CAAC,IAAI,MAAO,OAAO,KAC3C7X,IAAI8b,GAAM,WAAWjE,EAAM,CAAC,CAAC,GAAG,GAAG,GAAG,GACtC1X,IAAI2b,GAAM,WAAWjE,EAAM,CAAC,CAAC,GAAG,GAAG,GAAG,GACtCvX,IAAIwb,GAAM,MAAME,CAAK,IAAI,IAAIA,GAAO,GAAG,CAAC;AAC5C,WAAO,CAAC9c,GAAGc,GAAGG,GAAGG,CAAC;AAAA,EAClB;AAED,SAAO;AACR;AAEA4a,EAAG,GAAG,MAAM,WAAY;AACvB,MAAIM,IAAOZ,GAAQ,SAAS;AAE5B,SACC,MACAsB,GAAUV,EAAK,CAAC,CAAC,IACjBU,GAAUV,EAAK,CAAC,CAAC,IACjBU,GAAUV,EAAK,CAAC,CAAC,KAChBA,EAAK,CAAC,IAAI,IACPU,GAAU,KAAK,MAAMV,EAAK,CAAC,IAAI,GAAG,CAAC,IACpC;AAEL;AAEAN,EAAG,GAAG,MAAM,WAAY;AACvB,MAAIM,IAAOZ,GAAQ,SAAS;AAE5B,SAAOY,EAAK,SAAS,KAAKA,EAAK,CAAC,MAAM,IACnC,SAAS,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,MACzF,UAAU,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,OAAOA,EAAK,CAAC,IAAI;AAC/G;AAEAN,EAAG,GAAG,IAAI,UAAU,WAAY;AAC/B,MAAIM,IAAOZ,GAAQ,SAAS,GAExB3Y,IAAI,KAAK,MAAMuZ,EAAK,CAAC,IAAI,MAAM,GAAG,GAClCjS,IAAI,KAAK,MAAMiS,EAAK,CAAC,IAAI,MAAM,GAAG,GAClCrb,IAAI,KAAK,MAAMqb,EAAK,CAAC,IAAI,MAAM,GAAG;AAEtC,SAAOA,EAAK,SAAS,KAAKA,EAAK,CAAC,MAAM,IACnC,SAASvZ,IAAI,QAAQsH,IAAI,QAAQpJ,IAAI,OACrC,UAAU8B,IAAI,QAAQsH,IAAI,QAAQpJ,IAAI,QAAQqb,EAAK,CAAC,IAAI;AAC5D;AAEAN,EAAG,GAAG,MAAM,WAAY;AACvB,MAAIiB,IAAOvB,GAAQ,SAAS;AAC5B,SAAOuB,EAAK,SAAS,KAAKA,EAAK,CAAC,MAAM,IACnC,SAASA,EAAK,CAAC,IAAI,OAAOA,EAAK,CAAC,IAAI,QAAQA,EAAK,CAAC,IAAI,OACtD,UAAUA,EAAK,CAAC,IAAI,OAAOA,EAAK,CAAC,IAAI,QAAQA,EAAK,CAAC,IAAI,QAAQA,EAAK,CAAC,IAAI;AAC7E;AAIAjB,EAAG,GAAG,MAAM,WAAY;AACvB,MAAIkB,IAAOxB,GAAQ,SAAS,GAExBta,IAAI;AACR,SAAI8b,EAAK,UAAU,KAAKA,EAAK,CAAC,MAAM,MACnC9b,IAAI,OAAO8b,EAAK,CAAC,IAGX,SAASA,EAAK,CAAC,IAAI,OAAOA,EAAK,CAAC,IAAI,QAAQA,EAAK,CAAC,IAAI,MAAM9b,IAAI;AACxE;AAEA4a,EAAG,GAAG,UAAU,SAAUS,GAAK;AAC9B,SAAOV,GAAaU,EAAI,MAAM,GAAG,CAAC,CAAC;AACpC;AAGA,SAASG,GAAMO,GAAKnY,GAAKC,GAAK;AAC7B,SAAO,KAAK,IAAI,KAAK,IAAID,GAAKmY,CAAG,GAAGlY,CAAG;AACxC;AAEA,SAAS+X,GAAUG,GAAK;AACvB,MAAItX,IAAM,KAAK,MAAMsX,CAAG,EAAE,SAAS,EAAE,EAAE;AACvC,SAAQtX,EAAI,SAAS,IAAK,MAAMA,IAAMA;AACvC;2CC/OAwV,KAAiB;AAAA,EAChB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,OAAS,CAAC,GAAG,GAAG,CAAC;AAAA,EACjB,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,MAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,EAClB,YAAc,CAAC,KAAK,IAAI,GAAG;AAAA,EAC3B,OAAS,CAAC,KAAK,IAAI,EAAE;AAAA,EACrB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,YAAc,CAAC,KAAK,KAAK,CAAC;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,OAAS,CAAC,KAAK,KAAK,EAAE;AAAA,EACtB,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,SAAW,CAAC,KAAK,IAAI,EAAE;AAAA,EACvB,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,UAAY,CAAC,GAAG,GAAG,GAAG;AAAA,EACtB,UAAY,CAAC,GAAG,KAAK,GAAG;AAAA,EACxB,eAAiB,CAAC,KAAK,KAAK,EAAE;AAAA,EAC9B,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,WAAa,CAAC,GAAG,KAAK,CAAC;AAAA,EACvB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAe,CAAC,KAAK,GAAG,GAAG;AAAA,EAC3B,gBAAkB,CAAC,IAAI,KAAK,EAAE;AAAA,EAC9B,YAAc,CAAC,KAAK,KAAK,CAAC;AAAA,EAC1B,YAAc,CAAC,KAAK,IAAI,GAAG;AAAA,EAC3B,SAAW,CAAC,KAAK,GAAG,CAAC;AAAA,EACrB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,eAAiB,CAAC,IAAI,IAAI,GAAG;AAAA,EAC7B,eAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC5B,eAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC5B,eAAiB,CAAC,GAAG,KAAK,GAAG;AAAA,EAC7B,YAAc,CAAC,KAAK,GAAG,GAAG;AAAA,EAC1B,UAAY,CAAC,KAAK,IAAI,GAAG;AAAA,EACzB,aAAe,CAAC,GAAG,KAAK,GAAG;AAAA,EAC3B,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,YAAc,CAAC,IAAI,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,IAAI,EAAE;AAAA,EACzB,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,aAAe,CAAC,IAAI,KAAK,EAAE;AAAA,EAC3B,SAAW,CAAC,KAAK,GAAG,GAAG;AAAA,EACvB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,MAAQ,CAAC,KAAK,KAAK,CAAC;AAAA,EACpB,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,OAAS,CAAC,GAAG,KAAK,CAAC;AAAA,EACnB,aAAe,CAAC,KAAK,KAAK,EAAE;AAAA,EAC5B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,WAAa,CAAC,KAAK,IAAI,EAAE;AAAA,EACzB,QAAU,CAAC,IAAI,GAAG,GAAG;AAAA,EACrB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,WAAa,CAAC,KAAK,KAAK,CAAC;AAAA,EACzB,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,sBAAwB,CAAC,KAAK,KAAK,GAAG;AAAA,EACtC,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,eAAiB,CAAC,IAAI,KAAK,GAAG;AAAA,EAC9B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,gBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,EAChC,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,MAAQ,CAAC,GAAG,KAAK,CAAC;AAAA,EAClB,WAAa,CAAC,IAAI,KAAK,EAAE;AAAA,EACzB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,SAAW,CAAC,KAAK,GAAG,GAAG;AAAA,EACvB,QAAU,CAAC,KAAK,GAAG,CAAC;AAAA,EACpB,kBAAoB,CAAC,KAAK,KAAK,GAAG;AAAA,EAClC,YAAc,CAAC,GAAG,GAAG,GAAG;AAAA,EACxB,cAAgB,CAAC,KAAK,IAAI,GAAG;AAAA,EAC7B,cAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC9B,gBAAkB,CAAC,IAAI,KAAK,GAAG;AAAA,EAC/B,iBAAmB,CAAC,KAAK,KAAK,GAAG;AAAA,EACjC,mBAAqB,CAAC,GAAG,KAAK,GAAG;AAAA,EACjC,iBAAmB,CAAC,IAAI,KAAK,GAAG;AAAA,EAChC,iBAAmB,CAAC,KAAK,IAAI,GAAG;AAAA,EAChC,cAAgB,CAAC,IAAI,IAAI,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,aAAe,CAAC,KAAK,KAAK,GAAG;AAAA,EAC7B,MAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,EAClB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,OAAS,CAAC,KAAK,KAAK,CAAC;AAAA,EACrB,WAAa,CAAC,KAAK,KAAK,EAAE;AAAA,EAC1B,QAAU,CAAC,KAAK,KAAK,CAAC;AAAA,EACtB,WAAa,CAAC,KAAK,IAAI,CAAC;AAAA,EACxB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,eAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,EAC/B,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,MAAQ,CAAC,KAAK,KAAK,EAAE;AAAA,EACrB,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,QAAU,CAAC,KAAK,GAAG,GAAG;AAAA,EACtB,eAAiB,CAAC,KAAK,IAAI,GAAG;AAAA,EAC9B,KAAO,CAAC,KAAK,GAAG,CAAC;AAAA,EACjB,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,aAAe,CAAC,KAAK,IAAI,EAAE;AAAA,EAC3B,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,YAAc,CAAC,KAAK,KAAK,EAAE;AAAA,EAC3B,UAAY,CAAC,IAAI,KAAK,EAAE;AAAA,EACxB,UAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC1B,QAAU,CAAC,KAAK,IAAI,EAAE;AAAA,EACtB,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,WAAa,CAAC,KAAK,IAAI,GAAG;AAAA,EAC1B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,KAAK,KAAK,GAAG;AAAA,EAC3B,MAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,EACtB,aAAe,CAAC,GAAG,KAAK,GAAG;AAAA,EAC3B,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,KAAO,CAAC,KAAK,KAAK,GAAG;AAAA,EACrB,MAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,EACpB,SAAW,CAAC,KAAK,KAAK,GAAG;AAAA,EACzB,QAAU,CAAC,KAAK,IAAI,EAAE;AAAA,EACtB,WAAa,CAAC,IAAI,KAAK,GAAG;AAAA,EAC1B,QAAU,CAAC,KAAK,KAAK,GAAG;AAAA,EACxB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,OAAS,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB,YAAc,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B,QAAU,CAAC,KAAK,KAAK,CAAC;AAAA,EACtB,aAAe,CAAC,KAAK,KAAK,EAAE;AAC7B,GCtJI+B,KAAc7B,IAMd8B,KAAkB,CAAA;AACtB,SAASvqB,MAAOsqB;AACf,EAAIA,GAAY,eAAetqB,EAAG,MACjCuqB,GAAgBD,GAAYtqB,EAAG,CAAC,IAAIA;AAItC,IAAI8lB,IAAU0E,GAAA,UAAiB;AAAA,EAC9B,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,MAAM,EAAC,UAAU,GAAG,QAAQ,OAAM;AAAA,EAClC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,EAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAC;AAAA,EAClC,SAAS,EAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAC;AAAA,EAC1C,QAAQ,EAAC,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAC;AAAA,EACxC,SAAS,EAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAC;AAAA,EAC1C,KAAK,EAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAC;AAAA,EAC1C,OAAO,EAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,OAAO,KAAK,EAAC;AAAA,EAClD,MAAM,EAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAC;AACrC;AAGA,SAASnB,KAASvD;AACjB,MAAIA,EAAQ,eAAeuD,CAAK,GAAG;AAClC,QAAI,EAAE,cAAcvD,EAAQuD,CAAK;AAChC,YAAM,IAAI,MAAM,gCAAgCA,CAAK;AAGtD,QAAI,EAAE,YAAYvD,EAAQuD,CAAK;AAC9B,YAAM,IAAI,MAAM,sCAAsCA,CAAK;AAG5D,QAAIvD,EAAQuD,CAAK,EAAE,OAAO,WAAWvD,EAAQuD,CAAK,EAAE;AACnD,YAAM,IAAI,MAAM,wCAAwCA,CAAK;AAG9D,QAAIoB,KAAW3E,EAAQuD,CAAK,EAAE,UAC1BqB,KAAS5E,EAAQuD,CAAK,EAAE;AAC5B,WAAOvD,EAAQuD,CAAK,EAAE,UACtB,OAAOvD,EAAQuD,CAAK,EAAE,QACtB,OAAO,eAAevD,EAAQuD,CAAK,GAAG,YAAY,EAAC,OAAOoB,GAAQ,CAAC,GACnE,OAAO,eAAe3E,EAAQuD,CAAK,GAAG,UAAU,EAAC,OAAOqB,GAAM,CAAC;AAAA,EAC/D;AAGF5E,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAI1Z,IAAI0Z,EAAI,CAAC,IAAI,KACbpS,IAAIoS,EAAI,CAAC,IAAI,KACbxb,IAAIwb,EAAI,CAAC,IAAI,KACbzX,IAAM,KAAK,IAAIjC,GAAGsH,GAAGpJ,CAAC,GACtBgE,IAAM,KAAK,IAAIlC,GAAGsH,GAAGpJ,CAAC,GACtBwc,IAAQxY,IAAMD,GACdhF,GACA,GACAwH;AAEJ,SAAIvC,MAAQD,IACXhF,IAAI,IACM+C,MAAMkC,IAChBjF,KAAKqK,IAAIpJ,KAAKwc,IACJpT,MAAMpF,IAChBjF,IAAI,KAAKiB,IAAI8B,KAAK0a,IACRxc,MAAMgE,MAChBjF,IAAI,KAAK+C,IAAIsH,KAAKoT,IAGnBzd,IAAI,KAAK,IAAIA,IAAI,IAAI,GAAG,GAEpBA,IAAI,MACPA,KAAK,MAGNwH,KAAKxC,IAAMC,KAAO,GAEdA,MAAQD,IACX,IAAI,IACMwC,KAAK,MACf,IAAIiW,KAASxY,IAAMD,KAEnB,IAAIyY,KAAS,IAAIxY,IAAMD,IAGjB,CAAChF,GAAG,IAAI,KAAKwH,IAAI,GAAG;AAC5B;AAEAoR,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAIiB,GACAC,GACAC,GACA5d,GACA8C,GAEAC,IAAI0Z,EAAI,CAAC,IAAI,KACbpS,IAAIoS,EAAI,CAAC,IAAI,KACbxb,IAAIwb,EAAI,CAAC,IAAI,KACb/b,IAAI,KAAK,IAAIqC,GAAGsH,GAAGpJ,CAAC,GACpB4c,IAAOnd,IAAI,KAAK,IAAIqC,GAAGsH,GAAGpJ,CAAC,GAC3B6c,IAAQ,SAAU5c,GAAG;AACxB,YAAQR,IAAIQ,KAAK,IAAI2c,IAAO,IAAI;AAAA,EAClC;AAEC,SAAIA,MAAS,IACZ7d,IAAI8C,IAAI,KAERA,IAAI+a,IAAOnd,GACXgd,IAAOI,EAAM/a,CAAC,GACd4a,IAAOG,EAAMzT,CAAC,GACduT,IAAOE,EAAM7c,CAAC,GAEV8B,MAAMrC,IACTV,IAAI4d,IAAOD,IACDtT,MAAM3J,IAChBV,IAAK,IAAI,IAAK0d,IAAOE,IACX3c,MAAMP,MAChBV,IAAK,IAAI,IAAK2d,IAAOD,IAElB1d,IAAI,IACPA,KAAK,IACKA,IAAI,MACdA,KAAK,KAIA;AAAA,IACNA,IAAI;AAAA,IACJ8C,IAAI;AAAA,IACJpC,IAAI;AAAA,EACN;AACA;AAEAkY,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAI1Z,IAAI0Z,EAAI,CAAC,GACTpS,IAAIoS,EAAI,CAAC,GACTxb,IAAIwb,EAAI,CAAC,GACTzc,IAAI4Y,EAAQ,IAAI,IAAI6D,CAAG,EAAE,CAAC,GAC1B3b,IAAI,IAAI,MAAM,KAAK,IAAIiC,GAAG,KAAK,IAAIsH,GAAGpJ,CAAC,CAAC;AAE5C,SAAAA,IAAI,IAAI,IAAI,MAAM,KAAK,IAAI8B,GAAG,KAAK,IAAIsH,GAAGpJ,CAAC,CAAC,GAErC,CAACjB,GAAGc,IAAI,KAAKG,IAAI,GAAG;AAC5B;AAEA2X,EAAQ,IAAI,OAAO,SAAU6D,GAAK;AACjC,MAAI1Z,IAAI0Z,EAAI,CAAC,IAAI,KACbpS,IAAIoS,EAAI,CAAC,IAAI,KACbxb,IAAIwb,EAAI,CAAC,IAAI,KACbvb,GACAgL,GACAC,GACA/L;AAEJ,SAAAA,IAAI,KAAK,IAAI,IAAI2C,GAAG,IAAIsH,GAAG,IAAIpJ,CAAC,GAChCC,KAAK,IAAI6B,IAAI3C,MAAM,IAAIA,MAAM,GAC7B8L,KAAK,IAAI7B,IAAIjK,MAAM,IAAIA,MAAM,GAC7B+L,KAAK,IAAIlL,IAAIb,MAAM,IAAIA,MAAM,GAEtB,CAACc,IAAI,KAAKgL,IAAI,KAAKC,IAAI,KAAK/L,IAAI,GAAG;AAC3C;AAKA,SAAS2d,GAAoBpb,GAAGwJ,GAAG;AAClC,SACC,KAAK,IAAIxJ,EAAE,CAAC,IAAIwJ,EAAE,CAAC,GAAG,CAAC,IACvB,KAAK,IAAIxJ,EAAE,CAAC,IAAIwJ,EAAE,CAAC,GAAG,CAAC,IACvB,KAAK,IAAIxJ,EAAE,CAAC,IAAIwJ,EAAE,CAAC,GAAG,CAAC;AAEzB;AAEAyM,EAAQ,IAAI,UAAU,SAAU6D,GAAK;AACpC,MAAIuB,IAAWX,GAAgBZ,CAAG;AAClC,MAAIuB;AACH,WAAOA;AAGR,MAAIC,IAAyB,OACzBC;AAEJ,WAAS1B,KAAWY;AACnB,QAAIA,GAAY,eAAeZ,CAAO,GAAG;AACxC,UAAIztB,IAAQquB,GAAYZ,CAAO,GAG3B2B,IAAWJ,GAAoBtB,GAAK1tB,CAAK;AAG7C,MAAIovB,IAAWF,MACdA,IAAyBE,GACzBD,IAAwB1B;AAAA,IAEzB;AAGF,SAAO0B;AACR;AAEAtF,EAAQ,QAAQ,MAAM,SAAU4D,GAAS;AACxC,SAAOY,GAAYZ,CAAO;AAC3B;AAEA5D,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAI1Z,IAAI0Z,EAAI,CAAC,IAAI,KACbpS,IAAIoS,EAAI,CAAC,IAAI,KACbxb,IAAIwb,EAAI,CAAC,IAAI;AAGjB,EAAA1Z,IAAIA,IAAI,UAAU,KAAK,KAAMA,IAAI,SAAS,OAAQ,GAAG,IAAKA,IAAI,OAC9DsH,IAAIA,IAAI,UAAU,KAAK,KAAMA,IAAI,SAAS,OAAQ,GAAG,IAAKA,IAAI,OAC9DpJ,IAAIA,IAAI,UAAU,KAAK,KAAMA,IAAI,SAAS,OAAQ,GAAG,IAAKA,IAAI;AAE9D,MAAI0B,IAAKI,IAAI,SAAWsH,IAAI,SAAWpJ,IAAI,QACvCkL,IAAKpJ,IAAI,SAAWsH,IAAI,SAAWpJ,IAAI,QACvCuN,IAAKzL,IAAI,SAAWsH,IAAI,SAAWpJ,IAAI;AAE3C,SAAO,CAAC0B,IAAI,KAAKwJ,IAAI,KAAKqC,IAAI,GAAG;AAClC;AAEAoK,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAI2B,IAAMxF,EAAQ,IAAI,IAAI6D,CAAG,GACzB9Z,IAAIyb,EAAI,CAAC,GACTjS,IAAIiS,EAAI,CAAC,GACT5P,IAAI4P,EAAI,CAAC,GACT5W,GACApG,GACAH;AAEJ,SAAA0B,KAAK,QACLwJ,KAAK,KACLqC,KAAK,SAEL7L,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAC5DwJ,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAC5DqC,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAE5DhH,IAAK,MAAM2E,IAAK,IAChB/K,IAAI,OAAOuB,IAAIwJ,IACflL,IAAI,OAAOkL,IAAIqC,IAER,CAAChH,GAAGpG,GAAGH,CAAC;AAChB;AAEA2X,EAAQ,IAAI,MAAM,SAAUiE,GAAK;AAChC,MAAI7c,IAAI6c,EAAI,CAAC,IAAI,KACb/Z,IAAI+Z,EAAI,CAAC,IAAI,KACbrV,IAAIqV,EAAI,CAAC,IAAI,KACbwB,GACAC,GACAC,GACA9B,GACAxY;AAEJ,MAAInB,MAAM;AACT,WAAAmB,IAAMuD,IAAI,KACH,CAACvD,GAAKA,GAAKA,CAAG;AAGtB,EAAIuD,IAAI,MACP8W,IAAK9W,KAAK,IAAI1E,KAEdwb,IAAK9W,IAAI1E,IAAI0E,IAAI1E,GAGlBub,IAAK,IAAI7W,IAAI8W,GAEb7B,IAAM,CAAC,GAAG,GAAG,CAAC;AACd,WAASpe,IAAI,GAAGA,IAAI,GAAGA;AACtB,IAAAkgB,IAAKve,IAAI,IAAI,IAAI,EAAE3B,IAAI,IACnBkgB,IAAK,KACRA,KAEGA,IAAK,KACRA,KAGG,IAAIA,IAAK,IACZta,IAAMoa,KAAMC,IAAKD,KAAM,IAAIE,IACjB,IAAIA,IAAK,IACnBta,IAAMqa,IACI,IAAIC,IAAK,IACnBta,IAAMoa,KAAMC,IAAKD,MAAO,IAAI,IAAIE,KAAM,IAEtCta,IAAMoa,GAGP5B,EAAIpe,CAAC,IAAI4F,IAAM;AAGhB,SAAOwY;AACR;AAEA7D,EAAQ,IAAI,MAAM,SAAUiE,GAAK;AAChC,MAAI7c,IAAI6c,EAAI,CAAC,GACT/Z,IAAI+Z,EAAI,CAAC,IAAI,KACbrV,IAAIqV,EAAI,CAAC,IAAI,KACb2B,IAAO1b,GACP2b,IAAO,KAAK,IAAIjX,GAAG,IAAI,GACvBkX,GACAhe;AAEJ,SAAA8G,KAAK,GACL1E,KAAM0E,KAAK,IAAKA,IAAI,IAAIA,GACxBgX,KAAQC,KAAQ,IAAIA,IAAO,IAAIA,GAC/B/d,KAAK8G,IAAI1E,KAAK,GACd4b,IAAKlX,MAAM,IAAK,IAAIgX,KAASC,IAAOD,KAAS,IAAI1b,KAAM0E,IAAI1E,IAEpD,CAAC9C,GAAG0e,IAAK,KAAKhe,IAAI,GAAG;AAC7B;AAEAkY,EAAQ,IAAI,MAAM,SAAU+F,GAAK;AAChC,MAAI3e,IAAI2e,EAAI,CAAC,IAAI,IACb7b,IAAI6b,EAAI,CAAC,IAAI,KACbje,IAAIie,EAAI,CAAC,IAAI,KACbC,IAAK,KAAK,MAAM5e,CAAC,IAAI,GAErBP,IAAIO,IAAI,KAAK,MAAMA,CAAC,GACpBgK,IAAI,MAAMtJ,KAAK,IAAIoC,IACnBsM,IAAI,MAAM1O,KAAK,IAAKoC,IAAIrD,IACxBF,IAAI,MAAMmB,KAAK,IAAKoC,KAAK,IAAIrD;AAGjC,UAFAiB,KAAK,KAEGke,GAAE;AAAA,IACT,KAAK;AACJ,aAAO,CAACle,GAAGnB,GAAGyK,CAAC;AAAA,IAChB,KAAK;AACJ,aAAO,CAACoF,GAAG1O,GAAGsJ,CAAC;AAAA,IAChB,KAAK;AACJ,aAAO,CAACA,GAAGtJ,GAAGnB,CAAC;AAAA,IAChB,KAAK;AACJ,aAAO,CAACyK,GAAGoF,GAAG1O,CAAC;AAAA,IAChB,KAAK;AACJ,aAAO,CAACnB,GAAGyK,GAAGtJ,CAAC;AAAA,IAChB,KAAK;AACJ,aAAO,CAACA,GAAGsJ,GAAGoF,CAAC;AAAA,EAChB;AACF;AAEAwJ,EAAQ,IAAI,MAAM,SAAU+F,GAAK;AAChC,MAAI3e,IAAI2e,EAAI,CAAC,GACT7b,IAAI6b,EAAI,CAAC,IAAI,KACbje,IAAIie,EAAI,CAAC,IAAI,KACbE,IAAO,KAAK,IAAIne,GAAG,IAAI,GACvB+d,GACAvV,GACA1B;AAEJ,SAAAA,KAAK,IAAI1E,KAAKpC,GACd+d,KAAQ,IAAI3b,KAAK+b,GACjB3V,IAAKpG,IAAI+b,GACT3V,KAAOuV,KAAQ,IAAKA,IAAO,IAAIA,GAC/BvV,IAAKA,KAAM,GACX1B,KAAK,GAEE,CAACxH,GAAGkJ,IAAK,KAAK1B,IAAI,GAAG;AAC7B;AAGAoR,EAAQ,IAAI,MAAM,SAAUmE,GAAK;AAChC,MAAI/c,IAAI+c,EAAI,CAAC,IAAI,KACb+B,IAAK/B,EAAI,CAAC,IAAI,KACdhT,IAAKgT,EAAI,CAAC,IAAI,KACdgC,IAAQD,IAAK/U,GACb,GACArJ,GACAjB,GACA1J;AAGJ,EAAIgpB,IAAQ,MACXD,KAAMC,GACNhV,KAAMgV,IAGP,IAAI,KAAK,MAAM,IAAI/e,CAAC,GACpBU,IAAI,IAAIqJ,GACRtK,IAAI,IAAIO,IAAI,GAEP,IAAI,MACRP,IAAI,IAAIA,IAGT1J,IAAI+oB,IAAKrf,KAAKiB,IAAIoe;AAElB,MAAI/b,GACAsH,GACApJ;AACJ,UAAQ,GAAC;AAAA,IACR;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAG,MAAA8B,IAAIrC,GAAG2J,IAAItU,GAAGkL,IAAI6d;AAAI;AAAA,IAC9B,KAAK;AAAG,MAAA/b,IAAIhN,GAAGsU,IAAI3J,GAAGO,IAAI6d;AAAI;AAAA,IAC9B,KAAK;AAAG,MAAA/b,IAAI+b,GAAIzU,IAAI3J,GAAGO,IAAIlL;AAAG;AAAA,IAC9B,KAAK;AAAG,MAAAgN,IAAI+b,GAAIzU,IAAItU,GAAGkL,IAAIP;AAAG;AAAA,IAC9B,KAAK;AAAG,MAAAqC,IAAIhN,GAAGsU,IAAIyU,GAAI7d,IAAIP;AAAG;AAAA,IAC9B,KAAK;AAAG,MAAAqC,IAAIrC,GAAG2J,IAAIyU,GAAI7d,IAAIlL;AAAG;AAAA,EAC9B;AAED,SAAO,CAACgN,IAAI,KAAKsH,IAAI,KAAKpJ,IAAI,GAAG;AAClC;AAEA2X,EAAQ,KAAK,MAAM,SAAUoG,GAAM;AAClC,MAAI9d,IAAI8d,EAAK,CAAC,IAAI,KACd9S,IAAI8S,EAAK,CAAC,IAAI,KACd7S,IAAI6S,EAAK,CAAC,IAAI,KACd5e,IAAI4e,EAAK,CAAC,IAAI,KACdjc,GACAsH,GACApJ;AAEJ,SAAA8B,IAAI,IAAI,KAAK,IAAI,GAAG7B,KAAK,IAAId,KAAKA,CAAC,GACnCiK,IAAI,IAAI,KAAK,IAAI,GAAG6B,KAAK,IAAI9L,KAAKA,CAAC,GACnCa,IAAI,IAAI,KAAK,IAAI,GAAGkL,KAAK,IAAI/L,KAAKA,CAAC,GAE5B,CAAC2C,IAAI,KAAKsH,IAAI,KAAKpJ,IAAI,GAAG;AAClC;AAEA2X,EAAQ,IAAI,MAAM,SAAUwF,GAAK;AAChC,MAAIzb,IAAIyb,EAAI,CAAC,IAAI,KACbjS,IAAIiS,EAAI,CAAC,IAAI,KACb5P,IAAI4P,EAAI,CAAC,IAAI,KACbrb,GACAsH,GACApJ;AAEJ,SAAA8B,IAAKJ,IAAI,SAAWwJ,IAAI,UAAYqC,IAAI,SACxCnE,IAAK1H,IAAI,UAAYwJ,IAAI,SAAWqC,IAAI,QACxCvN,IAAK0B,IAAI,SAAWwJ,IAAI,SAAYqC,IAAI,OAGxCzL,IAAIA,IAAI,WACH,QAAQ,KAAK,IAAIA,GAAG,IAAM,GAAG,IAAK,QACpCA,IAAI,OAEPsH,IAAIA,IAAI,WACH,QAAQ,KAAK,IAAIA,GAAG,IAAM,GAAG,IAAK,QACpCA,IAAI,OAEPpJ,IAAIA,IAAI,WACH,QAAQ,KAAK,IAAIA,GAAG,IAAM,GAAG,IAAK,QACpCA,IAAI,OAEP8B,IAAI,KAAK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAAG,CAAC,GAC9BsH,IAAI,KAAK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAAG,CAAC,GAC9BpJ,IAAI,KAAK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAAG,CAAC,GAEvB,CAAC8B,IAAI,KAAKsH,IAAI,KAAKpJ,IAAI,GAAG;AAClC;AAEA2X,EAAQ,IAAI,MAAM,SAAUwF,GAAK;AAChC,MAAIzb,IAAIyb,EAAI,CAAC,GACTjS,IAAIiS,EAAI,CAAC,GACT5P,IAAI4P,EAAI,CAAC,GACT5W,GACApG,GACAH;AAEJ,SAAA0B,KAAK,QACLwJ,KAAK,KACLqC,KAAK,SAEL7L,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAC5DwJ,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAC5DqC,IAAIA,IAAI,UAAW,KAAK,IAAIA,GAAG,IAAI,CAAC,IAAK,QAAQA,IAAM,KAAK,KAE5DhH,IAAK,MAAM2E,IAAK,IAChB/K,IAAI,OAAOuB,IAAIwJ,IACflL,IAAI,OAAOkL,IAAIqC,IAER,CAAChH,GAAGpG,GAAGH,CAAC;AAChB;AAEA2X,EAAQ,IAAI,MAAM,SAAUqG,GAAK;AAChC,MAAIzX,IAAIyX,EAAI,CAAC,GACT7d,IAAI6d,EAAI,CAAC,GACThe,IAAIge,EAAI,CAAC,GACTtc,GACAwJ,GACAqC;AAEJ,EAAArC,KAAK3E,IAAI,MAAM,KACf7E,IAAIvB,IAAI,MAAM+K,GACdqC,IAAIrC,IAAIlL,IAAI;AAEZ,MAAIie,IAAK,KAAK,IAAI/S,GAAG,CAAC,GAClBgT,IAAK,KAAK,IAAIxc,GAAG,CAAC,GAClByc,IAAK,KAAK,IAAI5Q,GAAG,CAAC;AACtB,SAAArC,IAAI+S,IAAK,UAAWA,KAAM/S,IAAI,KAAK,OAAO,OAC1CxJ,IAAIwc,IAAK,UAAWA,KAAMxc,IAAI,KAAK,OAAO,OAC1C6L,IAAI4Q,IAAK,UAAWA,KAAM5Q,IAAI,KAAK,OAAO,OAE1C7L,KAAK,QACLwJ,KAAK,KACLqC,KAAK,SAEE,CAAC7L,GAAGwJ,GAAGqC,CAAC;AAChB;AAEAoK,EAAQ,IAAI,MAAM,SAAUqG,GAAK;AAChC,MAAIzX,IAAIyX,EAAI,CAAC,GACT7d,IAAI6d,EAAI,CAAC,GACThe,IAAIge,EAAI,CAAC,GACTI,GACArf,GACAkB;AAEJ,SAAAme,IAAK,KAAK,MAAMpe,GAAGG,CAAC,GACpBpB,IAAIqf,IAAK,MAAM,IAAI,KAAK,IAEpBrf,IAAI,MACPA,KAAK,MAGNkB,IAAI,KAAK,KAAKE,IAAIA,IAAIH,IAAIA,CAAC,GAEpB,CAACuG,GAAGtG,GAAGlB,CAAC;AAChB;AAEA4Y,EAAQ,IAAI,MAAM,SAAU0G,GAAK;AAChC,MAAI9X,IAAI8X,EAAI,CAAC,GACTpe,IAAIoe,EAAI,CAAC,GACTtf,IAAIsf,EAAI,CAAC,GACTle,GACAH,GACAoe;AAEJ,SAAAA,IAAKrf,IAAI,MAAM,IAAI,KAAK,IACxBoB,IAAIF,IAAI,KAAK,IAAIme,CAAE,GACnBpe,IAAIC,IAAI,KAAK,IAAIme,CAAE,GAEZ,CAAC7X,GAAGpG,GAAGH,CAAC;AAChB;AAEA2X,EAAQ,IAAI,SAAS,SAAU1lB,GAAM;AACpC,MAAI6P,IAAI7P,EAAK,CAAC,GACVmX,IAAInX,EAAK,CAAC,GACV+N,IAAI/N,EAAK,CAAC,GACVnE,IAAQ,KAAK,YAAY,UAAU,CAAC,IAAI6pB,EAAQ,IAAI,IAAI1lB,CAAI,EAAE,CAAC;AAInE,MAFAnE,IAAQ,KAAK,MAAMA,IAAQ,EAAE,GAEzBA,MAAU;AACb,WAAO;AAGR,MAAIwwB,IAAO,MACN,KAAK,MAAMte,IAAI,GAAG,KAAK,IACxB,KAAK,MAAMoJ,IAAI,GAAG,KAAK,IACxB,KAAK,MAAMtH,IAAI,GAAG;AAErB,SAAIhU,MAAU,MACbwwB,KAAQ,KAGFA;AACR;AAEA3G,EAAQ,IAAI,SAAS,SAAU1lB,GAAM;AAGpC,SAAO0lB,EAAQ,IAAI,OAAOA,EAAQ,IAAI,IAAI1lB,CAAI,GAAGA,EAAK,CAAC,CAAC;AACzD;AAEA0lB,EAAQ,IAAI,UAAU,SAAU1lB,GAAM;AACrC,MAAI6P,IAAI7P,EAAK,CAAC,GACVmX,IAAInX,EAAK,CAAC,GACV+N,IAAI/N,EAAK,CAAC;AAId,MAAI6P,MAAMsH,KAAKA,MAAMpJ;AACpB,WAAI8B,IAAI,IACA,KAGJA,IAAI,MACA,MAGD,KAAK,OAAQA,IAAI,KAAK,MAAO,EAAE,IAAI;AAG3C,MAAIwc,IAAO,KACP,KAAK,KAAK,MAAMxc,IAAI,MAAM,CAAC,IAC3B,IAAI,KAAK,MAAMsH,IAAI,MAAM,CAAC,IAC3B,KAAK,MAAMpJ,IAAI,MAAM,CAAC;AAEzB,SAAOse;AACR;AAEA3G,EAAQ,OAAO,MAAM,SAAU1lB,GAAM;AACpC,MAAIssB,IAAQtsB,IAAO;AAGnB,MAAIssB,MAAU,KAAKA,MAAU;AAC5B,WAAItsB,IAAO,OACVssB,KAAS,MAGVA,IAAQA,IAAQ,OAAO,KAEhB,CAACA,GAAOA,GAAOA,CAAK;AAG5B,MAAIC,KAAQ,CAAC,EAAEvsB,IAAO,MAAM,KAAK,KAC7B,KAAMssB,IAAQ,KAAKC,IAAQ,KAC3BpV,KAAOmV,KAAS,IAAK,KAAKC,IAAQ,KAClCxe,KAAOue,KAAS,IAAK,KAAKC,IAAQ;AAEtC,SAAO,CAAC,GAAGpV,GAAGpJ,CAAC;AAChB;AAEA2X,EAAQ,QAAQ,MAAM,SAAU1lB,GAAM;AAErC,MAAIA,KAAQ,KAAK;AAChB,QAAIgO,KAAKhO,IAAO,OAAO,KAAK;AAC5B,WAAO,CAACgO,GAAGA,GAAGA,CAAC;AAAA,EACf;AAED,EAAAhO,KAAQ;AAER,MAAIwsB,GACA,IAAI,KAAK,MAAMxsB,IAAO,EAAE,IAAI,IAAI,KAChCmX,IAAI,KAAK,OAAOqV,IAAMxsB,IAAO,MAAM,CAAC,IAAI,IAAI,KAC5C+N,IAAKye,IAAM,IAAK,IAAI;AAExB,SAAO,CAAC,GAAGrV,GAAGpJ,CAAC;AAChB;AAEA2X,EAAQ,IAAI,MAAM,SAAU1lB,GAAM;AACjC,MAAI6R,MAAY,KAAK,MAAM7R,EAAK,CAAC,CAAC,IAAI,QAAS,QAC1C,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,QAAS,MAChC,KAAK,MAAMA,EAAK,CAAC,CAAC,IAAI,MAEtB3C,IAASwU,EAAQ,SAAS,EAAE,EAAE,YAAW;AAC7C,SAAO,SAAS,UAAUxU,EAAO,MAAM,IAAIA;AAC5C;AAEAqoB,EAAQ,IAAI,MAAM,SAAU1lB,GAAM;AACjC,MAAIylB,IAAQzlB,EAAK,SAAS,EAAE,EAAE,MAAM,0BAA0B;AAC9D,MAAI,CAACylB;AACJ,WAAO,CAAC,GAAG,GAAG,CAAC;AAGhB,MAAIgH,IAAchH,EAAM,CAAC;AAEzB,EAAIA,EAAM,CAAC,EAAE,WAAW,MACvBgH,IAAcA,EAAY,MAAM,EAAE,EAAE,IAAI,SAAUC,GAAM;AACvD,WAAOA,IAAOA;AAAA,EACjB,CAAG,EAAE,KAAK,EAAE;AAGX,MAAI7a,IAAU,SAAS4a,GAAa,EAAE,GAClC5c,IAAKgC,KAAW,KAAM,KACtBsF,IAAKtF,KAAW,IAAK,KACrB9D,IAAI8D,IAAU;AAElB,SAAO,CAAChC,GAAGsH,GAAGpJ,CAAC;AAChB;AAEA2X,EAAQ,IAAI,MAAM,SAAU6D,GAAK;AAChC,MAAI1Z,IAAI0Z,EAAI,CAAC,IAAI,KACbpS,IAAIoS,EAAI,CAAC,IAAI,KACbxb,IAAIwb,EAAI,CAAC,IAAI,KACbxX,IAAM,KAAK,IAAI,KAAK,IAAIlC,GAAGsH,CAAC,GAAGpJ,CAAC,GAChC+D,IAAM,KAAK,IAAI,KAAK,IAAIjC,GAAGsH,CAAC,GAAGpJ,CAAC,GAChC4e,IAAU5a,IAAMD,GAChB8a,GACAC;AAEJ,SAAIF,IAAS,IACZC,IAAY9a,KAAO,IAAI6a,KAEvBC,IAAY,GAGTD,KAAU,IACbE,IAAM,IAEH9a,MAAQlC,IACXgd,KAAQ1V,IAAIpJ,KAAK4e,IAAU,IAExB5a,MAAQoF,IACX0V,IAAM,KAAK9e,IAAI8B,KAAK8c,IAEpBE,IAAM,KAAKhd,IAAIsH,KAAKwV,IAAS,GAG9BE,KAAO,GACPA,KAAO,GAEA,CAACA,IAAM,KAAKF,IAAS,KAAKC,IAAY,GAAG;AACjD;AAEAlH,EAAQ,IAAI,MAAM,SAAUiE,GAAK;AAChC,MAAI/Z,IAAI+Z,EAAI,CAAC,IAAI,KACbrV,IAAIqV,EAAI,CAAC,IAAI,KACb3b,IAAI,GACJzB,IAAI;AAER,SAAI+H,IAAI,MACPtG,IAAI,IAAM4B,IAAI0E,IAEdtG,IAAI,IAAM4B,KAAK,IAAM0E,IAGlBtG,IAAI,MACPzB,KAAK+H,IAAI,MAAMtG,MAAM,IAAMA,KAGrB,CAAC2b,EAAI,CAAC,GAAG3b,IAAI,KAAKzB,IAAI,GAAG;AACjC;AAEAmZ,EAAQ,IAAI,MAAM,SAAU+F,GAAK;AAChC,MAAI7b,IAAI6b,EAAI,CAAC,IAAI,KACbje,IAAIie,EAAI,CAAC,IAAI,KAEbzd,IAAI4B,IAAIpC,GACRjB,IAAI;AAER,SAAIyB,IAAI,MACPzB,KAAKiB,IAAIQ,MAAM,IAAIA,KAGb,CAACyd,EAAI,CAAC,GAAGzd,IAAI,KAAKzB,IAAI,GAAG;AACjC;AAEAmZ,EAAQ,IAAI,MAAM,SAAUoH,GAAK;AAChC,MAAIhgB,IAAIggB,EAAI,CAAC,IAAI,KACb9e,IAAI8e,EAAI,CAAC,IAAI,KACb3V,IAAI2V,EAAI,CAAC,IAAI;AAEjB,MAAI9e,MAAM;AACT,WAAO,CAACmJ,IAAI,KAAKA,IAAI,KAAKA,IAAI,GAAG;AAGlC,MAAI4V,IAAO,CAAC,GAAG,GAAG,CAAC,GACfrB,IAAM5e,IAAI,IAAK,GACfU,IAAIke,IAAK,GACT9d,IAAI,IAAIJ,GACRwf,IAAK;AAET,UAAQ,KAAK,MAAMtB,CAAE,GAAC;AAAA,IACrB,KAAK;AACJ,MAAAqB,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAIvf,GAAGuf,EAAK,CAAC,IAAI;AAAG;AAAA,IACxC,KAAK;AACJ,MAAAA,EAAK,CAAC,IAAInf,GAAGmf,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAI;AAAG;AAAA,IACxC,KAAK;AACJ,MAAAA,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAIvf;AAAG;AAAA,IACxC,KAAK;AACJ,MAAAuf,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAInf,GAAGmf,EAAK,CAAC,IAAI;AAAG;AAAA,IACxC,KAAK;AACJ,MAAAA,EAAK,CAAC,IAAIvf,GAAGuf,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAI;AAAG;AAAA,IACxC;AACC,MAAAA,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAI,GAAGA,EAAK,CAAC,IAAInf;AAAA,EACrC;AAED,SAAAof,KAAM,IAAMhf,KAAKmJ,GAEV;AAAA,KACLnJ,IAAI+e,EAAK,CAAC,IAAIC,KAAM;AAAA,KACpBhf,IAAI+e,EAAK,CAAC,IAAIC,KAAM;AAAA,KACpBhf,IAAI+e,EAAK,CAAC,IAAIC,KAAM;AAAA,EACvB;AACA;AAEAtH,EAAQ,IAAI,MAAM,SAAUoH,GAAK;AAChC,MAAI9e,IAAI8e,EAAI,CAAC,IAAI,KACb3V,IAAI2V,EAAI,CAAC,IAAI,KAEbtf,IAAIQ,IAAImJ,KAAK,IAAMnJ,IACnBzB,IAAI;AAER,SAAIiB,IAAI,MACPjB,IAAIyB,IAAIR,IAGF,CAACsf,EAAI,CAAC,GAAGvgB,IAAI,KAAKiB,IAAI,GAAG;AACjC;AAEAkY,EAAQ,IAAI,MAAM,SAAUoH,GAAK;AAChC,MAAI9e,IAAI8e,EAAI,CAAC,IAAI,KACb3V,IAAI2V,EAAI,CAAC,IAAI,KAEbxY,IAAI6C,KAAK,IAAMnJ,KAAK,MAAMA,GAC1B4B,IAAI;AAER,SAAI0E,IAAI,KAAOA,IAAI,MAClB1E,IAAI5B,KAAK,IAAIsG,KAEVA,KAAK,OAAOA,IAAI,MACnB1E,IAAI5B,KAAK,KAAK,IAAIsG,MAGZ,CAACwY,EAAI,CAAC,GAAGld,IAAI,KAAK0E,IAAI,GAAG;AACjC;AAEAoR,EAAQ,IAAI,MAAM,SAAUoH,GAAK;AAChC,MAAI9e,IAAI8e,EAAI,CAAC,IAAI,KACb3V,IAAI2V,EAAI,CAAC,IAAI,KACbtf,IAAIQ,IAAImJ,KAAK,IAAMnJ;AACvB,SAAO,CAAC8e,EAAI,CAAC,IAAItf,IAAIQ,KAAK,MAAM,IAAIR,KAAK,GAAG;AAC7C;AAEAkY,EAAQ,IAAI,MAAM,SAAUmE,GAAK;AAChC,MAAIjc,IAAIic,EAAI,CAAC,IAAI,KACb9b,IAAI8b,EAAI,CAAC,IAAI,KACbrc,IAAI,IAAIO,GACRC,IAAIR,IAAII,GACRuJ,IAAI;AAER,SAAInJ,IAAI,MACPmJ,KAAK3J,IAAIQ,MAAM,IAAIA,KAGb,CAAC6b,EAAI,CAAC,GAAG7b,IAAI,KAAKmJ,IAAI,GAAG;AACjC;AAEAuO,EAAQ,MAAM,MAAM,SAAUuH,GAAO;AACpC,SAAO,CAAEA,EAAM,CAAC,IAAI,QAAS,KAAMA,EAAM,CAAC,IAAI,QAAS,KAAMA,EAAM,CAAC,IAAI,QAAS,GAAG;AACrF;AAEAvH,EAAQ,IAAI,QAAQ,SAAU6D,GAAK;AAClC,SAAO,CAAEA,EAAI,CAAC,IAAI,MAAO,OAAQA,EAAI,CAAC,IAAI,MAAO,OAAQA,EAAI,CAAC,IAAI,MAAO,KAAK;AAC/E;AAEA7D,EAAQ,KAAK,MAAM,SAAU1lB,GAAM;AAClC,SAAO,CAACA,EAAK,CAAC,IAAI,MAAM,KAAKA,EAAK,CAAC,IAAI,MAAM,KAAKA,EAAK,CAAC,IAAI,MAAM,GAAG;AACtE;AAEA0lB,EAAQ,KAAK,MAAMA,EAAQ,KAAK,MAAM,SAAU1lB,GAAM;AACrD,SAAO,CAAC,GAAG,GAAGA,EAAK,CAAC,CAAC;AACtB;AAEA0lB,EAAQ,KAAK,MAAM,SAAUwH,GAAM;AAClC,SAAO,CAAC,GAAG,KAAKA,EAAK,CAAC,CAAC;AACxB;AAEAxH,EAAQ,KAAK,OAAO,SAAUwH,GAAM;AACnC,SAAO,CAAC,GAAG,GAAG,GAAGA,EAAK,CAAC,CAAC;AACzB;AAEAxH,EAAQ,KAAK,MAAM,SAAUwH,GAAM;AAClC,SAAO,CAACA,EAAK,CAAC,GAAG,GAAG,CAAC;AACtB;AAEAxH,EAAQ,KAAK,MAAM,SAAUwH,GAAM;AAClC,MAAInc,IAAM,KAAK,MAAMmc,EAAK,CAAC,IAAI,MAAM,GAAG,IAAI,KACxCrb,KAAWd,KAAO,OAAOA,KAAO,KAAKA,GAErC1T,IAASwU,EAAQ,SAAS,EAAE,EAAE,YAAW;AAC7C,SAAO,SAAS,UAAUxU,EAAO,MAAM,IAAIA;AAC5C;AAEAqoB,EAAQ,IAAI,OAAO,SAAU6D,GAAK;AACjC,MAAIxY,KAAOwY,EAAI,CAAC,IAAIA,EAAI,CAAC,IAAIA,EAAI,CAAC,KAAK;AACvC,SAAO,CAACxY,IAAM,MAAM,GAAG;AACxB;qBCn2BIoc,KAAc9E;AAalB,SAAS+E,KAAa;AAKrB,WAJIC,IAAQ,CAAA,GAERC,IAAS,OAAO,KAAKH,EAAW,GAE3BxZ,IAAM2Z,EAAO,QAAQniB,IAAI,GAAGA,IAAIwI,GAAKxI;AAC7C,IAAAkiB,EAAMC,EAAOniB,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA,MAGlB,UAAU;AAAA,MACV,QAAQ;AAAA,IACX;AAGC,SAAOkiB;AACR;AAGA,SAASE,GAAUC,GAAW;AAC7B,MAAIH,IAAQD,MACRK,IAAQ,CAACD,CAAS;AAItB,OAFAH,EAAMG,CAAS,EAAE,WAAW,GAErBC,EAAM;AAIZ,aAHIC,IAAUD,EAAM,OAChBE,IAAY,OAAO,KAAKR,GAAYO,CAAO,CAAC,GAEvC/Z,IAAMga,EAAU,QAAQxiB,IAAI,GAAGA,IAAIwI,GAAKxI,KAAK;AACrD,UAAIyiB,IAAWD,EAAUxiB,CAAC,GACtBwW,IAAO0L,EAAMO,CAAQ;AAEzB,MAAIjM,EAAK,aAAa,OACrBA,EAAK,WAAW0L,EAAMK,CAAO,EAAE,WAAW,GAC1C/L,EAAK,SAAS+L,GACdD,EAAM,QAAQG,CAAQ;AAAA,IAEvB;AAGF,SAAOP;AACR;AAEA,SAASQ,GAAKpM,GAAMC,GAAI;AACvB,SAAO,SAAU1hB,GAAM;AACtB,WAAO0hB,EAAGD,EAAKzhB,CAAI,CAAC;AAAA,EACtB;AACA;AAEA,SAAS8tB,GAAeC,GAASV,GAAO;AAKvC,WAJIla,IAAO,CAACka,EAAMU,CAAO,EAAE,QAAQA,CAAO,GACtC1iB,IAAK8hB,GAAYE,EAAMU,CAAO,EAAE,MAAM,EAAEA,CAAO,GAE/Cva,IAAM6Z,EAAMU,CAAO,EAAE,QAClBV,EAAM7Z,CAAG,EAAE;AACjB,IAAAL,EAAK,QAAQka,EAAM7Z,CAAG,EAAE,MAAM,GAC9BnI,IAAKwiB,GAAKV,GAAYE,EAAM7Z,CAAG,EAAE,MAAM,EAAEA,CAAG,GAAGnI,CAAE,GACjDmI,IAAM6Z,EAAM7Z,CAAG,EAAE;AAGlB,SAAAnI,EAAG,aAAa8H,GACT9H;AACR;IAEA2iB,KAAiB,SAAUR,GAAW;AAKrC,WAJIH,IAAQE,GAAUC,CAAS,GAC3BS,IAAa,CAAA,GAEbX,IAAS,OAAO,KAAKD,CAAK,GACrB1Z,IAAM2Z,EAAO,QAAQ,IAAI,GAAG,IAAI3Z,GAAK,KAAK;AAClD,QAAIoa,IAAUT,EAAO,CAAC,GAClB3L,IAAO0L,EAAMU,CAAO;AAExB,IAAIpM,EAAK,WAAW,SAKpBsM,EAAWF,CAAO,IAAID,GAAeC,GAASV,CAAK;AAAA,EACnD;AAED,SAAOY;AACR,GC/FId,KAAc9E,IACd2F,KAAQpF,IAERlD,KAAU,CAAA,GAEV4H,KAAS,OAAO,KAAKH,EAAW;AAEpC,SAASe,GAAQ7iB,GAAI;AACpB,MAAI8iB,IAAY,SAAUnuB,GAAM;AAC/B,WAA0BA,KAAS,OAC3BA,KAGJ,UAAU,SAAS,MACtBA,IAAO,MAAM,UAAU,MAAM,KAAK,SAAS,IAGrCqL,EAAGrL,CAAI;AAAA,EAChB;AAGC,SAAI,gBAAgBqL,MACnB8iB,EAAU,aAAa9iB,EAAG,aAGpB8iB;AACR;AAEA,SAASC,GAAY/iB,GAAI;AACxB,MAAI8iB,IAAY,SAAUnuB,GAAM;AAC/B,QAA0BA,KAAS;AAClC,aAAOA;AAGR,IAAI,UAAU,SAAS,MACtBA,IAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAG5C,QAAI/D,IAASoP,EAAGrL,CAAI;AAKpB,QAAI,OAAO/D,KAAW;AACrB,eAAS0X,IAAM1X,EAAO,QAAQ,IAAI,GAAG,IAAI0X,GAAK;AAC7C,QAAA1X,EAAO,CAAC,IAAI,KAAK,MAAMA,EAAO,CAAC,CAAC;AAIlC,WAAOA;AAAA,EACT;AAGC,SAAI,gBAAgBoP,MACnB8iB,EAAU,aAAa9iB,EAAG,aAGpB8iB;AACR;AAEAb,GAAO,QAAQ,SAAUE,GAAW;AACnC9H,EAAAA,GAAQ8H,CAAS,IAAI,IAErB,OAAO,eAAe9H,GAAQ8H,CAAS,GAAG,YAAY,EAAC,OAAOL,GAAYK,CAAS,EAAE,SAAQ,CAAC,GAC9F,OAAO,eAAe9H,GAAQ8H,CAAS,GAAG,UAAU,EAAC,OAAOL,GAAYK,CAAS,EAAE,OAAM,CAAC;AAE1F,MAAIa,IAASL,GAAMR,CAAS,GACxBc,IAAc,OAAO,KAAKD,CAAM;AAEpC,EAAAC,EAAY,QAAQ,SAAUP,GAAS;AACtC,QAAI1iB,IAAKgjB,EAAON,CAAO;AAEvBrI,IAAAA,GAAQ8H,CAAS,EAAEO,CAAO,IAAIK,GAAY/iB,CAAE,GAC5Cqa,GAAQ8H,CAAS,EAAEO,CAAO,EAAE,MAAMG,GAAQ7iB,CAAE;AAAA,EAC9C,CAAE;AACF,CAAC;AAED,IAAAkjB,KAAiB7I,IC3Eb+G,KAAcpE,IACd3C,IAAUkD,IAEV4F,KAAS,CAAE,EAAC,OAEZC,KAAgB;AAAA;AAAA,EAEnB;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AACD,GAEIC,KAAkB,CAAA;AACtB,OAAO,KAAKhJ,CAAO,EAAE,QAAQ,SAAUuD,GAAO;AAC7C,EAAAyF,GAAgBF,GAAO,KAAK9I,EAAQuD,CAAK,EAAE,MAAM,EAAE,KAAM,EAAC,KAAK,EAAE,CAAC,IAAIA;AACvE,CAAC;AAED,IAAI0F,KAAW,CAAA;AAEf,SAASC,EAAMhkB,GAAKqe,GAAO;AAC1B,MAAI,EAAE,gBAAgB2F;AACrB,WAAO,IAAIA,EAAMhkB,GAAKqe,CAAK;AAO5B,MAJIA,KAASA,KAASwF,OACrBxF,IAAQ,OAGLA,KAAS,EAAEA,KAASvD;AACvB,UAAM,IAAI,MAAM,oBAAoBuD,CAAK;AAG1C,MAAI9d,GACAkf;AAEJ,MAAIzf,KAAO;AACV,SAAK,QAAQ,OACb,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,GACrB,KAAK,SAAS;AAAA,WACJA,aAAegkB;AACzB,SAAK,QAAQhkB,EAAI,OACjB,KAAK,QAAQA,EAAI,MAAM,MAAK,GAC5B,KAAK,SAASA,EAAI;AAAA,WACR,OAAOA,KAAQ,UAAU;AACnC,QAAI3O,IAASwwB,GAAY,IAAI7hB,CAAG;AAChC,QAAI3O,MAAW;AACd,YAAM,IAAI,MAAM,wCAAwC2O,CAAG;AAG5D,SAAK,QAAQ3O,EAAO,OACpBouB,IAAW3E,EAAQ,KAAK,KAAK,EAAE,UAC/B,KAAK,QAAQzpB,EAAO,MAAM,MAAM,GAAGouB,CAAQ,GAC3C,KAAK,SAAS,OAAOpuB,EAAO,MAAMouB,CAAQ,KAAM,WAAWpuB,EAAO,MAAMouB,CAAQ,IAAI;AAAA,EACtF,WAAYzf,EAAI,QAAQ;AACtB,SAAK,QAAQqe,KAAS,OACtBoB,IAAW3E,EAAQ,KAAK,KAAK,EAAE;AAC/B,QAAImJ,IAASL,GAAO,KAAK5jB,GAAK,GAAGyf,CAAQ;AACzC,SAAK,QAAQyE,GAAUD,GAAQxE,CAAQ,GACvC,KAAK,SAAS,OAAOzf,EAAIyf,CAAQ,KAAM,WAAWzf,EAAIyf,CAAQ,IAAI;AAAA,EACpE,WAAY,OAAOzf,KAAQ;AAEzB,IAAAA,KAAO,UACP,KAAK,QAAQ,OACb,KAAK,QAAQ;AAAA,MACXA,KAAO,KAAM;AAAA,MACbA,KAAO,IAAK;AAAA,MACbA,IAAM;AAAA,IACT,GACE,KAAK,SAAS;AAAA,OACR;AACN,SAAK,SAAS;AAEd,QAAI1E,IAAO,OAAO,KAAK0E,CAAG;AAC1B,IAAI,WAAWA,MACd1E,EAAK,OAAOA,EAAK,QAAQ,OAAO,GAAG,CAAC,GACpC,KAAK,SAAS,OAAO0E,EAAI,SAAU,WAAWA,EAAI,QAAQ;AAG3D,QAAImkB,IAAa7oB,EAAK,KAAM,EAAC,KAAK,EAAE;AACpC,QAAI,EAAE6oB,KAAcL;AACnB,YAAM,IAAI,MAAM,wCAAwC,KAAK,UAAU9jB,CAAG,CAAC;AAG5E,SAAK,QAAQ8jB,GAAgBK,CAAU;AAEvC,QAAIzE,IAAS5E,EAAQ,KAAK,KAAK,EAAE,QAC7B4G,IAAQ,CAAA;AACZ,SAAKnhB,IAAI,GAAGA,IAAImf,EAAO,QAAQnf;AAC9B,MAAAmhB,EAAM,KAAK1hB,EAAI0f,EAAOnf,CAAC,CAAC,CAAC;AAG1B,SAAK,QAAQ2jB,GAAUxC,CAAK;AAAA,EAC5B;AAGD,MAAIqC,GAAS,KAAK,KAAK;AAEtB,SADAtE,IAAW3E,EAAQ,KAAK,KAAK,EAAE,UAC1Bva,IAAI,GAAGA,IAAIkf,GAAUlf,KAAK;AAC9B,UAAI0C,IAAQ8gB,GAAS,KAAK,KAAK,EAAExjB,CAAC;AAClC,MAAI0C,MACH,KAAK,MAAM1C,CAAC,IAAI0C,EAAM,KAAK,MAAM1C,CAAC,CAAC;AAAA,IAEpC;AAGF,OAAK,SAAS,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,GAE9C,OAAO,UACV,OAAO,OAAO,IAAI;AAEpB;AAEAyjB,EAAM,YAAY;AAAA,EACjB,UAAU,WAAY;AACrB,WAAO,KAAK;EACZ;AAAA,EAED,QAAQ,WAAY;AACnB,WAAO,KAAK,KAAK,KAAK;EACtB;AAAA,EAED,QAAQ,SAAUI,GAAQ;AACzB,QAAIC,IAAO,KAAK,SAASxC,GAAY,KAAK,OAAO,KAAK;AACtD,IAAAwC,IAAOA,EAAK,MAAM,OAAOD,KAAW,WAAWA,IAAS,CAAC;AACzD,QAAIhvB,IAAOivB,EAAK,WAAW,IAAIA,EAAK,QAAQA,EAAK,MAAM,OAAO,KAAK,MAAM;AACzE,WAAOxC,GAAY,GAAGwC,EAAK,KAAK,EAAEjvB,CAAI;AAAA,EACtC;AAAA,EAED,eAAe,SAAUgvB,GAAQ;AAChC,QAAIC,IAAO,KAAK,MAAM,MAAM,OAAOD,KAAW,WAAWA,IAAS,CAAC,GAC/DhvB,IAAOivB,EAAK,WAAW,IAAIA,EAAK,QAAQA,EAAK,MAAM,OAAO,KAAK,MAAM;AACzE,WAAOxC,GAAY,GAAG,IAAI,QAAQzsB,CAAI;AAAA,EACtC;AAAA,EAED,OAAO,WAAY;AAClB,WAAO,KAAK,WAAW,IAAI,KAAK,MAAM,UAAU,KAAK,MAAM,OAAO,KAAK,MAAM;AAAA,EAC7E;AAAA,EAED,QAAQ,WAAY;AAKnB,aAJI/D,IAAS,CAAA,GACTouB,IAAW3E,EAAQ,KAAK,KAAK,EAAE,UAC/B4E,IAAS5E,EAAQ,KAAK,KAAK,EAAE,QAExBva,IAAI,GAAGA,IAAIkf,GAAUlf;AAC7B,MAAAlP,EAAOquB,EAAOnf,CAAC,CAAC,IAAI,KAAK,MAAMA,CAAC;AAGjC,WAAI,KAAK,WAAW,MACnBlP,EAAO,QAAQ,KAAK,SAGdA;AAAA,EACP;AAAA,EAED,WAAW,WAAY;AACtB,QAAIstB,IAAM,KAAK,IAAG,EAAG;AACrB,WAAAA,EAAI,CAAC,KAAK,KACVA,EAAI,CAAC,KAAK,KACVA,EAAI,CAAC,KAAK,KAEN,KAAK,WAAW,KACnBA,EAAI,KAAK,KAAK,MAAM,GAGdA;AAAA,EACP;AAAA,EAED,YAAY,WAAY;AACvB,QAAIA,IAAM,KAAK,IAAK,EAAC,OAAM;AAC3B,WAAAA,EAAI,KAAK,KACTA,EAAI,KAAK,KACTA,EAAI,KAAK,KAEL,KAAK,WAAW,MACnBA,EAAI,QAAQ,KAAK,SAGXA;AAAA,EACP;AAAA,EAED,OAAO,SAAUyF,GAAQ;AACxB,WAAAA,IAAS,KAAK,IAAIA,KAAU,GAAG,CAAC,GACzB,IAAIJ,EAAM,KAAK,MAAM,IAAIM,GAAaF,CAAM,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,KAAK,KAAK;AAAA,EACrF;AAAA,EAED,OAAO,SAAUje,GAAK;AACrB,WAAI,UAAU,SACN,IAAI6d,EAAM,KAAK,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG7d,CAAG,CAAC,CAAC,GAAG,KAAK,KAAK,IAGvE,KAAK;AAAA,EACZ;AAAA;AAAA,EAGD,KAAKoe,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAChC,OAAOD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAClC,MAAMD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAEjC,KAAKD,EAAO,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,GAAG,SAAUpe,GAAK;AAAE,YAASA,IAAM,MAAO,OAAO;AAAA,GAAM;AAAA;AAAA,EAExG,aAAaoe,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EACxC,WAAWD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAEtC,aAAaD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EACxC,OAAOD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAElC,QAAQD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EACnC,MAAMD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAEjC,OAAOD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAClC,QAAQD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAEnC,MAAMD,EAAO,QAAQ,GAAGC,EAAM,GAAG,CAAC;AAAA,EAClC,SAASD,EAAO,QAAQ,GAAGC,EAAM,GAAG,CAAC;AAAA,EACrC,QAAQD,EAAO,QAAQ,GAAGC,EAAM,GAAG,CAAC;AAAA,EACpC,OAAOD,EAAO,QAAQ,GAAGC,EAAM,GAAG,CAAC;AAAA,EAEnC,GAAGD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAC9B,GAAGD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAC9B,GAAGD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAE9B,GAAGD,EAAO,OAAO,GAAGC,EAAM,GAAG,CAAC;AAAA,EAC9B,GAAGD,EAAO,OAAO,CAAC;AAAA,EAClB,GAAGA,EAAO,OAAO,CAAC;AAAA,EAElB,SAAS,SAAUpe,GAAK;AACvB,WAAI,UAAU,SACN,IAAI6d,EAAM7d,CAAG,IAGd2U,EAAQ,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK;AAAA,EAC7C;AAAA,EAED,KAAK,SAAU3U,GAAK;AACnB,WAAI,UAAU,SACN,IAAI6d,EAAM7d,CAAG,IAGd0b,GAAY,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAAA,EAClD;AAAA,EAED,WAAW,WAAY;AACtB,QAAIlD,IAAM,KAAK,IAAG,EAAG;AACrB,YAASA,EAAI,CAAC,IAAI,QAAS,MAAQA,EAAI,CAAC,IAAI,QAAS,IAAMA,EAAI,CAAC,IAAI;AAAA,EACpE;AAAA,EAED,YAAY,WAAY;AAKvB,aAHIA,IAAM,KAAK,IAAG,EAAG,OAEjB8F,IAAM,CAAA,GACDlkB,IAAI,GAAGA,IAAIoe,EAAI,QAAQpe,KAAK;AACpC,UAAImkB,IAAO/F,EAAIpe,CAAC,IAAI;AACpB,MAAAkkB,EAAIlkB,CAAC,IAAKmkB,KAAQ,UAAWA,IAAO,QAAQ,KAAK,KAAMA,IAAO,SAAS,OAAQ,GAAG;AAAA,IAClF;AAED,WAAO,SAASD,EAAI,CAAC,IAAI,SAASA,EAAI,CAAC,IAAI,SAASA,EAAI,CAAC;AAAA,EACzD;AAAA,EAED,UAAU,SAAUE,GAAQ;AAE3B,QAAIC,IAAO,KAAK,cACZC,IAAOF,EAAO;AAElB,WAAIC,IAAOC,KACFD,IAAO,SAASC,IAAO,SAGxBA,IAAO,SAASD,IAAO;AAAA,EAC/B;AAAA,EAED,OAAO,SAAUD,GAAQ;AACxB,QAAIG,IAAgB,KAAK,SAASH,CAAM;AACxC,WAAIG,KAAiB,MACb,QAGAA,KAAiB,MAAO,OAAO;AAAA,EACvC;AAAA,EAED,QAAQ,WAAY;AAEnB,QAAInG,IAAM,KAAK,IAAG,EAAG,OACjBoG,KAAOpG,EAAI,CAAC,IAAI,MAAMA,EAAI,CAAC,IAAI,MAAMA,EAAI,CAAC,IAAI,OAAO;AACzD,WAAOoG,IAAM;AAAA,EACb;AAAA,EAED,SAAS,WAAY;AACpB,WAAO,CAAC,KAAK;EACb;AAAA,EAED,QAAQ,WAAY;AAEnB,aADIpG,IAAM,KAAK,OACNpe,IAAI,GAAGA,IAAI,GAAGA;AACtB,MAAAoe,EAAI,MAAMpe,CAAC,IAAI,MAAMoe,EAAI,MAAMpe,CAAC;AAEjC,WAAOoe;AAAA,EACP;AAAA,EAED,SAAS,SAAUsC,GAAO;AACzB,QAAIlC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIkC,GACxBlC;AAAA,EACP;AAAA,EAED,QAAQ,SAAUkC,GAAO;AACxB,QAAIlC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIkC,GACxBlC;AAAA,EACP;AAAA,EAED,UAAU,SAAUkC,GAAO;AAC1B,QAAIlC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIkC,GACxBlC;AAAA,EACP;AAAA,EAED,YAAY,SAAUkC,GAAO;AAC5B,QAAIlC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIkC,GACxBlC;AAAA,EACP;AAAA,EAED,QAAQ,SAAUkC,GAAO;AACxB,QAAIhC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIgC,GACxBhC;AAAA,EACP;AAAA,EAED,SAAS,SAAUgC,GAAO;AACzB,QAAIhC,IAAM,KAAK;AACf,WAAAA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,IAAIgC,GACxBhC;AAAA,EACP;AAAA,EAED,WAAW,WAAY;AAEtB,QAAIN,IAAM,KAAK,IAAG,EAAG,OACjBxY,IAAMwY,EAAI,CAAC,IAAI,MAAMA,EAAI,CAAC,IAAI,OAAOA,EAAI,CAAC,IAAI;AAClD,WAAOqF,EAAM,IAAI7d,GAAKA,GAAKA,CAAG;AAAA,EAC9B;AAAA,EAED,MAAM,SAAU8a,GAAO;AACtB,WAAO,KAAK,MAAM,KAAK,SAAU,KAAK,SAASA,CAAM;AAAA,EACrD;AAAA,EAED,SAAS,SAAUA,GAAO;AACzB,WAAO,KAAK,MAAM,KAAK,SAAU,KAAK,SAASA,CAAM;AAAA,EACrD;AAAA,EAED,QAAQ,SAAU+D,GAAS;AAC1B,QAAIjG,IAAM,KAAK,OACXkD,IAAMlD,EAAI,MAAM,CAAC;AACrB,WAAAkD,KAAOA,IAAM+C,KAAW,KACxB/C,IAAMA,IAAM,IAAI,MAAMA,IAAMA,GAC5BlD,EAAI,MAAM,CAAC,IAAIkD,GACRlD;AAAA,EACP;AAAA,EAED,KAAK,SAAUkG,GAAYC,GAAQ;AAGlC,QAAI,CAACD,KAAc,CAACA,EAAW;AAC9B,YAAM,IAAI,MAAM,2EAA2E,OAAOA,CAAU;AAE7G,QAAIE,IAASF,EAAW,OACpBN,IAAS,KAAK,OACdzY,IAAIgZ,MAAW,SAAY,MAAMA,GAEjCliB,IAAI,IAAIkJ,IAAI,GACZ5I,IAAI6hB,EAAO,MAAO,IAAGR,EAAO,MAAK,GAEjCS,MAAQpiB,IAAIM,MAAM,KAAMN,KAAKA,IAAIM,MAAM,IAAIN,IAAIM,MAAM,KAAK,GAC1D+hB,IAAK,IAAID;AAEb,WAAOpB,EAAM;AAAA,MACXoB,IAAKD,EAAO,IAAG,IAAKE,IAAKV,EAAO,IAAK;AAAA,MACrCS,IAAKD,EAAO,MAAK,IAAKE,IAAKV,EAAO,MAAO;AAAA,MACzCS,IAAKD,EAAO,KAAI,IAAKE,IAAKV,EAAO,KAAM;AAAA,MACvCQ,EAAO,MAAO,IAAGjZ,IAAIyY,EAAO,WAAW,IAAIzY;AAAA,IAAE;AAAA,EAC/C;AACF;AAGA,OAAO,KAAK4O,CAAO,EAAE,QAAQ,SAAUuD,GAAO;AAC7C,MAAIwF,GAAc,QAAQxF,CAAK,MAAM,IAIrC;AAAA,QAAIoB,IAAW3E,EAAQuD,CAAK,EAAE;AAG9B,IAAA2F,EAAM,UAAU3F,CAAK,IAAI,WAAY;AACpC,UAAI,KAAK,UAAUA;AAClB,eAAO,IAAI2F,EAAM,IAAI;AAGtB,UAAI,UAAU;AACb,eAAO,IAAIA,EAAM,WAAW3F,CAAK;AAGlC,UAAIiH,IAAW,OAAO,UAAU7F,CAAQ,KAAM,WAAWA,IAAW,KAAK;AACzE,aAAO,IAAIuE,EAAMuB,GAAYzK,EAAQ,KAAK,KAAK,EAAEuD,CAAK,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,OAAOiH,CAAQ,GAAGjH,CAAK;AAAA,IAClG,GAGC2F,EAAM3F,CAAK,IAAI,SAAUqD,GAAO;AAC/B,aAAI,OAAOA,KAAU,aACpBA,IAAQwC,GAAUN,GAAO,KAAK,SAAS,GAAGnE,CAAQ,IAE5C,IAAIuE,EAAMtC,GAAOrD,CAAK;AAAA,IAC/B;AAAA;AACA,CAAC;AAED,SAASmH,GAAQnG,GAAK+E,GAAQ;AAC7B,SAAO,OAAO/E,EAAI,QAAQ+E,CAAM,CAAC;AAClC;AAEA,SAASE,GAAaF,GAAQ;AAC7B,SAAO,SAAU/E,GAAK;AACrB,WAAOmG,GAAQnG,GAAK+E,CAAM;AAAA,EAC5B;AACA;AAEA,SAASG,EAAOlG,GAAOoH,GAASC,GAAU;AACzC,SAAArH,IAAQ,MAAM,QAAQA,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAE7CA,EAAM,QAAQ,SAAUjQ,GAAG;AAC1B,KAAC2V,GAAS3V,CAAC,MAAM2V,GAAS3V,CAAC,IAAI,KAAKqX,CAAO,IAAIC;AAAA,EACjD,CAAE,GAEDrH,IAAQA,EAAM,CAAC,GAER,SAAUlY,GAAK;AACrB,QAAI9U;AAEJ,WAAI,UAAU,UACTq0B,MACHvf,IAAMuf,EAASvf,CAAG,IAGnB9U,IAAS,KAAKgtB,CAAK,KACnBhtB,EAAO,MAAMo0B,CAAO,IAAItf,GACjB9U,MAGRA,IAAS,KAAKgtB,CAAK,EAAG,EAAC,MAAMoH,CAAO,GAChCC,MACHr0B,IAASq0B,EAASr0B,CAAM,IAGlBA;AAAA,EACT;AACA;AAEA,SAASmzB,EAAMrd,GAAK;AACnB,SAAO,SAAUvE,GAAG;AACnB,WAAO,KAAK,IAAI,GAAG,KAAK,IAAIuE,GAAKvE,CAAC,CAAC;AAAA,EACrC;AACA;AAEA,SAAS2iB,GAAYpf,GAAK;AACzB,SAAO,MAAM,QAAQA,CAAG,IAAIA,IAAM,CAACA,CAAG;AACvC;AAEA,SAAS+d,GAAU1d,GAAKvU,GAAQ;AAC/B,WAASsO,IAAI,GAAGA,IAAItO,GAAQsO;AAC3B,IAAI,OAAOiG,EAAIjG,CAAC,KAAM,aACrBiG,EAAIjG,CAAC,IAAI;AAIX,SAAOiG;AACR;AAEA,IAAAkb,KAAiBsC;mCC5dF2B,KAAA;AAAA;AAAA,EAEX,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,OAAO;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,OAAO;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,KAAK;AAAA,IACD,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,SAAS;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,OAAO;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AAAA,EACD,OAAO;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,EACV;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,130,131,132,133,134,135,136,137,138,142,143,144,145,146]}