From b00e0b7460e1d7165dfe83b6de7d23a04ca2bd42 Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 17 Mar 2018 14:01:29 +0100 Subject: [PATCH 1/8] Fixed #1061: `math.unit` not accepting input like `1/s` --- HISTORY.md | 6 ++++++ lib/type/unit/Unit.js | 24 ++++++++++++++++++------ test/type/unit/Unit.test.js | 16 ++++++++++++++++ 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 37dd42c12..7c30003d4 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,11 @@ # History + +## not yet released, version 4.0.1 + +- Fixed #1061: `math.unit` not accepting input like `1/s`. + + ## 2018-02-25, version 4.0.0 !!! BE CAREFUL: BREAKING CHANGES !!! diff --git a/lib/type/unit/Unit.js b/lib/type/unit/Unit.js index 45d134a37..5634d4f8c 100644 --- a/lib/type/unit/Unit.js +++ b/lib/type/unit/Unit.js @@ -247,8 +247,12 @@ function factory (type, config, load, typed, math) { var unit = new Unit(); unit.units = []; + var powerMultiplierCurrent = 1; + var expectingUnit = false; + // A unit should follow this pattern: - // [number]unit[^number] [unit[^number]]...[/unit[^number] [unit[^number]]] + // [number] ...[ [*/] unit[^number] ] + // unit[^number] ... [ [*/] unit[^number] ] // Rules: // number is any floating point number. @@ -262,6 +266,7 @@ function factory (type, config, load, typed, math) { next(); skipWhitespace(); + // Optional number at the start of the string var valueStr = parseNumber(); var value = null; @@ -275,12 +280,19 @@ function factory (type, config, load, typed, math) { else { // number value = parseFloat(valueStr); } - } - skipWhitespace(); // Whitespace is not required here - // Next, we read any number of unit[^number] - var powerMultiplierCurrent = 1; - var expectingUnit = false; + skipWhitespace(); // Whitespace is not required here + + // handle multiplication or division right after the value, like '1/s' + if (parseCharacter('*')) { + powerMultiplierCurrent = 1; + expectingUnit = true; + } + else if (parseCharacter('/')) { + powerMultiplierCurrent = -1; + expectingUnit = true; + } + } // Stack to keep track of powerMultipliers applied to each parentheses group var powerMultiplierStack = []; diff --git a/test/type/unit/Unit.test.js b/test/type/unit/Unit.test.js index 32d496dfc..5788224f2 100644 --- a/test/type/unit/Unit.test.js +++ b/test/type/unit/Unit.test.js @@ -861,6 +861,21 @@ describe('Unit', function() { unit1 = Unit.parse('5exabytes'); approx.equal(unit1.value, 4e19); assert.equal(unit1.units[0].unit.name, 'bytes'); + + unit1 = Unit.parse('1 / s'); + approx.equal(unit1.value, 1); + assert.equal(unit1.units[0].unit.name, 's'); + assert.equal(unit1.units[0].power, -1); + + unit1 = Unit.parse('1/s'); + approx.equal(unit1.value, 1); + assert.equal(unit1.units[0].unit.name, 's'); + assert.equal(unit1.units[0].power, -1); + + unit1 = Unit.parse('1 * s'); + approx.equal(unit1.value, 1); + assert.equal(unit1.units[0].unit.name, 's'); + assert.equal(unit1.units[0].power, 1); }); it('should parse expressions with nested parentheses correctly', function() { @@ -921,6 +936,7 @@ describe('Unit', function() { assert.throws(function () {Unit.parse('meter.')}, /Unexpected "\."/); assert.throws(function () {Unit.parse('meter/')}, /Trailing characters/); assert.throws(function () {Unit.parse('/meter')}, /Unexpected "\/"/); + assert.throws(function () {Unit.parse('1 */ s')}, /Unexpected "\/"/); assert.throws(function () {Unit.parse('45 kg 34 m')}, /Unexpected "3"/); }); From 4ce942eedf26b504c98d47c6ca9f8acb67791ca9 Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 17 Mar 2018 20:31:53 +0100 Subject: [PATCH 2/8] Fixed #1062: mathjs not working on ES5 browsers like IE11 and Safari 9.3 --- HISTORY.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 7c30003d4..65dd70c01 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,6 +3,7 @@ ## not yet released, version 4.0.1 +- Fixed #1062: mathjs not working on ES5 browsers like IE11 and Safari 9.3. - Fixed #1061: `math.unit` not accepting input like `1/s`. diff --git a/package.json b/package.json index 114b43d9a..b882b97a0 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "javascript-natural-sort": "0.7.1", "seed-random": "2.2.0", "tiny-emitter": "2.0.2", - "typed-function": "1.0.1" + "typed-function": "1.0.3" }, "devDependencies": { "benchmark": "2.1.4", From 4e5cc854f06da73792b17fde04dc46391dd9725e Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 17 Mar 2018 20:34:08 +0100 Subject: [PATCH 3/8] Released version 4.0.1 --- HISTORY.md | 2 +- dist/math.js | 11043 +++++++++++++------------- dist/math.min.js | 8 +- dist/math.min.map | 2 +- docs/reference/functions/isPrime.md | 2 +- lib/version.js | 2 +- package-lock.json | 8 +- package.json | 2 +- 8 files changed, 5553 insertions(+), 5516 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 65dd70c01..7e3f60523 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,7 +1,7 @@ # History -## not yet released, version 4.0.1 +## 2017-03-17, version 4.0.1 - Fixed #1062: mathjs not working on ES5 browsers like IE11 and Safari 9.3. - Fixed #1061: `math.unit` not accepting input like `1/s`. diff --git a/dist/math.js b/dist/math.js index 7102912d7..d08d67d1d 100644 --- a/dist/math.js +++ b/dist/math.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 4.0.0 - * @date 2018-02-25 + * @version 4.0.1 + * @date 2018-03-17 * * @license * Copyright (C) 2013-2018 Jos de Jong @@ -25051,7 +25051,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ * Throws a TypeError otherwise */ function findTypeByName (typeName) { - var entry = typed.types.find(function (entry) { + var entry = findInArray(typed.types, function (entry) { return entry.name === typeName; }); @@ -25063,7 +25063,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ return anyType; } - var hint = typed.types.find(function (entry) { + var hint = findInArray(typed.types, function (entry) { return entry.name.toLowerCase() === typeName.toLowerCase(); }); @@ -25091,7 +25091,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ * the type test matches the value. */ function findTypeName(value) { - var entry = typed.types.find(function (entry) { + var entry = findInArray(typed.types, function (entry) { return entry.test(value); }); @@ -25932,7 +25932,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ .filter(notNull) .forEach(function (parsedSignature) { // check whether this parameter conflicts with already parsed signatures - var conflictingSignature = parsedSignatures.find(function (s) { + var conflictingSignature = findInArray(parsedSignatures, function (s) { return hasConflictingParams(s, parsedSignature) }); if (conflictingSignature) { @@ -26035,8 +26035,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ return generic.apply(null, arguments); } - // attach name and signatures to the typed function - Object.defineProperty(fn, 'name', {value: name}); + // attach name the typed function + try { + Object.defineProperty(fn, 'name', {value: name}); + } + catch (err) { + // old browsers do not support Object.defineProperty and some don't support setting the name property + // the function name is not essential for the functioning, it's mostly useful for debugging, + // so it's fine to have unnamed functions. + } + + // attach signatures to the function fn.signatures = createSignaturesMap(signatures); return fn; @@ -26142,6 +26151,22 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ return false; } + /** + * Return the first item from an array for which test(arr[i]) returns true + * @param {Array} arr + * @param {function} test + * @return {* | undefined} Returns the first matching item + * or undefined when there is no match + */ + function findInArray(arr, test) { + for (var i = 0; i < arr.length; i++) { + if (test(arr[i])) { + return arr[i]; + } + } + return undefined; + } + /** * Filter unique items of an array with strings * @param {string[]} arr @@ -26899,4839 +26924,4839 @@ exports.math = true; // request access to the math namespace /* 161 */ /***/ (function(module, exports, __webpack_require__) { -var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v9.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */ -;(function (globalScope) { - 'use strict'; - - - /* - * decimal.js v9.0.1 - * An arbitrary-precision Decimal type for JavaScript. - * https://github.com/MikeMcl/decimal.js - * Copyright (c) 2017 Michael Mclaughlin - * MIT Licence - */ - - - // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ // - - - // The maximum exponent magnitude. - // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`. - var EXP_LIMIT = 9e15, // 0 to 9e15 - - // The limit on the value of `precision`, and on the value of the first argument to - // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. - MAX_DIGITS = 1e9, // 0 to 1e9 - - // Base conversion alphabet. - NUMERALS = '0123456789abcdef', - - // The natural logarithm of 10 (1025 digits). - LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058', - - // Pi (1025 digits). - PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789', - - - // The initial configuration properties of the Decimal constructor. - DEFAULTS = { - - // These values must be integers within the stated ranges (inclusive). - // Most of these values can be changed at run-time using the `Decimal.config` method. - - // The maximum number of significant digits of the result of a calculation or base conversion. - // E.g. `Decimal.config({ precision: 20 });` - precision: 20, // 1 to MAX_DIGITS - - // The rounding mode used when rounding to `precision`. - // - // ROUND_UP 0 Away from zero. - // ROUND_DOWN 1 Towards zero. - // ROUND_CEIL 2 Towards +Infinity. - // ROUND_FLOOR 3 Towards -Infinity. - // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. - // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - // - // E.g. - // `Decimal.rounding = 4;` - // `Decimal.rounding = Decimal.ROUND_HALF_UP;` - rounding: 4, // 0 to 8 - - // The modulo mode used when calculating the modulus: a mod n. - // The quotient (q = a / n) is calculated according to the corresponding rounding mode. - // The remainder (r) is calculated as: r = a - n * q. - // - // UP 0 The remainder is positive if the dividend is negative, else is negative. - // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). - // FLOOR 3 The remainder has the same sign as the divisor (Python %). - // HALF_EVEN 6 The IEEE 754 remainder function. - // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. - // - // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian - // division (9) are commonly used for the modulus operation. The other rounding modes can also - // be used, but they may not give useful results. - modulo: 1, // 0 to 9 - - // The exponent value at and beneath which `toString` returns exponential notation. - // JavaScript numbers: -7 - toExpNeg: -7, // 0 to -EXP_LIMIT - - // The exponent value at and above which `toString` returns exponential notation. - // JavaScript numbers: 21 - toExpPos: 21, // 0 to EXP_LIMIT - - // The minimum exponent value, beneath which underflow to zero occurs. - // JavaScript numbers: -324 (5e-324) - minE: -EXP_LIMIT, // -1 to -EXP_LIMIT - - // The maximum exponent value, above which overflow to Infinity occurs. - // JavaScript numbers: 308 (1.7976931348623157e+308) - maxE: EXP_LIMIT, // 1 to EXP_LIMIT - - // Whether to use cryptographically-secure random number generation, if available. - crypto: false // true/false - }, - - - // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // - - - Decimal, inexact, noConflict, quadrant, - external = true, - - decimalError = '[DecimalError] ', - invalidArgument = decimalError + 'Invalid argument: ', - precisionLimitExceeded = decimalError + 'Precision limit exceeded', - cryptoUnavailable = decimalError + 'crypto unavailable', - - mathfloor = Math.floor, - mathpow = Math.pow, - - isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i, - isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i, - isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i, - isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, - - BASE = 1e7, - LOG_BASE = 7, - MAX_SAFE_INTEGER = 9007199254740991, - - LN10_PRECISION = LN10.length - 1, - PI_PRECISION = PI.length - 1, - - // Decimal.prototype object - P = { name: '[object Decimal]' }; - - - // Decimal prototype methods - - - /* - * absoluteValue abs - * ceil - * comparedTo cmp - * cosine cos - * cubeRoot cbrt - * decimalPlaces dp - * dividedBy div - * dividedToIntegerBy divToInt - * equals eq - * floor - * greaterThan gt - * greaterThanOrEqualTo gte - * hyperbolicCosine cosh - * hyperbolicSine sinh - * hyperbolicTangent tanh - * inverseCosine acos - * inverseHyperbolicCosine acosh - * inverseHyperbolicSine asinh - * inverseHyperbolicTangent atanh - * inverseSine asin - * inverseTangent atan - * isFinite - * isInteger isInt - * isNaN - * isNegative isNeg - * isPositive isPos - * isZero - * lessThan lt - * lessThanOrEqualTo lte - * logarithm log - * [maximum] [max] - * [minimum] [min] - * minus sub - * modulo mod - * naturalExponential exp - * naturalLogarithm ln - * negated neg - * plus add - * precision sd - * round - * sine sin - * squareRoot sqrt - * tangent tan - * times mul - * toBinary - * toDecimalPlaces toDP - * toExponential - * toFixed - * toFraction - * toHexadecimal toHex - * toNearest - * toNumber - * toOctal - * toPower pow - * toPrecision - * toSignificantDigits toSD - * toString - * truncated trunc - * valueOf toJSON - */ - - - /* - * Return a new Decimal whose value is the absolute value of this Decimal. - * - */ - P.absoluteValue = P.abs = function () { - var x = new this.constructor(this); - if (x.s < 0) x.s = 1; - return finalise(x); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the - * direction of positive Infinity. - * - */ - P.ceil = function () { - return finalise(new this.constructor(this), this.e + 1, 2); - }; - - - /* - * Return - * 1 if the value of this Decimal is greater than the value of `y`, - * -1 if the value of this Decimal is less than the value of `y`, - * 0 if they have the same value, - * NaN if the value of either Decimal is NaN. - * - */ - P.comparedTo = P.cmp = function (y) { - var i, j, xdL, ydL, - x = this, - xd = x.d, - yd = (y = new x.constructor(y)).d, - xs = x.s, - ys = y.s; - - // Either NaN or ±Infinity? - if (!xd || !yd) { - return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; - } - - // Either zero? - if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; - - // Signs differ? - if (xs !== ys) return xs; - - // Compare exponents. - if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; - - xdL = xd.length; - ydL = yd.length; - - // Compare digit by digit. - for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) { - if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1; - } - - // Compare lengths. - return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; - }; - - - /* - * Return a new Decimal whose value is the cosine of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * cos(0) = 1 - * cos(-0) = 1 - * cos(Infinity) = NaN - * cos(-Infinity) = NaN - * cos(NaN) = NaN - * - */ - P.cosine = P.cos = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.d) return new Ctor(NaN); - - // cos(0) = cos(-0) = 1 - if (!x.d[0]) return new Ctor(1); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; - Ctor.rounding = 1; - - x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); - }; - - - /* - * - * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * cbrt(0) = 0 - * cbrt(-0) = -0 - * cbrt(1) = 1 - * cbrt(-1) = -1 - * cbrt(N) = N - * cbrt(-I) = -I - * cbrt(I) = I - * - * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3)) - * - */ - P.cubeRoot = P.cbrt = function () { - var e, m, n, r, rep, s, sd, t, t3, t3plusx, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - external = false; - - // Initial estimate. - s = x.s * Math.pow(x.s * x, 1 / 3); - - // Math.cbrt underflow/overflow? - // Pass x to Math.pow as integer, then adjust the exponent of the result. - if (!s || Math.abs(s) == 1 / 0) { - n = digitsToString(x.d); - e = x.e; - - // Adjust n exponent so it is a multiple of 3 away from x exponent. - if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00'); - s = Math.pow(n, 1 / 3); - - // Rarely, e may be one less than the result exponent value. - e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2)); - - if (s == 1 / 0) { - n = '5e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new Ctor(n); - r.s = x.s; - } else { - r = new Ctor(s.toString()); - } - - sd = (e = Ctor.precision) + 3; - - // Halley's method. - // TODO? Compare Newton's method. - for (;;) { - t = r; - t3 = t.times(t).times(t); - t3plusx = t3.plus(x); - r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1); - - // TODO? Replace with for-loop and checkRoundingDigits. - if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { - n = n.slice(sd - 3, sd + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999 - // , i.e. approaching a rounding boundary, continue the iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the exact result as the - // nines may infinitely repeat. - if (!rep) { - finalise(t, e + 1, 0); - - if (t.times(t).times(t).eq(x)) { - r = t; - break; - } - } - - sd += 4; - rep = 1; - } else { - - // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. - // If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - finalise(r, e + 1, 1); - m = !r.times(r).times(r).eq(x); - } - - break; - } - } - } - - external = true; - - return finalise(r, e, Ctor.rounding, m); - }; - - - /* - * Return the number of decimal places of the value of this Decimal. - * - */ - P.decimalPlaces = P.dp = function () { - var w, - d = this.d, - n = NaN; - - if (d) { - w = d.length - 1; - n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; - - // Subtract the number of trailing zeros of the last word. - w = d[w]; - if (w) for (; w % 10 == 0; w /= 10) n--; - if (n < 0) n = 0; - } - - return n; - }; - - - /* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - */ - P.dividedBy = P.div = function (y) { - return divide(this, new this.constructor(y)); - }; - - - /* - * Return a new Decimal whose value is the integer part of dividing the value of this Decimal - * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`. - * - */ - P.dividedToIntegerBy = P.divToInt = function (y) { - var x = this, - Ctor = x.constructor; - return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); - }; - - - /* - * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false. - * - */ - P.equals = P.eq = function (y) { - return this.cmp(y) === 0; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the - * direction of negative Infinity. - * - */ - P.floor = function () { - return finalise(new this.constructor(this), this.e + 1, 3); - }; - - - /* - * Return true if the value of this Decimal is greater than the value of `y`, otherwise return - * false. - * - */ - P.greaterThan = P.gt = function (y) { - return this.cmp(y) > 0; - }; - - - /* - * Return true if the value of this Decimal is greater than or equal to the value of `y`, - * otherwise return false. - * - */ - P.greaterThanOrEqualTo = P.gte = function (y) { - var k = this.cmp(y); - return k == 1 || k === 0; - }; - - - /* - * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [1, Infinity] - * - * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ... - * - * cosh(0) = 1 - * cosh(-0) = 1 - * cosh(Infinity) = Infinity - * cosh(-Infinity) = Infinity - * cosh(NaN) = NaN - * - * x time taken (ms) result - * 1000 9 9.8503555700852349694e+433 - * 10000 25 4.4034091128314607936e+4342 - * 100000 171 1.4033316802130615897e+43429 - * 1000000 3817 1.5166076984010437725e+434294 - * 10000000 abandoned after 2 minute wait - * - * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x)) - * - */ - P.hyperbolicCosine = P.cosh = function () { - var k, n, pr, rm, len, - x = this, - Ctor = x.constructor, - one = new Ctor(1); - - if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); - if (x.isZero()) return one; - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; - Ctor.rounding = 1; - len = x.d.length; - - // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1 - // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4)) - - // Estimate the optimum number of times to use the argument reduction. - // TODO? Estimation reused from cosine() and may not be optimal here. - if (len < 32) { - k = Math.ceil(len / 3); - n = Math.pow(4, -k).toString(); - } else { - k = 16; - n = '2.3283064365386962890625e-10'; - } - - x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true); - - // Reverse argument reduction - var cosh2_x, - i = k, - d8 = new Ctor(8); - for (; i--;) { - cosh2_x = x.times(x); - x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); - } - - return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); - }; - - - /* - * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ... - * - * sinh(0) = 0 - * sinh(-0) = -0 - * sinh(Infinity) = Infinity - * sinh(-Infinity) = -Infinity - * sinh(NaN) = NaN - * - * x time taken (ms) - * 10 2 ms - * 100 5 ms - * 1000 14 ms - * 10000 82 ms - * 100000 886 ms 1.4033316802130615897e+43429 - * 200000 2613 ms - * 300000 5407 ms - * 400000 8824 ms - * 500000 13026 ms 8.7080643612718084129e+217146 - * 1000000 48543 ms - * - * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x)) - * - */ - P.hyperbolicSine = P.sinh = function () { - var k, pr, rm, len, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; - Ctor.rounding = 1; - len = x.d.length; - - if (len < 3) { - x = taylorSeries(Ctor, 2, x, x, true); - } else { - - // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x)) - // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3)) - // 3 multiplications and 1 addition - - // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x))) - // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5))) - // 4 multiplications and 2 additions - - // Estimate the optimum number of times to use the argument reduction. - k = 1.4 * Math.sqrt(len); - k = k > 16 ? 16 : k | 0; - - x = x.times(Math.pow(5, -k)); - - x = taylorSeries(Ctor, 2, x, x, true); - - // Reverse argument reduction - var sinh2_x, - d5 = new Ctor(5), - d16 = new Ctor(16), - d20 = new Ctor(20); - for (; k--;) { - sinh2_x = x.times(x); - x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); - } - } - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(x, pr, rm, true); - }; - - - /* - * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * tanh(x) = sinh(x) / cosh(x) - * - * tanh(0) = 0 - * tanh(-0) = -0 - * tanh(Infinity) = 1 - * tanh(-Infinity) = -1 - * tanh(NaN) = NaN - * - */ - P.hyperbolicTangent = P.tanh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(x.s); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 7; - Ctor.rounding = 1; - - return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); - }; - - - /* - * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of - * this Decimal. - * - * Domain: [-1, 1] - * Range: [0, pi] - * - * acos(x) = pi/2 - asin(x) - * - * acos(0) = pi/2 - * acos(-0) = pi/2 - * acos(1) = 0 - * acos(-1) = pi - * acos(1/2) = pi/3 - * acos(-1/2) = 2*pi/3 - * acos(|x| > 1) = NaN - * acos(NaN) = NaN - * - */ - P.inverseCosine = P.acos = function () { - var halfPi, - x = this, - Ctor = x.constructor, - k = x.abs().cmp(1), - pr = Ctor.precision, - rm = Ctor.rounding; - - if (k !== -1) { - return k === 0 - // |x| is 1 - ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) - // |x| > 1 or x is NaN - : new Ctor(NaN); - } - - if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); - - // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3 - - Ctor.precision = pr + 6; - Ctor.rounding = 1; - - x = x.asin(); - halfPi = getPi(Ctor, pr + 4, rm).times(0.5); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return halfPi.minus(x); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the - * value of this Decimal. - * - * Domain: [1, Infinity] - * Range: [0, Infinity] - * - * acosh(x) = ln(x + sqrt(x^2 - 1)) - * - * acosh(x < 1) = NaN - * acosh(NaN) = NaN - * acosh(Infinity) = Infinity - * acosh(-Infinity) = NaN - * acosh(0) = NaN - * acosh(-0) = NaN - * acosh(1) = 0 - * acosh(-1) = NaN - * - */ - P.inverseHyperbolicCosine = P.acosh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); - if (!x.isFinite()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; - Ctor.rounding = 1; - external = false; - - x = x.times(x).minus(1).sqrt().plus(x); - - external = true; - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.ln(); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value - * of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * asinh(x) = ln(x + sqrt(x^2 + 1)) - * - * asinh(NaN) = NaN - * asinh(Infinity) = Infinity - * asinh(-Infinity) = -Infinity - * asinh(0) = 0 - * asinh(-0) = -0 - * - */ - P.inverseHyperbolicSine = P.asinh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; - Ctor.rounding = 1; - external = false; - - x = x.times(x).plus(1).sqrt().plus(x); - - external = true; - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.ln(); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the - * value of this Decimal. - * - * Domain: [-1, 1] - * Range: [-Infinity, Infinity] - * - * atanh(x) = 0.5 * ln((1 + x) / (1 - x)) - * - * atanh(|x| > 1) = NaN - * atanh(NaN) = NaN - * atanh(Infinity) = NaN - * atanh(-Infinity) = NaN - * atanh(0) = 0 - * atanh(-0) = -0 - * atanh(1) = Infinity - * atanh(-1) = -Infinity - * - */ - P.inverseHyperbolicTangent = P.atanh = function () { - var pr, rm, wpr, xsd, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); - - pr = Ctor.precision; - rm = Ctor.rounding; - xsd = x.sd(); - - if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); - - Ctor.precision = wpr = xsd - x.e; - - x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); - - Ctor.precision = pr + 4; - Ctor.rounding = 1; - - x = x.ln(); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.times(0.5); - }; - - - /* - * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi/2, pi/2] - * - * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2))) - * - * asin(0) = 0 - * asin(-0) = -0 - * asin(1/2) = pi/6 - * asin(-1/2) = -pi/6 - * asin(1) = pi/2 - * asin(-1) = -pi/2 - * asin(|x| > 1) = NaN - * asin(NaN) = NaN - * - * TODO? Compare performance of Taylor series. - * - */ - P.inverseSine = P.asin = function () { - var halfPi, k, - pr, rm, - x = this, - Ctor = x.constructor; - - if (x.isZero()) return new Ctor(x); - - k = x.abs().cmp(1); - pr = Ctor.precision; - rm = Ctor.rounding; - - if (k !== -1) { - - // |x| is 1 - if (k === 0) { - halfPi = getPi(Ctor, pr + 4, rm).times(0.5); - halfPi.s = x.s; - return halfPi; - } - - // |x| > 1 or x is NaN - return new Ctor(NaN); - } - - // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6 - - Ctor.precision = pr + 6; - Ctor.rounding = 1; - - x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.times(2); - }; - - - /* - * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value - * of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi/2, pi/2] - * - * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... - * - * atan(0) = 0 - * atan(-0) = -0 - * atan(1) = pi/4 - * atan(-1) = -pi/4 - * atan(Infinity) = pi/2 - * atan(-Infinity) = -pi/2 - * atan(NaN) = NaN - * - */ - P.inverseTangent = P.atan = function () { - var i, j, k, n, px, t, r, wpr, x2, - x = this, - Ctor = x.constructor, - pr = Ctor.precision, - rm = Ctor.rounding; - - if (!x.isFinite()) { - if (!x.s) return new Ctor(NaN); - if (pr + 4 <= PI_PRECISION) { - r = getPi(Ctor, pr + 4, rm).times(0.5); - r.s = x.s; - return r; - } - } else if (x.isZero()) { - return new Ctor(x); - } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { - r = getPi(Ctor, pr + 4, rm).times(0.25); - r.s = x.s; - return r; - } - - Ctor.precision = wpr = pr + 10; - Ctor.rounding = 1; - - // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x); - - // Argument reduction - // Ensure |x| < 0.42 - // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2))) - - k = Math.min(28, wpr / LOG_BASE + 2 | 0); - - for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1)); - - external = false; - - j = Math.ceil(wpr / LOG_BASE); - n = 1; - x2 = x.times(x); - r = new Ctor(x); - px = x; - - // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... - for (; i !== -1;) { - px = px.times(x2); - t = r.minus(px.div(n += 2)); - - px = px.times(x2); - r = t.plus(px.div(n += 2)); - - if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;); - } - - if (k) r = r.times(2 << (k - 1)); - - external = true; - - return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true); - }; - - - /* - * Return true if the value of this Decimal is a finite number, otherwise return false. - * - */ - P.isFinite = function () { - return !!this.d; - }; - - - /* - * Return true if the value of this Decimal is an integer, otherwise return false. - * - */ - P.isInteger = P.isInt = function () { - return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; - }; - - - /* - * Return true if the value of this Decimal is NaN, otherwise return false. - * - */ - P.isNaN = function () { - return !this.s; - }; - - - /* - * Return true if the value of this Decimal is negative, otherwise return false. - * - */ - P.isNegative = P.isNeg = function () { - return this.s < 0; - }; - - - /* - * Return true if the value of this Decimal is positive, otherwise return false. - * - */ - P.isPositive = P.isPos = function () { - return this.s > 0; - }; - - - /* - * Return true if the value of this Decimal is 0 or -0, otherwise return false. - * - */ - P.isZero = function () { - return !!this.d && this.d[0] === 0; - }; - - - /* - * Return true if the value of this Decimal is less than `y`, otherwise return false. - * - */ - P.lessThan = P.lt = function (y) { - return this.cmp(y) < 0; - }; - - - /* - * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false. - * - */ - P.lessThanOrEqualTo = P.lte = function (y) { - return this.cmp(y) < 1; - }; - - - /* - * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * If no base is specified, return log[10](arg). - * - * log[base](arg) = ln(arg) / ln(base) - * - * The result will always be correctly rounded if the base of the log is 10, and 'almost always' - * otherwise: - * - * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen - * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error - * between the result and the correctly rounded result will be one ulp (unit in the last place). - * - * log[-b](a) = NaN - * log[0](a) = NaN - * log[1](a) = NaN - * log[NaN](a) = NaN - * log[Infinity](a) = NaN - * log[b](0) = -Infinity - * log[b](-0) = -Infinity - * log[b](-a) = NaN - * log[b](1) = 0 - * log[b](Infinity) = Infinity - * log[b](NaN) = NaN - * - * [base] {number|string|Decimal} The base of the logarithm. - * - */ - P.logarithm = P.log = function (base) { - var isBase10, d, denominator, k, inf, num, sd, r, - arg = this, - Ctor = arg.constructor, - pr = Ctor.precision, - rm = Ctor.rounding, - guard = 5; - - // Default base is 10. - if (base == null) { - base = new Ctor(10); - isBase10 = true; - } else { - base = new Ctor(base); - d = base.d; - - // Return NaN if base is negative, or non-finite, or is 0 or 1. - if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN); - - isBase10 = base.eq(10); - } - - d = arg.d; - - // Is arg negative, non-finite, 0 or 1? - if (arg.s < 0 || !d || !d[0] || arg.eq(1)) { - return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0); - } - - // The result will have a non-terminating decimal expansion if base is 10 and arg is not an - // integer power of 10. - if (isBase10) { - if (d.length > 1) { - inf = true; - } else { - for (k = d[0]; k % 10 === 0;) k /= 10; - inf = k !== 1; - } - } - - external = false; - sd = pr + guard; - num = naturalLogarithm(arg, sd); - denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); - - // The result will have 5 rounding digits. - r = divide(num, denominator, sd, 1); - - // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000, - // calculate 10 further digits. - // - // If the result is known to have an infinite decimal expansion, repeat this until it is clear - // that the result is above or below the boundary. Otherwise, if after calculating the 10 - // further digits, the last 14 are nines, round up and assume the result is exact. - // Also assume the result is exact if the last 14 are zero. - // - // Example of a result that will be incorrectly rounded: - // log[1048576](4503599627370502) = 2.60000000000000009610279511444746... - // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it - // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so - // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal - // place is still 2.6. - if (checkRoundingDigits(r.d, k = pr, rm)) { - - do { - sd += 10; - num = naturalLogarithm(arg, sd); - denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); - r = divide(num, denominator, sd, 1); - - if (!inf) { - - // Check for 14 nines from the 2nd rounding digit, as the first may be 4. - if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) { - r = finalise(r, pr + 1, 0); - } - - break; - } - } while (checkRoundingDigits(r.d, k += 10, rm)); - } - - external = true; - - return finalise(r, pr, rm); - }; - - - /* - * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. - * - * arguments {number|string|Decimal} - * - P.max = function () { - Array.prototype.push.call(arguments, this); - return maxOrMin(this.constructor, arguments, 'lt'); - }; - */ - - - /* - * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. - * - * arguments {number|string|Decimal} - * - P.min = function () { - Array.prototype.push.call(arguments, this); - return maxOrMin(this.constructor, arguments, 'gt'); - }; - */ - - - /* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.minus = P.sub = function (y) { - var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // If either is not finite... - if (!x.d || !y.d) { - - // Return NaN if either is NaN. - if (!x.s || !y.s) y = new Ctor(NaN); - - // Return y negated if x is finite and y is ±Infinity. - else if (x.d) y.s = -y.s; - - // Return x if y is finite and x is ±Infinity. - // Return x if both are ±Infinity with different signs. - // Return NaN if both are ±Infinity with the same sign. - else y = new Ctor(y.d || x.s !== y.s ? x : NaN); - - return y; - } - - // If signs differ... - if (x.s != y.s) { - y.s = -y.s; - return x.plus(y); - } - - xd = x.d; - yd = y.d; - pr = Ctor.precision; - rm = Ctor.rounding; - - // If either is zero... - if (!xd[0] || !yd[0]) { - - // Return y negated if x is zero and y is non-zero. - if (yd[0]) y.s = -y.s; - - // Return x if y is zero and x is non-zero. - else if (xd[0]) y = new Ctor(x); - - // Return zero if both are zero. - // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity. - else return new Ctor(rm === 3 ? -0 : 0); - - return external ? finalise(y, pr, rm) : y; - } - - // x and y are finite, non-zero numbers with the same sign. - - // Calculate base 1e7 exponents. - e = mathfloor(y.e / LOG_BASE); - xe = mathfloor(x.e / LOG_BASE); - - xd = xd.slice(); - k = xe - e; - - // If base 1e7 exponents differ... - if (k) { - xLTy = k < 0; - - if (xLTy) { - d = xd; - k = -k; - len = yd.length; - } else { - d = yd; - e = xe; - len = xd.length; - } - - // Numbers with massively different exponents would result in a very high number of - // zeros needing to be prepended, but this can be avoided while still ensuring correct - // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`. - i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; - - if (k > i) { - k = i; - d.length = 1; - } - - // Prepend zeros to equalise exponents. - d.reverse(); - for (i = k; i--;) d.push(0); - d.reverse(); - - // Base 1e7 exponents equal. - } else { - - // Check digits to determine which is the bigger number. - - i = xd.length; - len = yd.length; - xLTy = i < len; - if (xLTy) len = i; - - for (i = 0; i < len; i++) { - if (xd[i] != yd[i]) { - xLTy = xd[i] < yd[i]; - break; - } - } - - k = 0; - } - - if (xLTy) { - d = xd; - xd = yd; - yd = d; - y.s = -y.s; - } - - len = xd.length; - - // Append zeros to `xd` if shorter. - // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length. - for (i = yd.length - len; i > 0; --i) xd[len++] = 0; - - // Subtract yd from xd. - for (i = yd.length; i > k;) { - - if (xd[--i] < yd[i]) { - for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1; - --xd[j]; - xd[i] += BASE; - } - - xd[i] -= yd[i]; - } - - // Remove trailing zeros. - for (; xd[--len] === 0;) xd.pop(); - - // Remove leading zeros and adjust exponent accordingly. - for (; xd[0] === 0; xd.shift()) --e; - - // Zero? - if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); - - y.d = xd; - y.e = getBase10Exponent(xd, e); - - return external ? finalise(y, pr, rm) : y; - }; - - - /* - * n % 0 = N - * n % N = N - * n % I = n - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * 0 % I = 0 - * N % n = N - * N % 0 = N - * N % N = N - * N % I = N - * I % n = N - * I % 0 = N - * I % N = N - * I % I = N - * - * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * The result depends on the modulo mode. - * - */ - P.modulo = P.mod = function (y) { - var q, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0. - if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); - - // Return x if y is ±Infinity or x is ±0. - if (!y.d || x.d && !x.d[0]) { - return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); - } - - // Prevent rounding of intermediate calculations. - external = false; - - if (Ctor.modulo == 9) { - - // Euclidian division: q = sign(y) * floor(x / abs(y)) - // result = x - q * y where 0 <= result < abs(y) - q = divide(x, y.abs(), 0, 3, 1); - q.s *= y.s; - } else { - q = divide(x, y, 0, Ctor.modulo, 1); - } - - q = q.times(y); - - external = true; - - return x.minus(q); - }; - - - /* - * Return a new Decimal whose value is the natural exponential of the value of this Decimal, - * i.e. the base e raised to the power the value of this Decimal, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.naturalExponential = P.exp = function () { - return naturalExponential(this); - }; - - - /* - * Return a new Decimal whose value is the natural logarithm of the value of this Decimal, - * rounded to `precision` significant digits using rounding mode `rounding`. - * - */ - P.naturalLogarithm = P.ln = function () { - return naturalLogarithm(this); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by - * -1. - * - */ - P.negated = P.neg = function () { - var x = new this.constructor(this); - x.s = -x.s; - return finalise(x); - }; - - - /* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.plus = P.add = function (y) { - var carry, d, e, i, k, len, pr, rm, xd, yd, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // If either is not finite... - if (!x.d || !y.d) { - - // Return NaN if either is NaN. - if (!x.s || !y.s) y = new Ctor(NaN); - - // Return x if y is finite and x is ±Infinity. - // Return x if both are ±Infinity with the same sign. - // Return NaN if both are ±Infinity with different signs. - // Return y if x is finite and y is ±Infinity. - else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); - - return y; - } - - // If signs differ... - if (x.s != y.s) { - y.s = -y.s; - return x.minus(y); - } - - xd = x.d; - yd = y.d; - pr = Ctor.precision; - rm = Ctor.rounding; - - // If either is zero... - if (!xd[0] || !yd[0]) { - - // Return x if y is zero. - // Return y if y is non-zero. - if (!yd[0]) y = new Ctor(x); - - return external ? finalise(y, pr, rm) : y; - } - - // x and y are finite, non-zero numbers with the same sign. - - // Calculate base 1e7 exponents. - k = mathfloor(x.e / LOG_BASE); - e = mathfloor(y.e / LOG_BASE); - - xd = xd.slice(); - i = k - e; - - // If base 1e7 exponents differ... - if (i) { - - if (i < 0) { - d = xd; - i = -i; - len = yd.length; - } else { - d = yd; - e = k; - len = xd.length; - } - - // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1. - k = Math.ceil(pr / LOG_BASE); - len = k > len ? k + 1 : len + 1; - - if (i > len) { - i = len; - d.length = 1; - } - - // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts. - d.reverse(); - for (; i--;) d.push(0); - d.reverse(); - } - - len = xd.length; - i = yd.length; - - // If yd is longer than xd, swap xd and yd so xd points to the longer array. - if (len - i < 0) { - i = len; - d = yd; - yd = xd; - xd = d; - } - - // Only start adding at yd.length - 1 as the further digits of xd can be left as they are. - for (carry = 0; i;) { - carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0; - xd[i] %= BASE; - } - - if (carry) { - xd.unshift(carry); - ++e; - } - - // Remove trailing zeros. - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - for (len = xd.length; xd[--len] == 0;) xd.pop(); - - y.d = xd; - y.e = getBase10Exponent(xd, e); - - return external ? finalise(y, pr, rm) : y; - }; - - - /* - * Return the number of significant digits of the value of this Decimal. - * - * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. - * - */ - P.precision = P.sd = function (z) { - var k, - x = this; - - if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z); - - if (x.d) { - k = getPrecision(x.d); - if (z && x.e + 1 > k) k = x.e + 1; - } else { - k = NaN; - } - - return k; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using - * rounding mode `rounding`. - * - */ - P.round = function () { - var x = this, - Ctor = x.constructor; - - return finalise(new Ctor(x), x.e + 1, Ctor.rounding); - }; - - - /* - * Return a new Decimal whose value is the sine of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * sin(x) = x - x^3/3! + x^5/5! - ... - * - * sin(0) = 0 - * sin(-0) = -0 - * sin(Infinity) = NaN - * sin(-Infinity) = NaN - * sin(NaN) = NaN - * - */ - P.sine = P.sin = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; - Ctor.rounding = 1; - - x = sine(Ctor, toLessThanHalfPi(Ctor, x)); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); - }; - - - /* - * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * sqrt(-n) = N - * sqrt(N) = N - * sqrt(-I) = N - * sqrt(I) = I - * sqrt(0) = 0 - * sqrt(-0) = -0 - * - */ - P.squareRoot = P.sqrt = function () { - var m, n, sd, r, rep, t, - x = this, - d = x.d, - e = x.e, - s = x.s, - Ctor = x.constructor; - - // Negative/NaN/Infinity/zero? - if (s !== 1 || !d || !d[0]) { - return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0); - } - - external = false; - - // Initial estimate. - s = Math.sqrt(+x); - - // Math.sqrt underflow/overflow? - // Pass x to Math.sqrt as integer, then adjust the exponent of the result. - if (s == 0 || s == 1 / 0) { - n = digitsToString(d); - - if ((n.length + e) % 2 == 0) n += '0'; - s = Math.sqrt(n); - e = mathfloor((e + 1) / 2) - (e < 0 || e % 2); - - if (s == 1 / 0) { - n = '1e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new Ctor(n); - } else { - r = new Ctor(s.toString()); - } - - sd = (e = Ctor.precision) + 3; - - // Newton-Raphson iteration. - for (;;) { - t = r; - r = t.plus(divide(x, t, sd + 2, 1)).times(0.5); - - // TODO? Replace with for-loop and checkRoundingDigits. - if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { - n = n.slice(sd - 3, sd + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or - // 4999, i.e. approaching a rounding boundary, continue the iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the exact result as the - // nines may infinitely repeat. - if (!rep) { - finalise(t, e + 1, 0); - - if (t.times(t).eq(x)) { - r = t; - break; - } - } - - sd += 4; - rep = 1; - } else { - - // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. - // If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - finalise(r, e + 1, 1); - m = !r.times(r).eq(x); - } - - break; - } - } - } - - external = true; - - return finalise(r, e, Ctor.rounding, m); - }; - - - /* - * Return a new Decimal whose value is the tangent of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * tan(0) = 0 - * tan(-0) = -0 - * tan(Infinity) = NaN - * tan(-Infinity) = NaN - * tan(NaN) = NaN - * - */ - P.tangent = P.tan = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 10; - Ctor.rounding = 1; - - x = x.sin(); - x.s = 1; - x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); - }; - - - /* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - */ - P.times = P.mul = function (y) { - var carry, e, i, k, r, rL, t, xdL, ydL, - x = this, - Ctor = x.constructor, - xd = x.d, - yd = (y = new Ctor(y)).d; - - y.s *= x.s; - - // If either is NaN, ±Infinity or ±0... - if (!xd || !xd[0] || !yd || !yd[0]) { - - return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd - - // Return NaN if either is NaN. - // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity. - ? NaN - - // Return ±Infinity if either is ±Infinity. - // Return ±0 if either is ±0. - : !xd || !yd ? y.s / 0 : y.s * 0); - } - - e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); - xdL = xd.length; - ydL = yd.length; - - // Ensure xd points to the longer array. - if (xdL < ydL) { - r = xd; - xd = yd; - yd = r; - rL = xdL; - xdL = ydL; - ydL = rL; - } - - // Initialise the result array with zeros. - r = []; - rL = xdL + ydL; - for (i = rL; i--;) r.push(0); - - // Multiply! - for (i = ydL; --i >= 0;) { - carry = 0; - for (k = xdL + i; k > i;) { - t = r[k] + yd[i] * xd[k - i - 1] + carry; - r[k--] = t % BASE | 0; - carry = t / BASE | 0; - } - - r[k] = (r[k] + carry) % BASE | 0; - } - - // Remove trailing zeros. - for (; !r[--rL];) r.pop(); - - if (carry) ++e; - else r.shift(); - - y.d = r; - y.e = getBase10Exponent(r, e); - - return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; - }; - - - /* - * Return a string representing the value of this Decimal in base 2, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toBinary = function (sd, rm) { - return toStringBinary(this, 2, sd, rm); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp` - * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted. - * - * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toDecimalPlaces = P.toDP = function (dp, rm) { - var x = this, - Ctor = x.constructor; - - x = new Ctor(x); - if (dp === void 0) return x; - - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - return finalise(x, dp + x.e + 1, rm); - }; - - - /* - * Return a string representing the value of this Decimal in exponential notation rounded to - * `dp` fixed decimal places using rounding mode `rounding`. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toExponential = function (dp, rm) { - var str, - x = this, - Ctor = x.constructor; - - if (dp === void 0) { - str = finiteToString(x, true); - } else { - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - x = finalise(new Ctor(x), dp + 1, rm); - str = finiteToString(x, true, dp + 1); - } - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a string representing the value of this Decimal in normal (fixed-point) notation to - * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is - * omitted. - * - * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. - * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. - * (-0).toFixed(3) is '0.000'. - * (-0.5).toFixed(0) is '-0'. - * - */ - P.toFixed = function (dp, rm) { - var str, y, - x = this, - Ctor = x.constructor; - - if (dp === void 0) { - str = finiteToString(x); - } else { - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - y = finalise(new Ctor(x), dp + x.e + 1, rm); - str = finiteToString(y, false, dp + y.e + 1); - } - - // To determine whether to add the minus sign look at the value before it was rounded, - // i.e. look at `x` rather than `y`. - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return an array representing the value of this Decimal as a simple fraction with an integer - * numerator and an integer denominator. - * - * The denominator will be a positive non-zero value less than or equal to the specified maximum - * denominator. If a maximum denominator is not specified, the denominator will be the lowest - * value necessary to represent the number exactly. - * - * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. - * - */ - P.toFraction = function (maxD) { - var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, - x = this, - xd = x.d, - Ctor = x.constructor; - - if (!xd) return new Ctor(x); - - n1 = d0 = new Ctor(1); - d1 = n0 = new Ctor(0); - - d = new Ctor(d1); - e = d.e = getPrecision(xd) - x.e - 1; - k = e % LOG_BASE; - d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k); - - if (maxD == null) { - - // d is 10**e, the minimum max-denominator needed. - maxD = e > 0 ? d : n1; - } else { - n = new Ctor(maxD); - if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n); - maxD = n.gt(d) ? (e > 0 ? d : n1) : n; - } - - external = false; - n = new Ctor(digitsToString(xd)); - pr = Ctor.precision; - Ctor.precision = e = xd.length * LOG_BASE * 2; - - for (;;) { - q = divide(n, d, 0, 1, 1); - d2 = d0.plus(q.times(d1)); - if (d2.cmp(maxD) == 1) break; - d0 = d1; - d1 = d2; - d2 = n1; - n1 = n0.plus(q.times(d2)); - n0 = d2; - d2 = d; - d = n.minus(q.times(d2)); - n = d2; - } - - d2 = divide(maxD.minus(d0), d1, 0, 1, 1); - n0 = n0.plus(d2.times(n1)); - d0 = d0.plus(d2.times(d1)); - n0.s = n1.s = x.s; - - // Determine which fraction is closer to x, n0/d0 or n1/d1? - r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 - ? [n1, d1] : [n0, d0]; - - Ctor.precision = pr; - external = true; - - return r; - }; - - - /* - * Return a string representing the value of this Decimal in base 16, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toHexadecimal = P.toHex = function (sd, rm) { - return toStringBinary(this, 16, sd, rm); - }; - - - - /* - * Returns a new Decimal whose value is the nearest multiple of the magnitude of `y` to the value - * of this Decimal. - * - * If the value of this Decimal is equidistant from two multiples of `y`, the rounding mode `rm`, - * or `Decimal.rounding` if `rm` is omitted, determines the direction of the nearest multiple. - * - * In the context of this method, rounding mode 4 (ROUND_HALF_UP) is the same as rounding mode 0 - * (ROUND_UP), and so on. - * - * The return value will always have the same sign as this Decimal, unless either this Decimal - * or `y` is NaN, in which case the return value will be also be NaN. - * - * The return value is not affected by the value of `precision`. - * - * y {number|string|Decimal} The magnitude to round to a multiple of. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * 'toNearest() rounding mode not an integer: {rm}' - * 'toNearest() rounding mode out of range: {rm}' - * - */ - P.toNearest = function (y, rm) { - var x = this, - Ctor = x.constructor; - - x = new Ctor(x); - - if (y == null) { - - // If x is not finite, return x. - if (!x.d) return x; - - y = new Ctor(1); - rm = Ctor.rounding; - } else { - y = new Ctor(y); - if (rm !== void 0) checkInt32(rm, 0, 8); - - // If x is not finite, return x if y is not NaN, else NaN. - if (!x.d) return y.s ? x : y; - - // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN. - if (!y.d) { - if (y.s) y.s = x.s; - return y; - } - } - - // If y is not zero, calculate the nearest multiple of y to x. - if (y.d[0]) { - external = false; - if (rm < 4) rm = [4, 5, 7, 8][rm]; - x = divide(x, y, 0, rm, 1).times(y); - external = true; - finalise(x); - - // If y is zero, return zero with the sign of x. - } else { - y.s = x.s; - x = y; - } - - return x; - }; - - - /* - * Return the value of this Decimal converted to a number primitive. - * Zero keeps its sign. - * - */ - P.toNumber = function () { - return +this; - }; - - - /* - * Return a string representing the value of this Decimal in base 8, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toOctal = function (sd, rm) { - return toStringBinary(this, 8, sd, rm); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded - * to `precision` significant digits using rounding mode `rounding`. - * - * ECMAScript compliant. - * - * pow(x, NaN) = NaN - * pow(x, ±0) = 1 - - * pow(NaN, non-zero) = NaN - * pow(abs(x) > 1, +Infinity) = +Infinity - * pow(abs(x) > 1, -Infinity) = +0 - * pow(abs(x) == 1, ±Infinity) = NaN - * pow(abs(x) < 1, +Infinity) = +0 - * pow(abs(x) < 1, -Infinity) = +Infinity - * pow(+Infinity, y > 0) = +Infinity - * pow(+Infinity, y < 0) = +0 - * pow(-Infinity, odd integer > 0) = -Infinity - * pow(-Infinity, even integer > 0) = +Infinity - * pow(-Infinity, odd integer < 0) = -0 - * pow(-Infinity, even integer < 0) = +0 - * pow(+0, y > 0) = +0 - * pow(+0, y < 0) = +Infinity - * pow(-0, odd integer > 0) = -0 - * pow(-0, even integer > 0) = +0 - * pow(-0, odd integer < 0) = -Infinity - * pow(-0, even integer < 0) = +Infinity - * pow(finite x < 0, finite non-integer) = NaN - * - * For non-integer or very large exponents pow(x, y) is calculated using - * - * x^y = exp(y*ln(x)) - * - * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the - * probability of an incorrectly rounded result - * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14 - * i.e. 1 in 250,000,000,000,000 - * - * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). - * - * y {number|string|Decimal} The power to which to raise this Decimal. - * - */ - P.toPower = P.pow = function (y) { - var e, k, pr, r, rm, s, - x = this, - Ctor = x.constructor, - yn = +(y = new Ctor(y)); - - // Either ±Infinity, NaN or ±0? - if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); - - x = new Ctor(x); - - if (x.eq(1)) return x; - - pr = Ctor.precision; - rm = Ctor.rounding; - - if (y.eq(1)) return finalise(x, pr, rm); - - // y exponent - e = mathfloor(y.e / LOG_BASE); - - // If y is a small integer use the 'exponentiation by squaring' algorithm. - if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { - r = intPow(Ctor, x, k, pr); - return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm); - } - - s = x.s; - - // if x is negative - if (s < 0) { - - // if y is not an integer - if (e < y.d.length - 1) return new Ctor(NaN); - - // Result is positive if x is negative and the last digit of integer y is even. - if ((y.d[e] & 1) == 0) s = 1; - - // if x.eq(-1) - if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { - x.s = s; - return x; - } - } - - // Estimate result exponent. - // x^y = 10^e, where e = y * log10(x) - // log10(x) = log10(x_significand) + x_exponent - // log10(x_significand) = ln(x_significand) / ln(10) - k = mathpow(+x, yn); - e = k == 0 || !isFinite(k) - ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) - : new Ctor(k + '').e; - - // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1. - - // Overflow/underflow? - if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0); - - external = false; - Ctor.rounding = x.s = 1; - - // Estimate the extra guard digits needed to ensure five correct rounding digits from - // naturalLogarithm(x). Example of failure without these extra digits (precision: 10): - // new Decimal(2.32456).pow('2087987436534566.46411') - // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815 - k = Math.min(12, (e + '').length); - - // r = x^y = exp(y*ln(x)) - r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr); - - // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40) - if (r.d) { - - // Truncate to the required precision plus five rounding digits. - r = finalise(r, pr + 5, 1); - - // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate - // the result. - if (checkRoundingDigits(r.d, pr, rm)) { - e = pr + 10; - - // Truncate to the increased precision plus five rounding digits. - r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1); - - // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9). - if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) { - r = finalise(r, pr + 1, 0); - } - } - } - - r.s = s; - external = true; - Ctor.rounding = rm; - - return finalise(r, pr, rm); - }; - - - /* - * Return a string representing the value of this Decimal rounded to `sd` significant digits - * using rounding mode `rounding`. - * - * Return exponential notation if `sd` is less than the number of digits necessary to represent - * the integer part of the value in normal notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toPrecision = function (sd, rm) { - var str, - x = this, - Ctor = x.constructor; - - if (sd === void 0) { - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - } else { - checkInt32(sd, 1, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - x = finalise(new Ctor(x), sd, rm); - str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); - } - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd` - * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if - * omitted. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * 'toSD() digits out of range: {sd}' - * 'toSD() digits not an integer: {sd}' - * 'toSD() rounding mode not an integer: {rm}' - * 'toSD() rounding mode out of range: {rm}' - * - */ - P.toSignificantDigits = P.toSD = function (sd, rm) { - var x = this, - Ctor = x.constructor; - - if (sd === void 0) { - sd = Ctor.precision; - rm = Ctor.rounding; - } else { - checkInt32(sd, 1, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - } - - return finalise(new Ctor(x), sd, rm); - }; - - - /* - * Return a string representing the value of this Decimal. - * - * Return exponential notation if this Decimal has a positive exponent equal to or greater than - * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`. - * - */ - P.toString = function () { - var x = this, - Ctor = x.constructor, - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal truncated to a whole number. - * - */ - P.truncated = P.trunc = function () { - return finalise(new this.constructor(this), this.e + 1, 1); - }; - - - /* - * Return a string representing the value of this Decimal. - * Unlike `toString`, negative zero will include the minus sign. - * - */ - P.valueOf = P.toJSON = function () { - var x = this, - Ctor = x.constructor, - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - - return x.isNeg() ? '-' + str : str; - }; - - - /* - // Add aliases to match BigDecimal method names. - // P.add = P.plus; - P.subtract = P.minus; - P.multiply = P.times; - P.divide = P.div; - P.remainder = P.mod; - P.compareTo = P.cmp; - P.negate = P.neg; - */ - - - // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers. - - - /* - * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower, - * finiteToString, naturalExponential, naturalLogarithm - * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest, - * P.toPrecision, P.toSignificantDigits, toStringBinary, random - * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm - * convertBase toStringBinary, parseOther - * cos P.cos - * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy, - * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction, - * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm, - * taylorSeries, atan2, parseOther - * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh, - * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus, - * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot, - * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed, - * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits, - * P.truncated, divide, getLn10, getPi, naturalExponential, - * naturalLogarithm, ceil, floor, round, trunc - * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf, - * toStringBinary - * getBase10Exponent P.minus, P.plus, P.times, parseOther - * getLn10 P.logarithm, naturalLogarithm - * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2 - * getPrecision P.precision, P.toFraction - * getZeroString digitsToString, finiteToString - * intPow P.toPower, parseOther - * isOdd toLessThanHalfPi - * maxOrMin max, min - * naturalExponential P.naturalExponential, P.toPower - * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm, - * P.toPower, naturalExponential - * nonFiniteToString finiteToString, toStringBinary - * parseDecimal Decimal - * parseOther Decimal - * sin P.sin - * taylorSeries P.cosh, P.sinh, cos, sin - * toLessThanHalfPi P.cos, P.sin - * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal - * truncate intPow - * - * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi, - * naturalLogarithm, config, parseOther, random, Decimal - */ - - - function digitsToString(d) { - var i, k, ws, - indexOfLastWord = d.length - 1, - str = '', - w = d[0]; - - if (indexOfLastWord > 0) { - str += w; - for (i = 1; i < indexOfLastWord; i++) { - ws = d[i] + ''; - k = LOG_BASE - ws.length; - if (k) str += getZeroString(k); - str += ws; - } - - w = d[i]; - ws = w + ''; - k = LOG_BASE - ws.length; - if (k) str += getZeroString(k); - } else if (w === 0) { - return '0'; - } - - // Remove trailing zeros of last w. - for (; w % 10 === 0;) w /= 10; - - return str + w; - } - - - function checkInt32(i, min, max) { - if (i !== ~~i || i < min || i > max) { - throw Error(invalidArgument + i); - } - } - - - /* - * Check 5 rounding digits if `repeating` is null, 4 otherwise. - * `repeating == null` if caller is `log` or `pow`, - * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`. - */ - function checkRoundingDigits(d, i, rm, repeating) { - var di, k, r, rd; - - // Get the length of the first word of the array d. - for (k = d[0]; k >= 10; k /= 10) --i; - - // Is the rounding digit in the first word of d? - if (--i < 0) { - i += LOG_BASE; - di = 0; - } else { - di = Math.ceil((i + 1) / LOG_BASE); - i %= LOG_BASE; - } - - // i is the index (0 - 6) of the rounding digit. - // E.g. if within the word 3487563 the first rounding digit is 5, - // then i = 4, k = 1000, rd = 3487563 % 1000 = 563 - k = mathpow(10, LOG_BASE - i); - rd = d[di] % k | 0; - - if (repeating == null) { - if (i < 3) { - if (i == 0) rd = rd / 100 | 0; - else if (i == 1) rd = rd / 10 | 0; - r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0; - } else { - r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && - (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || - (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0; - } - } else { - if (i < 4) { - if (i == 0) rd = rd / 1000 | 0; - else if (i == 1) rd = rd / 100 | 0; - else if (i == 2) rd = rd / 10 | 0; - r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; - } else { - r = ((repeating || rm < 4) && rd + 1 == k || - (!repeating && rm > 3) && rd + 1 == k / 2) && - (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1; - } - } - - return r; - } - - - // Convert string of `baseIn` to an array of numbers of `baseOut`. - // Eg. convertBase('255', 10, 16) returns [15, 15]. - // Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. - function convertBase(str, baseIn, baseOut) { - var j, - arr = [0], - arrL, - i = 0, - strL = str.length; - - for (; i < strL;) { - for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn; - arr[0] += NUMERALS.indexOf(str.charAt(i++)); - for (j = 0; j < arr.length; j++) { - if (arr[j] > baseOut - 1) { - if (arr[j + 1] === void 0) arr[j + 1] = 0; - arr[j + 1] += arr[j] / baseOut | 0; - arr[j] %= baseOut; - } - } - } - - return arr.reverse(); - } - - - /* - * cos(x) = 1 - x^2/2! + x^4/4! - ... - * |x| < pi/2 - * - */ - function cosine(Ctor, x) { - var k, y, - len = x.d.length; - - // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1 - // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1 - - // Estimate the optimum number of times to use the argument reduction. - if (len < 32) { - k = Math.ceil(len / 3); - y = Math.pow(4, -k).toString(); - } else { - k = 16; - y = '2.3283064365386962890625e-10'; - } - - Ctor.precision += k; - - x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); - - // Reverse argument reduction - for (var i = k; i--;) { - var cos2x = x.times(x); - x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); - } - - Ctor.precision -= k; - - return x; - } - - - /* - * Perform division in the specified base. - */ - var divide = (function () { - - // Assumes non-zero x and k, and hence non-zero result. - function multiplyInteger(x, k, base) { - var temp, - carry = 0, - i = x.length; - - for (x = x.slice(); i--;) { - temp = x[i] * k + carry; - x[i] = temp % base | 0; - carry = temp / base | 0; - } - - if (carry) x.unshift(carry); - - return x; - } - - function compare(a, b, aL, bL) { - var i, r; - - if (aL != bL) { - r = aL > bL ? 1 : -1; - } else { - for (i = r = 0; i < aL; i++) { - if (a[i] != b[i]) { - r = a[i] > b[i] ? 1 : -1; - break; - } - } - } - - return r; - } - - function subtract(a, b, aL, base) { - var i = 0; - - // Subtract b from a. - for (; aL--;) { - a[aL] -= i; - i = a[aL] < b[aL] ? 1 : 0; - a[aL] = i * base + a[aL] - b[aL]; - } - - // Remove leading zeros. - for (; !a[0] && a.length > 1;) a.shift(); - } - - return function (x, y, pr, rm, dp, base) { - var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, - yL, yz, - Ctor = x.constructor, - sign = x.s == y.s ? 1 : -1, - xd = x.d, - yd = y.d; - - // Either NaN, Infinity or 0? - if (!xd || !xd[0] || !yd || !yd[0]) { - - return new Ctor(// Return NaN if either NaN, or both Infinity or 0. - !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : - - // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. - xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0); - } - - if (base) { - logBase = 1; - e = x.e - y.e; - } else { - base = BASE; - logBase = LOG_BASE; - e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); - } - - yL = yd.length; - xL = xd.length; - q = new Ctor(sign); - qd = q.d = []; - - // Result exponent may be one less than e. - // The digit array of a Decimal from toStringBinary may have trailing zeros. - for (i = 0; yd[i] == (xd[i] || 0); i++); - - if (yd[i] > (xd[i] || 0)) e--; - - if (pr == null) { - sd = pr = Ctor.precision; - rm = Ctor.rounding; - } else if (dp) { - sd = pr + (x.e - y.e) + 1; - } else { - sd = pr; - } - - if (sd < 0) { - qd.push(1); - more = true; - } else { - - // Convert precision in number of base 10 digits to base 1e7 digits. - sd = sd / logBase + 2 | 0; - i = 0; - - // divisor < 1e7 - if (yL == 1) { - k = 0; - yd = yd[0]; - sd++; - - // k is the carry. - for (; (i < xL || k) && sd--; i++) { - t = k * base + (xd[i] || 0); - qd[i] = t / yd | 0; - k = t % yd | 0; - } - - more = k || i < xL; - - // divisor >= 1e7 - } else { - - // Normalise xd and yd so highest order digit of yd is >= base/2 - k = base / (yd[0] + 1) | 0; - - if (k > 1) { - yd = multiplyInteger(yd, k, base); - xd = multiplyInteger(xd, k, base); - yL = yd.length; - xL = xd.length; - } - - xi = yL; - rem = xd.slice(0, yL); - remL = rem.length; - - // Add zeros to make remainder as long as divisor. - for (; remL < yL;) rem[remL++] = 0; - - yz = yd.slice(); - yz.unshift(0); - yd0 = yd[0]; - - if (yd[1] >= base / 2) ++yd0; - - do { - k = 0; - - // Compare divisor and remainder. - cmp = compare(yd, rem, yL, remL); - - // If divisor < remainder. - if (cmp < 0) { - - // Calculate trial digit, k. - rem0 = rem[0]; - if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); - - // k will be how many times the divisor goes into the current remainder. - k = rem0 / yd0 | 0; - - // Algorithm: - // 1. product = divisor * trial digit (k) - // 2. if product > remainder: product -= divisor, k-- - // 3. remainder -= product - // 4. if product was < remainder at 2: - // 5. compare new remainder and divisor - // 6. If remainder > divisor: remainder -= divisor, k++ - - if (k > 1) { - if (k >= base) k = base - 1; - - // product = divisor * trial digit. - prod = multiplyInteger(yd, k, base); - prodL = prod.length; - remL = rem.length; - - // Compare product and remainder. - cmp = compare(prod, rem, prodL, remL); - - // product > remainder. - if (cmp == 1) { - k--; - - // Subtract divisor from product. - subtract(prod, yL < prodL ? yz : yd, prodL, base); - } - } else { - - // cmp is -1. - // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1 - // to avoid it. If k is 1 there is a need to compare yd and rem again below. - if (k == 0) cmp = k = 1; - prod = yd.slice(); - } - - prodL = prod.length; - if (prodL < remL) prod.unshift(0); - - // Subtract product from remainder. - subtract(rem, prod, remL, base); - - // If product was < previous remainder. - if (cmp == -1) { - remL = rem.length; - - // Compare divisor and new remainder. - cmp = compare(yd, rem, yL, remL); - - // If divisor < new remainder, subtract divisor from remainder. - if (cmp < 1) { - k++; - - // Subtract divisor from remainder. - subtract(rem, yL < remL ? yz : yd, remL, base); - } - } - - remL = rem.length; - } else if (cmp === 0) { - k++; - rem = [0]; - } // if cmp === 1, k will be 0 - - // Add the next digit, k, to the result array. - qd[i++] = k; - - // Update the remainder. - if (cmp && rem[0]) { - rem[remL++] = xd[xi] || 0; - } else { - rem = [xd[xi]]; - remL = 1; - } - - } while ((xi++ < xL || rem[0] !== void 0) && sd--); - - more = rem[0] !== void 0; - } - - // Leading zero? - if (!qd[0]) qd.shift(); - } - - // logBase is 1 when divide is being used for base conversion. - if (logBase == 1) { - q.e = e; - inexact = more; - } else { - - // To calculate q.e, first get the number of digits of qd[0]. - for (i = 1, k = qd[0]; k >= 10; k /= 10) i++; - q.e = i + e * logBase - 1; - - finalise(q, dp ? pr + q.e + 1 : pr, rm, more); - } - - return q; - }; - })(); - - - /* - * Round `x` to `sd` significant digits using rounding mode `rm`. - * Check for over/under-flow. - */ - function finalise(x, sd, rm, isTruncated) { - var digits, i, j, k, rd, roundUp, w, xd, xdi, - Ctor = x.constructor; - - // Don't round if sd is null or undefined. - out: if (sd != null) { - xd = x.d; - - // Infinity/NaN. - if (!xd) return x; - - // rd: the rounding digit, i.e. the digit after the digit that may be rounded up. - // w: the word of xd containing rd, a base 1e7 number. - // xdi: the index of w within xd. - // digits: the number of digits of w. - // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if - // they had leading zeros) - // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero). - - // Get the length of the first word of the digits array xd. - for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++; - i = sd - digits; - - // Is the rounding digit in the first word of xd? - if (i < 0) { - i += LOG_BASE; - j = sd; - w = xd[xdi = 0]; - - // Get the rounding digit at index j of w. - rd = w / mathpow(10, digits - j - 1) % 10 | 0; - } else { - xdi = Math.ceil((i + 1) / LOG_BASE); - k = xd.length; - if (xdi >= k) { - if (isTruncated) { - - // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`. - for (; k++ <= xdi;) xd.push(0); - w = rd = 0; - digits = 1; - i %= LOG_BASE; - j = i - LOG_BASE + 1; - } else { - break out; - } - } else { - w = k = xd[xdi]; - - // Get the number of digits of w. - for (digits = 1; k >= 10; k /= 10) digits++; - - // Get the index of rd within w. - i %= LOG_BASE; - - // Get the index of rd within w, adjusted for leading zeros. - // The number of leading zeros of w is given by LOG_BASE - digits. - j = i - LOG_BASE + digits; - - // Get the rounding digit at index j of w. - rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0; - } - } - - // Are there any non-zero digits after the rounding digit? - isTruncated = isTruncated || sd < 0 || - xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1)); - - // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right - // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression - // will give 714. - - roundUp = rm < 4 - ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && - - // Check whether the digit to the left of the rounding digit is odd. - ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 || - rm == (x.s < 0 ? 8 : 7)); - - if (sd < 1 || !xd[0]) { - xd.length = 0; - if (roundUp) { - - // Convert sd to decimal places. - sd -= x.e + 1; - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); - x.e = -sd || 0; - } else { - - // Zero. - xd[0] = x.e = 0; - } - - return x; - } - - // Remove excess digits. - if (i == 0) { - xd.length = xdi; - k = 1; - xdi--; - } else { - xd.length = xdi + 1; - k = mathpow(10, LOG_BASE - i); - - // E.g. 56700 becomes 56000 if 7 is the rounding digit. - // j > 0 means i > number of leading zeros of w. - xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0; - } - - if (roundUp) { - for (;;) { - - // Is the digit to be rounded up in the first word of xd? - if (xdi == 0) { - - // i will be the length of xd[0] before k is added. - for (i = 1, j = xd[0]; j >= 10; j /= 10) i++; - j = xd[0] += k; - for (k = 1; j >= 10; j /= 10) k++; - - // if i != k the length has increased. - if (i != k) { - x.e++; - if (xd[0] == BASE) xd[0] = 1; - } - - break; - } else { - xd[xdi] += k; - if (xd[xdi] != BASE) break; - xd[xdi--] = 0; - k = 1; - } - } - } - - // Remove trailing zeros. - for (i = xd.length; xd[--i] === 0;) xd.pop(); - } - - if (external) { - - // Overflow? - if (x.e > Ctor.maxE) { - - // Infinity. - x.d = null; - x.e = NaN; - - // Underflow? - } else if (x.e < Ctor.minE) { - - // Zero. - x.e = 0; - x.d = [0]; - // Ctor.underflow = true; - } // else Ctor.underflow = false; - } - - return x; - } - - - function finiteToString(x, isExp, sd) { - if (!x.isFinite()) return nonFiniteToString(x); - var k, - e = x.e, - str = digitsToString(x.d), - len = str.length; - - if (isExp) { - if (sd && (k = sd - len) > 0) { - str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k); - } else if (len > 1) { - str = str.charAt(0) + '.' + str.slice(1); - } - - str = str + (x.e < 0 ? 'e' : 'e+') + x.e; - } else if (e < 0) { - str = '0.' + getZeroString(-e - 1) + str; - if (sd && (k = sd - len) > 0) str += getZeroString(k); - } else if (e >= len) { - str += getZeroString(e + 1 - len); - if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k); - } else { - if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k); - if (sd && (k = sd - len) > 0) { - if (e + 1 === len) str += '.'; - str += getZeroString(k); - } - } - - return str; - } - - - // Calculate the base 10 exponent from the base 1e7 exponent. - function getBase10Exponent(digits, e) { - var w = digits[0]; - - // Add the number of digits of the first word of the digits array. - for ( e *= LOG_BASE; w >= 10; w /= 10) e++; - return e; - } - - - function getLn10(Ctor, sd, pr) { - if (sd > LN10_PRECISION) { - - // Reset global state in case the exception is caught. - external = true; - if (pr) Ctor.precision = pr; - throw Error(precisionLimitExceeded); - } - return finalise(new Ctor(LN10), sd, 1, true); - } - - - function getPi(Ctor, sd, rm) { - if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); - return finalise(new Ctor(PI), sd, rm, true); - } - - - function getPrecision(digits) { - var w = digits.length - 1, - len = w * LOG_BASE + 1; - - w = digits[w]; - - // If non-zero... - if (w) { - - // Subtract the number of trailing zeros of the last word. - for (; w % 10 == 0; w /= 10) len--; - - // Add the number of digits of the first word. - for (w = digits[0]; w >= 10; w /= 10) len++; - } - - return len; - } - - - function getZeroString(k) { - var zs = ''; - for (; k--;) zs += '0'; - return zs; - } - - - /* - * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an - * integer of type number. - * - * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`. - * - */ - function intPow(Ctor, x, n, pr) { - var isTruncated, - r = new Ctor(1), - - // Max n of 9007199254740991 takes 53 loop iterations. - // Maximum digits array length; leaves [28, 34] guard digits. - k = Math.ceil(pr / LOG_BASE + 4); - - external = false; - - for (;;) { - if (n % 2) { - r = r.times(x); - if (truncate(r.d, k)) isTruncated = true; - } - - n = mathfloor(n / 2); - if (n === 0) { - - // To ensure correct rounding when r.d is truncated, increment the last word if it is zero. - n = r.d.length - 1; - if (isTruncated && r.d[n] === 0) ++r.d[n]; - break; - } - - x = x.times(x); - truncate(x.d, k); - } - - external = true; - - return r; - } - - - function isOdd(n) { - return n.d[n.d.length - 1] & 1; - } - - - /* - * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'. - */ - function maxOrMin(Ctor, args, ltgt) { - var y, - x = new Ctor(args[0]), - i = 0; - - for (; ++i < args.length;) { - y = new Ctor(args[i]); - if (!y.s) { - x = y; - break; - } else if (x[ltgt](y)) { - x = y; - } - } - - return x; - } - - - /* - * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant - * digits. - * - * Taylor/Maclaurin series. - * - * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... - * - * Argument reduction: - * Repeat x = x / 32, k += 5, until |x| < 0.1 - * exp(x) = exp(x / 2^k)^(2^k) - * - * Previously, the argument was initially reduced by - * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10) - * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was - * found to be slower than just dividing repeatedly by 32 as above. - * - * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000 - * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000 - * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324) - * - * exp(Infinity) = Infinity - * exp(-Infinity) = 0 - * exp(NaN) = NaN - * exp(±0) = 1 - * - * exp(x) is non-terminating for any finite, non-zero x. - * - * The result will always be correctly rounded. - * - */ - function naturalExponential(x, sd) { - var denominator, guard, j, pow, sum, t, wpr, - rep = 0, - i = 0, - k = 0, - Ctor = x.constructor, - rm = Ctor.rounding, - pr = Ctor.precision; - - // 0/NaN/Infinity? - if (!x.d || !x.d[0] || x.e > 17) { - - return new Ctor(x.d - ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 - : x.s ? x.s < 0 ? 0 : x : 0 / 0); - } - - if (sd == null) { - external = false; - wpr = pr; - } else { - wpr = sd; - } - - t = new Ctor(0.03125); - - // while abs(x) >= 0.1 - while (x.e > -2) { - - // x = x / 2^5 - x = x.times(t); - k += 5; - } - - // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision - // necessary to ensure the first 4 rounding digits are correct. - guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0; - wpr += guard; - denominator = pow = sum = new Ctor(1); - Ctor.precision = wpr; - - for (;;) { - pow = finalise(pow.times(x), wpr, 1); - denominator = denominator.times(++i); - t = sum.plus(divide(pow, denominator, wpr, 1)); - - if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { - j = k; - while (j--) sum = finalise(sum.times(sum), wpr, 1); - - // Check to see if the first 4 rounding digits are [49]999. - // If so, repeat the summation with a higher precision, otherwise - // e.g. with precision: 18, rounding: 1 - // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123) - // `wpr - guard` is the index of first rounding digit. - if (sd == null) { - - if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { - Ctor.precision = wpr += 10; - denominator = pow = t = new Ctor(1); - i = 0; - rep++; - } else { - return finalise(sum, Ctor.precision = pr, rm, external = true); - } - } else { - Ctor.precision = pr; - return sum; - } - } - - sum = t; - } - } - - - /* - * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant - * digits. - * - * ln(-n) = NaN - * ln(0) = -Infinity - * ln(-0) = -Infinity - * ln(1) = 0 - * ln(Infinity) = Infinity - * ln(-Infinity) = NaN - * ln(NaN) = NaN - * - * ln(n) (n != 1) is non-terminating. - * - */ - function naturalLogarithm(y, sd) { - var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, - n = 1, - guard = 10, - x = y, - xd = x.d, - Ctor = x.constructor, - rm = Ctor.rounding, - pr = Ctor.precision; - - // Is x negative or Infinity, NaN, 0 or 1? - if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { - return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); - } - - if (sd == null) { - external = false; - wpr = pr; - } else { - wpr = sd; - } - - Ctor.precision = wpr += guard; - c = digitsToString(xd); - c0 = c.charAt(0); - - if (Math.abs(e = x.e) < 1.5e15) { - - // Argument reduction. - // The series converges faster the closer the argument is to 1, so using - // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b - // multiply the argument by itself until the leading digits of the significand are 7, 8, 9, - // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can - // later be divided by this number, then separate out the power of 10 using - // ln(a*10^b) = ln(a) + b*ln(10). - - // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14). - //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) { - // max n is 6 (gives 0.7 - 1.3) - while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) { - x = x.times(y); - c = digitsToString(x.d); - c0 = c.charAt(0); - n++; - } - - e = x.e; - - if (c0 > 1) { - x = new Ctor('0.' + c); - e++; - } else { - x = new Ctor(c0 + '.' + c.slice(1)); - } - } else { - - // The argument reduction method above may result in overflow if the argument y is a massive - // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this - // function using ln(x*10^e) = ln(x) + e*ln(10). - t = getLn10(Ctor, wpr + 2, pr).times(e + ''); - x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t); - Ctor.precision = pr; - - return sd == null ? finalise(x, pr, rm, external = true) : x; - } - - // x1 is x reduced to a value near 1. - x1 = x; - - // Taylor series. - // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...) - // where x = (y - 1)/(y + 1) (|x| < 1) - sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); - x2 = finalise(x.times(x), wpr, 1); - denominator = 3; - - for (;;) { - numerator = finalise(numerator.times(x2), wpr, 1); - t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1)); - - if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { - sum = sum.times(2); - - // Reverse the argument reduction. Check that e is not 0 because, besides preventing an - // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0. - if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + '')); - sum = divide(sum, new Ctor(n), wpr, 1); - - // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has - // been repeated previously) and the first 4 rounding digits 9999? - // If so, restart the summation with a higher precision, otherwise - // e.g. with precision: 12, rounding: 1 - // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463. - // `wpr - guard` is the index of first rounding digit. - if (sd == null) { - if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { - Ctor.precision = wpr += guard; - t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); - x2 = finalise(x.times(x), wpr, 1); - denominator = rep = 1; - } else { - return finalise(sum, Ctor.precision = pr, rm, external = true); - } - } else { - Ctor.precision = pr; - return sum; - } - } - - sum = t; - denominator += 2; - } - } - - - // ±Infinity, NaN. - function nonFiniteToString(x) { - // Unsigned. - return String(x.s * x.s / 0); - } - - - /* - * Parse the value of a new Decimal `x` from string `str`. - */ - function parseDecimal(x, str) { - var e, i, len; - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - - // Exponential form? - if ((i = str.search(/e/i)) > 0) { - - // Determine exponent. - if (e < 0) e = i; - e += +str.slice(i + 1); - str = str.substring(0, i); - } else if (e < 0) { - - // Integer. - e = str.length; - } - - // Determine leading zeros. - for (i = 0; str.charCodeAt(i) === 48; i++); - - // Determine trailing zeros. - for (len = str.length; str.charCodeAt(len - 1) === 48; --len); - str = str.slice(i, len); - - if (str) { - len -= i; - x.e = e = e - i - 1; - x.d = []; - - // Transform base - - // e is the base 10 exponent. - // i is where to slice str to get the first word of the digits array. - i = (e + 1) % LOG_BASE; - if (e < 0) i += LOG_BASE; - - if (i < len) { - if (i) x.d.push(+str.slice(0, i)); - for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE)); - str = str.slice(i); - i = LOG_BASE - str.length; - } else { - i -= len; - } - - for (; i--;) str += '0'; - x.d.push(+str); - - if (external) { - - // Overflow? - if (x.e > x.constructor.maxE) { - - // Infinity. - x.d = null; - x.e = NaN; - - // Underflow? - } else if (x.e < x.constructor.minE) { - - // Zero. - x.e = 0; - x.d = [0]; - // x.constructor.underflow = true; - } // else x.constructor.underflow = false; - } - } else { - - // Zero. - x.e = 0; - x.d = [0]; - } - - return x; - } - - - /* - * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value. - */ - function parseOther(x, str) { - var base, Ctor, divisor, i, isFloat, len, p, xd, xe; - - if (str === 'Infinity' || str === 'NaN') { - if (!+str) x.s = NaN; - x.e = NaN; - x.d = null; - return x; - } - - if (isHex.test(str)) { - base = 16; - str = str.toLowerCase(); - } else if (isBinary.test(str)) { - base = 2; - } else if (isOctal.test(str)) { - base = 8; - } else { - throw Error(invalidArgument + str); - } - - // Is there a binary exponent part? - i = str.search(/p/i); - - if (i > 0) { - p = +str.slice(i + 1); - str = str.substring(2, i); - } else { - str = str.slice(2); - } - - // Convert `str` as an integer then divide the result by `base` raised to a power such that the - // fraction part will be restored. - i = str.indexOf('.'); - isFloat = i >= 0; - Ctor = x.constructor; - - if (isFloat) { - str = str.replace('.', ''); - len = str.length; - i = len - i; - - // log[10](16) = 1.2041... , log[10](88) = 1.9444.... - divisor = intPow(Ctor, new Ctor(base), i, i * 2); - } - - xd = convertBase(str, base, BASE); - xe = xd.length - 1; - - // Remove trailing zeros. - for (i = xe; xd[i] === 0; --i) xd.pop(); - if (i < 0) return new Ctor(x.s * 0); - x.e = getBase10Exponent(xd, xe); - x.d = xd; - external = false; - - // At what precision to perform the division to ensure exact conversion? - // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount) - // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412 - // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits. - // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount - // Therefore using 4 * the number of digits of str will always be enough. - if (isFloat) x = divide(x, divisor, len * 4); - - // Multiply by the binary exponent part if present. - if (p) x = x.times(Math.abs(p) < 54 ? Math.pow(2, p) : Decimal.pow(2, p)); - external = true; - - return x; - } - - - /* - * sin(x) = x - x^3/3! + x^5/5! - ... - * |x| < pi/2 - * - */ - function sine(Ctor, x) { - var k, - len = x.d.length; - - if (len < 3) return taylorSeries(Ctor, 2, x, x); - - // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x) - // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5) - // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20)) - - // Estimate the optimum number of times to use the argument reduction. - k = 1.4 * Math.sqrt(len); - k = k > 16 ? 16 : k | 0; - - // Max k before Math.pow precision loss is 22 - x = x.times(Math.pow(5, -k)); - x = taylorSeries(Ctor, 2, x, x); - - // Reverse argument reduction - var sin2_x, - d5 = new Ctor(5), - d16 = new Ctor(16), - d20 = new Ctor(20); - for (; k--;) { - sin2_x = x.times(x); - x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); - } - - return x; - } - - - // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`. - function taylorSeries(Ctor, n, x, y, isHyperbolic) { - var j, t, u, x2, - i = 1, - pr = Ctor.precision, - k = Math.ceil(pr / LOG_BASE); - - external = false; - x2 = x.times(x); - u = new Ctor(y); - - for (;;) { - t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1); - u = isHyperbolic ? y.plus(t) : y.minus(t); - y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1); - t = u.plus(y); - - if (t.d[k] !== void 0) { - for (j = k; t.d[j] === u.d[j] && j--;); - if (j == -1) break; - } - - j = u; - u = y; - y = t; - t = j; - i++; - } - - external = true; - t.d.length = k + 1; - - return t; - } - - - // Return the absolute value of `x` reduced to less than or equal to half pi. - function toLessThanHalfPi(Ctor, x) { - var t, - isNeg = x.s < 0, - pi = getPi(Ctor, Ctor.precision, 1), - halfPi = pi.times(0.5); - - x = x.abs(); - - if (x.lte(halfPi)) { - quadrant = isNeg ? 4 : 1; - return x; - } - - t = x.divToInt(pi); - - if (t.isZero()) { - quadrant = isNeg ? 3 : 2; - } else { - x = x.minus(t.times(pi)); - - // 0 <= x < pi - if (x.lte(halfPi)) { - quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1); - return x; - } - - quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2); - } - - return x.minus(pi).abs(); - } - - - /* - * Return the value of Decimal `x` as a string in base `baseOut`. - * - * If the optional `sd` argument is present include a binary exponent suffix. - */ - function toStringBinary(x, baseOut, sd, rm) { - var base, e, i, k, len, roundUp, str, xd, y, - Ctor = x.constructor, - isExp = sd !== void 0; - - if (isExp) { - checkInt32(sd, 1, MAX_DIGITS); - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - } else { - sd = Ctor.precision; - rm = Ctor.rounding; - } - - if (!x.isFinite()) { - str = nonFiniteToString(x); - } else { - str = finiteToString(x); - i = str.indexOf('.'); - - // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required: - // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10)) - // minBinaryExponent = floor(decimalExponent * log[2](10)) - // log[2](10) = 3.321928094887362347870319429489390175864 - - if (isExp) { - base = 2; - if (baseOut == 16) { - sd = sd * 4 - 3; - } else if (baseOut == 8) { - sd = sd * 3 - 2; - } - } else { - base = baseOut; - } - - // Convert the number as an integer then divide the result by its base raised to a power such - // that the fraction part will be restored. - - // Non-integer. - if (i >= 0) { - str = str.replace('.', ''); - y = new Ctor(1); - y.e = str.length - i; - y.d = convertBase(finiteToString(y), 10, base); - y.e = y.d.length; - } - - xd = convertBase(str, 10, base); - e = len = xd.length; - - // Remove trailing zeros. - for (; xd[--len] == 0;) xd.pop(); - - if (!xd[0]) { - str = isExp ? '0p+0' : '0'; - } else { - if (i < 0) { - e--; - } else { - x = new Ctor(x); - x.d = xd; - x.e = e; - x = divide(x, y, sd, rm, 0, base); - xd = x.d; - e = x.e; - roundUp = inexact; - } - - // The rounding digit, i.e. the digit after the digit that may be rounded up. - i = xd[sd]; - k = base / 2; - roundUp = roundUp || xd[sd + 1] !== void 0; - - roundUp = rm < 4 - ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) - : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || - rm === (x.s < 0 ? 8 : 7)); - - xd.length = sd; - - if (roundUp) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for (; ++xd[--sd] > base - 1;) { - xd[sd] = 0; - if (!sd) { - ++e; - xd.unshift(1); - } - } - } - - // Determine trailing zeros. - for (len = xd.length; !xd[len - 1]; --len); - - // E.g. [4, 11, 15] becomes 4bf. - for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]); - - // Add binary exponent suffix? - if (isExp) { - if (len > 1) { - if (baseOut == 16 || baseOut == 8) { - i = baseOut == 16 ? 4 : 3; - for (--len; len % i; len++) str += '0'; - xd = convertBase(str, base, baseOut); - for (len = xd.length; !xd[len - 1]; --len); - - // xd[0] will always be be 1 - for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]); - } else { - str = str.charAt(0) + '.' + str.slice(1); - } - } - - str = str + (e < 0 ? 'p' : 'p+') + e; - } else if (e < 0) { - for (; ++e;) str = '0' + str; - str = '0.' + str; - } else { - if (++e > len) for (e -= len; e-- ;) str += '0'; - else if (e < len) str = str.slice(0, e) + '.' + str.slice(e); - } - } - - str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str; - } - - return x.s < 0 ? '-' + str : str; - } - - - // Does not strip trailing zeros. - function truncate(arr, len) { - if (arr.length > len) { - arr.length = len; - return true; - } - } - - - // Decimal methods - - - /* - * abs - * acos - * acosh - * add - * asin - * asinh - * atan - * atanh - * atan2 - * cbrt - * ceil - * clone - * config - * cos - * cosh - * div - * exp - * floor - * hypot - * ln - * log - * log2 - * log10 - * max - * min - * mod - * mul - * pow - * random - * round - * set - * sign - * sin - * sinh - * sqrt - * sub - * tan - * tanh - * trunc - */ - - - /* - * Return a new Decimal whose value is the absolute value of `x`. - * - * x {number|string|Decimal} - * - */ - function abs(x) { - return new this(x).abs(); - } - - - /* - * Return a new Decimal whose value is the arccosine in radians of `x`. - * - * x {number|string|Decimal} - * - */ - function acos(x) { - return new this(x).acos(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function acosh(x) { - return new this(x).acosh(); - } - - - /* - * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function add(x, y) { - return new this(x).plus(y); - } - - - /* - * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function asin(x) { - return new this(x).asin(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function asinh(x) { - return new this(x).asinh(); - } - - - /* - * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function atan(x) { - return new this(x).atan(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function atanh(x) { - return new this(x).atanh(); - } - - - /* - * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi - * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi, pi] - * - * y {number|string|Decimal} The y-coordinate. - * x {number|string|Decimal} The x-coordinate. - * - * atan2(±0, -0) = ±pi - * atan2(±0, +0) = ±0 - * atan2(±0, -x) = ±pi for x > 0 - * atan2(±0, x) = ±0 for x > 0 - * atan2(-y, ±0) = -pi/2 for y > 0 - * atan2(y, ±0) = pi/2 for y > 0 - * atan2(±y, -Infinity) = ±pi for finite y > 0 - * atan2(±y, +Infinity) = ±0 for finite y > 0 - * atan2(±Infinity, x) = ±pi/2 for finite x - * atan2(±Infinity, -Infinity) = ±3*pi/4 - * atan2(±Infinity, +Infinity) = ±pi/4 - * atan2(NaN, x) = NaN - * atan2(y, NaN) = NaN - * - */ - function atan2(y, x) { - y = new this(y); - x = new this(x); - var r, - pr = this.precision, - rm = this.rounding, - wpr = pr + 4; - - // Either NaN - if (!y.s || !x.s) { - r = new this(NaN); - - // Both ±Infinity - } else if (!y.d && !x.d) { - r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); - r.s = y.s; - - // x is ±Infinity or y is ±0 - } else if (!x.d || y.isZero()) { - r = x.s < 0 ? getPi(this, pr, rm) : new this(0); - r.s = y.s; - - // y is ±Infinity or x is ±0 - } else if (!y.d || x.isZero()) { - r = getPi(this, wpr, 1).times(0.5); - r.s = y.s; - - // Both non-zero and finite - } else if (x.s < 0) { - this.precision = wpr; - this.rounding = 1; - r = this.atan(divide(y, x, wpr, 1)); - x = getPi(this, wpr, 1); - this.precision = pr; - this.rounding = rm; - r = y.s < 0 ? r.minus(x) : r.plus(x); - } else { - r = this.atan(divide(y, x, wpr, 1)); - } - - return r; - } - - - /* - * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function cbrt(x) { - return new this(x).cbrt(); - } - - - /* - * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. - * - * x {number|string|Decimal} - * - */ - function ceil(x) { - return finalise(x = new this(x), x.e + 1, 2); - } - - - /* - * Configure global settings for a Decimal constructor. - * - * `obj` is an object with one or more of the following properties, - * - * precision {number} - * rounding {number} - * toExpNeg {number} - * toExpPos {number} - * maxE {number} - * minE {number} - * modulo {number} - * crypto {boolean|number} - * defaults {true} - * - * E.g. Decimal.config({ precision: 20, rounding: 4 }) - * - */ - function config(obj) { - if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); - var i, p, v, - useDefaults = obj.defaults === true, - ps = [ - 'precision', 1, MAX_DIGITS, - 'rounding', 0, 8, - 'toExpNeg', -EXP_LIMIT, 0, - 'toExpPos', 0, EXP_LIMIT, - 'maxE', 0, EXP_LIMIT, - 'minE', -EXP_LIMIT, 0, - 'modulo', 0, 9 - ]; - - for (i = 0; i < ps.length; i += 3) { - if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; - if ((v = obj[p]) !== void 0) { - if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; - else throw Error(invalidArgument + p + ': ' + v); - } - } - - if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; - if ((v = obj[p]) !== void 0) { - if (v === true || v === false || v === 0 || v === 1) { - if (v) { - if (typeof crypto != 'undefined' && crypto && - (crypto.getRandomValues || crypto.randomBytes)) { - this[p] = true; - } else { - throw Error(cryptoUnavailable); - } - } else { - this[p] = false; - } - } else { - throw Error(invalidArgument + p + ': ' + v); - } - } - - return this; - } - - - /* - * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function cos(x) { - return new this(x).cos(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function cosh(x) { - return new this(x).cosh(); - } - - - /* - * Create and return a Decimal constructor with the same configuration properties as this Decimal - * constructor. - * - */ - function clone(obj) { - var i, p, ps; - - /* - * The Decimal constructor and exported function. - * Return a new Decimal instance. - * - * v {number|string|Decimal} A numeric value. - * - */ - function Decimal(v) { - var e, i, t, - x = this; - - // Decimal called without new. - if (!(x instanceof Decimal)) return new Decimal(v); - - // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor - // which points to Object. - x.constructor = Decimal; - - // Duplicate. - if (v instanceof Decimal) { - x.s = v.s; - x.e = v.e; - x.d = (v = v.d) ? v.slice() : v; - return; - } - - t = typeof v; - - if (t === 'number') { - if (v === 0) { - x.s = 1 / v < 0 ? -1 : 1; - x.e = 0; - x.d = [0]; - return; - } - - if (v < 0) { - v = -v; - x.s = -1; - } else { - x.s = 1; - } - - // Fast path for small integers. - if (v === ~~v && v < 1e7) { - for (e = 0, i = v; i >= 10; i /= 10) e++; - x.e = e; - x.d = [v]; - return; - - // Infinity, NaN. - } else if (v * 0 !== 0) { - if (!v) x.s = NaN; - x.e = NaN; - x.d = null; - return; - } - - return parseDecimal(x, v.toString()); - - } else if (t !== 'string') { - throw Error(invalidArgument + v); - } - - // Minus sign? - if (v.charCodeAt(0) === 45) { - v = v.slice(1); - x.s = -1; - } else { - x.s = 1; - } - - return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); - } - - Decimal.prototype = P; - - Decimal.ROUND_UP = 0; - Decimal.ROUND_DOWN = 1; - Decimal.ROUND_CEIL = 2; - Decimal.ROUND_FLOOR = 3; - Decimal.ROUND_HALF_UP = 4; - Decimal.ROUND_HALF_DOWN = 5; - Decimal.ROUND_HALF_EVEN = 6; - Decimal.ROUND_HALF_CEIL = 7; - Decimal.ROUND_HALF_FLOOR = 8; - Decimal.EUCLID = 9; - - Decimal.config = Decimal.set = config; - Decimal.clone = clone; - Decimal.isDecimal = isDecimalInstance; - - Decimal.abs = abs; - Decimal.acos = acos; - Decimal.acosh = acosh; // ES6 - Decimal.add = add; - Decimal.asin = asin; - Decimal.asinh = asinh; // ES6 - Decimal.atan = atan; - Decimal.atanh = atanh; // ES6 - Decimal.atan2 = atan2; - Decimal.cbrt = cbrt; // ES6 - Decimal.ceil = ceil; - Decimal.cos = cos; - Decimal.cosh = cosh; // ES6 - Decimal.div = div; - Decimal.exp = exp; - Decimal.floor = floor; - Decimal.hypot = hypot; // ES6 - Decimal.ln = ln; - Decimal.log = log; - Decimal.log10 = log10; // ES6 - Decimal.log2 = log2; // ES6 - Decimal.max = max; - Decimal.min = min; - Decimal.mod = mod; - Decimal.mul = mul; - Decimal.pow = pow; - Decimal.random = random; - Decimal.round = round; - Decimal.sign = sign; // ES6 - Decimal.sin = sin; - Decimal.sinh = sinh; // ES6 - Decimal.sqrt = sqrt; - Decimal.sub = sub; - Decimal.tan = tan; - Decimal.tanh = tanh; // ES6 - Decimal.trunc = trunc; // ES6 - - if (obj === void 0) obj = {}; - if (obj) { - if (obj.defaults !== true) { - ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; - for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; - } - } - - Decimal.config(obj); - - return Decimal; - } - - - /* - * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function div(x, y) { - return new this(x).div(y); - } - - - /* - * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} The power to which to raise the base of the natural log. - * - */ - function exp(x) { - return new this(x).exp(); - } - - - /* - * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. - * - * x {number|string|Decimal} - * - */ - function floor(x) { - return finalise(x = new this(x), x.e + 1, 3); - } - - - /* - * Return a new Decimal whose value is the square root of the sum of the squares of the arguments, - * rounded to `precision` significant digits using rounding mode `rounding`. - * - * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) - * - */ - function hypot() { - var i, n, - t = new this(0); - - external = false; - - for (i = 0; i < arguments.length;) { - n = new this(arguments[i++]); - if (!n.d) { - if (n.s) { - external = true; - return new this(1 / 0); - } - t = n; - } else if (t.d) { - t = t.plus(n.times(n)); - } - } - - external = true; - - return t.sqrt(); - } - - - /* - * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), - * otherwise return false. - * - */ - function isDecimalInstance(obj) { - return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false; - } - - - /* - * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function ln(x) { - return new this(x).ln(); - } - - - /* - * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base - * is specified, rounded to `precision` significant digits using rounding mode `rounding`. - * - * log[y](x) - * - * x {number|string|Decimal} The argument of the logarithm. - * y {number|string|Decimal} The base of the logarithm. - * - */ - function log(x, y) { - return new this(x).log(y); - } - - - /* - * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function log2(x) { - return new this(x).log(2); - } - - - /* - * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function log10(x) { - return new this(x).log(10); - } - - - /* - * Return a new Decimal whose value is the maximum of the arguments. - * - * arguments {number|string|Decimal} - * - */ - function max() { - return maxOrMin(this, arguments, 'lt'); - } - - - /* - * Return a new Decimal whose value is the minimum of the arguments. - * - * arguments {number|string|Decimal} - * - */ - function min() { - return maxOrMin(this, arguments, 'gt'); - } - - - /* - * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function mod(x, y) { - return new this(x).mod(y); - } - - - /* - * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function mul(x, y) { - return new this(x).mul(y); - } - - - /* - * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} The base. - * y {number|string|Decimal} The exponent. - * - */ - function pow(x, y) { - return new this(x).pow(y); - } - - - /* - * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with - * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros - * are produced). - * - * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive. - * - */ - function random(sd) { - var d, e, k, n, - i = 0, - r = new this(1), - rd = []; - - if (sd === void 0) sd = this.precision; - else checkInt32(sd, 1, MAX_DIGITS); - - k = Math.ceil(sd / LOG_BASE); - - if (!this.crypto) { - for (; i < k;) rd[i++] = Math.random() * 1e7 | 0; - - // Browsers supporting crypto.getRandomValues. - } else if (crypto.getRandomValues) { - d = crypto.getRandomValues(new Uint32Array(k)); - - for (; i < k;) { - n = d[i]; - - // 0 <= n < 4294967296 - // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865). - if (n >= 4.29e9) { - d[i] = crypto.getRandomValues(new Uint32Array(1))[0]; - } else { - - // 0 <= n <= 4289999999 - // 0 <= (n % 1e7) <= 9999999 - rd[i++] = n % 1e7; - } - } - - // Node.js supporting crypto.randomBytes. - } else if (crypto.randomBytes) { - - // buffer - d = crypto.randomBytes(k *= 4); - - for (; i < k;) { - - // 0 <= n < 2147483648 - n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24); - - // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286). - if (n >= 2.14e9) { - crypto.randomBytes(4).copy(d, i); - } else { - - // 0 <= n <= 2139999999 - // 0 <= (n % 1e7) <= 9999999 - rd.push(n % 1e7); - i += 4; - } - } - - i = k / 4; - } else { - throw Error(cryptoUnavailable); - } - - k = rd[--i]; - sd %= LOG_BASE; - - // Convert trailing digits to zeros according to sd. - if (k && sd) { - n = mathpow(10, LOG_BASE - sd); - rd[i] = (k / n | 0) * n; - } - - // Remove trailing words which are zero. - for (; rd[i] === 0; i--) rd.pop(); - - // Zero? - if (i < 0) { - e = 0; - rd = [0]; - } else { - e = -1; - - // Remove leading words which are zero and adjust exponent accordingly. - for (; rd[0] === 0; e -= LOG_BASE) rd.shift(); - - // Count the digits of the first word of rd to determine leading zeros. - for (k = 1, n = rd[0]; n >= 10; n /= 10) k++; - - // Adjust the exponent for leading zeros of the first word of rd. - if (k < LOG_BASE) e -= LOG_BASE - k; - } - - r.e = e; - r.d = rd; - - return r; - } - - - /* - * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`. - * - * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). - * - * x {number|string|Decimal} - * - */ - function round(x) { - return finalise(x = new this(x), x.e + 1, this.rounding); - } - - - /* - * Return - * 1 if x > 0, - * -1 if x < 0, - * 0 if x is 0, - * -0 if x is -0, - * NaN otherwise - * - */ - function sign(x) { - x = new this(x); - return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN; - } - - - /* - * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function sin(x) { - return new this(x).sin(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function sinh(x) { - return new this(x).sinh(); - } - - - /* - * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function sqrt(x) { - return new this(x).sqrt(); - } - - - /* - * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function sub(x, y) { - return new this(x).sub(y); - } - - - /* - * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function tan(x) { - return new this(x).tan(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function tanh(x) { - return new this(x).tanh(); - } - - - /* - * Return a new Decimal whose value is `x` truncated to an integer. - * - * x {number|string|Decimal} - * - */ - function trunc(x) { - return finalise(x = new this(x), x.e + 1, 1); - } - - - // Create and configure initial Decimal constructor. - Decimal = clone(DEFAULTS); - - Decimal['default'] = Decimal.Decimal = Decimal; - - // Create the internal constants from their string values. - LN10 = new Decimal(LN10); - PI = new Decimal(PI); - - - // Export. - - - // AMD. - if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { - return Decimal; +var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v9.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */ +;(function (globalScope) { + 'use strict'; + + + /* + * decimal.js v9.0.1 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2017 Michael Mclaughlin + * MIT Licence + */ + + + // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ // + + + // The maximum exponent magnitude. + // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`. + var EXP_LIMIT = 9e15, // 0 to 9e15 + + // The limit on the value of `precision`, and on the value of the first argument to + // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. + MAX_DIGITS = 1e9, // 0 to 1e9 + + // Base conversion alphabet. + NUMERALS = '0123456789abcdef', + + // The natural logarithm of 10 (1025 digits). + LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058', + + // Pi (1025 digits). + PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789', + + + // The initial configuration properties of the Decimal constructor. + DEFAULTS = { + + // These values must be integers within the stated ranges (inclusive). + // Most of these values can be changed at run-time using the `Decimal.config` method. + + // The maximum number of significant digits of the result of a calculation or base conversion. + // E.g. `Decimal.config({ precision: 20 });` + precision: 20, // 1 to MAX_DIGITS + + // The rounding mode used when rounding to `precision`. + // + // ROUND_UP 0 Away from zero. + // ROUND_DOWN 1 Towards zero. + // ROUND_CEIL 2 Towards +Infinity. + // ROUND_FLOOR 3 Towards -Infinity. + // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + // + // E.g. + // `Decimal.rounding = 4;` + // `Decimal.rounding = Decimal.ROUND_HALF_UP;` + rounding: 4, // 0 to 8 + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 The IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. + // + // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian + // division (9) are commonly used for the modulus operation. The other rounding modes can also + // be used, but they may not give useful results. + modulo: 1, // 0 to 9 + + // The exponent value at and beneath which `toString` returns exponential notation. + // JavaScript numbers: -7 + toExpNeg: -7, // 0 to -EXP_LIMIT + + // The exponent value at and above which `toString` returns exponential notation. + // JavaScript numbers: 21 + toExpPos: 21, // 0 to EXP_LIMIT + + // The minimum exponent value, beneath which underflow to zero occurs. + // JavaScript numbers: -324 (5e-324) + minE: -EXP_LIMIT, // -1 to -EXP_LIMIT + + // The maximum exponent value, above which overflow to Infinity occurs. + // JavaScript numbers: 308 (1.7976931348623157e+308) + maxE: EXP_LIMIT, // 1 to EXP_LIMIT + + // Whether to use cryptographically-secure random number generation, if available. + crypto: false // true/false + }, + + + // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // + + + Decimal, inexact, noConflict, quadrant, + external = true, + + decimalError = '[DecimalError] ', + invalidArgument = decimalError + 'Invalid argument: ', + precisionLimitExceeded = decimalError + 'Precision limit exceeded', + cryptoUnavailable = decimalError + 'crypto unavailable', + + mathfloor = Math.floor, + mathpow = Math.pow, + + isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i, + isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i, + isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i, + isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + + BASE = 1e7, + LOG_BASE = 7, + MAX_SAFE_INTEGER = 9007199254740991, + + LN10_PRECISION = LN10.length - 1, + PI_PRECISION = PI.length - 1, + + // Decimal.prototype object + P = { name: '[object Decimal]' }; + + + // Decimal prototype methods + + + /* + * absoluteValue abs + * ceil + * comparedTo cmp + * cosine cos + * cubeRoot cbrt + * decimalPlaces dp + * dividedBy div + * dividedToIntegerBy divToInt + * equals eq + * floor + * greaterThan gt + * greaterThanOrEqualTo gte + * hyperbolicCosine cosh + * hyperbolicSine sinh + * hyperbolicTangent tanh + * inverseCosine acos + * inverseHyperbolicCosine acosh + * inverseHyperbolicSine asinh + * inverseHyperbolicTangent atanh + * inverseSine asin + * inverseTangent atan + * isFinite + * isInteger isInt + * isNaN + * isNegative isNeg + * isPositive isPos + * isZero + * lessThan lt + * lessThanOrEqualTo lte + * logarithm log + * [maximum] [max] + * [minimum] [min] + * minus sub + * modulo mod + * naturalExponential exp + * naturalLogarithm ln + * negated neg + * plus add + * precision sd + * round + * sine sin + * squareRoot sqrt + * tangent tan + * times mul + * toBinary + * toDecimalPlaces toDP + * toExponential + * toFixed + * toFraction + * toHexadecimal toHex + * toNearest + * toNumber + * toOctal + * toPower pow + * toPrecision + * toSignificantDigits toSD + * toString + * truncated trunc + * valueOf toJSON + */ + + + /* + * Return a new Decimal whose value is the absolute value of this Decimal. + * + */ + P.absoluteValue = P.abs = function () { + var x = new this.constructor(this); + if (x.s < 0) x.s = 1; + return finalise(x); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of positive Infinity. + * + */ + P.ceil = function () { + return finalise(new this.constructor(this), this.e + 1, 2); + }; + + + /* + * Return + * 1 if the value of this Decimal is greater than the value of `y`, + * -1 if the value of this Decimal is less than the value of `y`, + * 0 if they have the same value, + * NaN if the value of either Decimal is NaN. + * + */ + P.comparedTo = P.cmp = function (y) { + var i, j, xdL, ydL, + x = this, + xd = x.d, + yd = (y = new x.constructor(y)).d, + xs = x.s, + ys = y.s; + + // Either NaN or ±Infinity? + if (!xd || !yd) { + return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; + } + + // Either zero? + if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; + + // Signs differ? + if (xs !== ys) return xs; + + // Compare exponents. + if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; + + xdL = xd.length; + ydL = yd.length; + + // Compare digit by digit. + for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) { + if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1; + } + + // Compare lengths. + return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; + }; + + + /* + * Return a new Decimal whose value is the cosine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * cos(0) = 1 + * cos(-0) = 1 + * cos(Infinity) = NaN + * cos(-Infinity) = NaN + * cos(NaN) = NaN + * + */ + P.cosine = P.cos = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.d) return new Ctor(NaN); + + // cos(0) = cos(-0) = 1 + if (!x.d[0]) return new Ctor(1); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); + }; + + + /* + * + * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * cbrt(0) = 0 + * cbrt(-0) = -0 + * cbrt(1) = 1 + * cbrt(-1) = -1 + * cbrt(N) = N + * cbrt(-I) = -I + * cbrt(I) = I + * + * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3)) + * + */ + P.cubeRoot = P.cbrt = function () { + var e, m, n, r, rep, s, sd, t, t3, t3plusx, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + external = false; + + // Initial estimate. + s = x.s * Math.pow(x.s * x, 1 / 3); + + // Math.cbrt underflow/overflow? + // Pass x to Math.pow as integer, then adjust the exponent of the result. + if (!s || Math.abs(s) == 1 / 0) { + n = digitsToString(x.d); + e = x.e; + + // Adjust n exponent so it is a multiple of 3 away from x exponent. + if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00'); + s = Math.pow(n, 1 / 3); + + // Rarely, e may be one less than the result exponent value. + e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2)); + + if (s == 1 / 0) { + n = '5e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + r.s = x.s; + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Halley's method. + // TODO? Compare Newton's method. + for (;;) { + t = r; + t3 = t.times(t).times(t); + t3plusx = t3.plus(x); + r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999 + // , i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return the number of decimal places of the value of this Decimal. + * + */ + P.decimalPlaces = P.dp = function () { + var w, + d = this.d, + n = NaN; + + if (d) { + w = d.length - 1; + n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; + + // Subtract the number of trailing zeros of the last word. + w = d[w]; + if (w) for (; w % 10 == 0; w /= 10) n--; + if (n < 0) n = 0; + } + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedBy = P.div = function (y) { + return divide(this, new this.constructor(y)); + }; + + + /* + * Return a new Decimal whose value is the integer part of dividing the value of this Decimal + * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedToIntegerBy = P.divToInt = function (y) { + var x = this, + Ctor = x.constructor; + return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); + }; + + + /* + * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false. + * + */ + P.equals = P.eq = function (y) { + return this.cmp(y) === 0; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of negative Infinity. + * + */ + P.floor = function () { + return finalise(new this.constructor(this), this.e + 1, 3); + }; + + + /* + * Return true if the value of this Decimal is greater than the value of `y`, otherwise return + * false. + * + */ + P.greaterThan = P.gt = function (y) { + return this.cmp(y) > 0; + }; + + + /* + * Return true if the value of this Decimal is greater than or equal to the value of `y`, + * otherwise return false. + * + */ + P.greaterThanOrEqualTo = P.gte = function (y) { + var k = this.cmp(y); + return k == 1 || k === 0; + }; + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [1, Infinity] + * + * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ... + * + * cosh(0) = 1 + * cosh(-0) = 1 + * cosh(Infinity) = Infinity + * cosh(-Infinity) = Infinity + * cosh(NaN) = NaN + * + * x time taken (ms) result + * 1000 9 9.8503555700852349694e+433 + * 10000 25 4.4034091128314607936e+4342 + * 100000 171 1.4033316802130615897e+43429 + * 1000000 3817 1.5166076984010437725e+434294 + * 10000000 abandoned after 2 minute wait + * + * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x)) + * + */ + P.hyperbolicCosine = P.cosh = function () { + var k, n, pr, rm, len, + x = this, + Ctor = x.constructor, + one = new Ctor(1); + + if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); + if (x.isZero()) return one; + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1 + // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4)) + + // Estimate the optimum number of times to use the argument reduction. + // TODO? Estimation reused from cosine() and may not be optimal here. + if (len < 32) { + k = Math.ceil(len / 3); + n = Math.pow(4, -k).toString(); + } else { + k = 16; + n = '2.3283064365386962890625e-10'; + } + + x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true); + + // Reverse argument reduction + var cosh2_x, + i = k, + d8 = new Ctor(8); + for (; i--;) { + cosh2_x = x.times(x); + x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); + } + + return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ... + * + * sinh(0) = 0 + * sinh(-0) = -0 + * sinh(Infinity) = Infinity + * sinh(-Infinity) = -Infinity + * sinh(NaN) = NaN + * + * x time taken (ms) + * 10 2 ms + * 100 5 ms + * 1000 14 ms + * 10000 82 ms + * 100000 886 ms 1.4033316802130615897e+43429 + * 200000 2613 ms + * 300000 5407 ms + * 400000 8824 ms + * 500000 13026 ms 8.7080643612718084129e+217146 + * 1000000 48543 ms + * + * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x)) + * + */ + P.hyperbolicSine = P.sinh = function () { + var k, pr, rm, len, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + if (len < 3) { + x = taylorSeries(Ctor, 2, x, x, true); + } else { + + // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x)) + // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3)) + // 3 multiplications and 1 addition + + // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x))) + // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5))) + // 4 multiplications and 2 additions + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + x = x.times(Math.pow(5, -k)); + + x = taylorSeries(Ctor, 2, x, x, true); + + // Reverse argument reduction + var sinh2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sinh2_x = x.times(x); + x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); + } + } + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * tanh(x) = sinh(x) / cosh(x) + * + * tanh(0) = 0 + * tanh(-0) = -0 + * tanh(Infinity) = 1 + * tanh(-Infinity) = -1 + * tanh(NaN) = NaN + * + */ + P.hyperbolicTangent = P.tanh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(x.s); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 7; + Ctor.rounding = 1; + + return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); + }; + + + /* + * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of + * this Decimal. + * + * Domain: [-1, 1] + * Range: [0, pi] + * + * acos(x) = pi/2 - asin(x) + * + * acos(0) = pi/2 + * acos(-0) = pi/2 + * acos(1) = 0 + * acos(-1) = pi + * acos(1/2) = pi/3 + * acos(-1/2) = 2*pi/3 + * acos(|x| > 1) = NaN + * acos(NaN) = NaN + * + */ + P.inverseCosine = P.acos = function () { + var halfPi, + x = this, + Ctor = x.constructor, + k = x.abs().cmp(1), + pr = Ctor.precision, + rm = Ctor.rounding; + + if (k !== -1) { + return k === 0 + // |x| is 1 + ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) + // |x| > 1 or x is NaN + : new Ctor(NaN); + } + + if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); + + // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.asin(); + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return halfPi.minus(x); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the + * value of this Decimal. + * + * Domain: [1, Infinity] + * Range: [0, Infinity] + * + * acosh(x) = ln(x + sqrt(x^2 - 1)) + * + * acosh(x < 1) = NaN + * acosh(NaN) = NaN + * acosh(Infinity) = Infinity + * acosh(-Infinity) = NaN + * acosh(0) = NaN + * acosh(-0) = NaN + * acosh(1) = 0 + * acosh(-1) = NaN + * + */ + P.inverseHyperbolicCosine = P.acosh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); + if (!x.isFinite()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; + Ctor.rounding = 1; + external = false; + + x = x.times(x).minus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * asinh(x) = ln(x + sqrt(x^2 + 1)) + * + * asinh(NaN) = NaN + * asinh(Infinity) = Infinity + * asinh(-Infinity) = -Infinity + * asinh(0) = 0 + * asinh(-0) = -0 + * + */ + P.inverseHyperbolicSine = P.asinh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; + Ctor.rounding = 1; + external = false; + + x = x.times(x).plus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the + * value of this Decimal. + * + * Domain: [-1, 1] + * Range: [-Infinity, Infinity] + * + * atanh(x) = 0.5 * ln((1 + x) / (1 - x)) + * + * atanh(|x| > 1) = NaN + * atanh(NaN) = NaN + * atanh(Infinity) = NaN + * atanh(-Infinity) = NaN + * atanh(0) = 0 + * atanh(-0) = -0 + * atanh(1) = Infinity + * atanh(-1) = -Infinity + * + */ + P.inverseHyperbolicTangent = P.atanh = function () { + var pr, rm, wpr, xsd, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); + + pr = Ctor.precision; + rm = Ctor.rounding; + xsd = x.sd(); + + if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); + + Ctor.precision = wpr = xsd - x.e; + + x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); + + Ctor.precision = pr + 4; + Ctor.rounding = 1; + + x = x.ln(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(0.5); + }; + + + /* + * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2))) + * + * asin(0) = 0 + * asin(-0) = -0 + * asin(1/2) = pi/6 + * asin(-1/2) = -pi/6 + * asin(1) = pi/2 + * asin(-1) = -pi/2 + * asin(|x| > 1) = NaN + * asin(NaN) = NaN + * + * TODO? Compare performance of Taylor series. + * + */ + P.inverseSine = P.asin = function () { + var halfPi, k, + pr, rm, + x = this, + Ctor = x.constructor; + + if (x.isZero()) return new Ctor(x); + + k = x.abs().cmp(1); + pr = Ctor.precision; + rm = Ctor.rounding; + + if (k !== -1) { + + // |x| is 1 + if (k === 0) { + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + halfPi.s = x.s; + return halfPi; + } + + // |x| > 1 or x is NaN + return new Ctor(NaN); + } + + // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(2); + }; + + + /* + * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + * + * atan(0) = 0 + * atan(-0) = -0 + * atan(1) = pi/4 + * atan(-1) = -pi/4 + * atan(Infinity) = pi/2 + * atan(-Infinity) = -pi/2 + * atan(NaN) = NaN + * + */ + P.inverseTangent = P.atan = function () { + var i, j, k, n, px, t, r, wpr, x2, + x = this, + Ctor = x.constructor, + pr = Ctor.precision, + rm = Ctor.rounding; + + if (!x.isFinite()) { + if (!x.s) return new Ctor(NaN); + if (pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.5); + r.s = x.s; + return r; + } + } else if (x.isZero()) { + return new Ctor(x); + } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.25); + r.s = x.s; + return r; + } + + Ctor.precision = wpr = pr + 10; + Ctor.rounding = 1; + + // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x); + + // Argument reduction + // Ensure |x| < 0.42 + // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2))) + + k = Math.min(28, wpr / LOG_BASE + 2 | 0); + + for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1)); + + external = false; + + j = Math.ceil(wpr / LOG_BASE); + n = 1; + x2 = x.times(x); + r = new Ctor(x); + px = x; + + // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + for (; i !== -1;) { + px = px.times(x2); + t = r.minus(px.div(n += 2)); + + px = px.times(x2); + r = t.plus(px.div(n += 2)); + + if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;); + } + + if (k) r = r.times(2 << (k - 1)); + + external = true; + + return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return true if the value of this Decimal is a finite number, otherwise return false. + * + */ + P.isFinite = function () { + return !!this.d; + }; + + + /* + * Return true if the value of this Decimal is an integer, otherwise return false. + * + */ + P.isInteger = P.isInt = function () { + return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; + }; + + + /* + * Return true if the value of this Decimal is NaN, otherwise return false. + * + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this Decimal is negative, otherwise return false. + * + */ + P.isNegative = P.isNeg = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this Decimal is positive, otherwise return false. + * + */ + P.isPositive = P.isPos = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this Decimal is 0 or -0, otherwise return false. + * + */ + P.isZero = function () { + return !!this.d && this.d[0] === 0; + }; + + + /* + * Return true if the value of this Decimal is less than `y`, otherwise return false. + * + */ + P.lessThan = P.lt = function (y) { + return this.cmp(y) < 0; + }; + + + /* + * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false. + * + */ + P.lessThanOrEqualTo = P.lte = function (y) { + return this.cmp(y) < 1; + }; + + + /* + * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * If no base is specified, return log[10](arg). + * + * log[base](arg) = ln(arg) / ln(base) + * + * The result will always be correctly rounded if the base of the log is 10, and 'almost always' + * otherwise: + * + * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen + * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error + * between the result and the correctly rounded result will be one ulp (unit in the last place). + * + * log[-b](a) = NaN + * log[0](a) = NaN + * log[1](a) = NaN + * log[NaN](a) = NaN + * log[Infinity](a) = NaN + * log[b](0) = -Infinity + * log[b](-0) = -Infinity + * log[b](-a) = NaN + * log[b](1) = 0 + * log[b](Infinity) = Infinity + * log[b](NaN) = NaN + * + * [base] {number|string|Decimal} The base of the logarithm. + * + */ + P.logarithm = P.log = function (base) { + var isBase10, d, denominator, k, inf, num, sd, r, + arg = this, + Ctor = arg.constructor, + pr = Ctor.precision, + rm = Ctor.rounding, + guard = 5; + + // Default base is 10. + if (base == null) { + base = new Ctor(10); + isBase10 = true; + } else { + base = new Ctor(base); + d = base.d; + + // Return NaN if base is negative, or non-finite, or is 0 or 1. + if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN); + + isBase10 = base.eq(10); + } + + d = arg.d; + + // Is arg negative, non-finite, 0 or 1? + if (arg.s < 0 || !d || !d[0] || arg.eq(1)) { + return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0); + } + + // The result will have a non-terminating decimal expansion if base is 10 and arg is not an + // integer power of 10. + if (isBase10) { + if (d.length > 1) { + inf = true; + } else { + for (k = d[0]; k % 10 === 0;) k /= 10; + inf = k !== 1; + } + } + + external = false; + sd = pr + guard; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + + // The result will have 5 rounding digits. + r = divide(num, denominator, sd, 1); + + // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000, + // calculate 10 further digits. + // + // If the result is known to have an infinite decimal expansion, repeat this until it is clear + // that the result is above or below the boundary. Otherwise, if after calculating the 10 + // further digits, the last 14 are nines, round up and assume the result is exact. + // Also assume the result is exact if the last 14 are zero. + // + // Example of a result that will be incorrectly rounded: + // log[1048576](4503599627370502) = 2.60000000000000009610279511444746... + // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it + // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so + // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal + // place is still 2.6. + if (checkRoundingDigits(r.d, k = pr, rm)) { + + do { + sd += 10; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + r = divide(num, denominator, sd, 1); + + if (!inf) { + + // Check for 14 nines from the 2nd rounding digit, as the first may be 4. + if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + + break; + } + } while (checkRoundingDigits(r.d, k += 10, rm)); + } + + external = true; + + return finalise(r, pr, rm); + }; + + + /* + * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.max = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'lt'); + }; + */ + + + /* + * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.min = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'gt'); + }; + */ + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.minus = P.sub = function (y) { + var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return y negated if x is finite and y is ±Infinity. + else if (x.d) y.s = -y.s; + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with different signs. + // Return NaN if both are ±Infinity with the same sign. + else y = new Ctor(y.d || x.s !== y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.plus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return y negated if x is zero and y is non-zero. + if (yd[0]) y.s = -y.s; + + // Return x if y is zero and x is non-zero. + else if (xd[0]) y = new Ctor(x); + + // Return zero if both are zero. + // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity. + else return new Ctor(rm === 3 ? -0 : 0); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + e = mathfloor(y.e / LOG_BASE); + xe = mathfloor(x.e / LOG_BASE); + + xd = xd.slice(); + k = xe - e; + + // If base 1e7 exponents differ... + if (k) { + xLTy = k < 0; + + if (xLTy) { + d = xd; + k = -k; + len = yd.length; + } else { + d = yd; + e = xe; + len = xd.length; + } + + // Numbers with massively different exponents would result in a very high number of + // zeros needing to be prepended, but this can be avoided while still ensuring correct + // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`. + i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; + + if (k > i) { + k = i; + d.length = 1; + } + + // Prepend zeros to equalise exponents. + d.reverse(); + for (i = k; i--;) d.push(0); + d.reverse(); + + // Base 1e7 exponents equal. + } else { + + // Check digits to determine which is the bigger number. + + i = xd.length; + len = yd.length; + xLTy = i < len; + if (xLTy) len = i; + + for (i = 0; i < len; i++) { + if (xd[i] != yd[i]) { + xLTy = xd[i] < yd[i]; + break; + } + } + + k = 0; + } + + if (xLTy) { + d = xd; + xd = yd; + yd = d; + y.s = -y.s; + } + + len = xd.length; + + // Append zeros to `xd` if shorter. + // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length. + for (i = yd.length - len; i > 0; --i) xd[len++] = 0; + + // Subtract yd from xd. + for (i = yd.length; i > k;) { + + if (xd[--i] < yd[i]) { + for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1; + --xd[j]; + xd[i] += BASE; + } + + xd[i] -= yd[i]; + } + + // Remove trailing zeros. + for (; xd[--len] === 0;) xd.pop(); + + // Remove leading zeros and adjust exponent accordingly. + for (; xd[0] === 0; xd.shift()) --e; + + // Zero? + if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * The result depends on the modulo mode. + * + */ + P.modulo = P.mod = function (y) { + var q, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0. + if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); + + // Return x if y is ±Infinity or x is ±0. + if (!y.d || x.d && !x.d[0]) { + return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); + } + + // Prevent rounding of intermediate calculations. + external = false; + + if (Ctor.modulo == 9) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // result = x - q * y where 0 <= result < abs(y) + q = divide(x, y.abs(), 0, 3, 1); + q.s *= y.s; + } else { + q = divide(x, y, 0, Ctor.modulo, 1); + } + + q = q.times(y); + + external = true; + + return x.minus(q); + }; + + + /* + * Return a new Decimal whose value is the natural exponential of the value of this Decimal, + * i.e. the base e raised to the power the value of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.naturalExponential = P.exp = function () { + return naturalExponential(this); + }; + + + /* + * Return a new Decimal whose value is the natural logarithm of the value of this Decimal, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.naturalLogarithm = P.ln = function () { + return naturalLogarithm(this); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by + * -1. + * + */ + P.negated = P.neg = function () { + var x = new this.constructor(this); + x.s = -x.s; + return finalise(x); + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.plus = P.add = function (y) { + var carry, d, e, i, k, len, pr, rm, xd, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with the same sign. + // Return NaN if both are ±Infinity with different signs. + // Return y if x is finite and y is ±Infinity. + else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.minus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return x if y is zero. + // Return y if y is non-zero. + if (!yd[0]) y = new Ctor(x); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + k = mathfloor(x.e / LOG_BASE); + e = mathfloor(y.e / LOG_BASE); + + xd = xd.slice(); + i = k - e; + + // If base 1e7 exponents differ... + if (i) { + + if (i < 0) { + d = xd; + i = -i; + len = yd.length; + } else { + d = yd; + e = k; + len = xd.length; + } + + // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1. + k = Math.ceil(pr / LOG_BASE); + len = k > len ? k + 1 : len + 1; + + if (i > len) { + i = len; + d.length = 1; + } + + // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts. + d.reverse(); + for (; i--;) d.push(0); + d.reverse(); + } + + len = xd.length; + i = yd.length; + + // If yd is longer than xd, swap xd and yd so xd points to the longer array. + if (len - i < 0) { + i = len; + d = yd; + yd = xd; + xd = d; + } + + // Only start adding at yd.length - 1 as the further digits of xd can be left as they are. + for (carry = 0; i;) { + carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0; + xd[i] %= BASE; + } + + if (carry) { + xd.unshift(carry); + ++e; + } + + // Remove trailing zeros. + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + for (len = xd.length; xd[--len] == 0;) xd.pop(); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * Return the number of significant digits of the value of this Decimal. + * + * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. + * + */ + P.precision = P.sd = function (z) { + var k, + x = this; + + if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z); + + if (x.d) { + k = getPrecision(x.d); + if (z && x.e + 1 > k) k = x.e + 1; + } else { + k = NaN; + } + + return k; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using + * rounding mode `rounding`. + * + */ + P.round = function () { + var x = this, + Ctor = x.constructor; + + return finalise(new Ctor(x), x.e + 1, Ctor.rounding); + }; + + + /* + * Return a new Decimal whose value is the sine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * sin(x) = x - x^3/3! + x^5/5! - ... + * + * sin(0) = 0 + * sin(-0) = -0 + * sin(Infinity) = NaN + * sin(-Infinity) = NaN + * sin(NaN) = NaN + * + */ + P.sine = P.sin = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = sine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * sqrt(-n) = N + * sqrt(N) = N + * sqrt(-I) = N + * sqrt(I) = I + * sqrt(0) = 0 + * sqrt(-0) = -0 + * + */ + P.squareRoot = P.sqrt = function () { + var m, n, sd, r, rep, t, + x = this, + d = x.d, + e = x.e, + s = x.s, + Ctor = x.constructor; + + // Negative/NaN/Infinity/zero? + if (s !== 1 || !d || !d[0]) { + return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0); + } + + external = false; + + // Initial estimate. + s = Math.sqrt(+x); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if (s == 0 || s == 1 / 0) { + n = digitsToString(d); + + if ((n.length + e) % 2 == 0) n += '0'; + s = Math.sqrt(n); + e = mathfloor((e + 1) / 2) - (e < 0 || e % 2); + + if (s == 1 / 0) { + n = '1e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Newton-Raphson iteration. + for (;;) { + t = r; + r = t.plus(divide(x, t, sd + 2, 1)).times(0.5); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or + // 4999, i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return a new Decimal whose value is the tangent of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * tan(0) = 0 + * tan(-0) = -0 + * tan(Infinity) = NaN + * tan(-Infinity) = NaN + * tan(NaN) = NaN + * + */ + P.tangent = P.tan = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 10; + Ctor.rounding = 1; + + x = x.sin(); + x.s = 1; + x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + */ + P.times = P.mul = function (y) { + var carry, e, i, k, r, rL, t, xdL, ydL, + x = this, + Ctor = x.constructor, + xd = x.d, + yd = (y = new Ctor(y)).d; + + y.s *= x.s; + + // If either is NaN, ±Infinity or ±0... + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd + + // Return NaN if either is NaN. + // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity. + ? NaN + + // Return ±Infinity if either is ±Infinity. + // Return ±0 if either is ±0. + : !xd || !yd ? y.s / 0 : y.s * 0); + } + + e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); + xdL = xd.length; + ydL = yd.length; + + // Ensure xd points to the longer array. + if (xdL < ydL) { + r = xd; + xd = yd; + yd = r; + rL = xdL; + xdL = ydL; + ydL = rL; + } + + // Initialise the result array with zeros. + r = []; + rL = xdL + ydL; + for (i = rL; i--;) r.push(0); + + // Multiply! + for (i = ydL; --i >= 0;) { + carry = 0; + for (k = xdL + i; k > i;) { + t = r[k] + yd[i] * xd[k - i - 1] + carry; + r[k--] = t % BASE | 0; + carry = t / BASE | 0; + } + + r[k] = (r[k] + carry) % BASE | 0; + } + + // Remove trailing zeros. + for (; !r[--rL];) r.pop(); + + if (carry) ++e; + else r.shift(); + + y.d = r; + y.e = getBase10Exponent(r, e); + + return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; + }; + + + /* + * Return a string representing the value of this Decimal in base 2, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toBinary = function (sd, rm) { + return toStringBinary(this, 2, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp` + * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted. + * + * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toDecimalPlaces = P.toDP = function (dp, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + if (dp === void 0) return x; + + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + return finalise(x, dp + x.e + 1, rm); + }; + + + /* + * Return a string representing the value of this Decimal in exponential notation rounded to + * `dp` fixed decimal places using rounding mode `rounding`. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toExponential = function (dp, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x, true); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), dp + 1, rm); + str = finiteToString(x, true, dp + 1); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a string representing the value of this Decimal in normal (fixed-point) notation to + * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is + * omitted. + * + * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. + * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + * (-0).toFixed(3) is '0.000'. + * (-0.5).toFixed(0) is '-0'. + * + */ + P.toFixed = function (dp, rm) { + var str, y, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + y = finalise(new Ctor(x), dp + x.e + 1, rm); + str = finiteToString(y, false, dp + y.e + 1); + } + + // To determine whether to add the minus sign look at the value before it was rounded, + // i.e. look at `x` rather than `y`. + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return an array representing the value of this Decimal as a simple fraction with an integer + * numerator and an integer denominator. + * + * The denominator will be a positive non-zero value less than or equal to the specified maximum + * denominator. If a maximum denominator is not specified, the denominator will be the lowest + * value necessary to represent the number exactly. + * + * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. + * + */ + P.toFraction = function (maxD) { + var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, + x = this, + xd = x.d, + Ctor = x.constructor; + + if (!xd) return new Ctor(x); + + n1 = d0 = new Ctor(1); + d1 = n0 = new Ctor(0); + + d = new Ctor(d1); + e = d.e = getPrecision(xd) - x.e - 1; + k = e % LOG_BASE; + d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k); + + if (maxD == null) { + + // d is 10**e, the minimum max-denominator needed. + maxD = e > 0 ? d : n1; + } else { + n = new Ctor(maxD); + if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n); + maxD = n.gt(d) ? (e > 0 ? d : n1) : n; + } + + external = false; + n = new Ctor(digitsToString(xd)); + pr = Ctor.precision; + Ctor.precision = e = xd.length * LOG_BASE * 2; + + for (;;) { + q = divide(n, d, 0, 1, 1); + d2 = d0.plus(q.times(d1)); + if (d2.cmp(maxD) == 1) break; + d0 = d1; + d1 = d2; + d2 = n1; + n1 = n0.plus(q.times(d2)); + n0 = d2; + d2 = d; + d = n.minus(q.times(d2)); + n = d2; + } + + d2 = divide(maxD.minus(d0), d1, 0, 1, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + + // Determine which fraction is closer to x, n0/d0 or n1/d1? + r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 + ? [n1, d1] : [n0, d0]; + + Ctor.precision = pr; + external = true; + + return r; + }; + + + /* + * Return a string representing the value of this Decimal in base 16, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toHexadecimal = P.toHex = function (sd, rm) { + return toStringBinary(this, 16, sd, rm); + }; + + + + /* + * Returns a new Decimal whose value is the nearest multiple of the magnitude of `y` to the value + * of this Decimal. + * + * If the value of this Decimal is equidistant from two multiples of `y`, the rounding mode `rm`, + * or `Decimal.rounding` if `rm` is omitted, determines the direction of the nearest multiple. + * + * In the context of this method, rounding mode 4 (ROUND_HALF_UP) is the same as rounding mode 0 + * (ROUND_UP), and so on. + * + * The return value will always have the same sign as this Decimal, unless either this Decimal + * or `y` is NaN, in which case the return value will be also be NaN. + * + * The return value is not affected by the value of `precision`. + * + * y {number|string|Decimal} The magnitude to round to a multiple of. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toNearest() rounding mode not an integer: {rm}' + * 'toNearest() rounding mode out of range: {rm}' + * + */ + P.toNearest = function (y, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + + if (y == null) { + + // If x is not finite, return x. + if (!x.d) return x; + + y = new Ctor(1); + rm = Ctor.rounding; + } else { + y = new Ctor(y); + if (rm !== void 0) checkInt32(rm, 0, 8); + + // If x is not finite, return x if y is not NaN, else NaN. + if (!x.d) return y.s ? x : y; + + // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN. + if (!y.d) { + if (y.s) y.s = x.s; + return y; + } + } + + // If y is not zero, calculate the nearest multiple of y to x. + if (y.d[0]) { + external = false; + if (rm < 4) rm = [4, 5, 7, 8][rm]; + x = divide(x, y, 0, rm, 1).times(y); + external = true; + finalise(x); + + // If y is zero, return zero with the sign of x. + } else { + y.s = x.s; + x = y; + } + + return x; + }; + + + /* + * Return the value of this Decimal converted to a number primitive. + * Zero keeps its sign. + * + */ + P.toNumber = function () { + return +this; + }; + + + /* + * Return a string representing the value of this Decimal in base 8, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toOctal = function (sd, rm) { + return toStringBinary(this, 8, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded + * to `precision` significant digits using rounding mode `rounding`. + * + * ECMAScript compliant. + * + * pow(x, NaN) = NaN + * pow(x, ±0) = 1 + + * pow(NaN, non-zero) = NaN + * pow(abs(x) > 1, +Infinity) = +Infinity + * pow(abs(x) > 1, -Infinity) = +0 + * pow(abs(x) == 1, ±Infinity) = NaN + * pow(abs(x) < 1, +Infinity) = +0 + * pow(abs(x) < 1, -Infinity) = +Infinity + * pow(+Infinity, y > 0) = +Infinity + * pow(+Infinity, y < 0) = +0 + * pow(-Infinity, odd integer > 0) = -Infinity + * pow(-Infinity, even integer > 0) = +Infinity + * pow(-Infinity, odd integer < 0) = -0 + * pow(-Infinity, even integer < 0) = +0 + * pow(+0, y > 0) = +0 + * pow(+0, y < 0) = +Infinity + * pow(-0, odd integer > 0) = -0 + * pow(-0, even integer > 0) = +0 + * pow(-0, odd integer < 0) = -Infinity + * pow(-0, even integer < 0) = +Infinity + * pow(finite x < 0, finite non-integer) = NaN + * + * For non-integer or very large exponents pow(x, y) is calculated using + * + * x^y = exp(y*ln(x)) + * + * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the + * probability of an incorrectly rounded result + * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14 + * i.e. 1 in 250,000,000,000,000 + * + * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). + * + * y {number|string|Decimal} The power to which to raise this Decimal. + * + */ + P.toPower = P.pow = function (y) { + var e, k, pr, r, rm, s, + x = this, + Ctor = x.constructor, + yn = +(y = new Ctor(y)); + + // Either ±Infinity, NaN or ±0? + if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); + + x = new Ctor(x); + + if (x.eq(1)) return x; + + pr = Ctor.precision; + rm = Ctor.rounding; + + if (y.eq(1)) return finalise(x, pr, rm); + + // y exponent + e = mathfloor(y.e / LOG_BASE); + + // If y is a small integer use the 'exponentiation by squaring' algorithm. + if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { + r = intPow(Ctor, x, k, pr); + return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm); + } + + s = x.s; + + // if x is negative + if (s < 0) { + + // if y is not an integer + if (e < y.d.length - 1) return new Ctor(NaN); + + // Result is positive if x is negative and the last digit of integer y is even. + if ((y.d[e] & 1) == 0) s = 1; + + // if x.eq(-1) + if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { + x.s = s; + return x; + } + } + + // Estimate result exponent. + // x^y = 10^e, where e = y * log10(x) + // log10(x) = log10(x_significand) + x_exponent + // log10(x_significand) = ln(x_significand) / ln(10) + k = mathpow(+x, yn); + e = k == 0 || !isFinite(k) + ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) + : new Ctor(k + '').e; + + // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1. + + // Overflow/underflow? + if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0); + + external = false; + Ctor.rounding = x.s = 1; + + // Estimate the extra guard digits needed to ensure five correct rounding digits from + // naturalLogarithm(x). Example of failure without these extra digits (precision: 10): + // new Decimal(2.32456).pow('2087987436534566.46411') + // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815 + k = Math.min(12, (e + '').length); + + // r = x^y = exp(y*ln(x)) + r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr); + + // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40) + if (r.d) { + + // Truncate to the required precision plus five rounding digits. + r = finalise(r, pr + 5, 1); + + // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate + // the result. + if (checkRoundingDigits(r.d, pr, rm)) { + e = pr + 10; + + // Truncate to the increased precision plus five rounding digits. + r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1); + + // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9). + if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + } + } + + r.s = s; + external = true; + Ctor.rounding = rm; + + return finalise(r, pr, rm); + }; + + + /* + * Return a string representing the value of this Decimal rounded to `sd` significant digits + * using rounding mode `rounding`. + * + * Return exponential notation if `sd` is less than the number of digits necessary to represent + * the integer part of the value in normal notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toPrecision = function (sd, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (sd === void 0) { + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), sd, rm); + str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd` + * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if + * omitted. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toSD() digits out of range: {sd}' + * 'toSD() digits not an integer: {sd}' + * 'toSD() rounding mode not an integer: {rm}' + * 'toSD() rounding mode out of range: {rm}' + * + */ + P.toSignificantDigits = P.toSD = function (sd, rm) { + var x = this, + Ctor = x.constructor; + + if (sd === void 0) { + sd = Ctor.precision; + rm = Ctor.rounding; + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } + + return finalise(new Ctor(x), sd, rm); + }; + + + /* + * Return a string representing the value of this Decimal. + * + * Return exponential notation if this Decimal has a positive exponent equal to or greater than + * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`. + * + */ + P.toString = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal truncated to a whole number. + * + */ + P.truncated = P.trunc = function () { + return finalise(new this.constructor(this), this.e + 1, 1); + }; + + + /* + * Return a string representing the value of this Decimal. + * Unlike `toString`, negative zero will include the minus sign. + * + */ + P.valueOf = P.toJSON = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() ? '-' + str : str; + }; + + + /* + // Add aliases to match BigDecimal method names. + // P.add = P.plus; + P.subtract = P.minus; + P.multiply = P.times; + P.divide = P.div; + P.remainder = P.mod; + P.compareTo = P.cmp; + P.negate = P.neg; + */ + + + // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers. + + + /* + * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower, + * finiteToString, naturalExponential, naturalLogarithm + * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest, + * P.toPrecision, P.toSignificantDigits, toStringBinary, random + * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm + * convertBase toStringBinary, parseOther + * cos P.cos + * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy, + * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction, + * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm, + * taylorSeries, atan2, parseOther + * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh, + * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus, + * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot, + * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed, + * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits, + * P.truncated, divide, getLn10, getPi, naturalExponential, + * naturalLogarithm, ceil, floor, round, trunc + * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf, + * toStringBinary + * getBase10Exponent P.minus, P.plus, P.times, parseOther + * getLn10 P.logarithm, naturalLogarithm + * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2 + * getPrecision P.precision, P.toFraction + * getZeroString digitsToString, finiteToString + * intPow P.toPower, parseOther + * isOdd toLessThanHalfPi + * maxOrMin max, min + * naturalExponential P.naturalExponential, P.toPower + * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm, + * P.toPower, naturalExponential + * nonFiniteToString finiteToString, toStringBinary + * parseDecimal Decimal + * parseOther Decimal + * sin P.sin + * taylorSeries P.cosh, P.sinh, cos, sin + * toLessThanHalfPi P.cos, P.sin + * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal + * truncate intPow + * + * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi, + * naturalLogarithm, config, parseOther, random, Decimal + */ + + + function digitsToString(d) { + var i, k, ws, + indexOfLastWord = d.length - 1, + str = '', + w = d[0]; + + if (indexOfLastWord > 0) { + str += w; + for (i = 1; i < indexOfLastWord; i++) { + ws = d[i] + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + str += ws; + } + + w = d[i]; + ws = w + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + } else if (w === 0) { + return '0'; + } + + // Remove trailing zeros of last w. + for (; w % 10 === 0;) w /= 10; + + return str + w; + } + + + function checkInt32(i, min, max) { + if (i !== ~~i || i < min || i > max) { + throw Error(invalidArgument + i); + } + } + + + /* + * Check 5 rounding digits if `repeating` is null, 4 otherwise. + * `repeating == null` if caller is `log` or `pow`, + * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`. + */ + function checkRoundingDigits(d, i, rm, repeating) { + var di, k, r, rd; + + // Get the length of the first word of the array d. + for (k = d[0]; k >= 10; k /= 10) --i; + + // Is the rounding digit in the first word of d? + if (--i < 0) { + i += LOG_BASE; + di = 0; + } else { + di = Math.ceil((i + 1) / LOG_BASE); + i %= LOG_BASE; + } + + // i is the index (0 - 6) of the rounding digit. + // E.g. if within the word 3487563 the first rounding digit is 5, + // then i = 4, k = 1000, rd = 3487563 % 1000 = 563 + k = mathpow(10, LOG_BASE - i); + rd = d[di] % k | 0; + + if (repeating == null) { + if (i < 3) { + if (i == 0) rd = rd / 100 | 0; + else if (i == 1) rd = rd / 10 | 0; + r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0; + } else { + r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && + (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || + (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0; + } + } else { + if (i < 4) { + if (i == 0) rd = rd / 1000 | 0; + else if (i == 1) rd = rd / 100 | 0; + else if (i == 2) rd = rd / 10 | 0; + r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; + } else { + r = ((repeating || rm < 4) && rd + 1 == k || + (!repeating && rm > 3) && rd + 1 == k / 2) && + (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1; + } + } + + return r; + } + + + // Convert string of `baseIn` to an array of numbers of `baseOut`. + // Eg. convertBase('255', 10, 16) returns [15, 15]. + // Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. + function convertBase(str, baseIn, baseOut) { + var j, + arr = [0], + arrL, + i = 0, + strL = str.length; + + for (; i < strL;) { + for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn; + arr[0] += NUMERALS.indexOf(str.charAt(i++)); + for (j = 0; j < arr.length; j++) { + if (arr[j] > baseOut - 1) { + if (arr[j + 1] === void 0) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + + /* + * cos(x) = 1 - x^2/2! + x^4/4! - ... + * |x| < pi/2 + * + */ + function cosine(Ctor, x) { + var k, y, + len = x.d.length; + + // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1 + // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1 + + // Estimate the optimum number of times to use the argument reduction. + if (len < 32) { + k = Math.ceil(len / 3); + y = Math.pow(4, -k).toString(); + } else { + k = 16; + y = '2.3283064365386962890625e-10'; + } + + Ctor.precision += k; + + x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); + + // Reverse argument reduction + for (var i = k; i--;) { + var cos2x = x.times(x); + x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); + } + + Ctor.precision -= k; + + return x; + } + + + /* + * Perform division in the specified base. + */ + var divide = (function () { + + // Assumes non-zero x and k, and hence non-zero result. + function multiplyInteger(x, k, base) { + var temp, + carry = 0, + i = x.length; + + for (x = x.slice(); i--;) { + temp = x[i] * k + carry; + x[i] = temp % base | 0; + carry = temp / base | 0; + } + + if (carry) x.unshift(carry); + + return x; + } + + function compare(a, b, aL, bL) { + var i, r; + + if (aL != bL) { + r = aL > bL ? 1 : -1; + } else { + for (i = r = 0; i < aL; i++) { + if (a[i] != b[i]) { + r = a[i] > b[i] ? 1 : -1; + break; + } + } + } + + return r; + } + + function subtract(a, b, aL, base) { + var i = 0; + + // Subtract b from a. + for (; aL--;) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for (; !a[0] && a.length > 1;) a.shift(); + } + + return function (x, y, pr, rm, dp, base) { + var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, + yL, yz, + Ctor = x.constructor, + sign = x.s == y.s ? 1 : -1, + xd = x.d, + yd = y.d; + + // Either NaN, Infinity or 0? + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(// Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : + + // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. + xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0); + } + + if (base) { + logBase = 1; + e = x.e - y.e; + } else { + base = BASE; + logBase = LOG_BASE; + e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); + } + + yL = yd.length; + xL = xd.length; + q = new Ctor(sign); + qd = q.d = []; + + // Result exponent may be one less than e. + // The digit array of a Decimal from toStringBinary may have trailing zeros. + for (i = 0; yd[i] == (xd[i] || 0); i++); + + if (yd[i] > (xd[i] || 0)) e--; + + if (pr == null) { + sd = pr = Ctor.precision; + rm = Ctor.rounding; + } else if (dp) { + sd = pr + (x.e - y.e) + 1; + } else { + sd = pr; + } + + if (sd < 0) { + qd.push(1); + more = true; + } else { + + // Convert precision in number of base 10 digits to base 1e7 digits. + sd = sd / logBase + 2 | 0; + i = 0; + + // divisor < 1e7 + if (yL == 1) { + k = 0; + yd = yd[0]; + sd++; + + // k is the carry. + for (; (i < xL || k) && sd--; i++) { + t = k * base + (xd[i] || 0); + qd[i] = t / yd | 0; + k = t % yd | 0; + } + + more = k || i < xL; + + // divisor >= 1e7 + } else { + + // Normalise xd and yd so highest order digit of yd is >= base/2 + k = base / (yd[0] + 1) | 0; + + if (k > 1) { + yd = multiplyInteger(yd, k, base); + xd = multiplyInteger(xd, k, base); + yL = yd.length; + xL = xd.length; + } + + xi = yL; + rem = xd.slice(0, yL); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for (; remL < yL;) rem[remL++] = 0; + + yz = yd.slice(); + yz.unshift(0); + yd0 = yd[0]; + + if (yd[1] >= base / 2) ++yd0; + + do { + k = 0; + + // Compare divisor and remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < remainder. + if (cmp < 0) { + + // Calculate trial digit, k. + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + + // k will be how many times the divisor goes into the current remainder. + k = rem0 / yd0 | 0; + + // Algorithm: + // 1. product = divisor * trial digit (k) + // 2. if product > remainder: product -= divisor, k-- + // 3. remainder -= product + // 4. if product was < remainder at 2: + // 5. compare new remainder and divisor + // 6. If remainder > divisor: remainder -= divisor, k++ + + if (k > 1) { + if (k >= base) k = base - 1; + + // product = divisor * trial digit. + prod = multiplyInteger(yd, k, base); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + cmp = compare(prod, rem, prodL, remL); + + // product > remainder. + if (cmp == 1) { + k--; + + // Subtract divisor from product. + subtract(prod, yL < prodL ? yz : yd, prodL, base); + } + } else { + + // cmp is -1. + // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1 + // to avoid it. If k is 1 there is a need to compare yd and rem again below. + if (k == 0) cmp = k = 1; + prod = yd.slice(); + } + + prodL = prod.length; + if (prodL < remL) prod.unshift(0); + + // Subtract product from remainder. + subtract(rem, prod, remL, base); + + // If product was < previous remainder. + if (cmp == -1) { + remL = rem.length; + + // Compare divisor and new remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < new remainder, subtract divisor from remainder. + if (cmp < 1) { + k++; + + // Subtract divisor from remainder. + subtract(rem, yL < remL ? yz : yd, remL, base); + } + } + + remL = rem.length; + } else if (cmp === 0) { + k++; + rem = [0]; + } // if cmp === 1, k will be 0 + + // Add the next digit, k, to the result array. + qd[i++] = k; + + // Update the remainder. + if (cmp && rem[0]) { + rem[remL++] = xd[xi] || 0; + } else { + rem = [xd[xi]]; + remL = 1; + } + + } while ((xi++ < xL || rem[0] !== void 0) && sd--); + + more = rem[0] !== void 0; + } + + // Leading zero? + if (!qd[0]) qd.shift(); + } + + // logBase is 1 when divide is being used for base conversion. + if (logBase == 1) { + q.e = e; + inexact = more; + } else { + + // To calculate q.e, first get the number of digits of qd[0]. + for (i = 1, k = qd[0]; k >= 10; k /= 10) i++; + q.e = i + e * logBase - 1; + + finalise(q, dp ? pr + q.e + 1 : pr, rm, more); + } + + return q; + }; + })(); + + + /* + * Round `x` to `sd` significant digits using rounding mode `rm`. + * Check for over/under-flow. + */ + function finalise(x, sd, rm, isTruncated) { + var digits, i, j, k, rd, roundUp, w, xd, xdi, + Ctor = x.constructor; + + // Don't round if sd is null or undefined. + out: if (sd != null) { + xd = x.d; + + // Infinity/NaN. + if (!xd) return x; + + // rd: the rounding digit, i.e. the digit after the digit that may be rounded up. + // w: the word of xd containing rd, a base 1e7 number. + // xdi: the index of w within xd. + // digits: the number of digits of w. + // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if + // they had leading zeros) + // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero). + + // Get the length of the first word of the digits array xd. + for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++; + i = sd - digits; + + // Is the rounding digit in the first word of xd? + if (i < 0) { + i += LOG_BASE; + j = sd; + w = xd[xdi = 0]; + + // Get the rounding digit at index j of w. + rd = w / mathpow(10, digits - j - 1) % 10 | 0; + } else { + xdi = Math.ceil((i + 1) / LOG_BASE); + k = xd.length; + if (xdi >= k) { + if (isTruncated) { + + // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`. + for (; k++ <= xdi;) xd.push(0); + w = rd = 0; + digits = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + w = k = xd[xdi]; + + // Get the number of digits of w. + for (digits = 1; k >= 10; k /= 10) digits++; + + // Get the index of rd within w. + i %= LOG_BASE; + + // Get the index of rd within w, adjusted for leading zeros. + // The number of leading zeros of w is given by LOG_BASE - digits. + j = i - LOG_BASE + digits; + + // Get the rounding digit at index j of w. + rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0; + } + } + + // Are there any non-zero digits after the rounding digit? + isTruncated = isTruncated || sd < 0 || + xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1)); + + // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right + // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression + // will give 714. + + roundUp = rm < 4 + ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 || + rm == (x.s < 0 ? 8 : 7)); + + if (sd < 1 || !xd[0]) { + xd.length = 0; + if (roundUp) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); + x.e = -sd || 0; + } else { + + // Zero. + xd[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if (i == 0) { + xd.length = xdi; + k = 1; + xdi--; + } else { + xd.length = xdi + 1; + k = mathpow(10, LOG_BASE - i); + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of w. + xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0; + } + + if (roundUp) { + for (;;) { + + // Is the digit to be rounded up in the first word of xd? + if (xdi == 0) { + + // i will be the length of xd[0] before k is added. + for (i = 1, j = xd[0]; j >= 10; j /= 10) i++; + j = xd[0] += k; + for (k = 1; j >= 10; j /= 10) k++; + + // if i != k the length has increased. + if (i != k) { + x.e++; + if (xd[0] == BASE) xd[0] = 1; + } + + break; + } else { + xd[xdi] += k; + if (xd[xdi] != BASE) break; + xd[xdi--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for (i = xd.length; xd[--i] === 0;) xd.pop(); + } + + if (external) { + + // Overflow? + if (x.e > Ctor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < Ctor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // Ctor.underflow = true; + } // else Ctor.underflow = false; + } + + return x; + } + + + function finiteToString(x, isExp, sd) { + if (!x.isFinite()) return nonFiniteToString(x); + var k, + e = x.e, + str = digitsToString(x.d), + len = str.length; + + if (isExp) { + if (sd && (k = sd - len) > 0) { + str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k); + } else if (len > 1) { + str = str.charAt(0) + '.' + str.slice(1); + } + + str = str + (x.e < 0 ? 'e' : 'e+') + x.e; + } else if (e < 0) { + str = '0.' + getZeroString(-e - 1) + str; + if (sd && (k = sd - len) > 0) str += getZeroString(k); + } else if (e >= len) { + str += getZeroString(e + 1 - len); + if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k); + } else { + if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k); + if (sd && (k = sd - len) > 0) { + if (e + 1 === len) str += '.'; + str += getZeroString(k); + } + } + + return str; + } + + + // Calculate the base 10 exponent from the base 1e7 exponent. + function getBase10Exponent(digits, e) { + var w = digits[0]; + + // Add the number of digits of the first word of the digits array. + for ( e *= LOG_BASE; w >= 10; w /= 10) e++; + return e; + } + + + function getLn10(Ctor, sd, pr) { + if (sd > LN10_PRECISION) { + + // Reset global state in case the exception is caught. + external = true; + if (pr) Ctor.precision = pr; + throw Error(precisionLimitExceeded); + } + return finalise(new Ctor(LN10), sd, 1, true); + } + + + function getPi(Ctor, sd, rm) { + if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); + return finalise(new Ctor(PI), sd, rm, true); + } + + + function getPrecision(digits) { + var w = digits.length - 1, + len = w * LOG_BASE + 1; + + w = digits[w]; + + // If non-zero... + if (w) { + + // Subtract the number of trailing zeros of the last word. + for (; w % 10 == 0; w /= 10) len--; + + // Add the number of digits of the first word. + for (w = digits[0]; w >= 10; w /= 10) len++; + } + + return len; + } + + + function getZeroString(k) { + var zs = ''; + for (; k--;) zs += '0'; + return zs; + } + + + /* + * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an + * integer of type number. + * + * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`. + * + */ + function intPow(Ctor, x, n, pr) { + var isTruncated, + r = new Ctor(1), + + // Max n of 9007199254740991 takes 53 loop iterations. + // Maximum digits array length; leaves [28, 34] guard digits. + k = Math.ceil(pr / LOG_BASE + 4); + + external = false; + + for (;;) { + if (n % 2) { + r = r.times(x); + if (truncate(r.d, k)) isTruncated = true; + } + + n = mathfloor(n / 2); + if (n === 0) { + + // To ensure correct rounding when r.d is truncated, increment the last word if it is zero. + n = r.d.length - 1; + if (isTruncated && r.d[n] === 0) ++r.d[n]; + break; + } + + x = x.times(x); + truncate(x.d, k); + } + + external = true; + + return r; + } + + + function isOdd(n) { + return n.d[n.d.length - 1] & 1; + } + + + /* + * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'. + */ + function maxOrMin(Ctor, args, ltgt) { + var y, + x = new Ctor(args[0]), + i = 0; + + for (; ++i < args.length;) { + y = new Ctor(args[i]); + if (!y.s) { + x = y; + break; + } else if (x[ltgt](y)) { + x = y; + } + } + + return x; + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant + * digits. + * + * Taylor/Maclaurin series. + * + * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... + * + * Argument reduction: + * Repeat x = x / 32, k += 5, until |x| < 0.1 + * exp(x) = exp(x / 2^k)^(2^k) + * + * Previously, the argument was initially reduced by + * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10) + * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was + * found to be slower than just dividing repeatedly by 32 as above. + * + * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000 + * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000 + * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324) + * + * exp(Infinity) = Infinity + * exp(-Infinity) = 0 + * exp(NaN) = NaN + * exp(±0) = 1 + * + * exp(x) is non-terminating for any finite, non-zero x. + * + * The result will always be correctly rounded. + * + */ + function naturalExponential(x, sd) { + var denominator, guard, j, pow, sum, t, wpr, + rep = 0, + i = 0, + k = 0, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // 0/NaN/Infinity? + if (!x.d || !x.d[0] || x.e > 17) { + + return new Ctor(x.d + ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 + : x.s ? x.s < 0 ? 0 : x : 0 / 0); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + t = new Ctor(0.03125); + + // while abs(x) >= 0.1 + while (x.e > -2) { + + // x = x / 2^5 + x = x.times(t); + k += 5; + } + + // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision + // necessary to ensure the first 4 rounding digits are correct. + guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0; + wpr += guard; + denominator = pow = sum = new Ctor(1); + Ctor.precision = wpr; + + for (;;) { + pow = finalise(pow.times(x), wpr, 1); + denominator = denominator.times(++i); + t = sum.plus(divide(pow, denominator, wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + j = k; + while (j--) sum = finalise(sum.times(sum), wpr, 1); + + // Check to see if the first 4 rounding digits are [49]999. + // If so, repeat the summation with a higher precision, otherwise + // e.g. with precision: 18, rounding: 1 + // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123) + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + + if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += 10; + denominator = pow = t = new Ctor(1); + i = 0; + rep++; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + } + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant + * digits. + * + * ln(-n) = NaN + * ln(0) = -Infinity + * ln(-0) = -Infinity + * ln(1) = 0 + * ln(Infinity) = Infinity + * ln(-Infinity) = NaN + * ln(NaN) = NaN + * + * ln(n) (n != 1) is non-terminating. + * + */ + function naturalLogarithm(y, sd) { + var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, + n = 1, + guard = 10, + x = y, + xd = x.d, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // Is x negative or Infinity, NaN, 0 or 1? + if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { + return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + Ctor.precision = wpr += guard; + c = digitsToString(xd); + c0 = c.charAt(0); + + if (Math.abs(e = x.e) < 1.5e15) { + + // Argument reduction. + // The series converges faster the closer the argument is to 1, so using + // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b + // multiply the argument by itself until the leading digits of the significand are 7, 8, 9, + // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can + // later be divided by this number, then separate out the power of 10 using + // ln(a*10^b) = ln(a) + b*ln(10). + + // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14). + //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) { + // max n is 6 (gives 0.7 - 1.3) + while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) { + x = x.times(y); + c = digitsToString(x.d); + c0 = c.charAt(0); + n++; + } + + e = x.e; + + if (c0 > 1) { + x = new Ctor('0.' + c); + e++; + } else { + x = new Ctor(c0 + '.' + c.slice(1)); + } + } else { + + // The argument reduction method above may result in overflow if the argument y is a massive + // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this + // function using ln(x*10^e) = ln(x) + e*ln(10). + t = getLn10(Ctor, wpr + 2, pr).times(e + ''); + x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t); + Ctor.precision = pr; + + return sd == null ? finalise(x, pr, rm, external = true) : x; + } + + // x1 is x reduced to a value near 1. + x1 = x; + + // Taylor series. + // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...) + // where x = (y - 1)/(y + 1) (|x| < 1) + sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = 3; + + for (;;) { + numerator = finalise(numerator.times(x2), wpr, 1); + t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + sum = sum.times(2); + + // Reverse the argument reduction. Check that e is not 0 because, besides preventing an + // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0. + if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + '')); + sum = divide(sum, new Ctor(n), wpr, 1); + + // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has + // been repeated previously) and the first 4 rounding digits 9999? + // If so, restart the summation with a higher precision, otherwise + // e.g. with precision: 12, rounding: 1 + // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463. + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += guard; + t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = rep = 1; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + denominator += 2; + } + } + + + // ±Infinity, NaN. + function nonFiniteToString(x) { + // Unsigned. + return String(x.s * x.s / 0); + } + + + /* + * Parse the value of a new Decimal `x` from string `str`. + */ + function parseDecimal(x, str) { + var e, i, len; + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + + // Exponential form? + if ((i = str.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + + // Integer. + e = str.length; + } + + // Determine leading zeros. + for (i = 0; str.charCodeAt(i) === 48; i++); + + // Determine trailing zeros. + for (len = str.length; str.charCodeAt(len - 1) === 48; --len); + str = str.slice(i, len); + + if (str) { + len -= i; + x.e = e = e - i - 1; + x.d = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first word of the digits array. + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; + + if (i < len) { + if (i) x.d.push(+str.slice(0, i)); + for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE)); + str = str.slice(i); + i = LOG_BASE - str.length; + } else { + i -= len; + } + + for (; i--;) str += '0'; + x.d.push(+str); + + if (external) { + + // Overflow? + if (x.e > x.constructor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < x.constructor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // x.constructor.underflow = true; + } // else x.constructor.underflow = false; + } + } else { + + // Zero. + x.e = 0; + x.d = [0]; + } + + return x; + } + + + /* + * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value. + */ + function parseOther(x, str) { + var base, Ctor, divisor, i, isFloat, len, p, xd, xe; + + if (str === 'Infinity' || str === 'NaN') { + if (!+str) x.s = NaN; + x.e = NaN; + x.d = null; + return x; + } + + if (isHex.test(str)) { + base = 16; + str = str.toLowerCase(); + } else if (isBinary.test(str)) { + base = 2; + } else if (isOctal.test(str)) { + base = 8; + } else { + throw Error(invalidArgument + str); + } + + // Is there a binary exponent part? + i = str.search(/p/i); + + if (i > 0) { + p = +str.slice(i + 1); + str = str.substring(2, i); + } else { + str = str.slice(2); + } + + // Convert `str` as an integer then divide the result by `base` raised to a power such that the + // fraction part will be restored. + i = str.indexOf('.'); + isFloat = i >= 0; + Ctor = x.constructor; + + if (isFloat) { + str = str.replace('.', ''); + len = str.length; + i = len - i; + + // log[10](16) = 1.2041... , log[10](88) = 1.9444.... + divisor = intPow(Ctor, new Ctor(base), i, i * 2); + } + + xd = convertBase(str, base, BASE); + xe = xd.length - 1; + + // Remove trailing zeros. + for (i = xe; xd[i] === 0; --i) xd.pop(); + if (i < 0) return new Ctor(x.s * 0); + x.e = getBase10Exponent(xd, xe); + x.d = xd; + external = false; + + // At what precision to perform the division to ensure exact conversion? + // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount) + // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412 + // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits. + // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount + // Therefore using 4 * the number of digits of str will always be enough. + if (isFloat) x = divide(x, divisor, len * 4); + + // Multiply by the binary exponent part if present. + if (p) x = x.times(Math.abs(p) < 54 ? Math.pow(2, p) : Decimal.pow(2, p)); + external = true; + + return x; + } + + + /* + * sin(x) = x - x^3/3! + x^5/5! - ... + * |x| < pi/2 + * + */ + function sine(Ctor, x) { + var k, + len = x.d.length; + + if (len < 3) return taylorSeries(Ctor, 2, x, x); + + // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x) + // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5) + // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20)) + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + // Max k before Math.pow precision loss is 22 + x = x.times(Math.pow(5, -k)); + x = taylorSeries(Ctor, 2, x, x); + + // Reverse argument reduction + var sin2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sin2_x = x.times(x); + x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); + } + + return x; + } + + + // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`. + function taylorSeries(Ctor, n, x, y, isHyperbolic) { + var j, t, u, x2, + i = 1, + pr = Ctor.precision, + k = Math.ceil(pr / LOG_BASE); + + external = false; + x2 = x.times(x); + u = new Ctor(y); + + for (;;) { + t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1); + u = isHyperbolic ? y.plus(t) : y.minus(t); + y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1); + t = u.plus(y); + + if (t.d[k] !== void 0) { + for (j = k; t.d[j] === u.d[j] && j--;); + if (j == -1) break; + } + + j = u; + u = y; + y = t; + t = j; + i++; + } + + external = true; + t.d.length = k + 1; + + return t; + } + + + // Return the absolute value of `x` reduced to less than or equal to half pi. + function toLessThanHalfPi(Ctor, x) { + var t, + isNeg = x.s < 0, + pi = getPi(Ctor, Ctor.precision, 1), + halfPi = pi.times(0.5); + + x = x.abs(); + + if (x.lte(halfPi)) { + quadrant = isNeg ? 4 : 1; + return x; + } + + t = x.divToInt(pi); + + if (t.isZero()) { + quadrant = isNeg ? 3 : 2; + } else { + x = x.minus(t.times(pi)); + + // 0 <= x < pi + if (x.lte(halfPi)) { + quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1); + return x; + } + + quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2); + } + + return x.minus(pi).abs(); + } + + + /* + * Return the value of Decimal `x` as a string in base `baseOut`. + * + * If the optional `sd` argument is present include a binary exponent suffix. + */ + function toStringBinary(x, baseOut, sd, rm) { + var base, e, i, k, len, roundUp, str, xd, y, + Ctor = x.constructor, + isExp = sd !== void 0; + + if (isExp) { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } else { + sd = Ctor.precision; + rm = Ctor.rounding; + } + + if (!x.isFinite()) { + str = nonFiniteToString(x); + } else { + str = finiteToString(x); + i = str.indexOf('.'); + + // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required: + // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10)) + // minBinaryExponent = floor(decimalExponent * log[2](10)) + // log[2](10) = 3.321928094887362347870319429489390175864 + + if (isExp) { + base = 2; + if (baseOut == 16) { + sd = sd * 4 - 3; + } else if (baseOut == 8) { + sd = sd * 3 - 2; + } + } else { + base = baseOut; + } + + // Convert the number as an integer then divide the result by its base raised to a power such + // that the fraction part will be restored. + + // Non-integer. + if (i >= 0) { + str = str.replace('.', ''); + y = new Ctor(1); + y.e = str.length - i; + y.d = convertBase(finiteToString(y), 10, base); + y.e = y.d.length; + } + + xd = convertBase(str, 10, base); + e = len = xd.length; + + // Remove trailing zeros. + for (; xd[--len] == 0;) xd.pop(); + + if (!xd[0]) { + str = isExp ? '0p+0' : '0'; + } else { + if (i < 0) { + e--; + } else { + x = new Ctor(x); + x.d = xd; + x.e = e; + x = divide(x, y, sd, rm, 0, base); + xd = x.d; + e = x.e; + roundUp = inexact; + } + + // The rounding digit, i.e. the digit after the digit that may be rounded up. + i = xd[sd]; + k = base / 2; + roundUp = roundUp || xd[sd + 1] !== void 0; + + roundUp = rm < 4 + ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) + : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || + rm === (x.s < 0 ? 8 : 7)); + + xd.length = sd; + + if (roundUp) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for (; ++xd[--sd] > base - 1;) { + xd[sd] = 0; + if (!sd) { + ++e; + xd.unshift(1); + } + } + } + + // Determine trailing zeros. + for (len = xd.length; !xd[len - 1]; --len); + + // E.g. [4, 11, 15] becomes 4bf. + for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]); + + // Add binary exponent suffix? + if (isExp) { + if (len > 1) { + if (baseOut == 16 || baseOut == 8) { + i = baseOut == 16 ? 4 : 3; + for (--len; len % i; len++) str += '0'; + xd = convertBase(str, base, baseOut); + for (len = xd.length; !xd[len - 1]; --len); + + // xd[0] will always be be 1 + for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]); + } else { + str = str.charAt(0) + '.' + str.slice(1); + } + } + + str = str + (e < 0 ? 'p' : 'p+') + e; + } else if (e < 0) { + for (; ++e;) str = '0' + str; + str = '0.' + str; + } else { + if (++e > len) for (e -= len; e-- ;) str += '0'; + else if (e < len) str = str.slice(0, e) + '.' + str.slice(e); + } + } + + str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str; + } + + return x.s < 0 ? '-' + str : str; + } + + + // Does not strip trailing zeros. + function truncate(arr, len) { + if (arr.length > len) { + arr.length = len; + return true; + } + } + + + // Decimal methods + + + /* + * abs + * acos + * acosh + * add + * asin + * asinh + * atan + * atanh + * atan2 + * cbrt + * ceil + * clone + * config + * cos + * cosh + * div + * exp + * floor + * hypot + * ln + * log + * log2 + * log10 + * max + * min + * mod + * mul + * pow + * random + * round + * set + * sign + * sin + * sinh + * sqrt + * sub + * tan + * tanh + * trunc + */ + + + /* + * Return a new Decimal whose value is the absolute value of `x`. + * + * x {number|string|Decimal} + * + */ + function abs(x) { + return new this(x).abs(); + } + + + /* + * Return a new Decimal whose value is the arccosine in radians of `x`. + * + * x {number|string|Decimal} + * + */ + function acos(x) { + return new this(x).acos(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function acosh(x) { + return new this(x).acosh(); + } + + + /* + * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function add(x, y) { + return new this(x).plus(y); + } + + + /* + * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function asin(x) { + return new this(x).asin(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function asinh(x) { + return new this(x).asinh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function atan(x) { + return new this(x).atan(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function atanh(x) { + return new this(x).atanh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi + * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi, pi] + * + * y {number|string|Decimal} The y-coordinate. + * x {number|string|Decimal} The x-coordinate. + * + * atan2(±0, -0) = ±pi + * atan2(±0, +0) = ±0 + * atan2(±0, -x) = ±pi for x > 0 + * atan2(±0, x) = ±0 for x > 0 + * atan2(-y, ±0) = -pi/2 for y > 0 + * atan2(y, ±0) = pi/2 for y > 0 + * atan2(±y, -Infinity) = ±pi for finite y > 0 + * atan2(±y, +Infinity) = ±0 for finite y > 0 + * atan2(±Infinity, x) = ±pi/2 for finite x + * atan2(±Infinity, -Infinity) = ±3*pi/4 + * atan2(±Infinity, +Infinity) = ±pi/4 + * atan2(NaN, x) = NaN + * atan2(y, NaN) = NaN + * + */ + function atan2(y, x) { + y = new this(y); + x = new this(x); + var r, + pr = this.precision, + rm = this.rounding, + wpr = pr + 4; + + // Either NaN + if (!y.s || !x.s) { + r = new this(NaN); + + // Both ±Infinity + } else if (!y.d && !x.d) { + r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); + r.s = y.s; + + // x is ±Infinity or y is ±0 + } else if (!x.d || y.isZero()) { + r = x.s < 0 ? getPi(this, pr, rm) : new this(0); + r.s = y.s; + + // y is ±Infinity or x is ±0 + } else if (!y.d || x.isZero()) { + r = getPi(this, wpr, 1).times(0.5); + r.s = y.s; + + // Both non-zero and finite + } else if (x.s < 0) { + this.precision = wpr; + this.rounding = 1; + r = this.atan(divide(y, x, wpr, 1)); + x = getPi(this, wpr, 1); + this.precision = pr; + this.rounding = rm; + r = y.s < 0 ? r.minus(x) : r.plus(x); + } else { + r = this.atan(divide(y, x, wpr, 1)); + } + + return r; + } + + + /* + * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function cbrt(x) { + return new this(x).cbrt(); + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. + * + * x {number|string|Decimal} + * + */ + function ceil(x) { + return finalise(x = new this(x), x.e + 1, 2); + } + + + /* + * Configure global settings for a Decimal constructor. + * + * `obj` is an object with one or more of the following properties, + * + * precision {number} + * rounding {number} + * toExpNeg {number} + * toExpPos {number} + * maxE {number} + * minE {number} + * modulo {number} + * crypto {boolean|number} + * defaults {true} + * + * E.g. Decimal.config({ precision: 20, rounding: 4 }) + * + */ + function config(obj) { + if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); + var i, p, v, + useDefaults = obj.defaults === true, + ps = [ + 'precision', 1, MAX_DIGITS, + 'rounding', 0, 8, + 'toExpNeg', -EXP_LIMIT, 0, + 'toExpPos', 0, EXP_LIMIT, + 'maxE', 0, EXP_LIMIT, + 'minE', -EXP_LIMIT, 0, + 'modulo', 0, 9 + ]; + + for (i = 0; i < ps.length; i += 3) { + if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; + else throw Error(invalidArgument + p + ': ' + v); + } + } + + if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (v === true || v === false || v === 0 || v === 1) { + if (v) { + if (typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes)) { + this[p] = true; + } else { + throw Error(cryptoUnavailable); + } + } else { + this[p] = false; + } + } else { + throw Error(invalidArgument + p + ': ' + v); + } + } + + return this; + } + + + /* + * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cos(x) { + return new this(x).cos(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cosh(x) { + return new this(x).cosh(); + } + + + /* + * Create and return a Decimal constructor with the same configuration properties as this Decimal + * constructor. + * + */ + function clone(obj) { + var i, p, ps; + + /* + * The Decimal constructor and exported function. + * Return a new Decimal instance. + * + * v {number|string|Decimal} A numeric value. + * + */ + function Decimal(v) { + var e, i, t, + x = this; + + // Decimal called without new. + if (!(x instanceof Decimal)) return new Decimal(v); + + // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor + // which points to Object. + x.constructor = Decimal; + + // Duplicate. + if (v instanceof Decimal) { + x.s = v.s; + x.e = v.e; + x.d = (v = v.d) ? v.slice() : v; + return; + } + + t = typeof v; + + if (t === 'number') { + if (v === 0) { + x.s = 1 / v < 0 ? -1 : 1; + x.e = 0; + x.d = [0]; + return; + } + + if (v < 0) { + v = -v; + x.s = -1; + } else { + x.s = 1; + } + + // Fast path for small integers. + if (v === ~~v && v < 1e7) { + for (e = 0, i = v; i >= 10; i /= 10) e++; + x.e = e; + x.d = [v]; + return; + + // Infinity, NaN. + } else if (v * 0 !== 0) { + if (!v) x.s = NaN; + x.e = NaN; + x.d = null; + return; + } + + return parseDecimal(x, v.toString()); + + } else if (t !== 'string') { + throw Error(invalidArgument + v); + } + + // Minus sign? + if (v.charCodeAt(0) === 45) { + v = v.slice(1); + x.s = -1; + } else { + x.s = 1; + } + + return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); + } + + Decimal.prototype = P; + + Decimal.ROUND_UP = 0; + Decimal.ROUND_DOWN = 1; + Decimal.ROUND_CEIL = 2; + Decimal.ROUND_FLOOR = 3; + Decimal.ROUND_HALF_UP = 4; + Decimal.ROUND_HALF_DOWN = 5; + Decimal.ROUND_HALF_EVEN = 6; + Decimal.ROUND_HALF_CEIL = 7; + Decimal.ROUND_HALF_FLOOR = 8; + Decimal.EUCLID = 9; + + Decimal.config = Decimal.set = config; + Decimal.clone = clone; + Decimal.isDecimal = isDecimalInstance; + + Decimal.abs = abs; + Decimal.acos = acos; + Decimal.acosh = acosh; // ES6 + Decimal.add = add; + Decimal.asin = asin; + Decimal.asinh = asinh; // ES6 + Decimal.atan = atan; + Decimal.atanh = atanh; // ES6 + Decimal.atan2 = atan2; + Decimal.cbrt = cbrt; // ES6 + Decimal.ceil = ceil; + Decimal.cos = cos; + Decimal.cosh = cosh; // ES6 + Decimal.div = div; + Decimal.exp = exp; + Decimal.floor = floor; + Decimal.hypot = hypot; // ES6 + Decimal.ln = ln; + Decimal.log = log; + Decimal.log10 = log10; // ES6 + Decimal.log2 = log2; // ES6 + Decimal.max = max; + Decimal.min = min; + Decimal.mod = mod; + Decimal.mul = mul; + Decimal.pow = pow; + Decimal.random = random; + Decimal.round = round; + Decimal.sign = sign; // ES6 + Decimal.sin = sin; + Decimal.sinh = sinh; // ES6 + Decimal.sqrt = sqrt; + Decimal.sub = sub; + Decimal.tan = tan; + Decimal.tanh = tanh; // ES6 + Decimal.trunc = trunc; // ES6 + + if (obj === void 0) obj = {}; + if (obj) { + if (obj.defaults !== true) { + ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; + for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; + } + } + + Decimal.config(obj); + + return Decimal; + } + + + /* + * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function div(x, y) { + return new this(x).div(y); + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The power to which to raise the base of the natural log. + * + */ + function exp(x) { + return new this(x).exp(); + } + + + /* + * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. + * + * x {number|string|Decimal} + * + */ + function floor(x) { + return finalise(x = new this(x), x.e + 1, 3); + } + + + /* + * Return a new Decimal whose value is the square root of the sum of the squares of the arguments, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) + * + */ + function hypot() { + var i, n, + t = new this(0); + + external = false; + + for (i = 0; i < arguments.length;) { + n = new this(arguments[i++]); + if (!n.d) { + if (n.s) { + external = true; + return new this(1 / 0); + } + t = n; + } else if (t.d) { + t = t.plus(n.times(n)); + } + } + + external = true; + + return t.sqrt(); + } + + + /* + * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), + * otherwise return false. + * + */ + function isDecimalInstance(obj) { + return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false; + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function ln(x) { + return new this(x).ln(); + } + + + /* + * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base + * is specified, rounded to `precision` significant digits using rounding mode `rounding`. + * + * log[y](x) + * + * x {number|string|Decimal} The argument of the logarithm. + * y {number|string|Decimal} The base of the logarithm. + * + */ + function log(x, y) { + return new this(x).log(y); + } + + + /* + * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log2(x) { + return new this(x).log(2); + } + + + /* + * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log10(x) { + return new this(x).log(10); + } + + + /* + * Return a new Decimal whose value is the maximum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function max() { + return maxOrMin(this, arguments, 'lt'); + } + + + /* + * Return a new Decimal whose value is the minimum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function min() { + return maxOrMin(this, arguments, 'gt'); + } + + + /* + * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mod(x, y) { + return new this(x).mod(y); + } + + + /* + * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mul(x, y) { + return new this(x).mul(y); + } + + + /* + * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The base. + * y {number|string|Decimal} The exponent. + * + */ + function pow(x, y) { + return new this(x).pow(y); + } + + + /* + * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with + * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros + * are produced). + * + * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive. + * + */ + function random(sd) { + var d, e, k, n, + i = 0, + r = new this(1), + rd = []; + + if (sd === void 0) sd = this.precision; + else checkInt32(sd, 1, MAX_DIGITS); + + k = Math.ceil(sd / LOG_BASE); + + if (!this.crypto) { + for (; i < k;) rd[i++] = Math.random() * 1e7 | 0; + + // Browsers supporting crypto.getRandomValues. + } else if (crypto.getRandomValues) { + d = crypto.getRandomValues(new Uint32Array(k)); + + for (; i < k;) { + n = d[i]; + + // 0 <= n < 4294967296 + // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865). + if (n >= 4.29e9) { + d[i] = crypto.getRandomValues(new Uint32Array(1))[0]; + } else { + + // 0 <= n <= 4289999999 + // 0 <= (n % 1e7) <= 9999999 + rd[i++] = n % 1e7; + } + } + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + d = crypto.randomBytes(k *= 4); + + for (; i < k;) { + + // 0 <= n < 2147483648 + n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24); + + // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286). + if (n >= 2.14e9) { + crypto.randomBytes(4).copy(d, i); + } else { + + // 0 <= n <= 2139999999 + // 0 <= (n % 1e7) <= 9999999 + rd.push(n % 1e7); + i += 4; + } + } + + i = k / 4; + } else { + throw Error(cryptoUnavailable); + } + + k = rd[--i]; + sd %= LOG_BASE; + + // Convert trailing digits to zeros according to sd. + if (k && sd) { + n = mathpow(10, LOG_BASE - sd); + rd[i] = (k / n | 0) * n; + } + + // Remove trailing words which are zero. + for (; rd[i] === 0; i--) rd.pop(); + + // Zero? + if (i < 0) { + e = 0; + rd = [0]; + } else { + e = -1; + + // Remove leading words which are zero and adjust exponent accordingly. + for (; rd[0] === 0; e -= LOG_BASE) rd.shift(); + + // Count the digits of the first word of rd to determine leading zeros. + for (k = 1, n = rd[0]; n >= 10; n /= 10) k++; + + // Adjust the exponent for leading zeros of the first word of rd. + if (k < LOG_BASE) e -= LOG_BASE - k; + } + + r.e = e; + r.d = rd; + + return r; + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`. + * + * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). + * + * x {number|string|Decimal} + * + */ + function round(x) { + return finalise(x = new this(x), x.e + 1, this.rounding); + } + + + /* + * Return + * 1 if x > 0, + * -1 if x < 0, + * 0 if x is 0, + * -0 if x is -0, + * NaN otherwise + * + */ + function sign(x) { + x = new this(x); + return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN; + } + + + /* + * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sin(x) { + return new this(x).sin(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sinh(x) { + return new this(x).sinh(); + } + + + /* + * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function sqrt(x) { + return new this(x).sqrt(); + } + + + /* + * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function sub(x, y) { + return new this(x).sub(y); + } + + + /* + * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tan(x) { + return new this(x).tan(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tanh(x) { + return new this(x).tanh(); + } + + + /* + * Return a new Decimal whose value is `x` truncated to an integer. + * + * x {number|string|Decimal} + * + */ + function trunc(x) { + return finalise(x = new this(x), x.e + 1, 1); + } + + + // Create and configure initial Decimal constructor. + Decimal = clone(DEFAULTS); + + Decimal['default'] = Decimal.Decimal = Decimal; + + // Create the internal constants from their string values. + LN10 = new Decimal(LN10); + PI = new Decimal(PI); + + + // Export. + + + // AMD. + if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return Decimal; }).call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - - // Node and other environments that support module.exports. - } else if (typeof module != 'undefined' && module.exports) { - module.exports = Decimal; - - // Browser. - } else { - if (!globalScope) { - globalScope = typeof self != 'undefined' && self && self.self == self - ? self : Function('return this')(); - } - - noConflict = globalScope.Decimal; - Decimal.noConflict = function () { - globalScope.Decimal = noConflict; - return Decimal; - }; - - globalScope.Decimal = Decimal; - } -})(this); + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + + // Node and other environments that support module.exports. + } else if (typeof module != 'undefined' && module.exports) { + module.exports = Decimal; + + // Browser. + } else { + if (!globalScope) { + globalScope = typeof self != 'undefined' && self && self.self == self + ? self : Function('return this')(); + } + + noConflict = globalScope.Decimal; + Decimal.noConflict = function () { + globalScope.Decimal = noConflict; + return Decimal; + }; + + globalScope.Decimal = Decimal; + } +})(this); /***/ }), @@ -37378,8 +37403,12 @@ function factory (type, config, load, typed, math) { var unit = new Unit(); unit.units = []; + var powerMultiplierCurrent = 1; + var expectingUnit = false; + // A unit should follow this pattern: - // [number]unit[^number] [unit[^number]]...[/unit[^number] [unit[^number]]] + // [number] ...[ [*/] unit[^number] ] + // unit[^number] ... [ [*/] unit[^number] ] // Rules: // number is any floating point number. @@ -37393,6 +37422,7 @@ function factory (type, config, load, typed, math) { next(); skipWhitespace(); + // Optional number at the start of the string var valueStr = parseNumber(); var value = null; @@ -37406,12 +37436,19 @@ function factory (type, config, load, typed, math) { else { // number value = parseFloat(valueStr); } - } - skipWhitespace(); // Whitespace is not required here - // Next, we read any number of unit[^number] - var powerMultiplierCurrent = 1; - var expectingUnit = false; + skipWhitespace(); // Whitespace is not required here + + // handle multiplication or division right after the value, like '1/s' + if (parseCharacter('*')) { + powerMultiplierCurrent = 1; + expectingUnit = true; + } + else if (parseCharacter('/')) { + powerMultiplierCurrent = -1; + expectingUnit = true; + } + } // Stack to keep track of powerMultipliers applied to each parentheses group var powerMultiplierStack = []; @@ -40829,7 +40866,7 @@ exports.math = true; // request access to the math namespace /* 192 */ /***/ (function(module, exports) { -module.exports = '4.0.0'; +module.exports = '4.0.1'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. @@ -56107,51 +56144,51 @@ exports.factory = factory; /* 485 */ /***/ (function(module, exports) { -/* - * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license - * Author: Jim Palmer (based on chunking idea from Dave Koelle) - */ -/*jshint unused:false */ -module.exports = function naturalSort (a, b) { - "use strict"; - var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, - sre = /(^[ ]*|[ ]*$)/g, - dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, - hre = /^0x[0-9a-f]+$/i, - ore = /^0/, - i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, - // convert all to strings strip whitespace - x = i(a).replace(sre, '') || '', - y = i(b).replace(sre, '') || '', - // chunk/tokenize - xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - // numeric, hex or date detection - xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), - yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, - oFxNcL, oFyNcL; - // first try and sort Hex codes or Dates - if (yD) { - if ( xD < yD ) { return -1; } - else if ( xD > yD ) { return 1; } - } - // natural sorting through split numeric strings and default strings - for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { - // find floats not starting with '0', string or 0 if not defined (Clint Priest) - oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; - oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; - // handle numeric vs string comparison - number < string - (Kyle Adams) - if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } - // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' - else if (typeof oFxNcL !== typeof oFyNcL) { - oFxNcL += ''; - oFyNcL += ''; - } - if (oFxNcL < oFyNcL) { return -1; } - if (oFxNcL > oFyNcL) { return 1; } - } - return 0; -}; +/* + * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license + * Author: Jim Palmer (based on chunking idea from Dave Koelle) + */ +/*jshint unused:false */ +module.exports = function naturalSort (a, b) { + "use strict"; + var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, + sre = /(^[ ]*|[ ]*$)/g, + dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, + hre = /^0x[0-9a-f]+$/i, + ore = /^0/, + i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, + // convert all to strings strip whitespace + x = i(a).replace(sre, '') || '', + y = i(b).replace(sre, '') || '', + // chunk/tokenize + xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + // numeric, hex or date detection + xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), + yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, + oFxNcL, oFyNcL; + // first try and sort Hex codes or Dates + if (yD) { + if ( xD < yD ) { return -1; } + else if ( xD > yD ) { return 1; } + } + // natural sorting through split numeric strings and default strings + for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { + // find floats not starting with '0', string or 0 if not defined (Clint Priest) + oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; + oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; + // handle numeric vs string comparison - number < string - (Kyle Adams) + if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } + // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' + else if (typeof oFxNcL !== typeof oFyNcL) { + oFxNcL += ''; + oFyNcL += ''; + } + if (oFxNcL < oFyNcL) { return -1; } + if (oFxNcL > oFyNcL) { return 1; } + } + return 0; +}; /***/ }), @@ -56605,179 +56642,179 @@ exports.math = true; /***/ (function(module, exports, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(global) { - -var width = 256;// each RC4 output is 0 <= x < 256 -var chunks = 6;// at least six RC4 outputs for each double -var digits = 52;// there are 52 significant digits in a double -var pool = [];// pool: entropy pool starts empty -var GLOBAL = typeof global === 'undefined' ? window : global; - -// -// The following constants are related to IEEE 754 limits. -// -var startdenom = Math.pow(width, chunks), - significance = Math.pow(2, digits), - overflow = significance * 2, - mask = width - 1; - - -var oldRandom = Math.random; - -// -// seedrandom() -// This is the seedrandom function described above. -// -module.exports = function(seed, options) { - if (options && options.global === true) { - options.global = false; - Math.random = module.exports(seed, options); - options.global = true; - return Math.random; - } - var use_entropy = (options && options.entropy) || false; - var key = []; - - // Flatten the seed string or build one from local entropy if needed. - var shortseed = mixkey(flatten( - use_entropy ? [seed, tostring(pool)] : - 0 in arguments ? seed : autoseed(), 3), key); - - // Use the seed to initialize an ARC4 generator. - var arc4 = new ARC4(key); - - // Mix the randomness into accumulated entropy. - mixkey(tostring(arc4.S), pool); - - // Override Math.random - - // This function returns a random double in [0, 1) that contains - // randomness in every bit of the mantissa of the IEEE 754 value. - - return function() { // Closure to return a random double: - var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48 - d = startdenom, // and denominator d = 2 ^ 48. - x = 0; // and no 'extra last byte'. - while (n < significance) { // Fill up all significant digits by - n = (n + x) * width; // shifting numerator and - d *= width; // denominator and generating a - x = arc4.g(1); // new least-significant-byte. - } - while (n >= overflow) { // To avoid rounding up, before adding - n /= 2; // last byte, shift everything - d /= 2; // right using integer Math until - x >>>= 1; // we have exactly the desired bits. - } - return (n + x) / d; // Form the number within [0, 1). - }; -}; - -module.exports.resetGlobal = function () { - Math.random = oldRandom; -}; - -// -// ARC4 -// -// An ARC4 implementation. The constructor takes a key in the form of -// an array of at most (width) integers that should be 0 <= x < (width). -// -// The g(count) method returns a pseudorandom integer that concatenates -// the next (count) outputs from ARC4. Its return value is a number x -// that is in the range 0 <= x < (width ^ count). -// -/** @constructor */ -function ARC4(key) { - var t, keylen = key.length, - me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; - - // The empty key [] is treated as [0]. - if (!keylen) { key = [keylen++]; } - - // Set up S using the standard key scheduling algorithm. - while (i < width) { - s[i] = i++; - } - for (i = 0; i < width; i++) { - s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))]; - s[j] = t; - } - - // The "g" method returns the next (count) outputs as one number. - (me.g = function(count) { - // Using instance members instead of closure state nearly doubles speed. - var t, r = 0, - i = me.i, j = me.j, s = me.S; - while (count--) { - t = s[i = mask & (i + 1)]; - r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))]; - } - me.i = i; me.j = j; - return r; - // For robust unpredictability discard an initial batch of values. - // See http://www.rsa.com/rsalabs/node.asp?id=2009 - })(width); -} - -// -// flatten() -// Converts an object tree to nested arrays of strings. -// -function flatten(obj, depth) { - var result = [], typ = (typeof obj)[0], prop; - if (depth && typ == 'o') { - for (prop in obj) { - try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} - } - } - return (result.length ? result : typ == 's' ? obj : obj + '\0'); -} - -// -// mixkey() -// Mixes a string seed into a key that is an array of integers, and -// returns a shortened string seed that is equivalent to the result key. -// -function mixkey(seed, key) { - var stringseed = seed + '', smear, j = 0; - while (j < stringseed.length) { - key[mask & j] = - mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++)); - } - return tostring(key); -} - -// -// autoseed() -// Returns an object for autoseeding, using window.crypto if available. -// -/** @param {Uint8Array=} seed */ -function autoseed(seed) { - try { - GLOBAL.crypto.getRandomValues(seed = new Uint8Array(width)); - return tostring(seed); - } catch (e) { - return [+new Date, GLOBAL, GLOBAL.navigator && GLOBAL.navigator.plugins, - GLOBAL.screen, tostring(pool)]; - } -} - -// -// tostring() -// Converts an array of charcodes to a string -// -function tostring(a) { - return String.fromCharCode.apply(0, a); -} - -// -// When seedrandom.js is loaded, we immediately mix a few bits -// from the built-in RNG into the entropy pool. Because we do -// not want to intefere with determinstic PRNG state later, -// seedrandom will not call Math.random on its own again after -// initialization. -// -mixkey(Math.random(), pool); +/* WEBPACK VAR INJECTION */(function(global) { + +var width = 256;// each RC4 output is 0 <= x < 256 +var chunks = 6;// at least six RC4 outputs for each double +var digits = 52;// there are 52 significant digits in a double +var pool = [];// pool: entropy pool starts empty +var GLOBAL = typeof global === 'undefined' ? window : global; + +// +// The following constants are related to IEEE 754 limits. +// +var startdenom = Math.pow(width, chunks), + significance = Math.pow(2, digits), + overflow = significance * 2, + mask = width - 1; + + +var oldRandom = Math.random; + +// +// seedrandom() +// This is the seedrandom function described above. +// +module.exports = function(seed, options) { + if (options && options.global === true) { + options.global = false; + Math.random = module.exports(seed, options); + options.global = true; + return Math.random; + } + var use_entropy = (options && options.entropy) || false; + var key = []; + + // Flatten the seed string or build one from local entropy if needed. + var shortseed = mixkey(flatten( + use_entropy ? [seed, tostring(pool)] : + 0 in arguments ? seed : autoseed(), 3), key); + + // Use the seed to initialize an ARC4 generator. + var arc4 = new ARC4(key); + + // Mix the randomness into accumulated entropy. + mixkey(tostring(arc4.S), pool); + + // Override Math.random + + // This function returns a random double in [0, 1) that contains + // randomness in every bit of the mantissa of the IEEE 754 value. + + return function() { // Closure to return a random double: + var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48 + d = startdenom, // and denominator d = 2 ^ 48. + x = 0; // and no 'extra last byte'. + while (n < significance) { // Fill up all significant digits by + n = (n + x) * width; // shifting numerator and + d *= width; // denominator and generating a + x = arc4.g(1); // new least-significant-byte. + } + while (n >= overflow) { // To avoid rounding up, before adding + n /= 2; // last byte, shift everything + d /= 2; // right using integer Math until + x >>>= 1; // we have exactly the desired bits. + } + return (n + x) / d; // Form the number within [0, 1). + }; +}; + +module.exports.resetGlobal = function () { + Math.random = oldRandom; +}; + +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// +/** @constructor */ +function ARC4(key) { + var t, keylen = key.length, + me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + + // The empty key [] is treated as [0]. + if (!keylen) { key = [keylen++]; } + + // Set up S using the standard key scheduling algorithm. + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))]; + s[j] = t; + } + + // The "g" method returns the next (count) outputs as one number. + (me.g = function(count) { + // Using instance members instead of closure state nearly doubles speed. + var t, r = 0, + i = me.i, j = me.j, s = me.S; + while (count--) { + t = s[i = mask & (i + 1)]; + r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))]; + } + me.i = i; me.j = j; + return r; + // For robust unpredictability discard an initial batch of values. + // See http://www.rsa.com/rsalabs/node.asp?id=2009 + })(width); +} + +// +// flatten() +// Converts an object tree to nested arrays of strings. +// +function flatten(obj, depth) { + var result = [], typ = (typeof obj)[0], prop; + if (depth && typ == 'o') { + for (prop in obj) { + try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} + } + } + return (result.length ? result : typ == 's' ? obj : obj + '\0'); +} + +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// +function mixkey(seed, key) { + var stringseed = seed + '', smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = + mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++)); + } + return tostring(key); +} + +// +// autoseed() +// Returns an object for autoseeding, using window.crypto if available. +// +/** @param {Uint8Array=} seed */ +function autoseed(seed) { + try { + GLOBAL.crypto.getRandomValues(seed = new Uint8Array(width)); + return tostring(seed); + } catch (e) { + return [+new Date, GLOBAL, GLOBAL.navigator && GLOBAL.navigator.plugins, + GLOBAL.screen, tostring(pool)]; + } +} + +// +// tostring() +// Converts an array of charcodes to a string +// +function tostring(a) { + return String.fromCharCode.apply(0, a); +} + +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to intefere with determinstic PRNG state later, +// seedrandom will not call Math.random on its own again after +// initialization. +// +mixkey(Math.random(), pool); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(494))) @@ -56785,27 +56822,27 @@ mixkey(Math.random(), pool); /* 494 */ /***/ (function(module, exports) { -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; /***/ }), @@ -59536,72 +59573,72 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic cosine of a value, - * defined as `cosh(x) = 1/2 * (exp(x) + exp(-x))`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.cosh(x) - * - * Examples: - * - * math.cosh(0.5); // returns number 1.1276259652063807 - * - * See also: - * - * sinh, tanh - * - * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input - * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x - */ - var cosh = typed('cosh', { - 'number': _cosh, - - 'Complex': function (x) { - return x.cosh(); - }, - - 'BigNumber': function (x) { - return x.cosh(); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function cosh is no angle'); - } - return cosh(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, cosh); - } - }); - - cosh.toTex = {1: '\\cosh\\left(${args[0]}\\right)'}; - - return cosh; -} - -/** - * Calculate the hyperbolic cosine of a number - * @param {number} x - * @returns {number} - * @private - */ -var _cosh = Math.cosh || function (x) { - return (Math.exp(x) + Math.exp(-x)) / 2; -}; - -exports.name = 'cosh'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic cosine of a value, + * defined as `cosh(x) = 1/2 * (exp(x) + exp(-x))`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.cosh(x) + * + * Examples: + * + * math.cosh(0.5); // returns number 1.1276259652063807 + * + * See also: + * + * sinh, tanh + * + * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input + * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x + */ + var cosh = typed('cosh', { + 'number': _cosh, + + 'Complex': function (x) { + return x.cosh(); + }, + + 'BigNumber': function (x) { + return x.cosh(); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function cosh is no angle'); + } + return cosh(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, cosh); + } + }); + + cosh.toTex = {1: '\\cosh\\left(${args[0]}\\right)'}; + + return cosh; +} + +/** + * Calculate the hyperbolic cosine of a number + * @param {number} x + * @returns {number} + * @private + */ +var _cosh = Math.cosh || function (x) { + return (Math.exp(x) + Math.exp(-x)) / 2; +}; + +exports.name = 'cosh'; +exports.factory = factory; /***/ }), @@ -59674,75 +59711,75 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic cotangent of a value, - * defined as `coth(x) = 1 / tanh(x)`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.coth(x) - * - * Examples: - * - * // coth(x) = 1 / tanh(x) - * math.coth(2); // returns 1.0373147207275482 - * 1 / math.tanh(2); // returns 1.0373147207275482 - * - * See also: - * - * sinh, tanh, cosh - * - * @param {number | Complex | Unit | Array | Matrix} x Function input - * @return {number | Complex | Array | Matrix} Hyperbolic cotangent of x - */ - var coth = typed('coth', { - 'number': _coth, - - 'Complex': function (x) { - return x.coth(); - }, - - 'BigNumber': function (x) { - return new type.BigNumber(1).div(x.tanh()); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function coth is no angle'); - } - return coth(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, coth); - } - }); - - coth.toTex = {1: '\\coth\\left(${args[0]}\\right)'}; - - return coth; -} - -/** - * Calculate the hyperbolic cosine of a number - * @param {number} x - * @returns {number} - * @private - */ -function _coth(x) { - var e = Math.exp(2 * x); - return (e + 1) / (e - 1); -} - -exports.name = 'coth'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic cotangent of a value, + * defined as `coth(x) = 1 / tanh(x)`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.coth(x) + * + * Examples: + * + * // coth(x) = 1 / tanh(x) + * math.coth(2); // returns 1.0373147207275482 + * 1 / math.tanh(2); // returns 1.0373147207275482 + * + * See also: + * + * sinh, tanh, cosh + * + * @param {number | Complex | Unit | Array | Matrix} x Function input + * @return {number | Complex | Array | Matrix} Hyperbolic cotangent of x + */ + var coth = typed('coth', { + 'number': _coth, + + 'Complex': function (x) { + return x.coth(); + }, + + 'BigNumber': function (x) { + return new type.BigNumber(1).div(x.tanh()); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function coth is no angle'); + } + return coth(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, coth); + } + }); + + coth.toTex = {1: '\\coth\\left(${args[0]}\\right)'}; + + return coth; +} + +/** + * Calculate the hyperbolic cosine of a number + * @param {number} x + * @returns {number} + * @private + */ +function _coth(x) { + var e = Math.exp(2 * x); + return (e + 1) / (e - 1); +} + +exports.name = 'coth'; +exports.factory = factory; /***/ }), @@ -59815,81 +59852,81 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); -var sign = __webpack_require__(3).sign; - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic cosecant of a value, - * defined as `csch(x) = 1 / sinh(x)`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.csch(x) - * - * Examples: - * - * // csch(x) = 1/ sinh(x) - * math.csch(0.5); // returns 1.9190347513349437 - * 1 / math.sinh(0.5); // returns 1.9190347513349437 - * - * See also: - * - * sinh, sech, coth - * - * @param {number | Complex | Unit | Array | Matrix} x Function input - * @return {number | Complex | Array | Matrix} Hyperbolic cosecant of x - */ - var csch = typed('csch', { - 'number': _csch, - - 'Complex': function (x) { - return x.csch(); - }, - - 'BigNumber': function (x) { - return new type.BigNumber(1).div(x.sinh()); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function csch is no angle'); - } - return csch(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, csch); - } - }); - - csch.toTex = {1: '\\mathrm{csch}\\left(${args[0]}\\right)'}; - - return csch; -} - -/** - * Calculate the hyperbolic cosecant of a number - * @param {number} x - * @returns {number} - * @private - */ -function _csch(x) { - // consider values close to zero (+/-) - if (x == 0) { - return Number.POSITIVE_INFINITY; - } - else { - return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x); - } -} - -exports.name = 'csch'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); +var sign = __webpack_require__(3).sign; + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic cosecant of a value, + * defined as `csch(x) = 1 / sinh(x)`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.csch(x) + * + * Examples: + * + * // csch(x) = 1/ sinh(x) + * math.csch(0.5); // returns 1.9190347513349437 + * 1 / math.sinh(0.5); // returns 1.9190347513349437 + * + * See also: + * + * sinh, sech, coth + * + * @param {number | Complex | Unit | Array | Matrix} x Function input + * @return {number | Complex | Array | Matrix} Hyperbolic cosecant of x + */ + var csch = typed('csch', { + 'number': _csch, + + 'Complex': function (x) { + return x.csch(); + }, + + 'BigNumber': function (x) { + return new type.BigNumber(1).div(x.sinh()); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function csch is no angle'); + } + return csch(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, csch); + } + }); + + csch.toTex = {1: '\\mathrm{csch}\\left(${args[0]}\\right)'}; + + return csch; +} + +/** + * Calculate the hyperbolic cosecant of a number + * @param {number} x + * @returns {number} + * @private + */ +function _csch(x) { + // consider values close to zero (+/-) + if (x == 0) { + return Number.POSITIVE_INFINITY; + } + else { + return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x); + } +} + +exports.name = 'csch'; +exports.factory = factory; /***/ }), @@ -59962,74 +59999,74 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic secant of a value, - * defined as `sech(x) = 1 / cosh(x)`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.sech(x) - * - * Examples: - * - * // sech(x) = 1/ cosh(x) - * math.sech(0.5); // returns 0.886818883970074 - * 1 / math.cosh(0.5); // returns 0.886818883970074 - * - * See also: - * - * cosh, csch, coth - * - * @param {number | Complex | Unit | Array | Matrix} x Function input - * @return {number | Complex | Array | Matrix} Hyperbolic secant of x - */ - var sech = typed('sech', { - 'number': _sech, - - 'Complex': function (x) { - return x.sech(); - }, - - 'BigNumber': function (x) { - return new type.BigNumber(1).div(x.cosh()); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function sech is no angle'); - } - return sech(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, sech); - } - }); - - sech.toTex = {1: '\\mathrm{sech}\\left(${args[0]}\\right)'}; - - return sech; -} - -/** - * Calculate the hyperbolic secant of a number - * @param {number} x - * @returns {number} - * @private - */ -function _sech(x) { - return 2 / (Math.exp(x) + Math.exp(-x)); -} - -exports.name = 'sech'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic secant of a value, + * defined as `sech(x) = 1 / cosh(x)`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.sech(x) + * + * Examples: + * + * // sech(x) = 1/ cosh(x) + * math.sech(0.5); // returns 0.886818883970074 + * 1 / math.cosh(0.5); // returns 0.886818883970074 + * + * See also: + * + * cosh, csch, coth + * + * @param {number | Complex | Unit | Array | Matrix} x Function input + * @return {number | Complex | Array | Matrix} Hyperbolic secant of x + */ + var sech = typed('sech', { + 'number': _sech, + + 'Complex': function (x) { + return x.sech(); + }, + + 'BigNumber': function (x) { + return new type.BigNumber(1).div(x.cosh()); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function sech is no angle'); + } + return sech(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, sech); + } + }); + + sech.toTex = {1: '\\mathrm{sech}\\left(${args[0]}\\right)'}; + + return sech; +} + +/** + * Calculate the hyperbolic secant of a number + * @param {number} x + * @returns {number} + * @private + */ +function _sech(x) { + return 2 / (Math.exp(x) + Math.exp(-x)); +} + +exports.name = 'sech'; +exports.factory = factory; /***/ }), @@ -60107,73 +60144,73 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic sine of a value, - * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.sinh(x) - * - * Examples: - * - * math.sinh(0.5); // returns number 0.5210953054937474 - * - * See also: - * - * cosh, tanh - * - * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input - * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x - */ - var sinh = typed('sinh', { - 'number': _sinh, - - 'Complex': function (x) { - return x.sinh(); - }, - - 'BigNumber': function (x) { - return x.sinh(); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function sinh is no angle'); - } - return sinh(x.value); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since sinh(0) = 0 - return deepMap(x, sinh, true); - } - }); - - sinh.toTex = {1: '\\sinh\\left(${args[0]}\\right)'}; - - return sinh; -} - -/** - * Calculate the hyperbolic sine of a number - * @param {number} x - * @returns {number} - * @private - */ -var _sinh = Math.sinh || function (x) { - return (Math.exp(x) - Math.exp(-x)) / 2; -}; - -exports.name = 'sinh'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic sine of a value, + * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.sinh(x) + * + * Examples: + * + * math.sinh(0.5); // returns number 0.5210953054937474 + * + * See also: + * + * cosh, tanh + * + * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input + * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x + */ + var sinh = typed('sinh', { + 'number': _sinh, + + 'Complex': function (x) { + return x.sinh(); + }, + + 'BigNumber': function (x) { + return x.sinh(); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function sinh is no angle'); + } + return sinh(x.value); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since sinh(0) = 0 + return deepMap(x, sinh, true); + } + }); + + sinh.toTex = {1: '\\sinh\\left(${args[0]}\\right)'}; + + return sinh; +} + +/** + * Calculate the hyperbolic sine of a number + * @param {number} x + * @returns {number} + * @private + */ +var _sinh = Math.sinh || function (x) { + return (Math.exp(x) - Math.exp(-x)) / 2; +}; + +exports.name = 'sinh'; +exports.factory = factory; /***/ }), @@ -60247,77 +60284,77 @@ exports.factory = factory; /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var deepMap = __webpack_require__(0); - -function factory (type, config, load, typed) { - /** - * Calculate the hyperbolic tangent of a value, - * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.tanh(x) - * - * Examples: - * - * // tanh(x) = sinh(x) / cosh(x) = 1 / coth(x) - * math.tanh(0.5); // returns 0.46211715726000974 - * math.sinh(0.5) / math.cosh(0.5); // returns 0.46211715726000974 - * 1 / math.coth(0.5); // returns 0.46211715726000974 - * - * See also: - * - * sinh, cosh, coth - * - * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input - * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x - */ - var tanh = typed('tanh', { - 'number': _tanh, - - 'Complex': function (x) { - return x.tanh(); - }, - - 'BigNumber': function (x) { - return x.tanh(); - }, - - 'Unit': function (x) { - if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { - throw new TypeError ('Unit in function tanh is no angle'); - } - return tanh(x.value); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since tanh(0) = 0 - return deepMap(x, tanh, true); - } - }); - - tanh.toTex = {1: '\\tanh\\left(${args[0]}\\right)'}; - - return tanh; -} - -/** - * Calculate the hyperbolic tangent of a number - * @param {number} x - * @returns {number} - * @private - */ -var _tanh = Math.tanh || function (x) { - var e = Math.exp(2 * x); - return (e - 1) / (e + 1); -}; - -exports.name = 'tanh'; -exports.factory = factory; + + +var deepMap = __webpack_require__(0); + +function factory (type, config, load, typed) { + /** + * Calculate the hyperbolic tangent of a value, + * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.tanh(x) + * + * Examples: + * + * // tanh(x) = sinh(x) / cosh(x) = 1 / coth(x) + * math.tanh(0.5); // returns 0.46211715726000974 + * math.sinh(0.5) / math.cosh(0.5); // returns 0.46211715726000974 + * 1 / math.coth(0.5); // returns 0.46211715726000974 + * + * See also: + * + * sinh, cosh, coth + * + * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input + * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x + */ + var tanh = typed('tanh', { + 'number': _tanh, + + 'Complex': function (x) { + return x.tanh(); + }, + + 'BigNumber': function (x) { + return x.tanh(); + }, + + 'Unit': function (x) { + if (!x.hasBase(type.Unit.BASE_UNITS.ANGLE)) { + throw new TypeError ('Unit in function tanh is no angle'); + } + return tanh(x.value); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since tanh(0) = 0 + return deepMap(x, tanh, true); + } + }); + + tanh.toTex = {1: '\\tanh\\left(${args[0]}\\right)'}; + + return tanh; +} + +/** + * Calculate the hyperbolic tangent of a number + * @param {number} x + * @returns {number} + * @private + */ +var _tanh = Math.tanh || function (x) { + var e = Math.exp(2 * x); + return (e - 1) / (e + 1); +}; + +exports.name = 'tanh'; +exports.factory = factory; /***/ }), @@ -60471,7 +60508,7 @@ function factory (type, config, load, typed) { * math.isPrime(-0); // returns false * math.isPrime(0.5); // returns false * math.isPrime('2'); // returns true - * math.isPrime([2, 17, 100]'); // returns [true, true, false] + * math.isPrime([2, 17, 100]); // returns [true, true, false] * * See also: * diff --git a/dist/math.min.js b/dist/math.min.js index 7feab5224..65eb50884 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 4.0.0 - * @date 2018-02-25 + * @version 4.0.1 + * @date 2018-03-17 * * @license * Copyright (C) 2013-2018 Jos de Jong @@ -24,7 +24,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.math=t():e.math=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=149)}([function(e,t,r){"use strict";e.exports=function e(t,r,n){return t&&"function"==typeof t.map?t.map(function(t){return e(t,r,n)}):r(t)}},function(e,t,r){"use strict";t.name="matrix",t.factory=function(e,t,r,n){var i=n("matrix",{"":function(){return a([])},string:function(e){return a([],e)},"string, string":function(e,t){return a([],e,t)},Array:function(e){return a(e)},Matrix:function(e){return a(e,e.storage())},"Array | Matrix, string":a,"Array | Matrix, string, string":a});return i.toTex={0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},i;function a(t,r,n){return new(e.Matrix.storage(r||"default"))(t,n)}}},function(e,t,r){"use strict";var n=r(3),i=r(9),a=r(10),o=r(53);t.size=function(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t},t.validate=function(e,t){if(0==t.length){if(Array.isArray(e))throw new a(e.length,0)}else!function e(t,r,n){var i,o=t.length;if(o!=r[n])throw new a(o,r[n]);if(n")}(e,t,0)},t.validateIndex=function(e,t){if(!n.isNumber(e)||!n.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(e<0||"number"==typeof t&&e>=t)throw new o(e,t)},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");return t.forEach(function(e){if(!n.isNumber(e)||!n.isInteger(e)||e<0)throw new TypeError("Invalid size, must contain positive integers (size: "+i.format(t)+")")}),function e(t,r,n,i){var a;var o;var s=t.length;var u=r[n];var c=Math.min(s,u);t.length=u;if(n0?1:e<0?-1:0},t.format=function(e,r){if("function"==typeof r)return r(e);if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"engineering":return t.toEngineering(e,i);case"auto":if(r&&r.exponential&&(void 0!==r.exponential.lower||void 0!==r.exponential.upper)){var a=Object.assign({},r);return a.exponential=void 0,void 0!==r.exponential.lower&&(a.lowerExp=Math.round(Math.log(r.exponential.lower)/Math.LN10)),void 0!==r.exponential.upper&&(a.upperExp=Math.round(Math.log(r.exponential.upper)/Math.LN10)),console.warn("Deprecation warning: Formatting options exponential.lower and exponential.upper (minimum and maximum value) are replaced with exponential.lowerExp and exponential.upperExp (minimum and maximum exponent) since version 4.0.0. Replace "+JSON.stringify(r)+" with "+JSON.stringify(a)),t.toPrecision(e,i,a)}return t.toPrecision(e,i,r&&r).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.splitNumber=function(e){var t=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),a=n.indexOf(".");i+=-1!==a?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)});return 0===o.length&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}},t.toEngineering=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.roundDigits(t.splitNumber(e),r),a=i.exponent,o=i.coefficients,s=a%3==0?a:a<0?a-3-a%3:a-a%3,u=a>=0?a:Math.abs(s);o.length-1=0;)f++;var l=o.slice(f).join(""),p=l.match(/[1-9]/)?"."+l:"",m=o.slice(0,f).join("")+p+"e"+(a>=0?"+":"")+s.toString();return i.sign+m},t.toFixed=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.splitNumber(e),a="number"==typeof r?t.roundDigits(i,i.exponent+1+r):i,o=a.coefficients,s=a.exponent+1,u=s+(r||0);return o.length0?"."+o.join(""):"")+"e"+(s>=0?"+":"")+s},t.toPrecision=function(e,r,i){if(isNaN(e)||!isFinite(e))return String(e);var a=i&&void 0!==i.lowerExp?i.lowerExp:-3,o=i&&void 0!==i.upperExp?i.upperExp:5,s=t.splitNumber(e);if(s.exponent=o)return t.toExponential(e,r);var u=r?t.roundDigits(s,r):s,c=u.coefficients,f=u.exponent;c.length0?f:0;return l<(c=n(-f).concat(c)).length-1&&c.splice(l+1,0,"."),u.sign+c.join("")},t.roundDigits=function(e,t){for(var r={sign:e.sign,coefficients:e.coefficients,exponent:e.exponent},n=r.coefficients;t<=0;)n.unshift(0),r.exponent++,t++;if(n.length>t&&n.splice(t,n.length-t)[0]>=5){var i=t-1;for(n[i]++;10===n[i];)n.pop(),0===i&&(n.unshift(0),r.exponent++,i++),n[--i]++}return r},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var i={deg:"^\\circ"};t.escape=function(e){return n(e,{preserveFormatting:!0})},t.toSymbol=function(e,r){return(r=void 0!==r&&r)?i.hasOwnProperty(e)?i[e]:"\\mathrm{"+t.escape(e)+"}":t.symbols.hasOwnProperty(e)?t.symbols[e]:t.escape(e)}},function(e,t,r){"use strict";var n=r(72);t.clone=function e(r){var i=typeof r;if("number"===i||"string"===i||"boolean"===i||null==r)return r;if("function"==typeof r.clone)return r.clone();if(Array.isArray(r))return r.map(function(t){return e(t)});if(r instanceof Number)return new Number(r.valueOf());if(r instanceof String)return new String(r.valueOf());if(r instanceof Boolean)return new Boolean(r.valueOf());if(r instanceof Date)return new Date(r.valueOf());if(n(r))return r;if(r instanceof RegExp)throw new TypeError("Cannot clone "+r);return t.map(r,e)},t.map=function(e,r){var n={};for(var i in e)t.hasOwnProperty(e,i)&&(n[i]=r(e[i]));return n},t.extend=function(e,r){for(var n in r)t.hasOwnProperty(r,n)&&(e[n]=r[n]);return e},t.deepExtend=function e(r,n){if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var i in n)if(t.hasOwnProperty(n,i))if(n[i]&&n[i].constructor===Object)void 0===r[i]&&(r[i]={}),r[i].constructor===Object?e(r[i],n[i]):r[i]=n[i];else{if(Array.isArray(n[i]))throw new TypeError("Arrays are not supported by deepExtend");r[i]=n[i]}return r},t.deepEqual=function(e,r){var n,i,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;i0?o(p,0,f,f[0],c,t,s):[];return new a({data:m,size:n(f),datatype:u})}}},function(e,t,r){"use strict";var n=r(24),i=r(10);n.string.isString;t.name="algorithm13",t.factory=function(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,n,i,a){var s=[];if(t===r.length-1)for(var u=0;u0?o(g,0,h,h[0],u,l):[];return new a({data:y,size:h,datatype:s})}}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.factory=function(e,t,r,a){var o=a("equalScalar",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.eq(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return e.equals(t)},"Complex, Complex":function(e,t){return e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return o(e.value,t.value)}});return o}},function(e,t,r){"use strict";var n=r(3).format,i=r(166).format,a=r(72);t.isString=function(e){return"string"==typeof e},t.endsWith=function(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t},t.format=function(e,r){if("number"==typeof e)return n(e,r);if(a(e))return i(e,r);if((o=e)&&"object"==typeof o&&"number"==typeof o.s&&"number"==typeof o.n&&"number"==typeof o.d)return r&&"decimal"===r.fraction?e.toString():e.s*e.n+"/"+e.d;var o;if(Array.isArray(e))return function e(r,n){{if(Array.isArray(r)){for(var i="[",a=r.length,o=0;o/g,">")}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",n.prototype.isDimensionError=!0,e.exports=n},function(e,t,r){"use strict";var n=r(5).extend,i=r(2);t.name="multiply",t.factory=function(e,t,a,o){var s=r(4),u=a(r(1)),c=a(r(16)),f=a(r(21)),l=a(r(8)),p=a(r(20)),m=a(r(6)),h=e.DenseMatrix,d=e.SparseMatrix,g=o("multiply",n({"Array, Array":function(t,r){y(i.size(t),i.size(r));var n=g(u(t),u(r));return e.isMatrix(n)?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return y(r,n),1===r.length?1===n.length?v(e,t,r[0]):x(e,t):1===n.length?b(e,t):N(e,t)},"Matrix, Array":function(e,t){return g(e,u(t))},"Array, Matrix":function(e,t){return g(u(e,t.storage()),t)},"SparseMatrix, any":function(e,t){return p(e,t,f,!1)},"DenseMatrix, any":function(e,t){return m(e,t,f,!1)},"any, SparseMatrix":function(e,t){return p(t,e,f,!0)},"any, DenseMatrix":function(e,t){return m(t,e,f,!0)},"Array, any":function(e,t){return m(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,f,!0).valueOf()},"any, any":f,"any, any, ...any":function(e,t,r){for(var n=g(e,t),i=0;iS)for(var T=0,C=0;Cu)for(f=u-1,o=c.length;f0?1:-1:n(p,m);if("Array"===p||"Matrix"===p||"Array"===m||"Matrix"===m)return 0!==(i=function t(r,n){return e.isSparseMatrix(r)&&e.isSparseMatrix(n)?f(r.toJSON().values,n.toJSON().values):e.isSparseMatrix(r)?t(r.toArray(),n):e.isSparseMatrix(n)?t(r,n.toArray()):e.isDenseMatrix(r)?t(r.toJSON().data,n):e.isDenseMatrix(n)?t(r,n.toJSON().data):Array.isArray(r)?Array.isArray(n)?f(r,n):t(r,[n]):t([r],n)}(t,r))?i:n(p,m);if(p!==m)return n(p,m);if("Complex"===p)return l=r,(a=t).re>l.re?1:a.rel.im?1:a.imt.length?1:e.lengtht},"number, number":function(e,r){return e>r&&!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gt(r)&&!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,h)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return p(e,t,h,!1)},"any, SparseMatrix":function(e,t){return f(t,e,h,!0)},"any, DenseMatrix":function(e,t){return p(t,e,h,!0)},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+m.operators.larger+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";var n=r(0);t.name="unaryMinus",t.factory=function(e,t,i,a){var o=r(4),s=a("unaryMinus",{number:function(e){return-e},Complex:function(e){return e.neg()},BigNumber:function(e){return e.neg()},Fraction:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=s(e.value),t},"Array | Matrix":function(e){return n(e,s,!0)}});return s.toTex={1:o.operators.unaryMinus+"\\left(${args[0]}\\right)"},s}},function(e,t,r){t.factory=function(e,t,n,i){var a=n(r(47));return function(e,t,r){var n;return-1!==String(e).indexOf("Unexpected type")?(n=arguments.length>2?" (type: "+a(r)+", value: "+JSON.stringify(r)+")":" (type: "+e.data.actual+")",new TypeError("Cannot calculate "+t+", unexpected type of argument"+n)):-1!==String(e).indexOf("complex numbers")?(n=arguments.length>2?" (type: "+a(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+t+", no ordering relation is defined for complex numbers"+n)):e}}},function(e,t,r){"use strict";e.exports=function(e,t,r){if(null==r)return e.eq(t);if(e.eq(t))return!0;if(e.isNaN()||t.isNaN())return!1;if(e.isFinite()&&t.isFinite()){var n=e.minus(t).abs();if(n.isZero())return!0;var i=e.constructor.max(e.abs(),t.abs());return n.lte(i.times(r))}return!1}},function(e,t,r){"use strict";t.name="algorithm10",t.factory=function(e,t,r,n){var i=e.DenseMatrix;return function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],m=c[1],h=r;"string"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var d=[],g=new i({data:d,size:[p,m],datatype:l}),y=[],v=[],x=0;x=0||t.predictable?r.pow(n):new e.Complex(r.toNumber(),0).pow(n.toNumber(),0)},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return h(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":d,"Array, BigNumber":function(e,t){return d(e,t.toNumber())},"Matrix, number":g,"Matrix, BigNumber":function(e,t){return g(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});function h(r,i){if(t.predictable&&!n(i)&&r<0)try{var a=l(i),o=p(a);if((i===o||Math.abs((i-o)/i)<1e-14)&&a.d%2==1)return(a.n%2==0?1:-1)*Math.pow(-r,i)}catch(e){}return r*r<1&&i===1/0||r*r>1&&i===-1/0?0:t.predictable&&(r<-1&&i===1/0||r>-1&&r<0&&i===-1/0)?NaN:n(i)||r>=0||t.predictable?Math.pow(r,i):new e.Complex(r,0).pow(i,0)}function d(e,t){if(!n(t)||t<0)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=i(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var a=u(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(a=c(o,a)),t>>=1,o=c(o,o);return a}function g(e,t){return f(d(e.valueOf(),t))}return m.toTex={2:"\\left(${args[0]}\\right)"+s.operators.pow+"{${args[1]}}"},m}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(2).resize;t.name="zeros",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("zeros",{"":function(){return"Array"===t.matrix?c([]):c([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?c(e,e.pop()):"Array"===t.matrix?c(e):c(e,"default")},Array:c,Matrix:function(e){var t=e.storage();return c(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return c(e.valueOf(),t)}});return u.toTex=void 0,u;function c(t,r){var a,o=(a=!1,t.forEach(function(t,r,n){e.isBigNumber(t)&&(a=!0,n[r]=t.toNumber())}),a?new e.BigNumber(0):0);if(t.forEach(function(e){if("number"!=typeof e||!n(e)||e<0)throw new Error("Parameters in function zeros must be positive integers")}),r){var u=s(r);return t.length>0?u.resize(t,o):u}var c=[];return t.length>0?i(c,t,o):c}}},function(e,t,r){"use strict";var n=r(44),i=r(0);t.name="parse",t.path="expression",t.factory=function(e,t,a,o){var s=a(r(99)),u=a(r(100)),c=a(r(103)),f=a(r(104)),l=a(r(105)),p=a(r(106)),m=a(r(56)),h=a(r(107)),d=a(r(76)),g=a(r(108)),y=a(r(57)),v=a(r(64)),x=a(r(65)),w=a(r(109)),b=a(r(48));function N(t,r){if(1!==arguments.length&&2!==arguments.length)throw new n("parse",arguments.length,1,2);if(_=r&&r.nodes?r.nodes:{},"string"==typeof t)return T=t,Z();if(Array.isArray(t)||t instanceof e.Matrix)return i(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return T=e,Z()});throw new TypeError("String or matrix expected")}var M={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},E={",":!0,"(":!0,")":!0,"[":!0,"]":!0,"{":!0,"}":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},A={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},O={true:!0,false:!1,null:null,undefined:void 0},S=["NaN","Infinity"],_={},T="",C="",z=0,B="",I="",P=M.NULL,R=0,U=null,D=[];function k(){z++,B=T.charAt(z)}function q(){return T.charAt(z-1)}function L(){return T.charAt(z+1)}function F(){D.push({token_type:P,token:I,comment:C,index:z,c:B})}function j(){var e=D.pop();P=e.token_type,I=e.token,C=e.comment,z=e.index,B=e.c}function H(){for(P=M.NULL,I="",C="";N.isWhitespace(B,R);)k();if("#"===B)for(;"\n"!==B&&""!==B;)C+=B,k();if(""!==B){if("\n"===B&&!R)return P=M.DELIMITER,I=B,void k();var e=B+L(),t=e+T.charAt(z+2);if(3===t.length&&E[t])return P=M.DELIMITER,I=t,k(),k(),void k();if(2===e.length&&E[e])return P=M.DELIMITER,I=e,k(),void k();if(E[B])return P=M.DELIMITER,I=B,void k();if(N.isDigitDot(B)){if(P=M.NUMBER,"."===B)I+=B,k(),N.isDigit(B)||(P=M.DELIMITER);else{for(;N.isDigit(B);)I+=B,k();N.isDecimalMark(B,L())&&(I+=B,k())}for(;N.isDigit(B);)I+=B,k();if(e=L(),"E"===B||"e"===B)if(N.isDigit(e)||"-"===e||"+"===e){if(I+=B,k(),"+"!==B&&"-"!==B||(I+=B,k()),!N.isDigit(B))throw me('Digit expected, got "'+B+'"');for(;N.isDigit(B);)I+=B,k();if(N.isDecimalMark(B,L()))throw me('Digit expected, got "'+B+'"')}else if("."===e)throw k(),me('Digit expected, got "'+B+'"')}else{if(!N.isAlpha(B,q(),L())){for(P=M.UNKNOWN;""!==B;)I+=B,k();throw me('Syntax error in part "'+I+'"')}for(;N.isAlpha(B,q(),L())||N.isDigit(B);)I+=B,k();P=A.hasOwnProperty(I)?M.DELIMITER:M.SYMBOL}}else P=M.DELIMITER}function $(){for(;H(),"\n"===I;);}function G(){R++}function V(){R--}function Z(){z=0,B=T.charAt(0),R=0,U=null,H();var e=function(){var e,t,r=[];for(""!==I&&"\n"!==I&&";"!==I&&((e=W()).comment=C);"\n"===I||";"===I;)0===r.length&&e&&(t=";"!==I,r.push({node:e,visible:t})),H(),"\n"!==I&&";"!==I&&""!==I&&((e=W()).comment=C,t=";"!==I,r.push({node:e,visible:t}));return r.length>0?new l(r):(e||((e=new m(void 0)).comment=C),e)}();if(""!==I)throw P===M.DELIMITER?he("Unexpected operator "+I):me('Unexpected part "'+I+'"');return e}function W(){var t,r,n,i,a=function(){for(var e=function(){for(var e=Y();"or"===I;)$(),e=new y("or","or",[e,Y()]);return e}();"?"===I;){var t=U;U=R,$();var r=e,n=W();if(":"!==I)throw me("False part of conditional expression expected");U=null,$();var i=W();e=new p(r,n,i),U=t}return e}();if("="===I){if(e.isSymbolNode(a))return t=a.name,$(),n=W(),new f(new b(t),n);if(e.isAccessorNode(a))return $(),n=W(),new f(a.object,a.index,n);if(e.isFunctionNode(a)&&e.isSymbolNode(a.fn)&&(i=!0,r=[],t=a.name,a.args.forEach(function(t,n){e.isSymbolNode(t)?r[n]=t.name:i=!1}),i))return $(),n=W(),new h(t,r,n);throw me("Invalid left hand side of assignment operator =")}return a}function Y(){for(var e=X();"xor"===I;)$(),e=new y("xor","xor",[e,X()]);return e}function X(){for(var e=J();"and"===I;)$(),e=new y("and","and",[e,J()]);return e}function J(){for(var e=Q();"|"===I;)$(),e=new y("|","bitOr",[e,Q()]);return e}function Q(){for(var e=K();"^|"===I;)$(),e=new y("^|","bitXor",[e,K()]);return e}function K(){for(var e=ee();"&"===I;)$(),e=new y("&","bitAnd",[e,ee()]);return e}function ee(){var e,t,r,n,i;for(e=te(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,te()],e=new y(r,n,i);return e}function te(){var e,t,r,n,i;for(e=re(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,re()],e=new y(r,n,i);return e}function re(){var e,t,r,n,i;for(e=ne(),t={to:"to",in:"to"};t.hasOwnProperty(I);)n=t[r=I],$(),"in"===r&&""===I?e=new y("*","multiply",[e,new b("in")],!0):(i=[e,ne()],e=new y(r,n,i));return e}function ne(){var e,t=[];if(e=":"===I?new m(1):ie(),":"===I&&U!==R){for(t.push(e);":"===I&&t.length<3;)$(),")"===I||"]"===I||","===I||""===I?t.push(new b("end")):t.push(ie());e=3===t.length?new w(t[0],t[2],t[1]):new w(t[0],t[1])}return e}function ie(){var e,t,r,n,i;for(e=ae(),t={"+":"add","-":"subtract"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,ae()],e=new y(r,n,i);return e}function ae(){var e,t,r,n,i;for(t=e=oe(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};r.hasOwnProperty(I);)i=r[n=I],$(),t=oe(),e=new y(n,i,[e,t]);return e}function oe(){var t,r;for(r=t=se();P===M.SYMBOL||"in"===I&&e.isConstantNode(t)||!(P!==M.NUMBER||e.isConstantNode(r)||e.isOperatorNode(r)&&"!"!==r.op)||"("===I;)r=se(),t=new y("*","multiply",[t,r],!0);return t}function se(){var t,r;for(r=t=ue();"/"===I&&e.isConstantNode(r);){if(F(),$(),P!==M.NUMBER){j();break}if(F(),$(),P!==M.SYMBOL&&"("!==I){j(),j();break}j(),D.pop(),r=ue(),t=new y("/","divide",[t,r])}return t}function ue(){var e,r,n,i,a,o,u,f={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return f.hasOwnProperty(I)?(n=f[I],e=I,$(),r=[ue()],new y(e,n,r)):(i=function(){var e,r,n,i;for(e=function(){var e,r,n=[];if(P===M.SYMBOL&&_.hasOwnProperty(I)){var i=_[I];if(H(),"("===I){if(n=[],G(),H(),")"!==I)for(n.push(W());","===I;)H(),n.push(W());if(")"!==I)throw me("Parenthesis ) expected");V(),H()}return new i(n)}return P===M.SYMBOL||P===M.DELIMITER&&I in A?(e=I,H(),ce(O.hasOwnProperty(e)?new m(O[e]):-1!==S.indexOf(e)?new m(s(e)):new b(e))):'"'===I?(r=fe(),ce(new m(r))):function(){var e,r,n,i;if("["===I){if(G(),H(),"]"!==I){var a=le();if(";"===I){for(n=1,r=[a];";"===I;)H(),r[n]=le(),n++;if("]"!==I)throw me("End of matrix ] expected");V(),H(),i=r[0].items.length;for(var o=1;o0},N.isDecimalMark=function(e,t){return"."===e&&"/"!==t&&"*"!==t&&"^"!==t},N.isDigitDot=function(e){return e>="0"&&e<="9"||"."===e},N.isDigit=function(e){return e>="0"&&e<="9"},N}},function(e,t,r){var n=r(53);t.transform=function(e){return e&&e.isIndexError?new n(e.index+1,e.min+1,void 0!==e.max?e.max+1:void 0):e}},function(e,t,r){"use strict";var n=r(61);e.exports=function e(t,r){n(t)&&(t=t.valueOf());for(var i=0,a=t.length;i");var h=r.max().map(function(e){return e+1});v(t,h,a);var d=c.length;!function e(t,r,n,i,a){var o=a===i-1,s=r.dimension(a);o?s.forEach(function(e,r){m(e),t[e]=n[r[0]]}):s.forEach(function(o,s){m(o),e(t[o],r,n[s[0]],i,a+1)})}(t._data,r,n,d,0)}return t}(this,t,r,n);default:throw new SyntaxError("Wrong number of arguments")}},g.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);for(var t=0;tn[a]&&(n[a]=t[a],i=!0);i&&y(e,n,r)}return g.prototype.reshape=function(e,t){var r=t?this.clone():this;return r._data=o.reshape(r._data,e),r._size=e.slice(0),r},g.prototype.clone=function(){return new g({data:s.clone(this._data),size:s.clone(this._size),datatype:this._datatype})},g.prototype.size=function(){return this._size.slice(0)},g.prototype.map=function(e){var t=this,r=function(n,i){return c(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new g({data:r(this._data,[]),size:s.clone(this._size),datatype:this._datatype})},g.prototype.forEach=function(e){var t=this,r=function(n,i){c(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},g.prototype.toArray=function(){return s.clone(this._data)},g.prototype.valueOf=function(){return this._data},g.prototype.format=function(e){return a.format(this._data,e)},g.prototype.toString=function(){return a.format(this._data)},g.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!f(t)||!l(t))throw new TypeError("The parameter k must be an integer number")}else t=0;for(var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=0;u0?n:0,m=n<0?-n:0,d=t[0],y=t[1],v=Math.min(d-m,y-u);if(c(r)){if(r.length!==v)throw new Error("Invalid value array length");s=function(e){return r[e]}}else if(e.isMatrix(r)){var x=r.size();if(1!==x.length||x[0]!==v)throw new Error("Invalid matrix length");s=function(e){return r.get([e])}}else s=function(){return r};i||(i=e.isBigNumber(s(0))?new e.BigNumber(0):0);var w=[];if(t.length>0){w=o.resize(w,t,i);for(var b=0;b'+t+"":"i"==t?''+t+"":"Infinity"==t?''+t+"":"NaN"==t?''+t+"":"null"==t?''+t+"":"undefined"==t?''+t+"":''+t+""},p.prototype._toTex=function(e){var t=!1;void 0===c[this.name]&&l(this.name)&&(t=!0);var r=n.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},p}},function(e,t,r){"use strict";var n=r(61);e.exports=function(e){return Array.isArray(e)||n(e)}},function(e,t,r){"use strict";var n=r(0);t.name="sqrt",t.factory=function(e,t,r,i){var a=i("sqrt",{number:o,Complex:function(e){return e.sqrt()},BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():o(e.toNumber())},"Array | Matrix":function(e){return n(e,a,!0)},Unit:function(e){return e.pow(.5)}});function o(r){return r>=0||t.predictable?Math.sqrt(r):new e.Complex(r,0).sqrt()}return a.toTex={1:"\\sqrt{${args[0]}}"},a}},function(e,t,r){"use strict";var n=r(0),i=r(3);t.name="isInteger",t.factory=function(e,t,r,a){var o=a("isInteger",{number:i.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return n(e,o)}});return o}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="compare",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(62)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(r,n){return r.eq(n)||i(r,n,t.epsilon)?new e.BigNumber(0):new e.BigNumber(r.cmp(n))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,m)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,m,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,m,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,m)},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,m,!1)},"DenseMatrix, any":function(e,t){return p(e,t,m,!1)},"any, SparseMatrix":function(e,t){return f(t,e,m,!0)},"any, DenseMatrix":function(e,t){return p(t,e,m,!0)},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex=void 0,m}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="IndexError",n.prototype.isIndexError=!0,e.exports=n},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNumeric",t.factory=function(e,t,r,i){var a=i("isNumeric",{"number | BigNumber | Fraction | boolean":function(){return!0},"Complex | Unit | string":function(){return!1},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{associativity:"left",associativeWith:[]}},{"OperatorNode:and":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{associativity:"left",associativeWith:[]},"OperatorNode:unequal":{associativity:"left",associativeWith:[]},"OperatorNode:smaller":{associativity:"left",associativeWith:[]},"OperatorNode:larger":{associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{associativity:"left",associativeWith:[]}},{"OperatorNode:to":{associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{associativity:"left",associativeWith:[]},"OperatorNode:mod":{associativity:"left",associativeWith:[]}},{"OperatorNode:unaryPlus":{associativity:"right"},"OperatorNode:unaryMinus":{associativity:"right"},"OperatorNode:bitNot":{associativity:"right"},"OperatorNode:not":{associativity:"right"}},{"OperatorNode:pow":{associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{associativity:"left"}},{"OperatorNode:transpose":{associativity:"left"}}];function i(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var i=r.getIdentifier(),a=0;a'+t+"";case"string":return''+t+"";case"boolean":return''+t+"";case"null":return''+t+"";case"undefined":return''+t+"";default:return''+t+""}},c.prototype._toTex=function(e){var t=this._toString(e);switch(u(this.value)){case"string":return"\\mathtt{"+i(t)+"}";case"number":case"BigNumber":var r=t.toLowerCase().indexOf("e");return-1!==r?t.substring(0,r)+"\\cdot10^{"+t.substring(r+1)+"}":t;case"Fraction":return this.value.toLatex();default:return t}},c}},function(e,t,r){"use strict";var n=r(4),i=r(2).map,a=r(9).escape,o=r(13).isSafeMethod,s=r(13).getSafeProperty,u=r(55);t.name="OperatorNode",t.path="expression.node",t.factory=function(e,t,c,f){var l=c(r(14));function p(t,r,n,i){if(!(this instanceof p))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('string expected for parameter "op"');if("string"!=typeof r)throw new TypeError('string expected for parameter "fn"');if(!Array.isArray(n)||!n.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.implicit=!0===i,this.op=t,this.fn=r,this.args=n||[]}function m(e,t,r,n,i){var a=u.getPrecedence(e,t),o=u.getAssociativity(e,t);if("all"===t||n.length>2&&"OperatorNode:add"!==e.getIdentifier()&&"OperatorNode:multiply"!==e.getIdentifier())return n.map(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var s=void 0;switch(n.length){case 0:s=[];break;case 1:var c=u.getPrecedence(n[0],t);if(i&&null!==c){var f;if("keep"===t?(f=n[0].getIdentifier(),d=e.getIdentifier()):(f=n[0].getContent().getIdentifier(),d=e.getContent().getIdentifier()),!1===u.properties[a][d].latexLeftParens){s=[!1];break}if(!1===u.properties[c][f].latexParens){s=[!1];break}}if(null===c){s=[!1];break}if(c<=a){s=[!0];break}s=[!1];break;case 2:var l,p,m=u.getPrecedence(n[0],t),h=u.isAssociativeWith(e,n[0],t);l=null!==m&&(m===a&&"right"===o&&!h||m=2&&"OperatorNode:multiply"===e.getIdentifier()&&e.implicit&&"auto"===t&&"hide"===r&&(s=n.map(function(e,t){var r="ParenthesisNode"===e.getIdentifier();return!(!s[t]&&!r)})),s}return p.prototype=new l,p.prototype.type="OperatorNode",p.prototype.isOperatorNode=!0,p.prototype._compile=function(e,t){if("string"!=typeof this.fn||!o(e,this.fn))throw e[this.fn]?new Error('No access to function "'+this.fn+'"'):new Error("Function "+this.fn+' missing in provided namespace "math"');var r=s(e,this.fn),n=i(this.args,function(r){return r._compile(e,t)});if(1===n.length){var a=n[0];return function(e,t,n){return r(a(e,t,n))}}if(2===n.length){a=n[0];var u=n[1];return function(e,t,n){return r(a(e,t,n),u(e,t,n))}}return function(e,t,a){return r.apply(null,i(n,function(r){return r(e,t,a)}))}},p.prototype.forEach=function(e){for(var t=0;t2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var f=n.map(function(t,r){return t=t.toString(e),i[r]&&(t="("+t+")"),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?f.join(" "):f.join(" "+this.op+" ")}return this.fn+"("+this.args.join(", ")+")"},p.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",n=this.args,i=m(this,t,r,n,!1);if(1===n.length){var o=u.getAssociativity(this,t),s=n[0].toHTML(e);return i[0]&&(s='('+s+')'),"right"===o?''+a(this.op)+""+s:''+a(this.op)+""+s}if(2==n.length){var c=n[0].toHTML(e),f=n[1].toHTML(e);return i[0]&&(c='('+c+')'),i[1]&&(f='('+f+')'),this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"==r?c+''+f:c+''+a(this.op)+""+f}if(n.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var l=n.map(function(t,r){return t=t.toHTML(e),i[r]&&(t='('+t+')'),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?l.join(''):l.join(''+a(this.op)+"")}return''+a(this.fn)+'('+l.join(',')+')'},p.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",i=this.args,a=m(this,t,r,i,!0),o=n.operators[this.fn];if(o=void 0===o?this.op:o,1===i.length){var s=u.getAssociativity(this,t),c=i[0].toTex(e);return a[0]&&(c="\\left("+c+"\\right)"),"right"===s?o+c:c+o}if(2===i.length){var f=i[0],l=f.toTex(e);a[0]&&(l="\\left("+l+"\\right)");var p,h=i[1].toTex(e);switch(a[1]&&(h="\\left("+h+"\\right)"),p="keep"===t?f.getIdentifier():f.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return o+"{"+l+"}{"+h+"}";case"OperatorNode:pow":switch(l="{"+l+"}",h="{"+h+"}",p){case"ConditionalNode":case"OperatorNode:divide":l="\\left("+l+"\\right)"}case"OperatorNode:multiply":if(this.implicit&&"hide"===r)return l+"~"+h}return l+o+h}if(i.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var d=i.map(function(t,r){return t=t.toTex(e),a[r]&&(t="\\left("+t+"\\right)"),t});return"OperatorNode:multiply"===this.getIdentifier()&&this.implicit?d.join("~"):d.join(o)}return"\\mathrm{"+this.fn+"}\\left("+i.map(function(t){return t.toTex(e)}).join(",")+"\\right)"},p.prototype.getIdentifier=function(){return this.type+":"+this.fn},p}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isZero",t.factory=function(e,t,r,i){var a=i("isZero",{number:function(e){return 0===e},BigNumber:function(e){return e.isZero()},Complex:function(e){return 0===e.re&&0===e.im},Fraction:function(e){return 1===e.d&&0===e.n},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isPositive",t.factory=function(e,t,r,i){var a=i("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNegative",t.factory=function(e,t,r,i){var a=i("isNegative",{number:function(e){return e<0},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";e.exports=function(e){return e&&e.constructor.prototype.isMatrix||!1}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm05",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));var M,E,A,O,S=i&&p?[]:void 0,_=[],T=[],C=new s({values:S,index:_,ptr:T,size:[v,x],datatype:y}),z=S?[]:void 0,B=S?[]:void 0,I=[],P=[];for(E=0;E('+this.content.toHTML(e)+')':this.content.toHTML(e)},o.prototype._toTex=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?"\\left("+this.content.toTex(e)+"\\right)":this.content.toTex(e)},o}},function(e,t,r){"use strict";var n=r(4),i=r(9).escape,a=r(5).hasOwnProperty,o=r(2).map,s=r(13).validateSafeMethod,u=r(13).getSafeProperty;t.name="FunctionNode",t.path="expression.node",t.math=!0,t.factory=function(e,t,c,f,l){var p=c(r(14)),m=c(r(48));function h(t,r){if(!(this instanceof h))throw new SyntaxError("Constructor must be called with the new operator");if("string"==typeof t&&(t=new m(t)),!e.isNode(t))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(r)||!r.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=t,this.args=r||[],Object.defineProperty(this,"name",{get:function(){return this.fn.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}});var n=function(){throw new Error("Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead")};Object.defineProperty(this,"object",{get:n,set:n})}h.prototype=new p,h.prototype.type="FunctionNode",h.prototype.isFunctionNode=!0,h.prototype._compile=function(t,r){if(!(this instanceof h))throw new TypeError("No valid FunctionNode");var n=o(this.args,function(e){return e._compile(t,r)});if(e.isSymbolNode(this.fn)){var i=this.fn.name,a=i in t?u(t,i):void 0;if("function"==typeof a&&1==a.rawArgs){var c=this.args;return function(e,r,n){return(i in e?u(e,i):a)(c,t,e)}}if(1===n.length){var f=n[0];return function(e,t,r){return(i in e?u(e,i):a)(f(e,t,r))}}if(2===n.length){f=n[0];var l=n[1];return function(e,t,r){return(i in e?u(e,i):a)(f(e,t,r),l(e,t,r))}}return function(e,t,r){return(i in e?u(e,i):a).apply(null,o(n,function(n){return n(e,t,r)}))}}if(e.isAccessorNode(this.fn)&&e.isIndexNode(this.fn.index)&&this.fn.index.isObjectProperty()){var p=this.fn.object._compile(t,r),m=this.fn.index.getObjectProperty();return c=this.args,function(e,r,i){var a=p(e,r,i);return s(a,m),a[m]&&a[m].rawArgs?a[m](c,t,e):a[m].apply(a,o(n,function(t){return t(e,r,i)}))}}var d=this.fn._compile(t,r);return function(e,r,i){var a=d(e,r,i);return a&&a.rawArgs?a(c,t,e):a.apply(a,o(n,function(t){return t(e,r,i)}))}},h.prototype.forEach=function(e){for(var t=0;t'+i(this.fn)+'('+t.join(',')+')'};var y=h.prototype.toTex;return h.prototype.toTex=function(e){var t;return e&&"object"==typeof e.handler&&a(e.handler,this.name)&&(t=e.handler[this.name](this,e)),void 0!==t?t:y.call(this,e)},h.prototype._toTex=function(e){var t,r,i=this.args.map(function(t){return t.toTex(e)});switch(!l[this.name]||"function"!=typeof l[this.name].toTex&&"object"!=typeof l[this.name].toTex&&"string"!=typeof l[this.name].toTex||(t=l[this.name].toTex),typeof t){case"function":r=t(this,e);break;case"string":r=g(t,this,e);break;case"object":switch(typeof t[i.length]){case"function":r=t[i.length](this,e);break;case"string":r=g(t[i.length],this,e)}}return void 0!==r?r:g(n.defaultTemplate,this,e)},h.prototype.getIdentifier=function(){return this.type+":"+this.name},h}},function(e,t,r){"use strict";var n=r(5).clone,i=r(3).isInteger,a=r(2),o=r(53),s=r(10);function u(e,t,r,n){if(n0&&p>c)throw new o(p,c+1)}else{var g=n(d).valueOf(),y=a.size(g);if(h[r]=g,c=p,p=y.length-1,r>0&&p!=c)throw new s(c+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var v=h.shift();h.length;)v=u(v,h.shift(),p,0);return m?l(v):v},"...string":function(e){return e.join("")}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n=r(49);e.exports=function(e){for(var t=0;te)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),i=1,a=1;a<=e-r;a++)i=i*(r+a)/a;return i},"BigNumber, BigNumber":function(t,r){var n,a,o,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(n=t.minus(r),r.lt(n)&&(n=r),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);return a}});return o.toTex={2:"\\binom{${args[0]}}{${args[1]}}"},o}},function(e,t){e.exports=function(e){return e&&e.constructor.prototype.isBigNumber||!1}},function(e,t,r){"use strict";var n=r(24).string.isString;t.name="Matrix",t.path="type",t.factory=function(e,t,r,i){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator")}return a.prototype.type="Matrix",a.prototype.isMatrix=!0,a.storage=function(e){if(!n(e))throw new TypeError("format must be a string value");var t=a._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},a._storage={},a.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},a.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},a.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},a.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},a.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},a.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},a.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},a.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},a.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},a.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},a.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},a.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},a.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},a.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},a.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},a.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},a}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm04",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));var M,E,A,O,S,_=i&&p?[]:void 0,T=[],C=[],z=new s({values:_,index:T,ptr:C,size:[v,x],datatype:y}),B=i&&p?[]:void 0,I=i&&p?[]:void 0,P=[],R=[];for(E=0;E.'+i(this.getObjectProperty())+"":'['+t.join(',')+']'},f.prototype._toTex=function(e){var t=this.dimensions.map(function(t){return t.toTex(e)});return this.dotNotation?"."+this.getObjectProperty():"_{"+t.join(",")+"}"},f}},function(e,t){t.factory=function(e,t,r,n){return function(t,r,n){var i=t.filter(function(t){return e.isSymbolNode(t)&&!(t.name in r)&&!(t.name in n)})[0];if(!i)throw new Error('No undefined variable found in inline expression "'+t+'"');var a=i.name,o=Object.create(n),s=t.compile();return function(e){return o[a]=e,s.eval(o)}}}},function(e,t,r){"use strict";var n=r(2).size,i=r(61),a=r(53);function o(e,t,r){var n,i,a,s;if(t<=0){if(Array.isArray(e[0])){for(s=function(e){var t,r,n=e.length,i=e[0].length,a=[];for(r=0;r=s.length)throw new a(t,s.length);return i(e)?e.create(o(e.valueOf(),t,r)):o(e,t,r)}},function(e,t,r){"use strict";t.math=!0,t.name="simplify",t.factory=function(e,t,n,i,a){var o=n(r(40)),s=n(r(46)),u=n(r(56)),c=n(r(65)),f=n(r(57)),l=n(r(64)),p=n(r(48)),m=(n(r(14)),n(r(119))),h=n(r(121)),d=n(r(408)),g=n(r(120)),y=g.isCommutative,v=g.isAssociative,x=g.flatten,w=g.unflattenr,b=g.unflattenl,N=g.createMakeNodeFunction,M=i("simplify",{string:function(e){return M(o(e),M.rules,{})},"string, Object":function(e,t){return M(o(e),M.rules,t)},"string, Array":function(e,t){return M(o(e),t,{})},"string, Array, Object":function(e,t,r){return M(o(e),t,r)},"Node, Object":function(e,t){return M(e,M.rules,t)},Node:function(e){return M(e,M.rules,{})},"Node, Array":function(e,t){return M(e,t,{})},"Node, Array, Object":function(e,t,r){t=function(e){for(var t=[],r=0;r");if(2!==s.length)throw SyntaxError("Could not parse rule: "+i);i={l:s[0],r:s[1]};case"object":if(n={l:E(o(i.l)),r:E(o(i.r))},i.context&&(n.evaluate=i.context),i.evaluate&&(n.evaluate=o(i.evaluate)),v(n.l)){var u=N(n.l),c=new p("_p"+O++);n.expanded={},n.expanded.l=u([n.l.clone(),c]),x(n.expanded.l),w(n.expanded.l),n.expanded.r=u([n.r,c])}break;case"function":n=i;break;default:throw TypeError("Unsupported type of rule: "+a)}t.push(n)}return t}(t);for(var n,i={},a=(n=E(n=d(e,r))).toString({parenthesis:"all"});!i[a];){i[a]=!0,O=0;for(var s=0;s=2&&2===t.args.length){var o=function(e,t){var r,n,i=[],a=N(e);if(y(e,t))for(var o=0;o2)throw Error("Unexpected non-binary associative function: "+t.toString());return[]}for(var h=[],d=0;d0)if(++o>u)for(o-=u;o--;s+="0");else o1&&(null==c[l+1]&&(c[l+1]=0),c[l+1]+=c[l]>>1,c[l]&=1)}return c.reverse()}e.exports=function(e,t,r){var a,o,s,u,c,f=e.constructor,l=+(e.s<0),p=+(t.s<0);if(l){a=i(n(e));for(var m=0;m0;)r(s[--h],u[--d])==g&&(y=y.plus(v)),v=v.times(x);for(;d>0;)r(c,u[--d])==g&&(y=y.plus(v)),v=v.times(x);return f.config({precision:w}),0==g&&(y.s=-y.s),y}},function(e,t){e.exports=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;return t.config({precision:1e9}),(e=e.plus(new t(1))).s=-e.s||null,t.config({precision:r}),e}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm08",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");if(!i||!p)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));for(var M,E,A,O,S=[],_=[],T=[],C=new s({values:S,index:_,ptr:T,size:[v,x],datatype:y}),z=[],B=[],I=0;I1)throw new Error("Only one dimensional matrices supported");return c(t.valueOf(),r,i)}if(Array.isArray(t))return c(t,r,i)}function c(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;n=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,t<=a?i=a:n=a+1}return e[t]}}},function(e,t,r){"use strict";var n=r(44),i=r(49),a=r(3).isNumber;t.name="distribution",t.factory=function(e,t,o,s,u){var c=o(r(1)),f=r(2),l=o(r(492));function p(t){if(!m.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r,o,u,p,h,d,g=Array.prototype.slice.call(arguments,1),y=m[t].apply(this,g);return r=y,o={random:function(t,r,o){var s,u,f;if(arguments.length>3)throw new n("random",arguments.length,0,3);if(1===arguments.length?i(t)?s=t:f=t:2===arguments.length?i(t)?(s=t,f=r):(u=t,f=r):(s=t,u=r,f=o),void 0!==u&&!a(u)||void 0!==f&&!a(f))throw new TypeError("Invalid argument in function random");if(void 0===f&&(f=1),void 0===u&&(u=0),void 0!==s){var l=d(s.valueOf(),u,f,p);return e.isMatrix(s)?c(l):l}return p(u,f)},randomInt:s({"number | Array":function(t){if(i(t)){var r=t,n=1,a=d(r.valueOf(),0,n,h);return e.isMatrix(r)?c(a):a}return h(0,n=t)},"number | Array, number":function(t,r){if(i(t)){var n=t,a=r,o=0,s=d(n.valueOf(),o,a,h);return e.isMatrix(n)?c(s):s}return h(o=t,a=r)},"Array, number, number":function(e,t,r){var n=d(e.valueOf(),t,r,h);return e&&!0===e.isMatrix?c(n):n}}),pickRandom:s({Array:function(e){return u(e)},"Array, number | Array":function(e,t){var r,n;if(Array.isArray(t))n=t;else{if(!a(t))throw new TypeError("Invalid argument in function pickRandom");r=t}return u(e,r,n)},"Array, number | Array, Array | number":function(e,t,r){var n,i;if(Array.isArray(t)?(i=t,n=r):(i=r,n=t),!Array.isArray(i)||!a(n))throw new TypeError("Invalid argument in function pickRandom");return u(e,n,i)}})},u=function(t,r,n){var i=void 0===r;if(i&&(r=1),e.isMatrix(t))t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(f.size(t).length>1)throw new Error("Only one dimensional vectors supported");if(void 0!==n){if(n.length!=t.length)throw new Error("Weights must have the same length as possibles");for(var o=0,s=0,u=n.length;s=c)return r>1?t:t[0];for(var p,m=[];m.length1)for(var a=0,o=e.shift();a1;)e=l(),t=l(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return p.toTex=void 0,p}},function(e,t,r){var n=r(154);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t,r){var n=r(169),i=r(3).format,a=r(3).isNumber;t.name="Complex",t.path="type",t.factory=function(e,t,r,o,s){return n.prototype.type="Complex",n.prototype.isComplex=!0,n.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},n.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},n.prototype.format=function(e){var t=this.im,r=this.re,n=i(this.re,e),o=i(this.im,e),s=a(e)?e:e?e.precision:null;if(null!==s){var u=Math.pow(10,-s);Math.abs(r/t)t.re?1:e.ret.im?1:e.im0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.prototype.forEach=function(e){var t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;tn;)e(t,[i],this),t+=r,i++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=n.format(this.start,e);return 1!=this.step&&(t+=":"+n.format(this.step,e)),t+=":"+n.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}},function(e,t,r){"use strict";t.name="ResultSet",t.path="type",t.factory=function(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}},function(e,t,r){var n=r(30).memoize;function i(e){return e[0].precision}t.e=n(function(e){return new e(1).exp()},i),t.phi=n(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},i),t.pi=n(function(e){return e.acos(-1)},i),t.tau=n(function(e){return t.pi(e).times(2)},i)},function(e,t,r){"use strict";var n=r(0);t.name="fix",t.factory=function(e,t,r,i){var a=i("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).toFixed,a=r(0),o="Number of decimals in function round must be an integer";t.name="round",t.factory=function(e,t,s,u){var c=s(r(1)),f=s(r(8)),l=s(r(39)),p=s(r(20)),m=s(r(18)),h=s(r(6)),d=u("round",{number:Math.round,"number, number":function(e,t){if(!n(t))throw new TypeError(o);if(t<0||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return parseFloat(i(e,t))},Complex:function(e){return e.round()},"Complex, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Complex, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);var r=t.toNumber();return e.round(r)},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(o);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Fraction, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Array | Matrix":function(e){return a(e,d,!0)},"SparseMatrix, number | BigNumber":function(e,t){return p(e,t,d,!1)},"DenseMatrix, number | BigNumber":function(e,t){return h(e,t,d,!1)},"number | Complex | BigNumber, SparseMatrix":function(e,t){return f(e,0)?l(t.size(),t.storage()):m(t,e,d,!0)},"number | Complex | BigNumber, DenseMatrix":function(e,t){return f(e,0)?l(t.size(),t.storage()):h(t,e,d,!0)},"Array, number | BigNumber":function(e,t){return h(c(e),t,d,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return h(c(t),e,d,!0).valueOf()}});return d.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},d}},function(e,t,r){"use strict";var n=r(9);t.name="format",t.factory=function(e,t,r,i){var a=i("format",{any:n.format,"any, Object | function | number":n.format});return a.toTex=void 0,a}},function(e,t,r){t.name="docs",t.path="expression",t.factory=function(e,t,n,i){var a={};return a.bignumber=r(194),a.boolean=r(195),a.complex=r(196),a.createUnit=r(197),a.fraction=r(198),a.index=r(199),a.matrix=r(200),a.number=r(201),a.sparse=r(202),a.splitUnit=r(203),a.string=r(204),a.unit=r(205),a.e=r(97),a.E=r(97),a.false=r(206),a.i=r(207),a[1/0]=r(208),a.LN2=r(209),a.LN10=r(210),a.LOG2E=r(211),a.LOG10E=r(212),a.NaN=r(213),a.null=r(214),a.pi=r(98),a.PI=r(98),a.phi=r(215),a.SQRT1_2=r(216),a.SQRT2=r(217),a.tau=r(218),a.true=r(219),a.version=r(220),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.derivative=r(221),a.lsolve=r(222),a.lup=r(223),a.lusolve=r(224),a.simplify=r(225),a.rationalize=r(226),a.slu=r(227),a.usolve=r(228),a.qr=r(229),a.abs=r(230),a.add=r(231),a.cbrt=r(232),a.ceil=r(233),a.cube=r(234),a.divide=r(235),a.dotDivide=r(236),a.dotMultiply=r(237),a.dotPow=r(238),a.exp=r(239),a.fix=r(240),a.floor=r(241),a.gcd=r(242),a.hypot=r(243),a.lcm=r(244),a.log=r(245),a.log10=r(246),a.mod=r(247),a.multiply=r(248),a.norm=r(249),a.nthRoot=r(250),a.pow=r(251),a.round=r(252),a.sign=r(253),a.sqrt=r(254),a.square=r(255),a.subtract=r(256),a.unaryMinus=r(257),a.unaryPlus=r(258),a.xgcd=r(259),a.bitAnd=r(260),a.bitNot=r(261),a.bitOr=r(262),a.bitXor=r(263),a.leftShift=r(264),a.rightArithShift=r(265),a.rightLogShift=r(266),a.bellNumbers=r(267),a.catalan=r(268),a.composition=r(269),a.stirlingS2=r(270),a.config=r(271),a.import=r(272),a.typed=r(273),a.arg=r(274),a.conj=r(275),a.re=r(276),a.im=r(277),a.eval=r(278),a.help=r(279),a.distance=r(280),a.intersect=r(281),a.and=r(282),a.not=r(283),a.or=r(284),a.xor=r(285),a.concat=r(286),a.cross=r(287),a.det=r(288),a.diag=r(289),a.dot=r(290),a.eye=r(291),a.filter=r(292),a.flatten=r(293),a.forEach=r(294),a.inv=r(295),a.kron=r(296),a.map=r(297),a.ones=r(298),a.partitionSelect=r(299),a.range=r(300),a.resize=r(301),a.reshape=r(302),a.size=r(303),a.sort=r(304),a.squeeze=r(305),a.subset=r(306),a.trace=r(307),a.transpose=r(308),a.zeros=r(309),a.combinations=r(310),a.factorial=r(311),a.gamma=r(312),a.kldivergence=r(313),a.multinomial=r(314),a.permutations=r(315),a.pickRandom=r(316),a.random=r(317),a.randomInt=r(318),a.compare=r(319),a.compareNatural=r(320),a.deepEqual=r(321),a.equal=r(322),a.larger=r(323),a.largerEq=r(324),a.smaller=r(325),a.smallerEq=r(326),a.unequal=r(327),a.setCartesian=r(328),a.setDifference=r(329),a.setDistinct=r(330),a.setIntersect=r(331),a.setIsSubset=r(332),a.setMultiplicity=r(333),a.setPowerset=r(334),a.setSize=r(335),a.setSymDifference=r(336),a.setUnion=r(337),a.erf=r(338),a.mad=r(339),a.max=r(340),a.mean=r(341),a.median=r(342),a.min=r(343),a.mode=r(344),a.prod=r(345),a.quantileSeq=r(346),a.std=r(347),a.sum=r(348),a.var=r(349),a.acos=r(350),a.acosh=r(351),a.acot=r(352),a.acoth=r(353),a.acsc=r(354),a.acsch=r(355),a.asec=r(356),a.asech=r(357),a.asin=r(358),a.asinh=r(359),a.atan=r(360),a.atanh=r(361),a.atan2=r(362),a.cos=r(363),a.cosh=r(364),a.cot=r(365),a.coth=r(366),a.csc=r(367),a.csch=r(368),a.sec=r(369),a.sech=r(370),a.sin=r(371),a.sinh=r(372),a.tan=r(373),a.tanh=r(374),a.to=r(375),a.clone=r(376),a.format=r(377),a.isNaN=r(378),a.isInteger=r(379),a.isNegative=r(380),a.isNumeric=r(381),a.isPositive=r(382),a.isPrime=r(383),a.isZero=r(384),a.typeof=r(385),a}},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t,r){"use strict";t.factory=function(e,t,r,n){return function(t,r){if("BigNumber"===r)return new e.BigNumber(t);if("Fraction"===r)return new e.Fraction(t);if("number"==typeof t)return t;if("Infinity"===t)return 1/0;if("NaN"===t)return NaN;if(!/^[\-+]?((\d+\.?\d*)|(\d*\.?\d+))([eE][+\-]?\d+)?$/.test(t))throw new Error('Invalid numeric value "'+t+'"');return parseFloat(t.replace(/^(0*)[0-9]/,function(e,t){return e.substring(t.length)}))}}},function(e,t,r){"use strict";var n=r(13).getSafeProperty;t.name="AccessorNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14)),s=(i(r(76)),i(r(102)));function u(t,r){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError('Node expected for parameter "object"');if(!e.isIndexNode(r))throw new TypeError('IndexNode expected for parameter "index"');this.object=t||null,this.index=r,Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function c(t){return!(e.isAccessorNode(t)||e.isArrayNode(t)||e.isConstantNode(t)||e.isFunctionNode(t)||e.isObjectNode(t)||e.isParenthesisNode(t)||e.isSymbolNode(t))}return u.prototype=new o,u.prototype.type="AccessorNode",u.prototype.isAccessorNode=!0,u.prototype._compile=function(e,t){var r=this.object._compile(e,t),i=this.index._compile(e,t);if(this.index.isObjectProperty()){var a=this.index.getObjectProperty();return function(e,t,i){return n(r(e,t,i),a)}}return function(e,t,n){var a=r(e,t,n),o=i(e,t,a);return s(a,o)}},u.prototype.forEach=function(e){e(this.object,"object",this),e(this.index,"index",this)},u.prototype.map=function(e){return new u(this._ifNode(e(this.object,"object",this)),this._ifNode(e(this.index,"index",this)))},u.prototype.clone=function(){return new u(this.object,this.index)},u.prototype._toString=function(e){var t=this.object.toString(e);return c(this.object)&&(t="("+t+")"),t+this.index.toString(e)},u.prototype.toHTML=function(e){var t=this.object.toHTML(e);return c(this.object)&&(t='('+t+')'),t+this.index.toHTML(e)},u.prototype._toTex=function(e){var t=this.object.toTex(e);return c(this.object)&&(t="\\left("+t+"\\right)"),t+this.index.toTex(e)},u}},function(e,t,r){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).getSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22));return function(e,t){try{if(Array.isArray(e))return s(e,t);if(e&&"function"==typeof e.subset)return e.subset(t);if("string"==typeof e)return s(e,t);if("object"==typeof e){if(!t.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty())}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";var n=r(2).map;t.name="ArrayNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14));function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(this.items=t||[],!Array.isArray(this.items)||!this.items.every(e.isNode))throw new TypeError("Array containing Nodes expected");var r=function(){throw new Error("Property `ArrayNode.nodes` is deprecated, use `ArrayNode.items` instead")};Object.defineProperty(this,"nodes",{get:r,set:r})}return s.prototype=new o,s.prototype.type="ArrayNode",s.prototype.isArrayNode=!0,s.prototype._compile=function(e,t){var r=n(this.items,function(r){return r._compile(e,t)});if("Array"!==e.config().matrix){var i=e.matrix;return function(e,t,a){return i(n(r,function(r){return r(e,t,a)}))}}return function(e,t,i){return n(r,function(r){return r(e,t,i)})}},s.prototype.forEach=function(e){for(var t=0;t['+this.items.map(function(t){return t.toHTML(e)}).join(',')+']'},s.prototype._toTex=function(e){var t="\\begin{bmatrix}";return this.items.forEach(function(r){r.items?t+=r.items.map(function(t){return t.toTex(e)}).join("&"):t+=r.toTex(e),t+="\\\\"}),t+="\\end{bmatrix}"},s}},function(e,t,r){"use strict";var n=r(13).getSafeProperty,i=r(13).setSafeProperty;t.name="AssignmentNode",t.path="expression.node",t.factory=function(e,t,a,o){var s=a(r(14)),u=a(r(388)),c=a(r(102)),f=r(55);function l(t,r,n){if(!(this instanceof l))throw new SyntaxError("Constructor must be called with the new operator");if(this.object=t,this.index=n?r:null,this.value=n||r,!e.isSymbolNode(t)&&!e.isAccessorNode(t))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(e.isSymbolNode(t)&&"end"===t.name)throw new Error('Cannot assign to symbol "end"');if(this.index&&!e.isIndexNode(this.index))throw new TypeError('IndexNode expected as "index"');if(!e.isNode(this.value))throw new TypeError('Node expected as "value"');Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function p(e,t){t||(t="keep");var r=f.getPrecedence(e,t),n=f.getPrecedence(e.value,t);return"all"===t||null!==n&&n<=r}return l.prototype=new s,l.prototype.type="AssignmentNode",l.prototype.isAssignmentNode=!0,l.prototype._compile=function(t,r){var a=this.object._compile(t,r),o=this.index?this.index._compile(t,r):null,s=this.value._compile(t,r),f=this.object.name;if(this.index){if(this.index.isObjectProperty()){var l=this.index.getObjectProperty();return function(e,t,r){var n=a(e,t,r),o=s(e,t,r);return i(n,l,o)}}if(e.isSymbolNode(this.object))return function(e,t,r){var n=a(e,t,r),c=s(e,t,r),l=o(e,t,n);return i(e,f,u(n,l,c)),c};var p=this.object.object._compile(t,r);if(this.object.index.isObjectProperty()){var m=this.object.index.getObjectProperty();return function(e,t,r){var a=p(e,t,r),c=n(a,m),f=o(e,t,c),l=s(e,t,r);return i(a,m,u(c,f,l)),l}}var h=this.object.index._compile(t,r);return function(e,t,r){var n=p(e,t,r),i=h(e,t,n),a=c(n,i),f=o(e,t,a),l=s(e,t,r);return u(n,i,u(a,f,l)),l}}if(!e.isSymbolNode(this.object))throw new TypeError("SymbolNode expected as object");return function(e,t,r){return i(e,f,s(e,t,r))}},l.prototype.forEach=function(e){e(this.object,"object",this),this.index&&e(this.index,"index",this),e(this.value,"value",this)},l.prototype.map=function(e){return new l(this._ifNode(e(this.object,"object",this)),this.index?this._ifNode(e(this.index,"index",this)):null,this._ifNode(e(this.value,"value",this)))},l.prototype.clone=function(){return new l(this.object,this.index,this.value)},l.prototype._toString=function(e){var t=this.object.toString(e),r=this.index?this.index.toString(e):"",n=this.value.toString(e);return p(this,e&&e.parenthesis)&&(n="("+n+")"),t+r+" = "+n},l.prototype.toHTML=function(e){var t=this.object.toHTML(e),r=this.index?this.index.toHTML(e):"",n=this.value.toHTML(e);return p(this,e&&e.parenthesis)&&(n='('+n+')'),t+r+'='+n},l.prototype._toTex=function(e){var t=this.object.toTex(e),r=this.index?this.index.toTex(e):"",n=this.value.toTex(e);return p(this,e&&e.parenthesis)&&(n="\\left("+n+"\\right)"),t+r+":="+n},l}},function(e,t,r){"use strict";var n=r(2).forEach,i=r(2).map;t.name="BlockNode",t.path="expression.node",t.factory=function(e,t,a,o){var s=a(r(14)),u=a(r(91));function c(t){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(t))throw new Error("Array expected");this.blocks=t.map(function(t){var r=t&&t.node,n=!t||void 0===t.visible||t.visible;if(!e.isNode(r))throw new TypeError('Property "node" must be a Node');if("boolean"!=typeof n)throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:n}})}return c.prototype=new s,c.prototype.type="BlockNode",c.prototype.isBlockNode=!0,c.prototype._compile=function(e,t){var r=i(this.blocks,function(r){return{eval:r.node._compile(e,t),visible:r.visible}});return function(e,t,i){var a=[];return n(r,function(r){var n=r.eval(e,t,i);r.visible&&a.push(n)}),new u(a)}},c.prototype.forEach=function(e){for(var t=0;t;')}).join('
')},c.prototype._toTex=function(e){return this.blocks.map(function(t){return t.node.toTex(e)+(t.visible?"":";")}).join("\\;\\;\n")},c}},function(e,t,r){"use strict";var n=r(55);t.name="ConditionalNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14)),s=i(r(47));function u(t,r,n){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Parameter condition must be a Node");if(!e.isNode(r))throw new TypeError("Parameter trueExpr must be a Node");if(!e.isNode(n))throw new TypeError("Parameter falseExpr must be a Node");this.condition=t,this.trueExpr=r,this.falseExpr=n}return u.prototype=new o,u.prototype.type="ConditionalNode",u.prototype.isConditionalNode=!0,u.prototype._compile=function(t,r){var n=this.condition._compile(t,r),i=this.trueExpr._compile(t,r),a=this.falseExpr._compile(t,r);return function(t,r,o){return function(t){if("number"==typeof t||"boolean"==typeof t||"string"==typeof t)return!!t;if(t){if(e.isBigNumber(t))return!t.isZero();if(e.isComplex(t))return!(!t.re&&!t.im);if(e.isUnit(t))return!!t.value}if(null==t)return!1;throw new TypeError('Unsupported type of condition "'+s(t)+'"')}(n(t,r,o))?i(t,r,o):a(t,r,o)}},u.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},u.prototype.map=function(e){return new u(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},u.prototype.clone=function(){return new u(this.condition,this.trueExpr,this.falseExpr)},u.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toString(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i="("+i+")");var o=this.trueExpr.toString(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u="("+u+")"),i+" ? "+o+" : "+u},u.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toHTML(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i='('+i+')');var o=this.trueExpr.toHTML(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o='('+o+')');var u=this.falseExpr.toHTML(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u='('+u+')'),i+'?'+o+':'+u},u.prototype._toTex=function(e){return"\\begin{cases} {"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{cases}"},u}},function(e,t,r){"use strict";var n=r(101),i=r(9).escape,a=r(2).forEach,o=r(2).join,s=r(4),u=r(55),c=r(13).setSafeProperty;t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=function(e,t,f,l){var p=f(r(14));function m(t,r,i){if(!(this instanceof m))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(r))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!e.isNode(i))throw new TypeError('Node expected for parameter "expr"');if(t in n)throw new Error('Illegal function name, "'+t+'" is a reserved keyword');this.name=t,this.params=r.map(function(e){return e&&e.name||e}),this.types=r.map(function(e){return e&&e.type||"any"}),this.expr=i}function h(e,t){var r=u.getPrecedence(e,t),n=u.getPrecedence(e.expr,t);return"all"===t||null!==n&&n<=r}return m.prototype=new p,m.prototype.type="FunctionAssignmentNode",m.prototype.isFunctionAssignmentNode=!0,m.prototype._compile=function(e,t){var r=Object.create(t);a(this.params,function(e){r[e]=!0});var n=this.expr._compile(e,r),i=this.name,s=this.params,u=o(this.types,","),f=i+"("+o(this.params,", ")+")";return function(e,t,r){var a={};a[u]=function(){for(var i=Object.create(t),a=0;a'+i(this.params[n])+"");var a=this.expr.toHTML(e);return h(this,t)&&(a='('+a+')'),''+i(this.name)+'('+r.join(',')+')='+a},m.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return h(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(s.toSymbol).join(",")+"\\right):="+r},m}},function(e,t,r){"use strict";var n=r(9).stringify,i=r(9).escape,a=r(13).isSafeProperty,o=r(5).hasOwnProperty;t.name="ObjectNode",t.path="expression.node",t.factory=function(e,t,s,u){var c=s(r(14));function f(t){if(!(this instanceof f))throw new SyntaxError("Constructor must be called with the new operator");if(this.properties=t||{},t&&("object"!=typeof t||!Object.keys(t).every(function(r){return e.isNode(t[r])})))throw new TypeError("Object containing Nodes expected")}return f.prototype=new c,f.prototype.type="ObjectNode",f.prototype.isObjectNode=!0,f.prototype._compile=function(e,t){var r={};for(var i in this.properties)if(o(this.properties,i)){var s=n(i),u=JSON.parse(s);if(!a(this.properties,u))throw new Error('No access to property "'+u+'"');r[u]=this.properties[i]._compile(e,t)}return function(e,t,n){var i={};for(var a in r)o(r,a)&&(i[a]=r[a](e,t,n));return i}},f.prototype.forEach=function(e){for(var t in this.properties)this.properties.hasOwnProperty(t)&&e(this.properties[t],"properties["+n(t)+"]",this)},f.prototype.map=function(e){var t={};for(var r in this.properties)this.properties.hasOwnProperty(r)&&(t[r]=this._ifNode(e(this.properties[r],"properties["+n(r)+"]",this)));return new f(t)},f.prototype.clone=function(){var e={};for(var t in this.properties)this.properties.hasOwnProperty(t)&&(e[t]=this.properties[t]);return new f(e)},f.prototype._toString=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(n(r)+": "+this.properties[r].toString(e));return"{"+t.join(", ")+"}"},f.prototype.toHTML=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(''+i(r)+':'+this.properties[r].toHTML(e));return'{'+t.join(',')+'}'},f.prototype._toTex=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push("\\mathbf{"+r+":} & "+this.properties[r].toTex(e)+"\\\\");return"\\left\\{\\begin{array}{ll}"+t.join("\n")+"\\end{array}\\right\\}"},f}},function(e,t,r){"use strict";var n=r(55);t.name="RangeNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14));function s(t,r,n){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Node expected");if(!e.isNode(r))throw new TypeError("Node expected");if(n&&!e.isNode(n))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=t,this.end=r,this.step=n||null}function u(e,t){var r=n.getPrecedence(e,t),i={},a=n.getPrecedence(e.start,t);if(i.start=null!==a&&a<=r||"all"===t,e.step){var o=n.getPrecedence(e.step,t);i.step=null!==o&&o<=r||"all"===t}var s=n.getPrecedence(e.end,t);return i.end=null!==s&&s<=r||"all"===t,i}return s.prototype=new o,s.prototype.type="RangeNode",s.prototype.isRangeNode=!0,s.prototype.needsEnd=function(){return this.filter(function(t){return e.isSymbolNode(t)&&"end"===t.name}).length>0},s.prototype._compile=function(e,t){var r=e.range,n=this.start._compile(e,t),i=this.end._compile(e,t);if(this.step){var a=this.step._compile(e,t);return function(e,t,o){return r(n(e,t,o),i(e,t,o),a(e,t,o))}}return function(e,t,a){return r(n(e,t,a),i(e,t,a))}},s.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},s.prototype.map=function(e){return new s(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},s.prototype.clone=function(){return new s(this.start,this.end,this.step&&this.step)},s.prototype._toString=function(e){var t,r=u(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toString(e);if(r.start&&(n="("+n+")"),t=n,this.step){var i=this.step.toString(e);r.step&&(i="("+i+")"),t+=":"+i}var a=this.end.toString(e);return r.end&&(a="("+a+")"),t+=":"+a},s.prototype.toHTML=function(e){var t,r=u(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toHTML(e);if(r.start&&(n='('+n+')'),t=n,this.step){var i=this.step.toHTML(e);r.step&&(i='('+i+')'),t+=':'+i}var a=this.end.toHTML(e);return r.end&&(a='('+a+')'),t+=':'+a},s.prototype._toTex=function(e){var t=u(this,e&&e.parenthesis?e.parenthesis:"keep"),r=this.start.toTex(e);if(t.start&&(r="\\left("+r+"\\right)"),this.step){var n=this.step.toTex(e);t.step&&(n="\\left("+n+"\\right)"),r+=":"+n}var i=this.end.toTex(e);return t.end&&(i="\\left("+i+"\\right)"),r+=":"+i},s}},function(e,t,r){"use strict";t.name="parse",t.factory=function(e,t,n,i){var a=n(r(40));return i("parse",{"string | Array | Matrix":a,"string | Array | Matrix, Object":a})}},function(e,t,r){"use strict";t.name="parser",t.factory=function(e,t,n,i,a){var o=n(r(112));return i("parser",{"":function(){return new o(a)}})},t.math=!0},function(e,t,r){"use strict";var n=r(5).extend,i=r(13);t.name="Parser",t.path="expression",t.factory=function(e,t,a,o,s){var u=a(r(40));function c(){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}return c.prototype.type="Parser",c.prototype.isParser=!0,c.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},c.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},c.prototype.eval=function(e){return u(e).compile().eval(this.scope)},c.prototype.get=function(e){return e in this.scope?i.getSafeProperty(this.scope,e):void 0},c.prototype.getAll=function(){return n({},this.scope)},c.prototype.set=function(e,t){return i.setSafeProperty(this.scope,e,t)},c.prototype.remove=function(e){delete this.scope[e]},c.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},c},t.math=!0},function(e,t,r){"use strict";var n=r(42),i=r(78),a=r(67);t.name="max",t.factory=function(e,t,o,s){var u=o(r(32)),c=o(r(34)),f=s("max",{"Array | Matrix":p,"Array | Matrix, number | BigNumber":function(e,t){return i(e,t.valueOf(),l)},"...":function(e){if(a(e))throw new TypeError("Scalar values expected in function max");return p(e)}});return f.toTex="\\max\\left(${args}\\right)",f;function l(e,t){try{return u(e,t)?e:t}catch(e){throw c(e,"max",t)}}function p(e){var t=void 0;if(n(e,function(e){try{(void 0===t||u(e,t))&&(t=e)}catch(t){throw c(t,"max",e)}}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}}},function(e,t,r){"use strict";var n=r(2).size,i=r(42),a=r(78),o=r(67);t.name="mean",t.factory=function(e,t,s,u){var c=s(r(15)),f=s(r(43)),l=s(r(34)),p=u("mean",{"Array | Matrix":m,"Array | Matrix, number | BigNumber":function(e,t){try{var r=a(e,t,c),i=Array.isArray(e)?n(e):e.size();return f(r,i[t])}catch(e){throw l(e,"mean")}},"...":function(e){if(o(e))throw new TypeError("Scalar values expected in function mean");return m(e)}});return p.toTex=void 0,p;function m(e){var t=0,r=0;if(i(e,function(e){try{t=c(t,e),r++}catch(t){throw l(t,"mean",e)}}),0===r)throw new Error("Cannot calculate mean of an empty array");return f(t,r)}}},function(e,t,r){"use strict";var n=r(24);t.name="inv",t.factory=function(e,t,i,a){var o=i(r(1)),s=i(r(12)),u=i(r(16)),c=i(r(11)),f=i(r(33)),l=i(r(116)),p=i(r(63)),m=a("inv",{"Array | Matrix":function(t){var r=e.isMatrix(t)?t.size():n.array.size(t);switch(r.length){case 1:if(1==r[0])return e.isMatrix(t)?o([s(1,t.valueOf()[0])]):[s(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(r)+")");case 2:var i=r[0],a=r[1];if(i==a)return e.isMatrix(t)?o(h(t.valueOf(),i,a),t.storage()):h(t,i,a);throw new RangeError("Matrix must be square (size: "+n.string.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(r)+")")}},any:function(e){return s(1,e)}});function h(e,t,r){var n,i,a,o,m;if(1==t){if(0==(o=e[0][0]))throw Error("Cannot calculate inverse, determinant is zero");return[[s(1,o)]]}if(2==t){var h=l(e);if(0==h)throw Error("Cannot calculate inverse, determinant is zero");return[[s(e[1][1],h),s(f(e[0][1]),h)],[s(f(e[1][0]),h),s(e[0][0],h)]]}var d=e.concat();for(n=0;n0)for(;it;)n.push(i),i+=r;return n}function p(e,t,r){var n=[],i=e;if(r>0)for(;i<=t;)n.push(i),i+=r;else if(r<0)for(;i>=t;)n.push(i),i+=r;return n}function m(e,t,r){var n=[],i=e;if(r.gt(o))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function h(e,t,r){var n=[],i=e;if(r.gt(o))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}}},function(e,t,r){"use strict";r(3).digits;t.math=!0,t.name="simplifyConstant",t.path="algebra.simplify",t.factory=function(e,t,n,i,a){var o=n(r(120)),s=(n(r(54)),o.isCommutative),u=o.isAssociative,c=o.allChildren,f=o.createMakeNodeFunction,l=a.expression.node.ConstantNode,p=a.expression.node.OperatorNode,m=a.expression.node.FunctionNode;function h(t,r){try{return y(a[t].apply(null,r))}catch(n){return r=r.map(function(t){return e.isFraction(t)?t.valueOf():t}),y(a[t].apply(null,r))}}var d=i({Fraction:function(e){var t,r=e.s*e.n;return t=r<0?new p("-","unaryMinus",[new l(-r)]):new l(r),1===e.d?t:new p("/","divide",[t,new l(e.d)])},number:function(e){return e<0?v(new l(-e)):new l(e)},BigNumber:function(e){return e<0?v(new l(e.negated().toString(),"number")):new l(e.toString(),"number")},Complex:function(e){throw"Cannot convert Complex number to Node"}});function g(e){if(isFinite(e)){var t=a.fraction(e);if(t.valueOf()===e)return t}return e}var y=i({string:function(e){return"BigNumber"===t.number?a.bignumber(e):"Fraction"===t.number?a.fraction(e):g(parseFloat(e))},Fraction:function(e){return e},BigNumber:function(e){return e},number:function(e){return g(e)},Complex:function(e){return 0!==e.im?e:g(e.re)}});function v(e){return new p("-","unaryMinus",[e])}function x(t,r,n){return r.reduce(function(r,i){if(e.isNode(r)||e.isNode(i))e.isNode(r)?e.isNode(i)||(i=d(i)):r=d(r);else{try{return h(t,[r,i])}catch(e){}r=d(r),i=d(i)}return n([r,i])})}function w(t){switch(t.type){case"SymbolNode":return t;case"ConstantNode":return"number"==typeof t.value?y(t.value):t;case"FunctionNode":if(a[t.name]&&a[t.name].rawArgs)return t;if(-1===["add","multiply"].indexOf(t.name)){if(!(r=t.args.map(w)).some(e.isNode))try{return h(t.name,r)}catch(e){}return r=r.map(function(t){return e.isNode(t)?t:d(t)}),new m(t.name,r)}case"OperatorNode":var r,n,i=t.fn.toString(),o=f(t);if(t.isUnary())r=[w(t.args[0])],n=e.isNode(r[0])?o(r):h(i,r);else if(u(t))if(r=(r=c(t)).map(w),s(i)){for(var l=[],p=[],g=0;g1?(n=x(i,l,o),p.unshift(n),n=x(i,p,o)):n=x(i,r,o)}else n=x(i,r,o);else n=x(i,r=t.args.map(w),o);return n;case"ParenthesisNode":return w(t.content);case"AccessorNode":case"ArrayNode":case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"IndexNode":case"ObjectNode":case"RangeNode":case"UpdateNode":case"ConditionalNode":default:throw"Unimplemented node type in simplifyConstant: "+t.type}}return function(t){var r=w(t);return e.isNode(r)?r:d(r)}}},function(e,t,r){"use strict";t.factory=function(e,t,r,n,i){var a=i.expression.node.FunctionNode,o=i.expression.node.OperatorNode,s=i.expression.node.SymbolNode,u={add:!0,multiply:!0},c={add:!0,multiply:!0};function f(t,r){if(!e.isOperatorNode(t))return!1;var n=t.fn.toString();return r&&r.hasOwnProperty(n)&&r[n].hasOwnProperty("associative")?r[n].associative:c[n]||!1}function l(t){var r,n=[],i=function(t){for(var a=0;a2&&f(t)){for(var a=t.args.pop();t.args.length>0;)a=r([t.args.pop(),a]);t.args=a.args}}},unflattenl:function e(t){if(t.args&&0!==t.args.length){for(var r=p(t),n=t.args.length,i=0;i2&&f(t)){for(var a=t.args.shift();t.args.length>0;)a=r([a,t.args.shift()]);t.args=a.args}}}}},t.math=!0},function(e,t,r){"use strict";t.math=!0,t.name="simplifyCore",t.path="algebra.simplify",t.factory=function(e,t,n,i,a){var o=n(r(46)),s=n(r(58)),u=(n(r(54)),n(r(15))),c=n(r(19)),f=n(r(11)),l=n(r(43)),p=n(r(38)),m=a.expression.node.ConstantNode,h=a.expression.node.OperatorNode,d=a.expression.node.FunctionNode,g=a.expression.node.ParenthesisNode,y=new m(0),v=new m(1);return function t(r){if(e.isOperatorNode(r)&&r.isUnary()){var n=t(r.args[0]);if("+"===r.op)return n;if("-"===r.op){if(e.isOperatorNode(n)){if(n.isUnary()&&"-"===n.op)return n.args[0];if(n.isBinary()&&"subtract"===n.fn)return new h("-","subtract",[n.args[1],n.args[0]])}return new h(r.op,r.fn,[n])}}else if(e.isOperatorNode(r)&&r.isBinary()){n=t(r.args[0]);var i=t(r.args[1]);if("+"===r.op){if(e.isConstantNode(n)){if(s(n.value))return i;if(e.isConstantNode(i))return new m(u(n.value,i.value))}return e.isConstantNode(i)&&s(i.value)?n:e.isOperatorNode(i)&&i.isUnary()&&"-"===i.op?new h("-","subtract",[n,i.args[0]]):new h(r.op,r.fn,i?[n,i]:[n])}if("-"===r.op){if(e.isConstantNode(n)&&i){if(e.isConstantNode(i))return new m(c(n.value,i.value));if(s(n.value))return new h("-","unaryMinus",[i])}if("subtract"===r.fn)return e.isConstantNode(i)&&s(i.value)?n:e.isOperatorNode(i)&&i.isUnary()&&"-"===i.op?t(new h("+","add",[n,i.args[0]])):new h(r.op,r.fn,[n,i])}else{if("*"===r.op){if(e.isConstantNode(n)){if(s(n.value))return y;if(o(n.value,1))return i;if(e.isConstantNode(i))return new m(f(n.value,i.value))}if(e.isConstantNode(i)){if(s(i.value))return y;if(o(i.value,1))return n;if(e.isOperatorNode(n)&&n.isBinary()&&n.op===r.op){var a=n.args[0];if(e.isConstantNode(a)){var x=new m(f(a.value,i.value));return new h(r.op,r.fn,[x,n.args[1]])}}return new h(r.op,r.fn,[i,n])}return new h(r.op,r.fn,[n,i])}if("/"===r.op){if(e.isConstantNode(n)){if(s(n.value))return y;if(e.isConstantNode(i)&&(o(i.value,1)||o(i.value,2)||o(i.value,4)))return new m(l(n.value,i.value))}return new h(r.op,r.fn,[n,i])}if("^"===r.op){if(e.isConstantNode(i)){if(s(i.value))return v;if(o(i.value,1))return n;if(e.isConstantNode(n))return new m(p(n.value,i.value));if(e.isOperatorNode(n)&&n.isBinary()&&"^"===n.op){var w=n.args[1];if(e.isConstantNode(w))return new h(r.op,r.fn,[n.args[0],new m(f(w.value,i.value))])}}return new h(r.op,r.fn,[n,i])}}}else{if(e.isParenthesisNode(r)){var b=t(r.content);return e.isParenthesisNode(b)||e.isSymbolNode(b)||e.isConstantNode(b)?b:new g(b)}if(e.isFunctionNode(r)){var N=r.args.map(t).map(function(t){return e.isParenthesisNode(t)?t.content:t});return new d(t(r.fn),N)}}return r}}},function(e,t,r){"use strict";var n=r(5);t.name="clone",t.factory=function(e,t,r,i){var a=i("clone",{any:n.clone});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="unequal",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(25)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=r(4),h=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:d(e,t)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,d)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,d,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,d,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,d)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,d,!1)},"DenseMatrix, any":function(e,t){return p(e,t,d,!1)},"any, SparseMatrix":function(e,t){return f(t,e,d,!0)},"any, DenseMatrix":function(e,t){return p(t,e,d,!0)},"Array, any":function(e,t){return p(s(e),t,d,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,d,!0).valueOf()}}),d=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return!e.equals(t)},"Complex, Complex":function(e,t){return!e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)}});return h.toTex={2:"\\left(${args[0]}"+m.operators.unequal+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";var n=r(3),i=r(0);t.name="sign",t.factory=function(e,t,r,a){var o=a("sign",{number:n.sign,Complex:function(e){return e.sign()},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s,1)},"Array | Matrix":function(e){return i(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="conj",t.factory=function(e,t,r,i){var a=i("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.conjugate()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)^*"},a}},function(e,t,r){"use strict";var n=r(24).object;t.name="lup",t.factory=function(e,t,i,a){var o=i(r(1)),s=i(r(27)),u=i(r(16)),c=i(r(12)),f=i(r(21)),l=i(r(19)),p=i(r(32)),m=i(r(8)),h=i(r(33)),d=e.SparseMatrix,g=e.DenseMatrix,y=e.Spa,v=a("lup",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=o(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}}),x=function(e){var t,r,i,a=e._size[0],o=e._size[1],h=Math.min(a,o),d=n.clone(e._data),y=[],v=[a,h],x=[],w=[h,o],b=[];for(t=0;t0)for(t=0;t0&&B.forEach(0,r-1,function(e,t){d._forEachRow(e,N,M,E,function(r,n){r>e&&B.accumulate(r,h(f(n,t)))})});var R=r,U=B.get(r),D=s(U);B.forEach(r+1,l-1,function(e,t){var r=s(t);p(r,D)&&(R=e,D=r,U=t)}),r!==R&&(d._swapRows(r,R,A[1],N,M,E),d._swapRows(r,R,T[1],O,S,_),B.swap(r,R),a=R,o=z[i=r],u=z[a],C[o]=a,C[u]=i,z[i]=u,z[a]=o),B.forEach(0,l-1,function(e,t){e<=r?(O.push(t),S.push(e)):(t=c(t,U),m(t,0)||(N.push(t),M.push(e)))})}return _.push(O.length),E.push(N.length),{L:new d({values:N,index:M,ptr:E,size:A}),U:new d({values:O,index:S,ptr:_,size:T}),p:C,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return v}},function(e,t,r){"use strict";var n=r(24).number.isInteger;t.name="slu",t.factory=function(e,t,i,a){var o=i(r(411)),s=i(r(419));return a("slu",{"SparseMatrix, number, number":function(e,t,r){if(!n(t)||t<0||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(r<0||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var i=o(t,e,!1),a=s(e,i,r);return{L:a.L,U:a.U,p:a.pinv,q:i.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}})}},function(e,t,r){"use strict";t.name="cs_tdfs",t.path="sparse",t.factory=function(){return function(e,t,r,n,i,a,o){var s=0;for(r[o]=e;s>=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],r[o+ ++s]=c)}return t}}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="largerEq",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(25)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=r(4),h=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gte(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return-1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,h)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return p(e,t,h,!1)},"any, SparseMatrix":function(e,t){return f(t,e,h,!0)},"any, DenseMatrix":function(e,t){return p(t,e,h,!0)},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+m.operators.largerEq+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";t.name="cs_marked",t.path="sparse",t.factory=function(){return function(e,t){return e[t]<0}}},function(e,t,r){"use strict";t.name="cs_mark",t.path="sparse",t.factory=function(e,t,n){var i=n(r(80));return function(e,t){e[t]=i(e[t])}}},function(e,t,r){"use strict";t.name="lsolve",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(12)),s=n(r(21)),u=n(r(19)),c=n(r(8)),f=n(r(81)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e);return m(r,t).valueOf()}}),m=function(e,t){for(var r=(t=f(e,t,!0))._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=0;my&&(w.push(m[n]),b.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var M=o(v,x);for(n=0,N=b.length;n=0;m--){var h,d=r[m][0]||0;if(c(d,0))h=0;else{var g=p[m][m];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(d,g);for(var y=m-1;y>=0;y--)r[y]=[u(r[y][0]||0,s(h,p[y][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){for(var r,n,i=(t=f(e,t,!0))._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,d=e._ptr,g=[],y=p-1;y>=0;y--){var v=i[y][0]||0;if(c(v,0))g[y]=[0];else{var x=0,w=[],b=[],N=d[y],M=d[y+1];for(n=M-1;n>=N;n--)(r=h[n])===y?x=m[n]:r=0||t.predictable?Math.log(r):new e.Complex(r,0).log()},Complex:function(e){return e.log()},BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():new e.Complex(r.toNumber(),0).log()},"Array | Matrix":function(e){return n(e,s)},"any, any":function(e,t){return o(s(e),s(t))}});return s.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";var n=r(5).clone,i=r(9).format;t.name="trace",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(15)),c=o("trace",{Array:function(e){return f(s(e))},SparseMatrix:function(e){var t=e._values,r=e._index,n=e._ptr,a=e._size,o=a[0],s=a[1];if(o===s){var c=0;if(t.length>0)for(var f=0;ff)break}return c}throw new RangeError("Matrix must be square (size: "+i(a)+")")},DenseMatrix:f,any:n});function f(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1===t[0])return n(r[0]);throw new RangeError("Matrix must be square (size: "+i(t)+")");case 2:var a=t[0];if(a===t[1]){for(var o=0,s=0;s171)return 1/0;for(var n=e-2,s=e-1;n>1;)s*=n,n--;return 0==s&&(s=1),s}if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*l(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,p=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*p)+5246819/(75246796800*p*e))}--e,r=o[0];for(var m=1;m1;)i=i.times(a),a--;return new e.BigNumber(i.toPrecision(e.BigNumber.precision))}(r.minus(1));if(!r.isFinite())return new e.BigNumber(r.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"\\Gamma\\left(${args[0]}\\right)"},l}},function(e,t,r){"use strict";var n=r(0);t.name="not",t.factory=function(e,t,i,a){var o=r(4),s=a("not",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return null===e.value||s(e.value)},"Array | Matrix":function(e){return n(e,s)}});return s.toTex={1:o.operators.not+"\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount;function i(e,t){var r=n(t),i=function(n,a){return Array.isArray(n)?n.map(function(e,t){return i(e,a.concat(t))}):1===r?t(n):2===r?t(n,a):t(n,a,e)};return i(e,[])}t.name="map",t.factory=function(e,t,r,n){var a=n("map",{"Array, function":i,"Matrix, function":function(e,t){return e.map(t)}});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(42);t.name="sum",t.factory=function(e,t,i,a){var o=i(r(16)),s=i(r(34)),u=a("sum",{"Array | Matrix":function(e){return c(e)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(e){return c(e)}});return u.toTex=void 0,u;function c(r){var i=void 0;if(n(r,function(e){try{i=void 0===i?e:o(i,e)}catch(t){throw s(t,"sum",e)}}),void 0===i)switch(t.number){case"number":return 0;case"BigNumber":return new e.BigNumber(0);case"Fraction":return new e.Fraction(0);default:return 0}return i}}},function(e,t,r){"use strict";var n=r(2).flatten,i=r(2).identify,a=r(2).generalize;t.name="setDifference",t.factory=function(e,t,o,s){var u=o(r(26)),c=o(r(45)),f=o(r(28)),l=o(r(22)),p=o(r(29));return s("setDifference",{"Array | Matrix, Array | Matrix":function(e,t){if(0===l(f(e),new u(0)))var r=[];else{if(0===l(f(t),new u(0)))return n(e.toArray());for(var o,s=i(n(Array.isArray(e)?e:e.toArray()).sort(p)),m=i(n(Array.isArray(t)?t:t.toArray()).sort(p)),h=(r=[],0);h0&&(a=e[o]);return d(a,i)}var s=f(e,(t-1)/2);return h(s)}catch(e){throw l(e,"median")}}var h=o({"number | BigNumber | Complex | Unit":function(e){return e}}),d=o({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(e,t){return u(s(e,t),2)}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n="unbiased",i=r(42);t.name="var",t.factory=function(e,t,a,o){var s=a(r(16)),u=a(r(19)),c=a(r(21)),f=a(r(12)),l=a(r(34)),p=o("variance",{"Array | Matrix":function(e){return m(e,n)},"Array | Matrix, string":m,"...":function(e){return m(e,n)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p;function m(t,r){var n=0,a=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(i(t,function(e){try{n=s(n,e),a++}catch(t){throw l(t,"var",e)}}),0===a)throw new Error("Cannot calculate var of an empty array");var o=f(n,a);switch(n=0,i(t,function(e){var t=u(e,o);n=s(n,c(t,t))}),r){case"uncorrected":return f(n,a);case"biased":return f(n,a+1);case"unbiased":var p=e.isBigNumber(n)?new e.BigNumber(0):0;return 1==a?p:f(n,a-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}}},function(e,t,r){"use strict";var n=r(0);var i=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)};t.name="acosh",t.factory=function(e,t,r,a){var o=a("acosh",{number:function(r){return r>=1||t.predictable?i(r):r<=-1?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):new e.Complex(r,0).acosh()},Complex:function(e){return e.acosh()},BigNumber:function(e){return e.acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){var n=r(150);e.exports=function e(t){var i=n.create(t);return i.create=e,i.import(r(157)),i}()},function(e,t,r){e.exports=r(151)},function(e,t,r){var n=r(5).isFactory,i=r(152),a=r(87),o=r(155),s=r(156);t.create=function(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var t=[],r=[],u=a.mixin({});u.type={},u.expression={transform:{},mathWithTransform:{}},u.typed=i.create(u.type);var c={epsilon:1e-12,matrix:"Matrix",number:"number",precision:64,predictable:!1,randomSeed:null};function f(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=t.indexOf(e);return-1===a?(i=!0===e.math?e.factory(u.type,c,f,u.typed,u):e.factory(u.type,c,f,u.typed),t.push(e),r.push(i)):i=r[a],i}return u.import=f(o),u.config=f(s),u.expression.mathWithTransform.config=u.config,e&&u.config(e),u}},function(e,t,r){var n=r(153),i=r(3).digits,a=r(72),o=r(61),s=function(){return s=n.create,n};t.create=function(e){e.isNumber=function(e){return"number"==typeof e},e.isComplex=function(t){return e.Complex&&t instanceof e.Complex||!1},e.isBigNumber=a,e.isFraction=function(t){return e.Fraction&&t instanceof e.Fraction||!1},e.isUnit=function(e){return e&&e.constructor.prototype.isUnit||!1},e.isString=function(e){return"string"==typeof e},e.isArray=Array.isArray,e.isMatrix=o,e.isDenseMatrix=function(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix||!1},e.isSparseMatrix=function(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix||!1},e.isRange=function(e){return e&&e.constructor.prototype.isRange||!1},e.isIndex=function(e){return e&&e.constructor.prototype.isIndex||!1},e.isBoolean=function(e){return"boolean"==typeof e},e.isResultSet=function(e){return e&&e.constructor.prototype.isResultSet||!1},e.isHelp=function(e){return e&&e.constructor.prototype.isHelp||!1},e.isFunction=function(e){return"function"==typeof e},e.isDate=function(e){return e instanceof Date},e.isRegExp=function(e){return e instanceof RegExp},e.isObject=function(t){return"object"==typeof t&&t.constructor===Object&&!e.isComplex(t)&&!e.isFraction(t)},e.isNull=function(e){return null===e},e.isUndefined=function(e){return void 0===e},e.isAccessorNode=function(e){return e&&e.isAccessorNode&&e.constructor.prototype.isNode||!1},e.isArrayNode=function(e){return e&&e.isArrayNode&&e.constructor.prototype.isNode||!1},e.isAssignmentNode=function(e){return e&&e.isAssignmentNode&&e.constructor.prototype.isNode||!1},e.isBlockNode=function(e){return e&&e.isBlockNode&&e.constructor.prototype.isNode||!1},e.isConditionalNode=function(e){return e&&e.isConditionalNode&&e.constructor.prototype.isNode||!1},e.isConstantNode=function(e){return e&&e.isConstantNode&&e.constructor.prototype.isNode||!1},e.isFunctionAssignmentNode=function(e){return e&&e.isFunctionAssignmentNode&&e.constructor.prototype.isNode||!1},e.isFunctionNode=function(e){return e&&e.isFunctionNode&&e.constructor.prototype.isNode||!1},e.isIndexNode=function(e){return e&&e.isIndexNode&&e.constructor.prototype.isNode||!1},e.isNode=function(e){return e&&e.isNode&&e.constructor.prototype.isNode||!1},e.isObjectNode=function(e){return e&&e.isObjectNode&&e.constructor.prototype.isNode||!1},e.isOperatorNode=function(e){return e&&e.isOperatorNode&&e.constructor.prototype.isNode||!1},e.isParenthesisNode=function(e){return e&&e.isParenthesisNode&&e.constructor.prototype.isNode||!1},e.isRangeNode=function(e){return e&&e.isRangeNode&&e.constructor.prototype.isNode||!1},e.isSymbolNode=function(e){return e&&e.isSymbolNode&&e.constructor.prototype.isNode||!1},e.isChain=function(e){return e&&e.constructor.prototype.isChain||!1};var t=s();return t.types=[{name:"number",test:e.isNumber},{name:"Complex",test:e.isComplex},{name:"BigNumber",test:e.isBigNumber},{name:"Fraction",test:e.isFraction},{name:"Unit",test:e.isUnit},{name:"string",test:e.isString},{name:"Array",test:e.isArray},{name:"Matrix",test:e.isMatrix},{name:"DenseMatrix",test:e.isDenseMatrix},{name:"SparseMatrix",test:e.isSparseMatrix},{name:"Range",test:e.isRange},{name:"Index",test:e.isIndex},{name:"boolean",test:e.isBoolean},{name:"ResultSet",test:e.isResultSet},{name:"Help",test:e.isHelp},{name:"function",test:e.isFunction},{name:"Date",test:e.isDate},{name:"RegExp",test:e.isRegExp},{name:"null",test:e.isNull},{name:"undefined",test:e.isUndefined},{name:"OperatorNode",test:e.isOperatorNode},{name:"ConstantNode",test:e.isConstantNode},{name:"SymbolNode",test:e.isSymbolNode},{name:"ParenthesisNode",test:e.isParenthesisNode},{name:"FunctionNode",test:e.isFunctionNode},{name:"FunctionAssignmentNode",test:e.isFunctionAssignmentNode},{name:"ArrayNode",test:e.isArrayNode},{name:"AssignmentNode",test:e.isAssignmentNode},{name:"BlockNode",test:e.isBlockNode},{name:"ConditionalNode",test:e.isConditionalNode},{name:"IndexNode",test:e.isIndexNode},{name:"RangeNode",test:e.isRangeNode},{name:"Node",test:e.isNode},{name:"Object",test:e.isObject}],t.conversions=[{from:"number",to:"BigNumber",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"Fraction",to:"BigNumber",convert:function(e){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(t){return new e.Complex(t.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(t){if(new e.Fraction(t).valueOf()!==t)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"string",to:"BigNumber",convert:function(t){try{return new e.BigNumber(t)}catch(e){throw new Error('Cannot convert "'+t+'" to BigNumber')}}},{from:"string",to:"Fraction",convert:function(t){try{return new e.Fraction(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(t){try{return new e.Complex(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Complex')}}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.BigNumber(+t)}},{from:"boolean",to:"Fraction",convert:function(t){return new e.Fraction(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){"use strict";var n,i,a;i=[],void 0===(a="function"==typeof(n=function(){function e(){return!0}function t(){return!1}function r(){}return function n(){var i=[{name:"number",test:function(e){return"number"==typeof e}},{name:"string",test:function(e){return"string"==typeof e}},{name:"boolean",test:function(e){return"boolean"==typeof e}},{name:"Function",test:function(e){return"function"==typeof e}},{name:"Array",test:Array.isArray},{name:"Date",test:function(e){return e instanceof Date}},{name:"RegExp",test:function(e){return e instanceof RegExp}},{name:"Object",test:function(e){return"object"==typeof e&&e.constructor===Object}},{name:"null",test:function(e){return null===e}},{name:"undefined",test:function(e){return void 0===e}}],a={name:"any",test:e},o=[],s=[],u={types:i,conversions:s,ignore:o};function c(e){var t=u.types.find(function(t){return t.name===e});if(t)return t;if("any"===e)return a;var r=u.types.find(function(t){return t.name.toLowerCase()===e.toLowerCase()});throw new TypeError('Unknown type "'+e+'"'+(r?'. Did you mean "'+r.name+'"?':""))}function f(e){return e===a?999:u.types.indexOf(e)}function l(e){var t=u.types.find(function(t){return t.test(e)});if(t)return t.name;throw new TypeError("Value has unknown type. Value: "+e)}function p(e){return e.map(function(e){var t=e.types.map(w);return(e.restParam?"...":"")+t.join("|")}).join(",")}function m(e,t){var r,n,i=0===e.indexOf("..."),a=(i?e.length>3?e.slice(3):"any":e).split("|").map(C).filter(z).filter(T),o=(r=a,n={},t.forEach(function(e){-1!==r.indexOf(e.from)||-1===r.indexOf(e.to)||n[e.from]||(n[e.from]=e)}),Object.keys(n).map(function(e){return n[e]})),s=a.map(function(e){var t=c(e);return{name:e,typeIndex:f(t),test:t.test,conversion:null,conversionIndex:-1}}),u=o.map(function(e){var r=c(e.from);return{name:e.from,typeIndex:f(r),test:r.test,conversion:e,conversionIndex:t.indexOf(e)}});return{types:s.concat(u),restParam:i}}function h(e){var t=P(e);return!!t&&t.restParam}function d(e){return e.types.some(function(e){return null!=e.conversion})}function g(t){if(t&&0!==t.types.length){if(1===t.types.length)return c(t.types[0].name).test;if(2===t.types.length){var r=c(t.types[0].name).test,n=c(t.types[1].name).test;return function(e){return r(e)||n(e)}}var i=t.types.map(function(e){return c(e.name).test});return function(e){for(var t=0;t=a+1}}return 0===e.length?function(e){return 0===e.length}:1===e.length?(r=g(e[0]),function(e){return r(e[0])&&1===e.length}):2===e.length?(r=g(e[0]),n=g(e[1]),function(e){return r(e[0])&&n(e[1])&&2===e.length}):(t=e.map(g),function(e){for(var r=0;r=i:s?i>=a:i===a}(t,e)});if(t)throw new TypeError('Conflicting signatures "'+p(t.params)+'" and "'+p(e.params)+'".');i.push(e)});var a=D(i,function(e){return(e?S(e.params,!1):[]).map(function(t){return{params:t,fn:e.fn}})}).filter(B);a.sort(A);var o,s=a[0]&&a[0].params.length<=2&&!h(a[0].params),c=a[1]&&a[1].params.length<=2&&!h(a[1].params),f=a[2]&&a[2].params.length<=2&&!h(a[2].params),w=a[3]&&a[3].params.length<=2&&!h(a[3].params),b=a[4]&&a[4].params.length<=2&&!h(a[4].params),M=a[5]&&a[5].params.length<=2&&!h(a[5].params),E=s&&c&&f&&w&&b&&M,_=a.map(function(e){return y(e.params)}),T=s?g(a[0].params[0]):t,z=c?g(a[1].params[0]):t,P=f?g(a[2].params[0]):t,k=w?g(a[3].params[0]):t,q=b?g(a[4].params[0]):t,L=M?g(a[5].params[0]):t,F=s?g(a[0].params[1]):t,j=c?g(a[1].params[1]):t,H=f?g(a[2].params[1]):t,$=w?g(a[3].params[1]):t,G=b?g(a[4].params[1]):t,V=M?g(a[5].params[1]):t,Z=a.map(function(e){return function(e,t){var r=t;if(e.some(d)){var n=h(e),i=e.map(O);r=function(){for(var e=[],r=n?arguments.length-1:arguments.length,a=0;a0){var c=l(t[a]);return(n=new TypeError("Unexpected type of argument in function "+o+" (expected: "+i.join(" or ")+", actual: "+c+", index: "+a+")")).data={category:"wrongType",fn:o,index:a,actual:c,expected:i},n}}else s=u}var f=s.map(function(e){return h(e.params)?1/0:e.params.length});if(t.lengthp?((n=new TypeError("Too many arguments in function "+o+" (expected: "+p+", actual: "+t.length+")")).data={category:"tooManyArgs",fn:o,index:t.length,expectedLength:p},n):((n=new TypeError('Arguments of type "'+t.join(", ")+'" do not match any of the defined signatures of function '+o+".")).data={category:"mismatch",actual:t.map(l)},n)}(e,arguments,a)},ce=function(e,t){return arguments.length===ee&&T(e)&&F(t)?W.apply(null,arguments):arguments.length===te&&z(e)&&j(t)?Y.apply(null,arguments):arguments.length===re&&P(e)&&H(t)?X.apply(null,arguments):arguments.length===ne&&k(e)&&$(t)?J.apply(null,arguments):arguments.length===ie&&q(e)&&G(t)?Q.apply(null,arguments):arguments.length===ae&&L(e)&&V(t)?K.apply(null,arguments):ue.apply(null,arguments)};return Object.defineProperty(ce,"name",{value:e}),ce.signatures=(o={},a.forEach(function(e){e.params.some(d)||S(e.params,!0).forEach(function(t){o[p(t)]=e.fn})}),o),ce}function T(e){return-1===u.ignore.indexOf(e)}function C(e){return e.trim()}function z(e){return!!e}function B(e){return null!==e}function I(e){return 0===e.types.length}function P(e){return e[e.length-1]}function R(e,t,r){return Array.prototype.slice.call(e,t,r)}function U(e,t){for(var r=0;r0){for(a+=o,t=1;tr)throw Error(g+e)}function B(e,t,r,n){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=O,i=0):(i=Math.ceil((t+1)/O),t%=O),a=w(10,O-t),s=e[i]%a|0,null==n?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),o=r<4&&99999==s||r>3&&49999==s||5e4==s||0==s):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(e[i+1]/a/100|0)==w(10,t-2)-1||(s==a/2||0==s)&&0==(e[i+1]/a/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),o=(n||r<4)&&9999==s||!n&&r>3&&4999==s):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==w(10,t-3)-1,o}function I(e,t,r){for(var n,i,a=[0],o=0,s=e.length;or-1&&(void 0===a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}T.absoluteValue=T.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),R(e)},T.ceil=function(){return R(new this.constructor(this),this.e+1,2)},T.comparedTo=T.cmp=function(e){var t,r,n,i,a=this.d,o=(e=new this.constructor(e)).d,s=this.s,u=e.s;if(!a||!o)return s&&u?s!==u?s:a===o?0:!a^s<0?1:-1:NaN;if(!a[0]||!o[0])return a[0]?s:o[0]?-u:0;if(s!==u)return s;if(this.e!==e.e)return this.e>e.e^s<0?1:-1;for(t=0,r=(n=a.length)<(i=o.length)?n:i;to[t]^s<0?1:-1;return n===i?0:n>i^s<0?1:-1},T.cosine=T.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=function(e,t){var r,n,i=t.d.length;i<32?(r=Math.ceil(i/3),n=Math.pow(4,-r).toString()):(r=16,n="2.3283064365386962890625e-10");e.precision+=r,t=Y(e,1,t.times(n),new e(1));for(var a=r;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=r,t}(n,X(n,r)),n.precision=e,n.rounding=t,R(2==s||3==s?r.neg():r,e,t,!0)):new n(1):new n(NaN)},T.cubeRoot=T.cbrt=function(){var e,t,r,n,i,a,o,s,u,c,f=this,l=f.constructor;if(!f.isFinite()||f.isZero())return new l(f);for(h=!1,(a=f.s*Math.pow(f.s*f,1/3))&&Math.abs(a)!=1/0?n=new l(a.toString()):(r=C(f.d),(a=((e=f.e)-r.length+1)%3)&&(r+=1==a||-2==a?"0":"00"),a=Math.pow(r,1/3),e=x((e+1)/3)-(e%3==(e<0?-1:2)),(n=new l(r=a==1/0?"5e"+e:(r=a.toExponential()).slice(0,r.indexOf("e")+1)+e)).s=f.s),o=(e=l.precision)+3;;)if(c=(u=(s=n).times(s).times(s)).plus(f),n=P(c.plus(f).times(s),c.plus(u),o+2,1),C(s.d).slice(0,o)===(r=C(n.d)).slice(0,o)){if("9999"!=(r=r.slice(o-3,o+1))&&(i||"4999"!=r)){+r&&(+r.slice(1)||"5"!=r.charAt(0))||(R(n,e+1,1),t=!n.times(n).times(n).eq(f));break}if(!i&&(R(s,e+1,0),s.times(s).times(s).eq(f))){n=s;break}o+=4,i=1}return h=!0,R(n,e,l.rounding,t)},T.decimalPlaces=T.dp=function(){var e,t=this.d,r=NaN;if(t){if(r=((e=t.length-1)-x(this.e/O))*O,e=t[e])for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r},T.dividedBy=T.div=function(e){return P(this,new this.constructor(e))},T.dividedToIntegerBy=T.divToInt=function(e){var t=this.constructor;return R(P(this,new t(e),0,1,1),t.precision,t.rounding)},T.equals=T.eq=function(e){return 0===this.cmp(e)},T.floor=function(){return R(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(e){return this.cmp(e)>0},T.greaterThanOrEqualTo=T.gte=function(e){var t=this.cmp(e);return 1==t||0===t},T.hyperbolicCosine=T.cosh=function(){var e,t,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,(i=a.d.length)<32?(e=Math.ceil(i/3),t=Math.pow(4,-e).toString()):(e=16,t="2.3283064365386962890625e-10"),a=Y(o,1,a.times(t),new o(1),!0);for(var u,c=e,f=new o(8);c--;)u=a.times(a),a=s.minus(u.times(f.minus(u.times(f))));return R(a,o.precision=r,o.rounding=n,!0)},T.hyperbolicSine=T.sinh=function(){var e,t,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,r=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,(n=i.d.length)<3)i=Y(a,2,i,i,!0);else{e=(e=1.4*Math.sqrt(n))>16?16:0|e,i=Y(a,2,i=i.times(Math.pow(5,-e)),i,!0);for(var o,s=new a(5),u=new a(16),c=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(u.times(o).plus(c))))}return a.precision=t,a.rounding=r,R(i,t,r,!0)},T.hyperbolicTangent=T.tanh=function(){var e,t,r=this.constructor;return this.isFinite()?this.isZero()?new r(this):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,P(this.sinh(),this.cosh(),r.precision=e,r.rounding=t)):new r(this.s)},T.inverseCosine=T.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,a=r.rounding;return-1!==n?0===n?t.isNeg()?q(r,i,a):new r(0):new r(NaN):t.isZero()?q(r,i+4,a).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=q(r,i+4,a).times(.5),r.precision=i,r.rounding=a,e.minus(t))},T.inverseHyperbolicCosine=T.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,h=!1,r=r.times(r).minus(1).sqrt().plus(r),h=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)},T.inverseHyperbolicSine=T.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,h=!1,r=r.times(r).plus(1).sqrt().plus(r),h=!0,n.precision=e,n.rounding=t,r.ln())},T.inverseHyperbolicTangent=T.atanh=function(){var e,t,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?R(new a(i),e,t,!0):(a.precision=r=n-i.e,i=P(i.plus(1),new a(1).minus(i),r+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},T.inverseSine=T.asin=function(){var e,t,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),r=a.precision,n=a.rounding,-1!==t?0===t?((e=q(a,r+4,n).times(.5)).s=i.s,e):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))},T.inverseTangent=T.atan=function(){var e,t,r,n,i,a,o,s,u,c=this,f=c.constructor,l=f.precision,p=f.rounding;if(c.isFinite()){if(c.isZero())return new f(c);if(c.abs().eq(1)&&l+4<=_)return(o=q(f,l+4,p).times(.25)).s=c.s,o}else{if(!c.s)return new f(NaN);if(l+4<=_)return(o=q(f,l+4,p).times(.5)).s=c.s,o}for(f.precision=s=l+10,f.rounding=1,e=r=Math.min(28,s/O+2|0);e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(h=!1,t=Math.ceil(s/O),n=1,u=c.times(c),o=new f(c),i=c;-1!==e;)if(i=i.times(u),a=o.minus(i.div(n+=2)),i=i.times(u),void 0!==(o=a.plus(i.div(n+=2))).d[t])for(e=t;o.d[e]===a.d[e]&&e--;);return r&&(o=o.times(2<this.d.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isPositive=T.isPos=function(){return this.s>0},T.isZero=function(){return!!this.d&&0===this.d[0]},T.lessThan=T.lt=function(e){return this.cmp(e)<0},T.lessThanOrEqualTo=T.lte=function(e){return this.cmp(e)<1},T.logarithm=T.log=function(e){var t,r,n,i,a,o,s,u,c=this.constructor,f=c.precision,l=c.rounding;if(null==e)e=new c(10),t=!0;else{if(r=(e=new c(e)).d,e.s<0||!r||!r[0]||e.eq(1))return new c(NaN);t=e.eq(10)}if(r=this.d,this.s<0||!r||!r[0]||this.eq(1))return new c(r&&!r[0]?-1/0:1!=this.s?NaN:r?0:1/0);if(t)if(r.length>1)a=!0;else{for(i=r[0];i%10==0;)i/=10;a=1!==i}if(h=!1,o=V(this,s=f+5),n=t?k(c,s+10):V(e,s),B((u=P(o,n,s,1)).d,i=f,l))do{if(o=V(this,s+=10),n=t?k(c,s+10):V(e,s),u=P(o,n,s,1),!a){+C(u.d).slice(i+1,i+15)+1==1e14&&(u=R(u,f+1,0));break}}while(B(u.d,i+=10,l));return h=!0,R(u,f,l)},T.minus=T.sub=function(e){var t,r,n,i,a,o,s,u,c,f,l,p,m=this,d=m.constructor;if(e=new d(e),!m.d||!e.d)return m.s&&e.s?m.d?e.s=-e.s:e=new d(e.d||m.s!==e.s?m:NaN):e=new d(NaN),e;if(m.s!=e.s)return e.s=-e.s,m.plus(e);if(c=m.d,p=e.d,s=d.precision,u=d.rounding,!c[0]||!p[0]){if(p[0])e.s=-e.s;else{if(!c[0])return new d(3===u?-0:0);e=new d(m)}return h?R(e,s,u):e}if(r=x(e.e/O),f=x(m.e/O),c=c.slice(),a=f-r){for((l=a<0)?(t=c,a=-a,o=p.length):(t=p,r=f,o=c.length),a>(n=Math.max(Math.ceil(s/O),o)+2)&&(a=n,t.length=1),t.reverse(),n=a;n--;)t.push(0);t.reverse()}else{for((l=(n=c.length)<(o=p.length))&&(o=n),n=0;n0;--n)c[o++]=0;for(n=p.length;n>a;){if(c[--n](o=(a=Math.ceil(s/O))>o?a+1:o+1)&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for((o=c.length)-(i=f.length)<0&&(i=o,r=f,f=c,c=r),t=0;i;)t=(c[--i]=c[i]+f[i]+t)/A|0,c[i]%=A;for(t&&(c.unshift(t),++n),o=c.length;0==c[--o];)c.pop();return e.d=c,e.e=D(c,n),h?R(e,s,u):e},T.precision=T.sd=function(e){var t;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(g+e);return this.d?(t=L(this.d),e&&this.e+1>t&&(t=this.e+1)):t=NaN,t},T.round=function(){var e=this.constructor;return R(new e(this),this.e+1,e.rounding)},T.sine=T.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=function(e,t){var r,n=t.d.length;if(n<3)return Y(e,2,t,t);r=(r=1.4*Math.sqrt(n))>16?16:0|r,t=t.times(Math.pow(5,-r)),t=Y(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}(n,X(n,r)),n.precision=e,n.rounding=t,R(s>2?r.neg():r,e,t,!0)):new n(NaN)},T.squareRoot=T.sqrt=function(){var e,t,r,n,i,a,o=this.d,s=this.e,u=this.s,c=this.constructor;if(1!==u||!o||!o[0])return new c(!u||u<0&&(!o||o[0])?NaN:o?this:1/0);for(h=!1,0==(u=Math.sqrt(+this))||u==1/0?(((t=C(o)).length+s)%2==0&&(t+="0"),u=Math.sqrt(t),s=x((s+1)/2)-(s<0||s%2),n=new c(t=u==1/0?"1e"+s:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+s)):n=new c(u.toString()),r=(s=c.precision)+3;;)if(n=(a=n).plus(P(this,a,r+2,1)).times(.5),C(a.d).slice(0,r)===(t=C(n.d)).slice(0,r)){if("9999"!=(t=t.slice(r-3,r+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(R(n,s+1,1),e=!n.times(n).eq(this));break}if(!i&&(R(a,s+1,0),a.times(a).eq(this))){n=a;break}r+=4,i=1}return h=!0,R(n,s,c.rounding,e)},T.tangent=T.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,(r=r.sin()).s=1,r=P(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,R(2==s||4==s?r.neg():r,e,t,!0)):new n(NaN)},T.times=T.mul=function(e){var t,r,n,i,a,o,s,u,c,f=this.constructor,l=this.d,p=(e=new f(e)).d;if(e.s*=this.s,!(l&&l[0]&&p&&p[0]))return new f(!e.s||l&&!l[0]&&!p||p&&!p[0]&&!l?NaN:l&&p?0*e.s:e.s/0);for(r=x(this.e/O)+x(e.e/O),(u=l.length)<(c=p.length)&&(a=l,l=p,p=a,o=u,u=c,c=o),a=[],n=o=u+c;n--;)a.push(0);for(n=c;--n>=0;){for(t=0,i=u+n;i>n;)s=a[i]+p[n]*l[i-n-1]+t,a[i--]=s%A|0,t=s/A|0;a[i]=(a[i]+t)%A|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=D(a,r),h?R(e,f.precision,f.rounding):e},T.toBinary=function(e,t){return J(this,2,e,t)},T.toDecimalPlaces=T.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(z(e,0,c),void 0===t?t=n.rounding:z(t,0,8),R(r,e+r.e+1,t))},T.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=U(n,!0):(z(e,0,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(n),e+1,t),!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r},T.toFixed=function(e,t){var r,n,i=this.constructor;return void 0===e?r=U(this):(z(e,0,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(this),e+this.e+1,t),!1,e+n.e+1)),this.isNeg()&&!this.isZero()?"-"+r:r},T.toFraction=function(e){var t,r,n,i,a,o,s,u,c,f,l,p,m=this.d,d=this.constructor;if(!m)return new d(this);if(c=r=new d(1),o=(a=(t=new d(n=u=new d(0))).e=L(m)-this.e-1)%O,t.d[0]=w(10,o<0?O+o:o),null==e)e=a>0?t:c;else{if(!(s=new d(e)).isInt()||s.lt(c))throw Error(g+s);e=s.gt(t)?a>0?t:c:s}for(h=!1,s=new d(C(m)),f=d.precision,d.precision=a=m.length*O*2;l=P(s,t,0,1,1),1!=(i=r.plus(l.times(n))).cmp(e);)r=n,n=i,i=c,c=u.plus(l.times(i)),u=i,i=t,t=s.minus(l.times(i)),s=i;return i=P(e.minus(r),n,0,1,1),u=u.plus(i.times(c)),r=r.plus(i.times(n)),u.s=c.s=this.s,p=P(c,n,a,1).minus(this).abs().cmp(P(u,r,a,1).minus(this).abs())<1?[c,n]:[u,r],d.precision=f,h=!0,p},T.toHexadecimal=T.toHex=function(e,t){return J(this,16,e,t)},T.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),null==e){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),void 0!==t&&z(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(h=!1,t<4&&(t=[4,5,7,8][t]),r=P(r,e,0,t,1).times(e),h=!0,R(r)):(e.s=r.s,r=e),r},T.toNumber=function(){return+this},T.toOctal=function(e,t){return J(this,8,e,t)},T.toPower=T.pow=function(e){var t,r,n,i,a,o,s=this,u=s.constructor,c=+(e=new u(e));if(!(s.d&&e.d&&s.d[0]&&e.d[0]))return new u(w(+s,c));if((s=new u(s)).eq(1))return s;if(n=u.precision,a=u.rounding,e.eq(1))return R(s,n,a);if((t=x(e.e/O))>=e.d.length-1&&(r=c<0?-c:c)<=9007199254740991)return i=j(u,s,r,n),e.s<0?new u(1).div(i):R(i,n,a);if((o=s.s)<0){if(tu.maxE+1||t0?o/0:0):(h=!1,u.rounding=s.s=1,r=Math.min(12,(t+"").length),(i=G(e.times(V(s,n+r)),n)).d&&B((i=R(i,n+5,1)).d,n,a)&&(t=n+10,+C((i=R(G(e.times(V(s,t+r)),t),t+5,1)).d).slice(n+1,n+15)+1==1e14&&(i=R(i,n+1,0))),i.s=o,h=!0,u.rounding=a,R(i,n,a))},T.toPrecision=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=U(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(z(e,1,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(n),e,t),e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r},T.toSignificantDigits=T.toSD=function(e,t){var r=this.constructor;return void 0===e?(e=r.precision,t=r.rounding):(z(e,1,c),void 0===t?t=r.rounding:z(t,0,8)),R(new r(this),e,t)},T.toString=function(){var e=this.constructor,t=U(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()&&!this.isZero()?"-"+t:t},T.truncated=T.trunc=function(){return R(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){var e=this.constructor,t=U(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()?"-"+t:t};var P=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;)e.shift()}return function(n,i,a,s,u,c){var f,l,p,m,h,d,g,y,v,w,b,N,M,E,S,_,T,C,z,B,I=n.constructor,P=n.s==i.s?1:-1,U=n.d,D=i.d;if(!(U&&U[0]&&D&&D[0]))return new I(n.s&&i.s&&(U?!D||U[0]!=D[0]:D)?U&&0==U[0]||!D?0*P:P/0:NaN);for(c?(h=1,l=n.e-i.e):(c=A,h=O,l=x(n.e/h)-x(i.e/h)),z=D.length,T=U.length,w=(v=new I(P)).d=[],p=0;D[p]==(U[p]||0);p++);if(D[p]>(U[p]||0)&&l--,null==a?(E=a=I.precision,s=I.rounding):E=u?a+(n.e-i.e)+1:a,E<0)w.push(1),d=!0;else{if(E=E/h+2|0,p=0,1==z){for(m=0,D=D[0],E++;(p1&&(D=e(D,m,c),U=e(U,m,c),z=D.length,T=U.length),_=z,N=(b=U.slice(0,z)).length;N=c/2&&++C;m=0,(f=t(D,b,z,N))<0?(M=b[0],z!=N&&(M=M*c+(b[1]||0)),(m=M/C|0)>1?(m>=c&&(m=c-1),1==(f=t(g=e(D,m,c),b,y=g.length,N=b.length))&&(m--,r(g,z=10;m/=10)p++;v.e=p+l*h-1,R(v,u?a+v.e+1:a,s,d)}return v}}();function R(e,t,r,n){var i,a,o,s,u,c,f,l,p,m=e.constructor;e:if(null!=t){if(!(l=e.d))return e;for(i=1,s=l[0];s>=10;s/=10)i++;if((a=t-i)<0)a+=O,o=t,u=(f=l[p=0])/w(10,i-o-1)%10|0;else if((p=Math.ceil((a+1)/O))>=(s=l.length)){if(!n)break e;for(;s++<=p;)l.push(0);f=u=0,i=1,o=(a%=O)-O+1}else{for(f=s=l[p],i=1;s>=10;s/=10)i++;u=(o=(a%=O)-O+i)<0?0:f/w(10,i-o-1)%10|0}if(n=n||t<0||void 0!==l[p+1]||(o<0?f:f%w(10,i-o-1)),c=r<4?(u||n)&&(0==r||r==(e.s<0?3:2)):u>5||5==u&&(4==r||n||6==r&&(a>0?o>0?f/w(10,i-o):0:l[p-1])%10&1||r==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=w(10,(O-t%O)%O),e.e=-t||0):l[0]=e.e=0,e;if(0==a?(l.length=p,s=1,p--):(l.length=p+1,s=w(10,O-a),l[p]=o>0?(f/w(10,i-o)%w(10,o)|0)*s:0),c)for(;;){if(0==p){for(a=1,o=l[0];o>=10;o/=10)a++;for(o=l[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,l[0]==A&&(l[0]=1));break}if(l[p]+=s,l[p]!=A)break;l[p--]=0,s=1}for(a=l.length;0===l[--a];)l.pop()}return h&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e0?a=a.charAt(0)+"."+a.slice(1)+F(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(e.e<0?"e":"e+")+e.e):i<0?(a="0."+F(-i-1)+a,r&&(n=r-o)>0&&(a+=F(n))):i>=o?(a+=F(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+F(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=F(n))),a}function D(e,t){var r=e[0];for(t*=O;r>=10;r/=10)t++;return t}function k(e,t,r){if(t>S)throw h=!0,r&&(e.precision=r),Error(y);return R(new e(l),t,1,!0)}function q(e,t,r){if(t>_)throw Error(y);return R(new e(p),t,r,!0)}function L(e){var t=e.length-1,r=t*O+1;if(t=e[t]){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function F(e){for(var t="";e--;)t+="0";return t}function j(e,t,r,n){var i,a=new e(1),o=Math.ceil(n/O+4);for(h=!1;;){if(r%2&&Q((a=a.times(t)).d,o)&&(i=!0),0===(r=x(r/2))){r=a.d.length-1,i&&0===a.d[r]&&++a.d[r];break}Q((t=t.times(t)).d,o)}return h=!0,a}function H(e){return 1&e.d[e.d.length-1]}function $(e,t,r){for(var n,i=new e(t[0]),a=0;++a17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(h=!1,u=d):u=t,s=new p(.03125);e.e>-2;)e=e.times(s),l+=5;for(u+=n=Math.log(w(2,l))/Math.LN10*2+5|0,r=a=o=new p(1),p.precision=u;;){if(a=R(a.times(e),u,1),r=r.times(++f),C((s=o.plus(P(a,r,u,1))).d).slice(0,u)===C(o.d).slice(0,u)){for(i=l;i--;)o=R(o.times(o),u,1);if(null!=t)return p.precision=d,o;if(!(c<3&&B(o.d,u-n,m,c)))return R(o,p.precision=d,m,h=!0);p.precision=u+=10,r=a=s=new p(1),f=0,c++}o=s}}function V(e,t){var r,n,i,a,o,s,u,c,f,l,p,m=1,d=e,g=d.d,y=d.constructor,v=y.rounding,x=y.precision;if(d.s<0||!g||!g[0]||!d.e&&1==g[0]&&1==g.length)return new y(g&&!g[0]?-1/0:1!=d.s?NaN:g?0:d);if(null==t?(h=!1,f=x):f=t,y.precision=f+=10,n=(r=C(g)).charAt(0),!(Math.abs(a=d.e)<15e14))return c=k(y,f+2,x).times(a+""),d=V(new y(n+"."+r.slice(1)),f-10).plus(c),y.precision=x,null==t?R(d,x,v,h=!0):d;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=C((d=d.times(e)).d)).charAt(0),m++;for(a=d.e,n>1?(d=new y("0."+r),a++):d=new y(n+"."+r.slice(1)),l=d,u=o=d=P(d.minus(1),d.plus(1),f,1),p=R(d.times(d),f,1),i=3;;){if(o=R(o.times(p),f,1),C((c=u.plus(P(o,new y(i),f,1))).d).slice(0,f)===C(u.d).slice(0,f)){if(u=u.times(2),0!==a&&(u=u.plus(k(y,f+2,x).times(a+""))),u=P(u,new y(m),f,1),null!=t)return y.precision=x,u;if(!B(u.d,f-10,v,s))return R(u,y.precision=x,v,h=!0);y.precision=f+=10,c=o=d=P(l.minus(1),l.plus(1),f,1),p=R(d.times(d),f,1),i=s=1}u=c,i+=2}}function Z(e){return String(e.s*e.s/0)}function W(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);n++);for(i=t.length;48===t.charCodeAt(i-1);--i);if(t=t.slice(n,i)){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%O,r<0&&(n+=O),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e=0&&(m=m.replace(".",""),(d=new g(1)).e=m.length-s,d.d=I(U(d),10,i),d.e=d.d.length),a=l=(h=I(m,10,i)).length;0==h[--l];)h.pop();if(h[0]){if(s<0?a--:((e=new g(e)).d=h,e.e=a,h=(e=P(e,d,r,n,0,i)).d,a=e.e,p=o),s=h[r],u=i/2,p=p||void 0!==h[r+1],p=n<4?(void 0!==s||p)&&(0===n||n===(e.s<0?3:2)):s>u||s===u&&(4===n||p||6===n&&1&h[r-1]||n===(e.s<0?8:7)),h.length=r,p)for(;++h[--r]>i-1;)h[r]=0,r||(++a,h.unshift(1));for(l=h.length;!h[l-1];--l);for(s=0,m="";s1)if(16==t||8==t){for(s=16==t?4:3,--l;l%s;l++)m+="0";for(l=(h=I(m,i,t)).length;!h[l-1];--l);for(s=1,m="1.";sl)for(a-=l;a--;)m+="0";else at)return e.length=t,!0}function K(e){return new this(e).abs()}function ee(e){return new this(e).acos()}function te(e){return new this(e).acosh()}function re(e,t){return new this(e).plus(t)}function ne(e){return new this(e).asin()}function ie(e){return new this(e).asinh()}function ae(e){return new this(e).atan()}function oe(e){return new this(e).atanh()}function se(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,a=n+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(r=t.s<0?q(this,n,i):new this(0)).s=e.s:!e.d||t.isZero()?(r=q(this,a,1).times(.5)).s=e.s:t.s<0?(this.precision=a,this.rounding=1,r=this.atan(P(e,t,a,1)),t=q(this,a,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(P(e,t,a,1)):(r=q(this,a,1).times(t.s>0?.25:.75)).s=e.s:r=new this(NaN),r}function ue(e){return new this(e).cbrt()}function ce(e){return R(e=new this(e),e.e+1,2)}function fe(e){if(!e||"object"!=typeof e)throw Error(d+"Object expected");var t,r,n,i=!0===e.defaults,a=["precision",1,c,"rounding",0,8,"toExpNeg",-u,0,"toExpPos",0,u,"maxE",0,u,"minE",-u,0,"modulo",0,9];for(t=0;t=a[t+1]&&n<=a[t+2]))throw Error(g+r+": "+n);this[r]=n}if(r="crypto",i&&(this[r]=m[r]),void 0!==(n=e[r])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(g+r+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(v);this[r]=!0}else this[r]=!1}return this}function le(e){return new this(e).cos()}function pe(e){return new this(e).cosh()}function me(e,t){return new this(e).div(t)}function he(e){return new this(e).exp()}function de(e){return R(e=new this(e),e.e+1,3)}function ge(){var e,t,r=new this(0);for(h=!1,e=0;e=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else{if(!crypto.randomBytes)throw Error(v);for(t=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=n/4}else for(;a=10;i/=10)n++;n=10;r/=10)t++;return i.e=t,void(i.d=[e])}return 0*e!=0?(e||(i.s=NaN),i.e=NaN,void(i.d=null)):W(i,e.toString())}if("string"!==n)throw Error(g+e);return 45===e.charCodeAt(0)?(e=e.slice(1),i.s=-1):i.s=1,E.test(e)?W(i,e):function(e,t){var r,n,i,o,s,u,c,f,l;if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(N.test(t))r=16,t=t.toLowerCase();else if(b.test(t))r=2;else{if(!M.test(t))throw Error(g+t);r=8}for((o=t.search(/p/i))>0?(c=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),s=(o=t.indexOf("."))>=0,n=e.constructor,s&&(o=(u=(t=t.replace(".","")).length)-o,i=j(n,new n(r),o,2*o)),o=l=(f=I(t,r,A)).length-1;0===f[o];--o)f.pop();return o<0?new n(0*e.s):(e.e=D(f,l),e.d=f,h=!1,s&&(e=P(e,i,4*u)),c&&(e=e.times(Math.abs(c)<54?Math.pow(2,c):a.pow(2,c))),h=!0,e)}(i,e)}if(o.prototype=T,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=fe,o.clone=e,o.isDecimal=ye,o.abs=K,o.acos=ee,o.acosh=te,o.add=re,o.asin=ne,o.asinh=ie,o.atan=ae,o.atanh=oe,o.atan2=se,o.cbrt=ue,o.ceil=ce,o.cos=le,o.cosh=pe,o.div=me,o.exp=he,o.floor=de,o.hypot=ge,o.ln=ve,o.log=xe,o.log10=be,o.log2=we,o.max=Ne,o.min=Me,o.mod=Ee,o.mul=Ae,o.pow=Oe,o.random=Se,o.round=_e,o.sign=Te,o.sin=Ce,o.sinh=ze,o.sqrt=Be,o.sub=Ie,o.tan=Pe,o.tanh=Re,o.trunc=Ue,void 0===t&&(t={}),t&&!0!==t.defaults)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r")}(e,t,0)},t.validateIndex=function(e,t){if(!n.isNumber(e)||!n.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(e<0||"number"==typeof t&&e>=t)throw new o(e,t)},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");return t.forEach(function(e){if(!n.isNumber(e)||!n.isInteger(e)||e<0)throw new TypeError("Invalid size, must contain positive integers (size: "+i.format(t)+")")}),function e(t,r,n,i){var a;var o;var s=t.length;var u=r[n];var c=Math.min(s,u);t.length=u;if(n0?1:e<0?-1:0},t.format=function(e,r){if("function"==typeof r)return r(e);if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"engineering":return t.toEngineering(e,i);case"auto":if(r&&r.exponential&&(void 0!==r.exponential.lower||void 0!==r.exponential.upper)){var a=Object.assign({},r);return a.exponential=void 0,void 0!==r.exponential.lower&&(a.lowerExp=Math.round(Math.log(r.exponential.lower)/Math.LN10)),void 0!==r.exponential.upper&&(a.upperExp=Math.round(Math.log(r.exponential.upper)/Math.LN10)),console.warn("Deprecation warning: Formatting options exponential.lower and exponential.upper (minimum and maximum value) are replaced with exponential.lowerExp and exponential.upperExp (minimum and maximum exponent) since version 4.0.0. Replace "+JSON.stringify(r)+" with "+JSON.stringify(a)),t.toPrecision(e,i,a)}return t.toPrecision(e,i,r&&r).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.splitNumber=function(e){var t=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),a=n.indexOf(".");i+=-1!==a?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)});return 0===o.length&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}},t.toEngineering=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.roundDigits(t.splitNumber(e),r),a=i.exponent,o=i.coefficients,s=a%3==0?a:a<0?a-3-a%3:a-a%3,u=a>=0?a:Math.abs(s);o.length-1=0;)f++;var l=o.slice(f).join(""),p=l.match(/[1-9]/)?"."+l:"",m=o.slice(0,f).join("")+p+"e"+(a>=0?"+":"")+s.toString();return i.sign+m},t.toFixed=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.splitNumber(e),a="number"==typeof r?t.roundDigits(i,i.exponent+1+r):i,o=a.coefficients,s=a.exponent+1,u=s+(r||0);return o.length0?"."+o.join(""):"")+"e"+(s>=0?"+":"")+s},t.toPrecision=function(e,r,i){if(isNaN(e)||!isFinite(e))return String(e);var a=i&&void 0!==i.lowerExp?i.lowerExp:-3,o=i&&void 0!==i.upperExp?i.upperExp:5,s=t.splitNumber(e);if(s.exponent=o)return t.toExponential(e,r);var u=r?t.roundDigits(s,r):s,c=u.coefficients,f=u.exponent;c.length0?f:0;return l<(c=n(-f).concat(c)).length-1&&c.splice(l+1,0,"."),u.sign+c.join("")},t.roundDigits=function(e,t){for(var r={sign:e.sign,coefficients:e.coefficients,exponent:e.exponent},n=r.coefficients;t<=0;)n.unshift(0),r.exponent++,t++;if(n.length>t&&n.splice(t,n.length-t)[0]>=5){var i=t-1;for(n[i]++;10===n[i];)n.pop(),0===i&&(n.unshift(0),r.exponent++,i++),n[--i]++}return r},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var i={deg:"^\\circ"};t.escape=function(e){return n(e,{preserveFormatting:!0})},t.toSymbol=function(e,r){return(r=void 0!==r&&r)?i.hasOwnProperty(e)?i[e]:"\\mathrm{"+t.escape(e)+"}":t.symbols.hasOwnProperty(e)?t.symbols[e]:t.escape(e)}},function(e,t,r){"use strict";var n=r(72);t.clone=function e(r){var i=typeof r;if("number"===i||"string"===i||"boolean"===i||null==r)return r;if("function"==typeof r.clone)return r.clone();if(Array.isArray(r))return r.map(function(t){return e(t)});if(r instanceof Number)return new Number(r.valueOf());if(r instanceof String)return new String(r.valueOf());if(r instanceof Boolean)return new Boolean(r.valueOf());if(r instanceof Date)return new Date(r.valueOf());if(n(r))return r;if(r instanceof RegExp)throw new TypeError("Cannot clone "+r);return t.map(r,e)},t.map=function(e,r){var n={};for(var i in e)t.hasOwnProperty(e,i)&&(n[i]=r(e[i]));return n},t.extend=function(e,r){for(var n in r)t.hasOwnProperty(r,n)&&(e[n]=r[n]);return e},t.deepExtend=function e(r,n){if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var i in n)if(t.hasOwnProperty(n,i))if(n[i]&&n[i].constructor===Object)void 0===r[i]&&(r[i]={}),r[i].constructor===Object?e(r[i],n[i]):r[i]=n[i];else{if(Array.isArray(n[i]))throw new TypeError("Arrays are not supported by deepExtend");r[i]=n[i]}return r},t.deepEqual=function(e,r){var n,i,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;i0?o(p,0,f,f[0],c,t,s):[];return new a({data:m,size:n(f),datatype:u})}}},function(e,t,r){"use strict";var n=r(24),i=r(10);n.string.isString;t.name="algorithm13",t.factory=function(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,n,i,a){var s=[];if(t===r.length-1)for(var u=0;u0?o(g,0,h,h[0],u,l):[];return new a({data:y,size:h,datatype:s})}}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.factory=function(e,t,r,a){var o=a("equalScalar",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.eq(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return e.equals(t)},"Complex, Complex":function(e,t){return e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return o(e.value,t.value)}});return o}},function(e,t,r){"use strict";var n=r(3).format,i=r(166).format,a=r(72);t.isString=function(e){return"string"==typeof e},t.endsWith=function(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t},t.format=function(e,r){if("number"==typeof e)return n(e,r);if(a(e))return i(e,r);if((o=e)&&"object"==typeof o&&"number"==typeof o.s&&"number"==typeof o.n&&"number"==typeof o.d)return r&&"decimal"===r.fraction?e.toString():e.s*e.n+"/"+e.d;var o;if(Array.isArray(e))return function e(r,n){{if(Array.isArray(r)){for(var i="[",a=r.length,o=0;o/g,">")}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",n.prototype.isDimensionError=!0,e.exports=n},function(e,t,r){"use strict";var n=r(5).extend,i=r(2);t.name="multiply",t.factory=function(e,t,a,o){var s=r(4),u=a(r(1)),c=a(r(16)),f=a(r(21)),l=a(r(8)),p=a(r(20)),m=a(r(6)),h=e.DenseMatrix,d=e.SparseMatrix,g=o("multiply",n({"Array, Array":function(t,r){y(i.size(t),i.size(r));var n=g(u(t),u(r));return e.isMatrix(n)?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return y(r,n),1===r.length?1===n.length?v(e,t,r[0]):x(e,t):1===n.length?b(e,t):N(e,t)},"Matrix, Array":function(e,t){return g(e,u(t))},"Array, Matrix":function(e,t){return g(u(e,t.storage()),t)},"SparseMatrix, any":function(e,t){return p(e,t,f,!1)},"DenseMatrix, any":function(e,t){return m(e,t,f,!1)},"any, SparseMatrix":function(e,t){return p(t,e,f,!0)},"any, DenseMatrix":function(e,t){return m(t,e,f,!0)},"Array, any":function(e,t){return m(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,f,!0).valueOf()},"any, any":f,"any, any, ...any":function(e,t,r){for(var n=g(e,t),i=0;iS)for(var T=0,C=0;Cu)for(f=u-1,o=c.length;f0?1:-1:n(p,m);if("Array"===p||"Matrix"===p||"Array"===m||"Matrix"===m)return 0!==(i=function t(r,n){return e.isSparseMatrix(r)&&e.isSparseMatrix(n)?f(r.toJSON().values,n.toJSON().values):e.isSparseMatrix(r)?t(r.toArray(),n):e.isSparseMatrix(n)?t(r,n.toArray()):e.isDenseMatrix(r)?t(r.toJSON().data,n):e.isDenseMatrix(n)?t(r,n.toJSON().data):Array.isArray(r)?Array.isArray(n)?f(r,n):t(r,[n]):t([r],n)}(t,r))?i:n(p,m);if(p!==m)return n(p,m);if("Complex"===p)return l=r,(a=t).re>l.re?1:a.rel.im?1:a.imt.length?1:e.lengtht},"number, number":function(e,r){return e>r&&!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gt(r)&&!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,h)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return p(e,t,h,!1)},"any, SparseMatrix":function(e,t){return f(t,e,h,!0)},"any, DenseMatrix":function(e,t){return p(t,e,h,!0)},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+m.operators.larger+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";var n=r(0);t.name="unaryMinus",t.factory=function(e,t,i,a){var o=r(4),s=a("unaryMinus",{number:function(e){return-e},Complex:function(e){return e.neg()},BigNumber:function(e){return e.neg()},Fraction:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=s(e.value),t},"Array | Matrix":function(e){return n(e,s,!0)}});return s.toTex={1:o.operators.unaryMinus+"\\left(${args[0]}\\right)"},s}},function(e,t,r){t.factory=function(e,t,n,i){var a=n(r(47));return function(e,t,r){var n;return-1!==String(e).indexOf("Unexpected type")?(n=arguments.length>2?" (type: "+a(r)+", value: "+JSON.stringify(r)+")":" (type: "+e.data.actual+")",new TypeError("Cannot calculate "+t+", unexpected type of argument"+n)):-1!==String(e).indexOf("complex numbers")?(n=arguments.length>2?" (type: "+a(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+t+", no ordering relation is defined for complex numbers"+n)):e}}},function(e,t,r){"use strict";e.exports=function(e,t,r){if(null==r)return e.eq(t);if(e.eq(t))return!0;if(e.isNaN()||t.isNaN())return!1;if(e.isFinite()&&t.isFinite()){var n=e.minus(t).abs();if(n.isZero())return!0;var i=e.constructor.max(e.abs(),t.abs());return n.lte(i.times(r))}return!1}},function(e,t,r){"use strict";t.name="algorithm10",t.factory=function(e,t,r,n){var i=e.DenseMatrix;return function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],m=c[1],h=r;"string"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var d=[],g=new i({data:d,size:[p,m],datatype:l}),y=[],v=[],x=0;x=0||t.predictable?r.pow(n):new e.Complex(r.toNumber(),0).pow(n.toNumber(),0)},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return h(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":d,"Array, BigNumber":function(e,t){return d(e,t.toNumber())},"Matrix, number":g,"Matrix, BigNumber":function(e,t){return g(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});function h(r,i){if(t.predictable&&!n(i)&&r<0)try{var a=l(i),o=p(a);if((i===o||Math.abs((i-o)/i)<1e-14)&&a.d%2==1)return(a.n%2==0?1:-1)*Math.pow(-r,i)}catch(e){}return r*r<1&&i===1/0||r*r>1&&i===-1/0?0:t.predictable&&(r<-1&&i===1/0||r>-1&&r<0&&i===-1/0)?NaN:n(i)||r>=0||t.predictable?Math.pow(r,i):new e.Complex(r,0).pow(i,0)}function d(e,t){if(!n(t)||t<0)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=i(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var a=u(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(a=c(o,a)),t>>=1,o=c(o,o);return a}function g(e,t){return f(d(e.valueOf(),t))}return m.toTex={2:"\\left(${args[0]}\\right)"+s.operators.pow+"{${args[1]}}"},m}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(2).resize;t.name="zeros",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("zeros",{"":function(){return"Array"===t.matrix?c([]):c([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?c(e,e.pop()):"Array"===t.matrix?c(e):c(e,"default")},Array:c,Matrix:function(e){var t=e.storage();return c(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return c(e.valueOf(),t)}});return u.toTex=void 0,u;function c(t,r){var a,o=(a=!1,t.forEach(function(t,r,n){e.isBigNumber(t)&&(a=!0,n[r]=t.toNumber())}),a?new e.BigNumber(0):0);if(t.forEach(function(e){if("number"!=typeof e||!n(e)||e<0)throw new Error("Parameters in function zeros must be positive integers")}),r){var u=s(r);return t.length>0?u.resize(t,o):u}var c=[];return t.length>0?i(c,t,o):c}}},function(e,t,r){"use strict";var n=r(44),i=r(0);t.name="parse",t.path="expression",t.factory=function(e,t,a,o){var s=a(r(99)),u=a(r(100)),c=a(r(103)),f=a(r(104)),l=a(r(105)),p=a(r(106)),m=a(r(56)),h=a(r(107)),d=a(r(76)),g=a(r(108)),y=a(r(57)),v=a(r(64)),x=a(r(65)),w=a(r(109)),b=a(r(48));function N(t,r){if(1!==arguments.length&&2!==arguments.length)throw new n("parse",arguments.length,1,2);if(_=r&&r.nodes?r.nodes:{},"string"==typeof t)return T=t,Z();if(Array.isArray(t)||t instanceof e.Matrix)return i(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return T=e,Z()});throw new TypeError("String or matrix expected")}var M={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},E={",":!0,"(":!0,")":!0,"[":!0,"]":!0,"{":!0,"}":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},A={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},O={true:!0,false:!1,null:null,undefined:void 0},S=["NaN","Infinity"],_={},T="",C="",z=0,B="",I="",P=M.NULL,R=0,U=null,D=[];function k(){z++,B=T.charAt(z)}function q(){return T.charAt(z-1)}function L(){return T.charAt(z+1)}function F(){D.push({token_type:P,token:I,comment:C,index:z,c:B})}function j(){var e=D.pop();P=e.token_type,I=e.token,C=e.comment,z=e.index,B=e.c}function H(){for(P=M.NULL,I="",C="";N.isWhitespace(B,R);)k();if("#"===B)for(;"\n"!==B&&""!==B;)C+=B,k();if(""!==B){if("\n"===B&&!R)return P=M.DELIMITER,I=B,void k();var e=B+L(),t=e+T.charAt(z+2);if(3===t.length&&E[t])return P=M.DELIMITER,I=t,k(),k(),void k();if(2===e.length&&E[e])return P=M.DELIMITER,I=e,k(),void k();if(E[B])return P=M.DELIMITER,I=B,void k();if(N.isDigitDot(B)){if(P=M.NUMBER,"."===B)I+=B,k(),N.isDigit(B)||(P=M.DELIMITER);else{for(;N.isDigit(B);)I+=B,k();N.isDecimalMark(B,L())&&(I+=B,k())}for(;N.isDigit(B);)I+=B,k();if(e=L(),"E"===B||"e"===B)if(N.isDigit(e)||"-"===e||"+"===e){if(I+=B,k(),"+"!==B&&"-"!==B||(I+=B,k()),!N.isDigit(B))throw me('Digit expected, got "'+B+'"');for(;N.isDigit(B);)I+=B,k();if(N.isDecimalMark(B,L()))throw me('Digit expected, got "'+B+'"')}else if("."===e)throw k(),me('Digit expected, got "'+B+'"')}else{if(!N.isAlpha(B,q(),L())){for(P=M.UNKNOWN;""!==B;)I+=B,k();throw me('Syntax error in part "'+I+'"')}for(;N.isAlpha(B,q(),L())||N.isDigit(B);)I+=B,k();P=A.hasOwnProperty(I)?M.DELIMITER:M.SYMBOL}}else P=M.DELIMITER}function $(){for(;H(),"\n"===I;);}function G(){R++}function V(){R--}function Z(){z=0,B=T.charAt(0),R=0,U=null,H();var e=function(){var e,t,r=[];for(""!==I&&"\n"!==I&&";"!==I&&((e=W()).comment=C);"\n"===I||";"===I;)0===r.length&&e&&(t=";"!==I,r.push({node:e,visible:t})),H(),"\n"!==I&&";"!==I&&""!==I&&((e=W()).comment=C,t=";"!==I,r.push({node:e,visible:t}));return r.length>0?new l(r):(e||((e=new m(void 0)).comment=C),e)}();if(""!==I)throw P===M.DELIMITER?he("Unexpected operator "+I):me('Unexpected part "'+I+'"');return e}function W(){var t,r,n,i,a=function(){for(var e=function(){for(var e=Y();"or"===I;)$(),e=new y("or","or",[e,Y()]);return e}();"?"===I;){var t=U;U=R,$();var r=e,n=W();if(":"!==I)throw me("False part of conditional expression expected");U=null,$();var i=W();e=new p(r,n,i),U=t}return e}();if("="===I){if(e.isSymbolNode(a))return t=a.name,$(),n=W(),new f(new b(t),n);if(e.isAccessorNode(a))return $(),n=W(),new f(a.object,a.index,n);if(e.isFunctionNode(a)&&e.isSymbolNode(a.fn)&&(i=!0,r=[],t=a.name,a.args.forEach(function(t,n){e.isSymbolNode(t)?r[n]=t.name:i=!1}),i))return $(),n=W(),new h(t,r,n);throw me("Invalid left hand side of assignment operator =")}return a}function Y(){for(var e=X();"xor"===I;)$(),e=new y("xor","xor",[e,X()]);return e}function X(){for(var e=J();"and"===I;)$(),e=new y("and","and",[e,J()]);return e}function J(){for(var e=Q();"|"===I;)$(),e=new y("|","bitOr",[e,Q()]);return e}function Q(){for(var e=K();"^|"===I;)$(),e=new y("^|","bitXor",[e,K()]);return e}function K(){for(var e=ee();"&"===I;)$(),e=new y("&","bitAnd",[e,ee()]);return e}function ee(){var e,t,r,n,i;for(e=te(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,te()],e=new y(r,n,i);return e}function te(){var e,t,r,n,i;for(e=re(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,re()],e=new y(r,n,i);return e}function re(){var e,t,r,n,i;for(e=ne(),t={to:"to",in:"to"};t.hasOwnProperty(I);)n=t[r=I],$(),"in"===r&&""===I?e=new y("*","multiply",[e,new b("in")],!0):(i=[e,ne()],e=new y(r,n,i));return e}function ne(){var e,t=[];if(e=":"===I?new m(1):ie(),":"===I&&U!==R){for(t.push(e);":"===I&&t.length<3;)$(),")"===I||"]"===I||","===I||""===I?t.push(new b("end")):t.push(ie());e=3===t.length?new w(t[0],t[2],t[1]):new w(t[0],t[1])}return e}function ie(){var e,t,r,n,i;for(e=ae(),t={"+":"add","-":"subtract"};t.hasOwnProperty(I);)n=t[r=I],$(),i=[e,ae()],e=new y(r,n,i);return e}function ae(){var e,t,r,n,i;for(t=e=oe(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};r.hasOwnProperty(I);)i=r[n=I],$(),t=oe(),e=new y(n,i,[e,t]);return e}function oe(){var t,r;for(r=t=se();P===M.SYMBOL||"in"===I&&e.isConstantNode(t)||!(P!==M.NUMBER||e.isConstantNode(r)||e.isOperatorNode(r)&&"!"!==r.op)||"("===I;)r=se(),t=new y("*","multiply",[t,r],!0);return t}function se(){var t,r;for(r=t=ue();"/"===I&&e.isConstantNode(r);){if(F(),$(),P!==M.NUMBER){j();break}if(F(),$(),P!==M.SYMBOL&&"("!==I){j(),j();break}j(),D.pop(),r=ue(),t=new y("/","divide",[t,r])}return t}function ue(){var e,r,n,i,a,o,u,f={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return f.hasOwnProperty(I)?(n=f[I],e=I,$(),r=[ue()],new y(e,n,r)):(i=function(){var e,r,n,i;for(e=function(){var e,r,n=[];if(P===M.SYMBOL&&_.hasOwnProperty(I)){var i=_[I];if(H(),"("===I){if(n=[],G(),H(),")"!==I)for(n.push(W());","===I;)H(),n.push(W());if(")"!==I)throw me("Parenthesis ) expected");V(),H()}return new i(n)}return P===M.SYMBOL||P===M.DELIMITER&&I in A?(e=I,H(),ce(O.hasOwnProperty(e)?new m(O[e]):-1!==S.indexOf(e)?new m(s(e)):new b(e))):'"'===I?(r=fe(),ce(new m(r))):function(){var e,r,n,i;if("["===I){if(G(),H(),"]"!==I){var a=le();if(";"===I){for(n=1,r=[a];";"===I;)H(),r[n]=le(),n++;if("]"!==I)throw me("End of matrix ] expected");V(),H(),i=r[0].items.length;for(var o=1;o0},N.isDecimalMark=function(e,t){return"."===e&&"/"!==t&&"*"!==t&&"^"!==t},N.isDigitDot=function(e){return e>="0"&&e<="9"||"."===e},N.isDigit=function(e){return e>="0"&&e<="9"},N}},function(e,t,r){var n=r(53);t.transform=function(e){return e&&e.isIndexError?new n(e.index+1,e.min+1,void 0!==e.max?e.max+1:void 0):e}},function(e,t,r){"use strict";var n=r(61);e.exports=function e(t,r){n(t)&&(t=t.valueOf());for(var i=0,a=t.length;i");var h=r.max().map(function(e){return e+1});v(t,h,a);var d=c.length;!function e(t,r,n,i,a){var o=a===i-1,s=r.dimension(a);o?s.forEach(function(e,r){m(e),t[e]=n[r[0]]}):s.forEach(function(o,s){m(o),e(t[o],r,n[s[0]],i,a+1)})}(t._data,r,n,d,0)}return t}(this,t,r,n);default:throw new SyntaxError("Wrong number of arguments")}},g.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);for(var t=0;tn[a]&&(n[a]=t[a],i=!0);i&&y(e,n,r)}return g.prototype.reshape=function(e,t){var r=t?this.clone():this;return r._data=o.reshape(r._data,e),r._size=e.slice(0),r},g.prototype.clone=function(){return new g({data:s.clone(this._data),size:s.clone(this._size),datatype:this._datatype})},g.prototype.size=function(){return this._size.slice(0)},g.prototype.map=function(e){var t=this,r=function(n,i){return c(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new g({data:r(this._data,[]),size:s.clone(this._size),datatype:this._datatype})},g.prototype.forEach=function(e){var t=this,r=function(n,i){c(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},g.prototype.toArray=function(){return s.clone(this._data)},g.prototype.valueOf=function(){return this._data},g.prototype.format=function(e){return a.format(this._data,e)},g.prototype.toString=function(){return a.format(this._data)},g.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!f(t)||!l(t))throw new TypeError("The parameter k must be an integer number")}else t=0;for(var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=0;u0?n:0,m=n<0?-n:0,d=t[0],y=t[1],v=Math.min(d-m,y-u);if(c(r)){if(r.length!==v)throw new Error("Invalid value array length");s=function(e){return r[e]}}else if(e.isMatrix(r)){var x=r.size();if(1!==x.length||x[0]!==v)throw new Error("Invalid matrix length");s=function(e){return r.get([e])}}else s=function(){return r};i||(i=e.isBigNumber(s(0))?new e.BigNumber(0):0);var w=[];if(t.length>0){w=o.resize(w,t,i);for(var b=0;b'+t+"":"i"==t?''+t+"":"Infinity"==t?''+t+"":"NaN"==t?''+t+"":"null"==t?''+t+"":"undefined"==t?''+t+"":''+t+""},p.prototype._toTex=function(e){var t=!1;void 0===c[this.name]&&l(this.name)&&(t=!0);var r=n.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},p}},function(e,t,r){"use strict";var n=r(61);e.exports=function(e){return Array.isArray(e)||n(e)}},function(e,t,r){"use strict";var n=r(0);t.name="sqrt",t.factory=function(e,t,r,i){var a=i("sqrt",{number:o,Complex:function(e){return e.sqrt()},BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():o(e.toNumber())},"Array | Matrix":function(e){return n(e,a,!0)},Unit:function(e){return e.pow(.5)}});function o(r){return r>=0||t.predictable?Math.sqrt(r):new e.Complex(r,0).sqrt()}return a.toTex={1:"\\sqrt{${args[0]}}"},a}},function(e,t,r){"use strict";var n=r(0),i=r(3);t.name="isInteger",t.factory=function(e,t,r,a){var o=a("isInteger",{number:i.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return n(e,o)}});return o}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="compare",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(62)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(r,n){return r.eq(n)||i(r,n,t.epsilon)?new e.BigNumber(0):new e.BigNumber(r.cmp(n))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,m)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,m,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,m,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,m)},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,m,!1)},"DenseMatrix, any":function(e,t){return p(e,t,m,!1)},"any, SparseMatrix":function(e,t){return f(t,e,m,!0)},"any, DenseMatrix":function(e,t){return p(t,e,m,!0)},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex=void 0,m}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="IndexError",n.prototype.isIndexError=!0,e.exports=n},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNumeric",t.factory=function(e,t,r,i){var a=i("isNumeric",{"number | BigNumber | Fraction | boolean":function(){return!0},"Complex | Unit | string":function(){return!1},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{associativity:"left",associativeWith:[]}},{"OperatorNode:and":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{associativity:"left",associativeWith:[]},"OperatorNode:unequal":{associativity:"left",associativeWith:[]},"OperatorNode:smaller":{associativity:"left",associativeWith:[]},"OperatorNode:larger":{associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{associativity:"left",associativeWith:[]}},{"OperatorNode:to":{associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{associativity:"left",associativeWith:[]},"OperatorNode:mod":{associativity:"left",associativeWith:[]}},{"OperatorNode:unaryPlus":{associativity:"right"},"OperatorNode:unaryMinus":{associativity:"right"},"OperatorNode:bitNot":{associativity:"right"},"OperatorNode:not":{associativity:"right"}},{"OperatorNode:pow":{associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{associativity:"left"}},{"OperatorNode:transpose":{associativity:"left"}}];function i(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var i=r.getIdentifier(),a=0;a'+t+"";case"string":return''+t+"";case"boolean":return''+t+"";case"null":return''+t+"";case"undefined":return''+t+"";default:return''+t+""}},c.prototype._toTex=function(e){var t=this._toString(e);switch(u(this.value)){case"string":return"\\mathtt{"+i(t)+"}";case"number":case"BigNumber":var r=t.toLowerCase().indexOf("e");return-1!==r?t.substring(0,r)+"\\cdot10^{"+t.substring(r+1)+"}":t;case"Fraction":return this.value.toLatex();default:return t}},c}},function(e,t,r){"use strict";var n=r(4),i=r(2).map,a=r(9).escape,o=r(13).isSafeMethod,s=r(13).getSafeProperty,u=r(55);t.name="OperatorNode",t.path="expression.node",t.factory=function(e,t,c,f){var l=c(r(14));function p(t,r,n,i){if(!(this instanceof p))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('string expected for parameter "op"');if("string"!=typeof r)throw new TypeError('string expected for parameter "fn"');if(!Array.isArray(n)||!n.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.implicit=!0===i,this.op=t,this.fn=r,this.args=n||[]}function m(e,t,r,n,i){var a=u.getPrecedence(e,t),o=u.getAssociativity(e,t);if("all"===t||n.length>2&&"OperatorNode:add"!==e.getIdentifier()&&"OperatorNode:multiply"!==e.getIdentifier())return n.map(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var s=void 0;switch(n.length){case 0:s=[];break;case 1:var c=u.getPrecedence(n[0],t);if(i&&null!==c){var f;if("keep"===t?(f=n[0].getIdentifier(),d=e.getIdentifier()):(f=n[0].getContent().getIdentifier(),d=e.getContent().getIdentifier()),!1===u.properties[a][d].latexLeftParens){s=[!1];break}if(!1===u.properties[c][f].latexParens){s=[!1];break}}if(null===c){s=[!1];break}if(c<=a){s=[!0];break}s=[!1];break;case 2:var l,p,m=u.getPrecedence(n[0],t),h=u.isAssociativeWith(e,n[0],t);l=null!==m&&(m===a&&"right"===o&&!h||m=2&&"OperatorNode:multiply"===e.getIdentifier()&&e.implicit&&"auto"===t&&"hide"===r&&(s=n.map(function(e,t){var r="ParenthesisNode"===e.getIdentifier();return!(!s[t]&&!r)})),s}return p.prototype=new l,p.prototype.type="OperatorNode",p.prototype.isOperatorNode=!0,p.prototype._compile=function(e,t){if("string"!=typeof this.fn||!o(e,this.fn))throw e[this.fn]?new Error('No access to function "'+this.fn+'"'):new Error("Function "+this.fn+' missing in provided namespace "math"');var r=s(e,this.fn),n=i(this.args,function(r){return r._compile(e,t)});if(1===n.length){var a=n[0];return function(e,t,n){return r(a(e,t,n))}}if(2===n.length){a=n[0];var u=n[1];return function(e,t,n){return r(a(e,t,n),u(e,t,n))}}return function(e,t,a){return r.apply(null,i(n,function(r){return r(e,t,a)}))}},p.prototype.forEach=function(e){for(var t=0;t2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var f=n.map(function(t,r){return t=t.toString(e),i[r]&&(t="("+t+")"),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?f.join(" "):f.join(" "+this.op+" ")}return this.fn+"("+this.args.join(", ")+")"},p.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",n=this.args,i=m(this,t,r,n,!1);if(1===n.length){var o=u.getAssociativity(this,t),s=n[0].toHTML(e);return i[0]&&(s='('+s+')'),"right"===o?''+a(this.op)+""+s:''+a(this.op)+""+s}if(2==n.length){var c=n[0].toHTML(e),f=n[1].toHTML(e);return i[0]&&(c='('+c+')'),i[1]&&(f='('+f+')'),this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"==r?c+''+f:c+''+a(this.op)+""+f}if(n.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var l=n.map(function(t,r){return t=t.toHTML(e),i[r]&&(t='('+t+')'),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?l.join(''):l.join(''+a(this.op)+"")}return''+a(this.fn)+'('+l.join(',')+')'},p.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",i=this.args,a=m(this,t,r,i,!0),o=n.operators[this.fn];if(o=void 0===o?this.op:o,1===i.length){var s=u.getAssociativity(this,t),c=i[0].toTex(e);return a[0]&&(c="\\left("+c+"\\right)"),"right"===s?o+c:c+o}if(2===i.length){var f=i[0],l=f.toTex(e);a[0]&&(l="\\left("+l+"\\right)");var p,h=i[1].toTex(e);switch(a[1]&&(h="\\left("+h+"\\right)"),p="keep"===t?f.getIdentifier():f.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return o+"{"+l+"}{"+h+"}";case"OperatorNode:pow":switch(l="{"+l+"}",h="{"+h+"}",p){case"ConditionalNode":case"OperatorNode:divide":l="\\left("+l+"\\right)"}case"OperatorNode:multiply":if(this.implicit&&"hide"===r)return l+"~"+h}return l+o+h}if(i.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var d=i.map(function(t,r){return t=t.toTex(e),a[r]&&(t="\\left("+t+"\\right)"),t});return"OperatorNode:multiply"===this.getIdentifier()&&this.implicit?d.join("~"):d.join(o)}return"\\mathrm{"+this.fn+"}\\left("+i.map(function(t){return t.toTex(e)}).join(",")+"\\right)"},p.prototype.getIdentifier=function(){return this.type+":"+this.fn},p}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isZero",t.factory=function(e,t,r,i){var a=i("isZero",{number:function(e){return 0===e},BigNumber:function(e){return e.isZero()},Complex:function(e){return 0===e.re&&0===e.im},Fraction:function(e){return 1===e.d&&0===e.n},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isPositive",t.factory=function(e,t,r,i){var a=i("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNegative",t.factory=function(e,t,r,i){var a=i("isNegative",{number:function(e){return e<0},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";e.exports=function(e){return e&&e.constructor.prototype.isMatrix||!1}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm05",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));var M,E,A,O,S=i&&p?[]:void 0,_=[],T=[],C=new s({values:S,index:_,ptr:T,size:[v,x],datatype:y}),z=S?[]:void 0,B=S?[]:void 0,I=[],P=[];for(E=0;E('+this.content.toHTML(e)+')':this.content.toHTML(e)},o.prototype._toTex=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?"\\left("+this.content.toTex(e)+"\\right)":this.content.toTex(e)},o}},function(e,t,r){"use strict";var n=r(4),i=r(9).escape,a=r(5).hasOwnProperty,o=r(2).map,s=r(13).validateSafeMethod,u=r(13).getSafeProperty;t.name="FunctionNode",t.path="expression.node",t.math=!0,t.factory=function(e,t,c,f,l){var p=c(r(14)),m=c(r(48));function h(t,r){if(!(this instanceof h))throw new SyntaxError("Constructor must be called with the new operator");if("string"==typeof t&&(t=new m(t)),!e.isNode(t))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(r)||!r.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=t,this.args=r||[],Object.defineProperty(this,"name",{get:function(){return this.fn.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}});var n=function(){throw new Error("Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead")};Object.defineProperty(this,"object",{get:n,set:n})}h.prototype=new p,h.prototype.type="FunctionNode",h.prototype.isFunctionNode=!0,h.prototype._compile=function(t,r){if(!(this instanceof h))throw new TypeError("No valid FunctionNode");var n=o(this.args,function(e){return e._compile(t,r)});if(e.isSymbolNode(this.fn)){var i=this.fn.name,a=i in t?u(t,i):void 0;if("function"==typeof a&&1==a.rawArgs){var c=this.args;return function(e,r,n){return(i in e?u(e,i):a)(c,t,e)}}if(1===n.length){var f=n[0];return function(e,t,r){return(i in e?u(e,i):a)(f(e,t,r))}}if(2===n.length){f=n[0];var l=n[1];return function(e,t,r){return(i in e?u(e,i):a)(f(e,t,r),l(e,t,r))}}return function(e,t,r){return(i in e?u(e,i):a).apply(null,o(n,function(n){return n(e,t,r)}))}}if(e.isAccessorNode(this.fn)&&e.isIndexNode(this.fn.index)&&this.fn.index.isObjectProperty()){var p=this.fn.object._compile(t,r),m=this.fn.index.getObjectProperty();return c=this.args,function(e,r,i){var a=p(e,r,i);return s(a,m),a[m]&&a[m].rawArgs?a[m](c,t,e):a[m].apply(a,o(n,function(t){return t(e,r,i)}))}}var d=this.fn._compile(t,r);return function(e,r,i){var a=d(e,r,i);return a&&a.rawArgs?a(c,t,e):a.apply(a,o(n,function(t){return t(e,r,i)}))}},h.prototype.forEach=function(e){for(var t=0;t'+i(this.fn)+'('+t.join(',')+')'};var y=h.prototype.toTex;return h.prototype.toTex=function(e){var t;return e&&"object"==typeof e.handler&&a(e.handler,this.name)&&(t=e.handler[this.name](this,e)),void 0!==t?t:y.call(this,e)},h.prototype._toTex=function(e){var t,r,i=this.args.map(function(t){return t.toTex(e)});switch(!l[this.name]||"function"!=typeof l[this.name].toTex&&"object"!=typeof l[this.name].toTex&&"string"!=typeof l[this.name].toTex||(t=l[this.name].toTex),typeof t){case"function":r=t(this,e);break;case"string":r=g(t,this,e);break;case"object":switch(typeof t[i.length]){case"function":r=t[i.length](this,e);break;case"string":r=g(t[i.length],this,e)}}return void 0!==r?r:g(n.defaultTemplate,this,e)},h.prototype.getIdentifier=function(){return this.type+":"+this.name},h}},function(e,t,r){"use strict";var n=r(5).clone,i=r(3).isInteger,a=r(2),o=r(53),s=r(10);function u(e,t,r,n){if(n0&&p>c)throw new o(p,c+1)}else{var g=n(d).valueOf(),y=a.size(g);if(h[r]=g,c=p,p=y.length-1,r>0&&p!=c)throw new s(c+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var v=h.shift();h.length;)v=u(v,h.shift(),p,0);return m?l(v):v},"...string":function(e){return e.join("")}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n=r(49);e.exports=function(e){for(var t=0;te)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),i=1,a=1;a<=e-r;a++)i=i*(r+a)/a;return i},"BigNumber, BigNumber":function(t,r){var n,a,o,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(n=t.minus(r),r.lt(n)&&(n=r),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);return a}});return o.toTex={2:"\\binom{${args[0]}}{${args[1]}}"},o}},function(e,t){e.exports=function(e){return e&&e.constructor.prototype.isBigNumber||!1}},function(e,t,r){"use strict";var n=r(24).string.isString;t.name="Matrix",t.path="type",t.factory=function(e,t,r,i){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator")}return a.prototype.type="Matrix",a.prototype.isMatrix=!0,a.storage=function(e){if(!n(e))throw new TypeError("format must be a string value");var t=a._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},a._storage={},a.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},a.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},a.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},a.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},a.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},a.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},a.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},a.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},a.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},a.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},a.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},a.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},a.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},a.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},a.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},a.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},a}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm04",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));var M,E,A,O,S,_=i&&p?[]:void 0,T=[],C=[],z=new s({values:_,index:T,ptr:C,size:[v,x],datatype:y}),B=i&&p?[]:void 0,I=i&&p?[]:void 0,P=[],R=[];for(E=0;E.'+i(this.getObjectProperty())+"":'['+t.join(',')+']'},f.prototype._toTex=function(e){var t=this.dimensions.map(function(t){return t.toTex(e)});return this.dotNotation?"."+this.getObjectProperty():"_{"+t.join(",")+"}"},f}},function(e,t){t.factory=function(e,t,r,n){return function(t,r,n){var i=t.filter(function(t){return e.isSymbolNode(t)&&!(t.name in r)&&!(t.name in n)})[0];if(!i)throw new Error('No undefined variable found in inline expression "'+t+'"');var a=i.name,o=Object.create(n),s=t.compile();return function(e){return o[a]=e,s.eval(o)}}}},function(e,t,r){"use strict";var n=r(2).size,i=r(61),a=r(53);function o(e,t,r){var n,i,a,s;if(t<=0){if(Array.isArray(e[0])){for(s=function(e){var t,r,n=e.length,i=e[0].length,a=[];for(r=0;r=s.length)throw new a(t,s.length);return i(e)?e.create(o(e.valueOf(),t,r)):o(e,t,r)}},function(e,t,r){"use strict";t.math=!0,t.name="simplify",t.factory=function(e,t,n,i,a){var o=n(r(40)),s=n(r(46)),u=n(r(56)),c=n(r(65)),f=n(r(57)),l=n(r(64)),p=n(r(48)),m=(n(r(14)),n(r(119))),h=n(r(121)),d=n(r(408)),g=n(r(120)),y=g.isCommutative,v=g.isAssociative,x=g.flatten,w=g.unflattenr,b=g.unflattenl,N=g.createMakeNodeFunction,M=i("simplify",{string:function(e){return M(o(e),M.rules,{})},"string, Object":function(e,t){return M(o(e),M.rules,t)},"string, Array":function(e,t){return M(o(e),t,{})},"string, Array, Object":function(e,t,r){return M(o(e),t,r)},"Node, Object":function(e,t){return M(e,M.rules,t)},Node:function(e){return M(e,M.rules,{})},"Node, Array":function(e,t){return M(e,t,{})},"Node, Array, Object":function(e,t,r){t=function(e){for(var t=[],r=0;r");if(2!==s.length)throw SyntaxError("Could not parse rule: "+i);i={l:s[0],r:s[1]};case"object":if(n={l:E(o(i.l)),r:E(o(i.r))},i.context&&(n.evaluate=i.context),i.evaluate&&(n.evaluate=o(i.evaluate)),v(n.l)){var u=N(n.l),c=new p("_p"+O++);n.expanded={},n.expanded.l=u([n.l.clone(),c]),x(n.expanded.l),w(n.expanded.l),n.expanded.r=u([n.r,c])}break;case"function":n=i;break;default:throw TypeError("Unsupported type of rule: "+a)}t.push(n)}return t}(t);for(var n,i={},a=(n=E(n=d(e,r))).toString({parenthesis:"all"});!i[a];){i[a]=!0,O=0;for(var s=0;s=2&&2===t.args.length){var o=function(e,t){var r,n,i=[],a=N(e);if(y(e,t))for(var o=0;o2)throw Error("Unexpected non-binary associative function: "+t.toString());return[]}for(var h=[],d=0;d0)if(++o>u)for(o-=u;o--;s+="0");else o1&&(null==c[l+1]&&(c[l+1]=0),c[l+1]+=c[l]>>1,c[l]&=1)}return c.reverse()}e.exports=function(e,t,r){var a,o,s,u,c,f=e.constructor,l=+(e.s<0),p=+(t.s<0);if(l){a=i(n(e));for(var m=0;m0;)r(s[--h],u[--d])==g&&(y=y.plus(v)),v=v.times(x);for(;d>0;)r(c,u[--d])==g&&(y=y.plus(v)),v=v.times(x);return f.config({precision:w}),0==g&&(y.s=-y.s),y}},function(e,t){e.exports=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;return t.config({precision:1e9}),(e=e.plus(new t(1))).s=-e.s||null,t.config({precision:r}),e}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm08",t.factory=function(e,t,i,a){var o=i(r(8)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");if(!i||!p)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var y,v=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(y=l,w=a.find(o,[y,y]),b=a.convert(0,y),N=a.find(r,[y,y]));for(var M,E,A,O,S=[],_=[],T=[],C=new s({values:S,index:_,ptr:T,size:[v,x],datatype:y}),z=[],B=[],I=0;I1)throw new Error("Only one dimensional matrices supported");return c(t.valueOf(),r,i)}if(Array.isArray(t))return c(t,r,i)}function c(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;n=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,t<=a?i=a:n=a+1}return e[t]}}},function(e,t,r){"use strict";var n=r(44),i=r(49),a=r(3).isNumber;t.name="distribution",t.factory=function(e,t,o,s,u){var c=o(r(1)),f=r(2),l=o(r(492));function p(t){if(!m.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r,o,u,p,h,d,g=Array.prototype.slice.call(arguments,1),y=m[t].apply(this,g);return r=y,o={random:function(t,r,o){var s,u,f;if(arguments.length>3)throw new n("random",arguments.length,0,3);if(1===arguments.length?i(t)?s=t:f=t:2===arguments.length?i(t)?(s=t,f=r):(u=t,f=r):(s=t,u=r,f=o),void 0!==u&&!a(u)||void 0!==f&&!a(f))throw new TypeError("Invalid argument in function random");if(void 0===f&&(f=1),void 0===u&&(u=0),void 0!==s){var l=d(s.valueOf(),u,f,p);return e.isMatrix(s)?c(l):l}return p(u,f)},randomInt:s({"number | Array":function(t){if(i(t)){var r=t,n=1,a=d(r.valueOf(),0,n,h);return e.isMatrix(r)?c(a):a}return h(0,n=t)},"number | Array, number":function(t,r){if(i(t)){var n=t,a=r,o=0,s=d(n.valueOf(),o,a,h);return e.isMatrix(n)?c(s):s}return h(o=t,a=r)},"Array, number, number":function(e,t,r){var n=d(e.valueOf(),t,r,h);return e&&!0===e.isMatrix?c(n):n}}),pickRandom:s({Array:function(e){return u(e)},"Array, number | Array":function(e,t){var r,n;if(Array.isArray(t))n=t;else{if(!a(t))throw new TypeError("Invalid argument in function pickRandom");r=t}return u(e,r,n)},"Array, number | Array, Array | number":function(e,t,r){var n,i;if(Array.isArray(t)?(i=t,n=r):(i=r,n=t),!Array.isArray(i)||!a(n))throw new TypeError("Invalid argument in function pickRandom");return u(e,n,i)}})},u=function(t,r,n){var i=void 0===r;if(i&&(r=1),e.isMatrix(t))t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(f.size(t).length>1)throw new Error("Only one dimensional vectors supported");if(void 0!==n){if(n.length!=t.length)throw new Error("Weights must have the same length as possibles");for(var o=0,s=0,u=n.length;s=c)return r>1?t:t[0];for(var p,m=[];m.length1)for(var a=0,o=e.shift();a1;)e=l(),t=l(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return p.toTex=void 0,p}},function(e,t,r){var n=r(154);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t,r){var n=r(169),i=r(3).format,a=r(3).isNumber;t.name="Complex",t.path="type",t.factory=function(e,t,r,o,s){return n.prototype.type="Complex",n.prototype.isComplex=!0,n.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},n.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},n.prototype.format=function(e){var t=this.im,r=this.re,n=i(this.re,e),o=i(this.im,e),s=a(e)?e:e?e.precision:null;if(null!==s){var u=Math.pow(10,-s);Math.abs(r/t)t.re?1:e.ret.im?1:e.im0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.prototype.forEach=function(e){var t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;tn;)e(t,[i],this),t+=r,i++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=n.format(this.start,e);return 1!=this.step&&(t+=":"+n.format(this.step,e)),t+=":"+n.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}},function(e,t,r){"use strict";t.name="ResultSet",t.path="type",t.factory=function(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}},function(e,t,r){var n=r(30).memoize;function i(e){return e[0].precision}t.e=n(function(e){return new e(1).exp()},i),t.phi=n(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},i),t.pi=n(function(e){return e.acos(-1)},i),t.tau=n(function(e){return t.pi(e).times(2)},i)},function(e,t,r){"use strict";var n=r(0);t.name="fix",t.factory=function(e,t,r,i){var a=i("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).toFixed,a=r(0),o="Number of decimals in function round must be an integer";t.name="round",t.factory=function(e,t,s,u){var c=s(r(1)),f=s(r(8)),l=s(r(39)),p=s(r(20)),m=s(r(18)),h=s(r(6)),d=u("round",{number:Math.round,"number, number":function(e,t){if(!n(t))throw new TypeError(o);if(t<0||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return parseFloat(i(e,t))},Complex:function(e){return e.round()},"Complex, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Complex, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);var r=t.toNumber();return e.round(r)},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(o);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Fraction, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Array | Matrix":function(e){return a(e,d,!0)},"SparseMatrix, number | BigNumber":function(e,t){return p(e,t,d,!1)},"DenseMatrix, number | BigNumber":function(e,t){return h(e,t,d,!1)},"number | Complex | BigNumber, SparseMatrix":function(e,t){return f(e,0)?l(t.size(),t.storage()):m(t,e,d,!0)},"number | Complex | BigNumber, DenseMatrix":function(e,t){return f(e,0)?l(t.size(),t.storage()):h(t,e,d,!0)},"Array, number | BigNumber":function(e,t){return h(c(e),t,d,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return h(c(t),e,d,!0).valueOf()}});return d.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},d}},function(e,t,r){"use strict";var n=r(9);t.name="format",t.factory=function(e,t,r,i){var a=i("format",{any:n.format,"any, Object | function | number":n.format});return a.toTex=void 0,a}},function(e,t,r){t.name="docs",t.path="expression",t.factory=function(e,t,n,i){var a={};return a.bignumber=r(194),a.boolean=r(195),a.complex=r(196),a.createUnit=r(197),a.fraction=r(198),a.index=r(199),a.matrix=r(200),a.number=r(201),a.sparse=r(202),a.splitUnit=r(203),a.string=r(204),a.unit=r(205),a.e=r(97),a.E=r(97),a.false=r(206),a.i=r(207),a[1/0]=r(208),a.LN2=r(209),a.LN10=r(210),a.LOG2E=r(211),a.LOG10E=r(212),a.NaN=r(213),a.null=r(214),a.pi=r(98),a.PI=r(98),a.phi=r(215),a.SQRT1_2=r(216),a.SQRT2=r(217),a.tau=r(218),a.true=r(219),a.version=r(220),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.derivative=r(221),a.lsolve=r(222),a.lup=r(223),a.lusolve=r(224),a.simplify=r(225),a.rationalize=r(226),a.slu=r(227),a.usolve=r(228),a.qr=r(229),a.abs=r(230),a.add=r(231),a.cbrt=r(232),a.ceil=r(233),a.cube=r(234),a.divide=r(235),a.dotDivide=r(236),a.dotMultiply=r(237),a.dotPow=r(238),a.exp=r(239),a.fix=r(240),a.floor=r(241),a.gcd=r(242),a.hypot=r(243),a.lcm=r(244),a.log=r(245),a.log10=r(246),a.mod=r(247),a.multiply=r(248),a.norm=r(249),a.nthRoot=r(250),a.pow=r(251),a.round=r(252),a.sign=r(253),a.sqrt=r(254),a.square=r(255),a.subtract=r(256),a.unaryMinus=r(257),a.unaryPlus=r(258),a.xgcd=r(259),a.bitAnd=r(260),a.bitNot=r(261),a.bitOr=r(262),a.bitXor=r(263),a.leftShift=r(264),a.rightArithShift=r(265),a.rightLogShift=r(266),a.bellNumbers=r(267),a.catalan=r(268),a.composition=r(269),a.stirlingS2=r(270),a.config=r(271),a.import=r(272),a.typed=r(273),a.arg=r(274),a.conj=r(275),a.re=r(276),a.im=r(277),a.eval=r(278),a.help=r(279),a.distance=r(280),a.intersect=r(281),a.and=r(282),a.not=r(283),a.or=r(284),a.xor=r(285),a.concat=r(286),a.cross=r(287),a.det=r(288),a.diag=r(289),a.dot=r(290),a.eye=r(291),a.filter=r(292),a.flatten=r(293),a.forEach=r(294),a.inv=r(295),a.kron=r(296),a.map=r(297),a.ones=r(298),a.partitionSelect=r(299),a.range=r(300),a.resize=r(301),a.reshape=r(302),a.size=r(303),a.sort=r(304),a.squeeze=r(305),a.subset=r(306),a.trace=r(307),a.transpose=r(308),a.zeros=r(309),a.combinations=r(310),a.factorial=r(311),a.gamma=r(312),a.kldivergence=r(313),a.multinomial=r(314),a.permutations=r(315),a.pickRandom=r(316),a.random=r(317),a.randomInt=r(318),a.compare=r(319),a.compareNatural=r(320),a.deepEqual=r(321),a.equal=r(322),a.larger=r(323),a.largerEq=r(324),a.smaller=r(325),a.smallerEq=r(326),a.unequal=r(327),a.setCartesian=r(328),a.setDifference=r(329),a.setDistinct=r(330),a.setIntersect=r(331),a.setIsSubset=r(332),a.setMultiplicity=r(333),a.setPowerset=r(334),a.setSize=r(335),a.setSymDifference=r(336),a.setUnion=r(337),a.erf=r(338),a.mad=r(339),a.max=r(340),a.mean=r(341),a.median=r(342),a.min=r(343),a.mode=r(344),a.prod=r(345),a.quantileSeq=r(346),a.std=r(347),a.sum=r(348),a.var=r(349),a.acos=r(350),a.acosh=r(351),a.acot=r(352),a.acoth=r(353),a.acsc=r(354),a.acsch=r(355),a.asec=r(356),a.asech=r(357),a.asin=r(358),a.asinh=r(359),a.atan=r(360),a.atanh=r(361),a.atan2=r(362),a.cos=r(363),a.cosh=r(364),a.cot=r(365),a.coth=r(366),a.csc=r(367),a.csch=r(368),a.sec=r(369),a.sech=r(370),a.sin=r(371),a.sinh=r(372),a.tan=r(373),a.tanh=r(374),a.to=r(375),a.clone=r(376),a.format=r(377),a.isNaN=r(378),a.isInteger=r(379),a.isNegative=r(380),a.isNumeric=r(381),a.isPositive=r(382),a.isPrime=r(383),a.isZero=r(384),a.typeof=r(385),a}},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t,r){"use strict";t.factory=function(e,t,r,n){return function(t,r){if("BigNumber"===r)return new e.BigNumber(t);if("Fraction"===r)return new e.Fraction(t);if("number"==typeof t)return t;if("Infinity"===t)return 1/0;if("NaN"===t)return NaN;if(!/^[\-+]?((\d+\.?\d*)|(\d*\.?\d+))([eE][+\-]?\d+)?$/.test(t))throw new Error('Invalid numeric value "'+t+'"');return parseFloat(t.replace(/^(0*)[0-9]/,function(e,t){return e.substring(t.length)}))}}},function(e,t,r){"use strict";var n=r(13).getSafeProperty;t.name="AccessorNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14)),s=(i(r(76)),i(r(102)));function u(t,r){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError('Node expected for parameter "object"');if(!e.isIndexNode(r))throw new TypeError('IndexNode expected for parameter "index"');this.object=t||null,this.index=r,Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function c(t){return!(e.isAccessorNode(t)||e.isArrayNode(t)||e.isConstantNode(t)||e.isFunctionNode(t)||e.isObjectNode(t)||e.isParenthesisNode(t)||e.isSymbolNode(t))}return u.prototype=new o,u.prototype.type="AccessorNode",u.prototype.isAccessorNode=!0,u.prototype._compile=function(e,t){var r=this.object._compile(e,t),i=this.index._compile(e,t);if(this.index.isObjectProperty()){var a=this.index.getObjectProperty();return function(e,t,i){return n(r(e,t,i),a)}}return function(e,t,n){var a=r(e,t,n),o=i(e,t,a);return s(a,o)}},u.prototype.forEach=function(e){e(this.object,"object",this),e(this.index,"index",this)},u.prototype.map=function(e){return new u(this._ifNode(e(this.object,"object",this)),this._ifNode(e(this.index,"index",this)))},u.prototype.clone=function(){return new u(this.object,this.index)},u.prototype._toString=function(e){var t=this.object.toString(e);return c(this.object)&&(t="("+t+")"),t+this.index.toString(e)},u.prototype.toHTML=function(e){var t=this.object.toHTML(e);return c(this.object)&&(t='('+t+')'),t+this.index.toHTML(e)},u.prototype._toTex=function(e){var t=this.object.toTex(e);return c(this.object)&&(t="\\left("+t+"\\right)"),t+this.index.toTex(e)},u}},function(e,t,r){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).getSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22));return function(e,t){try{if(Array.isArray(e))return s(e,t);if(e&&"function"==typeof e.subset)return e.subset(t);if("string"==typeof e)return s(e,t);if("object"==typeof e){if(!t.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty())}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";var n=r(2).map;t.name="ArrayNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14));function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(this.items=t||[],!Array.isArray(this.items)||!this.items.every(e.isNode))throw new TypeError("Array containing Nodes expected");var r=function(){throw new Error("Property `ArrayNode.nodes` is deprecated, use `ArrayNode.items` instead")};Object.defineProperty(this,"nodes",{get:r,set:r})}return s.prototype=new o,s.prototype.type="ArrayNode",s.prototype.isArrayNode=!0,s.prototype._compile=function(e,t){var r=n(this.items,function(r){return r._compile(e,t)});if("Array"!==e.config().matrix){var i=e.matrix;return function(e,t,a){return i(n(r,function(r){return r(e,t,a)}))}}return function(e,t,i){return n(r,function(r){return r(e,t,i)})}},s.prototype.forEach=function(e){for(var t=0;t['+this.items.map(function(t){return t.toHTML(e)}).join(',')+']'},s.prototype._toTex=function(e){var t="\\begin{bmatrix}";return this.items.forEach(function(r){r.items?t+=r.items.map(function(t){return t.toTex(e)}).join("&"):t+=r.toTex(e),t+="\\\\"}),t+="\\end{bmatrix}"},s}},function(e,t,r){"use strict";var n=r(13).getSafeProperty,i=r(13).setSafeProperty;t.name="AssignmentNode",t.path="expression.node",t.factory=function(e,t,a,o){var s=a(r(14)),u=a(r(388)),c=a(r(102)),f=r(55);function l(t,r,n){if(!(this instanceof l))throw new SyntaxError("Constructor must be called with the new operator");if(this.object=t,this.index=n?r:null,this.value=n||r,!e.isSymbolNode(t)&&!e.isAccessorNode(t))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(e.isSymbolNode(t)&&"end"===t.name)throw new Error('Cannot assign to symbol "end"');if(this.index&&!e.isIndexNode(this.index))throw new TypeError('IndexNode expected as "index"');if(!e.isNode(this.value))throw new TypeError('Node expected as "value"');Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function p(e,t){t||(t="keep");var r=f.getPrecedence(e,t),n=f.getPrecedence(e.value,t);return"all"===t||null!==n&&n<=r}return l.prototype=new s,l.prototype.type="AssignmentNode",l.prototype.isAssignmentNode=!0,l.prototype._compile=function(t,r){var a=this.object._compile(t,r),o=this.index?this.index._compile(t,r):null,s=this.value._compile(t,r),f=this.object.name;if(this.index){if(this.index.isObjectProperty()){var l=this.index.getObjectProperty();return function(e,t,r){var n=a(e,t,r),o=s(e,t,r);return i(n,l,o)}}if(e.isSymbolNode(this.object))return function(e,t,r){var n=a(e,t,r),c=s(e,t,r),l=o(e,t,n);return i(e,f,u(n,l,c)),c};var p=this.object.object._compile(t,r);if(this.object.index.isObjectProperty()){var m=this.object.index.getObjectProperty();return function(e,t,r){var a=p(e,t,r),c=n(a,m),f=o(e,t,c),l=s(e,t,r);return i(a,m,u(c,f,l)),l}}var h=this.object.index._compile(t,r);return function(e,t,r){var n=p(e,t,r),i=h(e,t,n),a=c(n,i),f=o(e,t,a),l=s(e,t,r);return u(n,i,u(a,f,l)),l}}if(!e.isSymbolNode(this.object))throw new TypeError("SymbolNode expected as object");return function(e,t,r){return i(e,f,s(e,t,r))}},l.prototype.forEach=function(e){e(this.object,"object",this),this.index&&e(this.index,"index",this),e(this.value,"value",this)},l.prototype.map=function(e){return new l(this._ifNode(e(this.object,"object",this)),this.index?this._ifNode(e(this.index,"index",this)):null,this._ifNode(e(this.value,"value",this)))},l.prototype.clone=function(){return new l(this.object,this.index,this.value)},l.prototype._toString=function(e){var t=this.object.toString(e),r=this.index?this.index.toString(e):"",n=this.value.toString(e);return p(this,e&&e.parenthesis)&&(n="("+n+")"),t+r+" = "+n},l.prototype.toHTML=function(e){var t=this.object.toHTML(e),r=this.index?this.index.toHTML(e):"",n=this.value.toHTML(e);return p(this,e&&e.parenthesis)&&(n='('+n+')'),t+r+'='+n},l.prototype._toTex=function(e){var t=this.object.toTex(e),r=this.index?this.index.toTex(e):"",n=this.value.toTex(e);return p(this,e&&e.parenthesis)&&(n="\\left("+n+"\\right)"),t+r+":="+n},l}},function(e,t,r){"use strict";var n=r(2).forEach,i=r(2).map;t.name="BlockNode",t.path="expression.node",t.factory=function(e,t,a,o){var s=a(r(14)),u=a(r(91));function c(t){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(t))throw new Error("Array expected");this.blocks=t.map(function(t){var r=t&&t.node,n=!t||void 0===t.visible||t.visible;if(!e.isNode(r))throw new TypeError('Property "node" must be a Node');if("boolean"!=typeof n)throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:n}})}return c.prototype=new s,c.prototype.type="BlockNode",c.prototype.isBlockNode=!0,c.prototype._compile=function(e,t){var r=i(this.blocks,function(r){return{eval:r.node._compile(e,t),visible:r.visible}});return function(e,t,i){var a=[];return n(r,function(r){var n=r.eval(e,t,i);r.visible&&a.push(n)}),new u(a)}},c.prototype.forEach=function(e){for(var t=0;t;')}).join('
')},c.prototype._toTex=function(e){return this.blocks.map(function(t){return t.node.toTex(e)+(t.visible?"":";")}).join("\\;\\;\n")},c}},function(e,t,r){"use strict";var n=r(55);t.name="ConditionalNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14)),s=i(r(47));function u(t,r,n){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Parameter condition must be a Node");if(!e.isNode(r))throw new TypeError("Parameter trueExpr must be a Node");if(!e.isNode(n))throw new TypeError("Parameter falseExpr must be a Node");this.condition=t,this.trueExpr=r,this.falseExpr=n}return u.prototype=new o,u.prototype.type="ConditionalNode",u.prototype.isConditionalNode=!0,u.prototype._compile=function(t,r){var n=this.condition._compile(t,r),i=this.trueExpr._compile(t,r),a=this.falseExpr._compile(t,r);return function(t,r,o){return function(t){if("number"==typeof t||"boolean"==typeof t||"string"==typeof t)return!!t;if(t){if(e.isBigNumber(t))return!t.isZero();if(e.isComplex(t))return!(!t.re&&!t.im);if(e.isUnit(t))return!!t.value}if(null==t)return!1;throw new TypeError('Unsupported type of condition "'+s(t)+'"')}(n(t,r,o))?i(t,r,o):a(t,r,o)}},u.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},u.prototype.map=function(e){return new u(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},u.prototype.clone=function(){return new u(this.condition,this.trueExpr,this.falseExpr)},u.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toString(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i="("+i+")");var o=this.trueExpr.toString(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u="("+u+")"),i+" ? "+o+" : "+u},u.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toHTML(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i='('+i+')');var o=this.trueExpr.toHTML(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o='('+o+')');var u=this.falseExpr.toHTML(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u='('+u+')'),i+'?'+o+':'+u},u.prototype._toTex=function(e){return"\\begin{cases} {"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{cases}"},u}},function(e,t,r){"use strict";var n=r(101),i=r(9).escape,a=r(2).forEach,o=r(2).join,s=r(4),u=r(55),c=r(13).setSafeProperty;t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=function(e,t,f,l){var p=f(r(14));function m(t,r,i){if(!(this instanceof m))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(r))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!e.isNode(i))throw new TypeError('Node expected for parameter "expr"');if(t in n)throw new Error('Illegal function name, "'+t+'" is a reserved keyword');this.name=t,this.params=r.map(function(e){return e&&e.name||e}),this.types=r.map(function(e){return e&&e.type||"any"}),this.expr=i}function h(e,t){var r=u.getPrecedence(e,t),n=u.getPrecedence(e.expr,t);return"all"===t||null!==n&&n<=r}return m.prototype=new p,m.prototype.type="FunctionAssignmentNode",m.prototype.isFunctionAssignmentNode=!0,m.prototype._compile=function(e,t){var r=Object.create(t);a(this.params,function(e){r[e]=!0});var n=this.expr._compile(e,r),i=this.name,s=this.params,u=o(this.types,","),f=i+"("+o(this.params,", ")+")";return function(e,t,r){var a={};a[u]=function(){for(var i=Object.create(t),a=0;a'+i(this.params[n])+"");var a=this.expr.toHTML(e);return h(this,t)&&(a='('+a+')'),''+i(this.name)+'('+r.join(',')+')='+a},m.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return h(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(s.toSymbol).join(",")+"\\right):="+r},m}},function(e,t,r){"use strict";var n=r(9).stringify,i=r(9).escape,a=r(13).isSafeProperty,o=r(5).hasOwnProperty;t.name="ObjectNode",t.path="expression.node",t.factory=function(e,t,s,u){var c=s(r(14));function f(t){if(!(this instanceof f))throw new SyntaxError("Constructor must be called with the new operator");if(this.properties=t||{},t&&("object"!=typeof t||!Object.keys(t).every(function(r){return e.isNode(t[r])})))throw new TypeError("Object containing Nodes expected")}return f.prototype=new c,f.prototype.type="ObjectNode",f.prototype.isObjectNode=!0,f.prototype._compile=function(e,t){var r={};for(var i in this.properties)if(o(this.properties,i)){var s=n(i),u=JSON.parse(s);if(!a(this.properties,u))throw new Error('No access to property "'+u+'"');r[u]=this.properties[i]._compile(e,t)}return function(e,t,n){var i={};for(var a in r)o(r,a)&&(i[a]=r[a](e,t,n));return i}},f.prototype.forEach=function(e){for(var t in this.properties)this.properties.hasOwnProperty(t)&&e(this.properties[t],"properties["+n(t)+"]",this)},f.prototype.map=function(e){var t={};for(var r in this.properties)this.properties.hasOwnProperty(r)&&(t[r]=this._ifNode(e(this.properties[r],"properties["+n(r)+"]",this)));return new f(t)},f.prototype.clone=function(){var e={};for(var t in this.properties)this.properties.hasOwnProperty(t)&&(e[t]=this.properties[t]);return new f(e)},f.prototype._toString=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(n(r)+": "+this.properties[r].toString(e));return"{"+t.join(", ")+"}"},f.prototype.toHTML=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(''+i(r)+':'+this.properties[r].toHTML(e));return'{'+t.join(',')+'}'},f.prototype._toTex=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push("\\mathbf{"+r+":} & "+this.properties[r].toTex(e)+"\\\\");return"\\left\\{\\begin{array}{ll}"+t.join("\n")+"\\end{array}\\right\\}"},f}},function(e,t,r){"use strict";var n=r(55);t.name="RangeNode",t.path="expression.node",t.factory=function(e,t,i,a){var o=i(r(14));function s(t,r,n){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Node expected");if(!e.isNode(r))throw new TypeError("Node expected");if(n&&!e.isNode(n))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=t,this.end=r,this.step=n||null}function u(e,t){var r=n.getPrecedence(e,t),i={},a=n.getPrecedence(e.start,t);if(i.start=null!==a&&a<=r||"all"===t,e.step){var o=n.getPrecedence(e.step,t);i.step=null!==o&&o<=r||"all"===t}var s=n.getPrecedence(e.end,t);return i.end=null!==s&&s<=r||"all"===t,i}return s.prototype=new o,s.prototype.type="RangeNode",s.prototype.isRangeNode=!0,s.prototype.needsEnd=function(){return this.filter(function(t){return e.isSymbolNode(t)&&"end"===t.name}).length>0},s.prototype._compile=function(e,t){var r=e.range,n=this.start._compile(e,t),i=this.end._compile(e,t);if(this.step){var a=this.step._compile(e,t);return function(e,t,o){return r(n(e,t,o),i(e,t,o),a(e,t,o))}}return function(e,t,a){return r(n(e,t,a),i(e,t,a))}},s.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},s.prototype.map=function(e){return new s(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},s.prototype.clone=function(){return new s(this.start,this.end,this.step&&this.step)},s.prototype._toString=function(e){var t,r=u(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toString(e);if(r.start&&(n="("+n+")"),t=n,this.step){var i=this.step.toString(e);r.step&&(i="("+i+")"),t+=":"+i}var a=this.end.toString(e);return r.end&&(a="("+a+")"),t+=":"+a},s.prototype.toHTML=function(e){var t,r=u(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toHTML(e);if(r.start&&(n='('+n+')'),t=n,this.step){var i=this.step.toHTML(e);r.step&&(i='('+i+')'),t+=':'+i}var a=this.end.toHTML(e);return r.end&&(a='('+a+')'),t+=':'+a},s.prototype._toTex=function(e){var t=u(this,e&&e.parenthesis?e.parenthesis:"keep"),r=this.start.toTex(e);if(t.start&&(r="\\left("+r+"\\right)"),this.step){var n=this.step.toTex(e);t.step&&(n="\\left("+n+"\\right)"),r+=":"+n}var i=this.end.toTex(e);return t.end&&(i="\\left("+i+"\\right)"),r+=":"+i},s}},function(e,t,r){"use strict";t.name="parse",t.factory=function(e,t,n,i){var a=n(r(40));return i("parse",{"string | Array | Matrix":a,"string | Array | Matrix, Object":a})}},function(e,t,r){"use strict";t.name="parser",t.factory=function(e,t,n,i,a){var o=n(r(112));return i("parser",{"":function(){return new o(a)}})},t.math=!0},function(e,t,r){"use strict";var n=r(5).extend,i=r(13);t.name="Parser",t.path="expression",t.factory=function(e,t,a,o,s){var u=a(r(40));function c(){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}return c.prototype.type="Parser",c.prototype.isParser=!0,c.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},c.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},c.prototype.eval=function(e){return u(e).compile().eval(this.scope)},c.prototype.get=function(e){return e in this.scope?i.getSafeProperty(this.scope,e):void 0},c.prototype.getAll=function(){return n({},this.scope)},c.prototype.set=function(e,t){return i.setSafeProperty(this.scope,e,t)},c.prototype.remove=function(e){delete this.scope[e]},c.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},c},t.math=!0},function(e,t,r){"use strict";var n=r(42),i=r(78),a=r(67);t.name="max",t.factory=function(e,t,o,s){var u=o(r(32)),c=o(r(34)),f=s("max",{"Array | Matrix":p,"Array | Matrix, number | BigNumber":function(e,t){return i(e,t.valueOf(),l)},"...":function(e){if(a(e))throw new TypeError("Scalar values expected in function max");return p(e)}});return f.toTex="\\max\\left(${args}\\right)",f;function l(e,t){try{return u(e,t)?e:t}catch(e){throw c(e,"max",t)}}function p(e){var t=void 0;if(n(e,function(e){try{(void 0===t||u(e,t))&&(t=e)}catch(t){throw c(t,"max",e)}}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}}},function(e,t,r){"use strict";var n=r(2).size,i=r(42),a=r(78),o=r(67);t.name="mean",t.factory=function(e,t,s,u){var c=s(r(15)),f=s(r(43)),l=s(r(34)),p=u("mean",{"Array | Matrix":m,"Array | Matrix, number | BigNumber":function(e,t){try{var r=a(e,t,c),i=Array.isArray(e)?n(e):e.size();return f(r,i[t])}catch(e){throw l(e,"mean")}},"...":function(e){if(o(e))throw new TypeError("Scalar values expected in function mean");return m(e)}});return p.toTex=void 0,p;function m(e){var t=0,r=0;if(i(e,function(e){try{t=c(t,e),r++}catch(t){throw l(t,"mean",e)}}),0===r)throw new Error("Cannot calculate mean of an empty array");return f(t,r)}}},function(e,t,r){"use strict";var n=r(24);t.name="inv",t.factory=function(e,t,i,a){var o=i(r(1)),s=i(r(12)),u=i(r(16)),c=i(r(11)),f=i(r(33)),l=i(r(116)),p=i(r(63)),m=a("inv",{"Array | Matrix":function(t){var r=e.isMatrix(t)?t.size():n.array.size(t);switch(r.length){case 1:if(1==r[0])return e.isMatrix(t)?o([s(1,t.valueOf()[0])]):[s(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(r)+")");case 2:var i=r[0],a=r[1];if(i==a)return e.isMatrix(t)?o(h(t.valueOf(),i,a),t.storage()):h(t,i,a);throw new RangeError("Matrix must be square (size: "+n.string.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(r)+")")}},any:function(e){return s(1,e)}});function h(e,t,r){var n,i,a,o,m;if(1==t){if(0==(o=e[0][0]))throw Error("Cannot calculate inverse, determinant is zero");return[[s(1,o)]]}if(2==t){var h=l(e);if(0==h)throw Error("Cannot calculate inverse, determinant is zero");return[[s(e[1][1],h),s(f(e[0][1]),h)],[s(f(e[1][0]),h),s(e[0][0],h)]]}var d=e.concat();for(n=0;n0)for(;it;)n.push(i),i+=r;return n}function p(e,t,r){var n=[],i=e;if(r>0)for(;i<=t;)n.push(i),i+=r;else if(r<0)for(;i>=t;)n.push(i),i+=r;return n}function m(e,t,r){var n=[],i=e;if(r.gt(o))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function h(e,t,r){var n=[],i=e;if(r.gt(o))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}}},function(e,t,r){"use strict";r(3).digits;t.math=!0,t.name="simplifyConstant",t.path="algebra.simplify",t.factory=function(e,t,n,i,a){var o=n(r(120)),s=(n(r(54)),o.isCommutative),u=o.isAssociative,c=o.allChildren,f=o.createMakeNodeFunction,l=a.expression.node.ConstantNode,p=a.expression.node.OperatorNode,m=a.expression.node.FunctionNode;function h(t,r){try{return y(a[t].apply(null,r))}catch(n){return r=r.map(function(t){return e.isFraction(t)?t.valueOf():t}),y(a[t].apply(null,r))}}var d=i({Fraction:function(e){var t,r=e.s*e.n;return t=r<0?new p("-","unaryMinus",[new l(-r)]):new l(r),1===e.d?t:new p("/","divide",[t,new l(e.d)])},number:function(e){return e<0?v(new l(-e)):new l(e)},BigNumber:function(e){return e<0?v(new l(e.negated().toString(),"number")):new l(e.toString(),"number")},Complex:function(e){throw"Cannot convert Complex number to Node"}});function g(e){if(isFinite(e)){var t=a.fraction(e);if(t.valueOf()===e)return t}return e}var y=i({string:function(e){return"BigNumber"===t.number?a.bignumber(e):"Fraction"===t.number?a.fraction(e):g(parseFloat(e))},Fraction:function(e){return e},BigNumber:function(e){return e},number:function(e){return g(e)},Complex:function(e){return 0!==e.im?e:g(e.re)}});function v(e){return new p("-","unaryMinus",[e])}function x(t,r,n){return r.reduce(function(r,i){if(e.isNode(r)||e.isNode(i))e.isNode(r)?e.isNode(i)||(i=d(i)):r=d(r);else{try{return h(t,[r,i])}catch(e){}r=d(r),i=d(i)}return n([r,i])})}function w(t){switch(t.type){case"SymbolNode":return t;case"ConstantNode":return"number"==typeof t.value?y(t.value):t;case"FunctionNode":if(a[t.name]&&a[t.name].rawArgs)return t;if(-1===["add","multiply"].indexOf(t.name)){if(!(r=t.args.map(w)).some(e.isNode))try{return h(t.name,r)}catch(e){}return r=r.map(function(t){return e.isNode(t)?t:d(t)}),new m(t.name,r)}case"OperatorNode":var r,n,i=t.fn.toString(),o=f(t);if(t.isUnary())r=[w(t.args[0])],n=e.isNode(r[0])?o(r):h(i,r);else if(u(t))if(r=(r=c(t)).map(w),s(i)){for(var l=[],p=[],g=0;g1?(n=x(i,l,o),p.unshift(n),n=x(i,p,o)):n=x(i,r,o)}else n=x(i,r,o);else n=x(i,r=t.args.map(w),o);return n;case"ParenthesisNode":return w(t.content);case"AccessorNode":case"ArrayNode":case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"IndexNode":case"ObjectNode":case"RangeNode":case"UpdateNode":case"ConditionalNode":default:throw"Unimplemented node type in simplifyConstant: "+t.type}}return function(t){var r=w(t);return e.isNode(r)?r:d(r)}}},function(e,t,r){"use strict";t.factory=function(e,t,r,n,i){var a=i.expression.node.FunctionNode,o=i.expression.node.OperatorNode,s=i.expression.node.SymbolNode,u={add:!0,multiply:!0},c={add:!0,multiply:!0};function f(t,r){if(!e.isOperatorNode(t))return!1;var n=t.fn.toString();return r&&r.hasOwnProperty(n)&&r[n].hasOwnProperty("associative")?r[n].associative:c[n]||!1}function l(t){var r,n=[],i=function(t){for(var a=0;a2&&f(t)){for(var a=t.args.pop();t.args.length>0;)a=r([t.args.pop(),a]);t.args=a.args}}},unflattenl:function e(t){if(t.args&&0!==t.args.length){for(var r=p(t),n=t.args.length,i=0;i2&&f(t)){for(var a=t.args.shift();t.args.length>0;)a=r([a,t.args.shift()]);t.args=a.args}}}}},t.math=!0},function(e,t,r){"use strict";t.math=!0,t.name="simplifyCore",t.path="algebra.simplify",t.factory=function(e,t,n,i,a){var o=n(r(46)),s=n(r(58)),u=(n(r(54)),n(r(15))),c=n(r(19)),f=n(r(11)),l=n(r(43)),p=n(r(38)),m=a.expression.node.ConstantNode,h=a.expression.node.OperatorNode,d=a.expression.node.FunctionNode,g=a.expression.node.ParenthesisNode,y=new m(0),v=new m(1);return function t(r){if(e.isOperatorNode(r)&&r.isUnary()){var n=t(r.args[0]);if("+"===r.op)return n;if("-"===r.op){if(e.isOperatorNode(n)){if(n.isUnary()&&"-"===n.op)return n.args[0];if(n.isBinary()&&"subtract"===n.fn)return new h("-","subtract",[n.args[1],n.args[0]])}return new h(r.op,r.fn,[n])}}else if(e.isOperatorNode(r)&&r.isBinary()){n=t(r.args[0]);var i=t(r.args[1]);if("+"===r.op){if(e.isConstantNode(n)){if(s(n.value))return i;if(e.isConstantNode(i))return new m(u(n.value,i.value))}return e.isConstantNode(i)&&s(i.value)?n:e.isOperatorNode(i)&&i.isUnary()&&"-"===i.op?new h("-","subtract",[n,i.args[0]]):new h(r.op,r.fn,i?[n,i]:[n])}if("-"===r.op){if(e.isConstantNode(n)&&i){if(e.isConstantNode(i))return new m(c(n.value,i.value));if(s(n.value))return new h("-","unaryMinus",[i])}if("subtract"===r.fn)return e.isConstantNode(i)&&s(i.value)?n:e.isOperatorNode(i)&&i.isUnary()&&"-"===i.op?t(new h("+","add",[n,i.args[0]])):new h(r.op,r.fn,[n,i])}else{if("*"===r.op){if(e.isConstantNode(n)){if(s(n.value))return y;if(o(n.value,1))return i;if(e.isConstantNode(i))return new m(f(n.value,i.value))}if(e.isConstantNode(i)){if(s(i.value))return y;if(o(i.value,1))return n;if(e.isOperatorNode(n)&&n.isBinary()&&n.op===r.op){var a=n.args[0];if(e.isConstantNode(a)){var x=new m(f(a.value,i.value));return new h(r.op,r.fn,[x,n.args[1]])}}return new h(r.op,r.fn,[i,n])}return new h(r.op,r.fn,[n,i])}if("/"===r.op){if(e.isConstantNode(n)){if(s(n.value))return y;if(e.isConstantNode(i)&&(o(i.value,1)||o(i.value,2)||o(i.value,4)))return new m(l(n.value,i.value))}return new h(r.op,r.fn,[n,i])}if("^"===r.op){if(e.isConstantNode(i)){if(s(i.value))return v;if(o(i.value,1))return n;if(e.isConstantNode(n))return new m(p(n.value,i.value));if(e.isOperatorNode(n)&&n.isBinary()&&"^"===n.op){var w=n.args[1];if(e.isConstantNode(w))return new h(r.op,r.fn,[n.args[0],new m(f(w.value,i.value))])}}return new h(r.op,r.fn,[n,i])}}}else{if(e.isParenthesisNode(r)){var b=t(r.content);return e.isParenthesisNode(b)||e.isSymbolNode(b)||e.isConstantNode(b)?b:new g(b)}if(e.isFunctionNode(r)){var N=r.args.map(t).map(function(t){return e.isParenthesisNode(t)?t.content:t});return new d(t(r.fn),N)}}return r}}},function(e,t,r){"use strict";var n=r(5);t.name="clone",t.factory=function(e,t,r,i){var a=i("clone",{any:n.clone});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="unequal",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(25)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=r(4),h=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:d(e,t)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,d)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,d,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,d,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,d)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,d,!1)},"DenseMatrix, any":function(e,t){return p(e,t,d,!1)},"any, SparseMatrix":function(e,t){return f(t,e,d,!0)},"any, DenseMatrix":function(e,t){return p(t,e,d,!0)},"Array, any":function(e,t){return p(s(e),t,d,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,d,!0).valueOf()}}),d=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return!e.equals(t)},"Complex, Complex":function(e,t){return!e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)}});return h.toTex={2:"\\left(${args[0]}"+m.operators.unequal+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";var n=r(3),i=r(0);t.name="sign",t.factory=function(e,t,r,a){var o=a("sign",{number:n.sign,Complex:function(e){return e.sign()},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s,1)},"Array | Matrix":function(e){return i(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="conj",t.factory=function(e,t,r,i){var a=i("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.conjugate()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)^*"},a}},function(e,t,r){"use strict";var n=r(24).object;t.name="lup",t.factory=function(e,t,i,a){var o=i(r(1)),s=i(r(27)),u=i(r(16)),c=i(r(12)),f=i(r(21)),l=i(r(19)),p=i(r(32)),m=i(r(8)),h=i(r(33)),d=e.SparseMatrix,g=e.DenseMatrix,y=e.Spa,v=a("lup",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=o(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}}),x=function(e){var t,r,i,a=e._size[0],o=e._size[1],h=Math.min(a,o),d=n.clone(e._data),y=[],v=[a,h],x=[],w=[h,o],b=[];for(t=0;t0)for(t=0;t0&&B.forEach(0,r-1,function(e,t){d._forEachRow(e,N,M,E,function(r,n){r>e&&B.accumulate(r,h(f(n,t)))})});var R=r,U=B.get(r),D=s(U);B.forEach(r+1,l-1,function(e,t){var r=s(t);p(r,D)&&(R=e,D=r,U=t)}),r!==R&&(d._swapRows(r,R,A[1],N,M,E),d._swapRows(r,R,T[1],O,S,_),B.swap(r,R),a=R,o=z[i=r],u=z[a],C[o]=a,C[u]=i,z[i]=u,z[a]=o),B.forEach(0,l-1,function(e,t){e<=r?(O.push(t),S.push(e)):(t=c(t,U),m(t,0)||(N.push(t),M.push(e)))})}return _.push(O.length),E.push(N.length),{L:new d({values:N,index:M,ptr:E,size:A}),U:new d({values:O,index:S,ptr:_,size:T}),p:C,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return v}},function(e,t,r){"use strict";var n=r(24).number.isInteger;t.name="slu",t.factory=function(e,t,i,a){var o=i(r(411)),s=i(r(419));return a("slu",{"SparseMatrix, number, number":function(e,t,r){if(!n(t)||t<0||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(r<0||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var i=o(t,e,!1),a=s(e,i,r);return{L:a.L,U:a.U,p:a.pinv,q:i.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}})}},function(e,t,r){"use strict";t.name="cs_tdfs",t.path="sparse",t.factory=function(){return function(e,t,r,n,i,a,o){var s=0;for(r[o]=e;s>=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],r[o+ ++s]=c)}return t}}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(35);t.name="largerEq",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(17)),c=a(r(25)),f=a(r(18)),l=a(r(7)),p=a(r(6)),m=r(4),h=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gte(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return-1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h)},"SparseMatrix, DenseMatrix":function(e,t){return u(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,h)},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return p(e,t,h,!1)},"any, SparseMatrix":function(e,t){return f(t,e,h,!0)},"any, DenseMatrix":function(e,t){return p(t,e,h,!0)},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+m.operators.largerEq+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";t.name="cs_marked",t.path="sparse",t.factory=function(){return function(e,t){return e[t]<0}}},function(e,t,r){"use strict";t.name="cs_mark",t.path="sparse",t.factory=function(e,t,n){var i=n(r(80));return function(e,t){e[t]=i(e[t])}}},function(e,t,r){"use strict";t.name="lsolve",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(12)),s=n(r(21)),u=n(r(19)),c=n(r(8)),f=n(r(81)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e);return m(r,t).valueOf()}}),m=function(e,t){for(var r=(t=f(e,t,!0))._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=0;my&&(w.push(m[n]),b.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var M=o(v,x);for(n=0,N=b.length;n=0;m--){var h,d=r[m][0]||0;if(c(d,0))h=0;else{var g=p[m][m];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(d,g);for(var y=m-1;y>=0;y--)r[y]=[u(r[y][0]||0,s(h,p[y][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){for(var r,n,i=(t=f(e,t,!0))._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,d=e._ptr,g=[],y=p-1;y>=0;y--){var v=i[y][0]||0;if(c(v,0))g[y]=[0];else{var x=0,w=[],b=[],N=d[y],M=d[y+1];for(n=M-1;n>=N;n--)(r=h[n])===y?x=m[n]:r=0||t.predictable?Math.log(r):new e.Complex(r,0).log()},Complex:function(e){return e.log()},BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():new e.Complex(r.toNumber(),0).log()},"Array | Matrix":function(e){return n(e,s)},"any, any":function(e,t){return o(s(e),s(t))}});return s.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";var n=r(5).clone,i=r(9).format;t.name="trace",t.factory=function(e,t,a,o){var s=a(r(1)),u=a(r(15)),c=o("trace",{Array:function(e){return f(s(e))},SparseMatrix:function(e){var t=e._values,r=e._index,n=e._ptr,a=e._size,o=a[0],s=a[1];if(o===s){var c=0;if(t.length>0)for(var f=0;ff)break}return c}throw new RangeError("Matrix must be square (size: "+i(a)+")")},DenseMatrix:f,any:n});function f(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1===t[0])return n(r[0]);throw new RangeError("Matrix must be square (size: "+i(t)+")");case 2:var a=t[0];if(a===t[1]){for(var o=0,s=0;s171)return 1/0;for(var n=e-2,s=e-1;n>1;)s*=n,n--;return 0==s&&(s=1),s}if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*l(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,p=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*p)+5246819/(75246796800*p*e))}--e,r=o[0];for(var m=1;m1;)i=i.times(a),a--;return new e.BigNumber(i.toPrecision(e.BigNumber.precision))}(r.minus(1));if(!r.isFinite())return new e.BigNumber(r.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"\\Gamma\\left(${args[0]}\\right)"},l}},function(e,t,r){"use strict";var n=r(0);t.name="not",t.factory=function(e,t,i,a){var o=r(4),s=a("not",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return null===e.value||s(e.value)},"Array | Matrix":function(e){return n(e,s)}});return s.toTex={1:o.operators.not+"\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount;function i(e,t){var r=n(t),i=function(n,a){return Array.isArray(n)?n.map(function(e,t){return i(e,a.concat(t))}):1===r?t(n):2===r?t(n,a):t(n,a,e)};return i(e,[])}t.name="map",t.factory=function(e,t,r,n){var a=n("map",{"Array, function":i,"Matrix, function":function(e,t){return e.map(t)}});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(42);t.name="sum",t.factory=function(e,t,i,a){var o=i(r(16)),s=i(r(34)),u=a("sum",{"Array | Matrix":function(e){return c(e)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(e){return c(e)}});return u.toTex=void 0,u;function c(r){var i=void 0;if(n(r,function(e){try{i=void 0===i?e:o(i,e)}catch(t){throw s(t,"sum",e)}}),void 0===i)switch(t.number){case"number":return 0;case"BigNumber":return new e.BigNumber(0);case"Fraction":return new e.Fraction(0);default:return 0}return i}}},function(e,t,r){"use strict";var n=r(2).flatten,i=r(2).identify,a=r(2).generalize;t.name="setDifference",t.factory=function(e,t,o,s){var u=o(r(26)),c=o(r(45)),f=o(r(28)),l=o(r(22)),p=o(r(29));return s("setDifference",{"Array | Matrix, Array | Matrix":function(e,t){if(0===l(f(e),new u(0)))var r=[];else{if(0===l(f(t),new u(0)))return n(e.toArray());for(var o,s=i(n(Array.isArray(e)?e:e.toArray()).sort(p)),m=i(n(Array.isArray(t)?t:t.toArray()).sort(p)),h=(r=[],0);h0&&(a=e[o]);return d(a,i)}var s=f(e,(t-1)/2);return h(s)}catch(e){throw l(e,"median")}}var h=o({"number | BigNumber | Complex | Unit":function(e){return e}}),d=o({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(e,t){return u(s(e,t),2)}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n="unbiased",i=r(42);t.name="var",t.factory=function(e,t,a,o){var s=a(r(16)),u=a(r(19)),c=a(r(21)),f=a(r(12)),l=a(r(34)),p=o("variance",{"Array | Matrix":function(e){return m(e,n)},"Array | Matrix, string":m,"...":function(e){return m(e,n)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p;function m(t,r){var n=0,a=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(i(t,function(e){try{n=s(n,e),a++}catch(t){throw l(t,"var",e)}}),0===a)throw new Error("Cannot calculate var of an empty array");var o=f(n,a);switch(n=0,i(t,function(e){var t=u(e,o);n=s(n,c(t,t))}),r){case"uncorrected":return f(n,a);case"biased":return f(n,a+1);case"unbiased":var p=e.isBigNumber(n)?new e.BigNumber(0):0;return 1==a?p:f(n,a-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}}},function(e,t,r){"use strict";var n=r(0);var i=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)};t.name="acosh",t.factory=function(e,t,r,a){var o=a("acosh",{number:function(r){return r>=1||t.predictable?i(r):r<=-1?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):new e.Complex(r,0).acosh()},Complex:function(e){return e.acosh()},BigNumber:function(e){return e.acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){var n=r(150);e.exports=function e(t){var i=n.create(t);return i.create=e,i.import(r(157)),i}()},function(e,t,r){e.exports=r(151)},function(e,t,r){var n=r(5).isFactory,i=r(152),a=r(87),o=r(155),s=r(156);t.create=function(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var t=[],r=[],u=a.mixin({});u.type={},u.expression={transform:{},mathWithTransform:{}},u.typed=i.create(u.type);var c={epsilon:1e-12,matrix:"Matrix",number:"number",precision:64,predictable:!1,randomSeed:null};function f(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=t.indexOf(e);return-1===a?(i=!0===e.math?e.factory(u.type,c,f,u.typed,u):e.factory(u.type,c,f,u.typed),t.push(e),r.push(i)):i=r[a],i}return u.import=f(o),u.config=f(s),u.expression.mathWithTransform.config=u.config,e&&u.config(e),u}},function(e,t,r){var n=r(153),i=r(3).digits,a=r(72),o=r(61),s=function(){return s=n.create,n};t.create=function(e){e.isNumber=function(e){return"number"==typeof e},e.isComplex=function(t){return e.Complex&&t instanceof e.Complex||!1},e.isBigNumber=a,e.isFraction=function(t){return e.Fraction&&t instanceof e.Fraction||!1},e.isUnit=function(e){return e&&e.constructor.prototype.isUnit||!1},e.isString=function(e){return"string"==typeof e},e.isArray=Array.isArray,e.isMatrix=o,e.isDenseMatrix=function(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix||!1},e.isSparseMatrix=function(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix||!1},e.isRange=function(e){return e&&e.constructor.prototype.isRange||!1},e.isIndex=function(e){return e&&e.constructor.prototype.isIndex||!1},e.isBoolean=function(e){return"boolean"==typeof e},e.isResultSet=function(e){return e&&e.constructor.prototype.isResultSet||!1},e.isHelp=function(e){return e&&e.constructor.prototype.isHelp||!1},e.isFunction=function(e){return"function"==typeof e},e.isDate=function(e){return e instanceof Date},e.isRegExp=function(e){return e instanceof RegExp},e.isObject=function(t){return"object"==typeof t&&t.constructor===Object&&!e.isComplex(t)&&!e.isFraction(t)},e.isNull=function(e){return null===e},e.isUndefined=function(e){return void 0===e},e.isAccessorNode=function(e){return e&&e.isAccessorNode&&e.constructor.prototype.isNode||!1},e.isArrayNode=function(e){return e&&e.isArrayNode&&e.constructor.prototype.isNode||!1},e.isAssignmentNode=function(e){return e&&e.isAssignmentNode&&e.constructor.prototype.isNode||!1},e.isBlockNode=function(e){return e&&e.isBlockNode&&e.constructor.prototype.isNode||!1},e.isConditionalNode=function(e){return e&&e.isConditionalNode&&e.constructor.prototype.isNode||!1},e.isConstantNode=function(e){return e&&e.isConstantNode&&e.constructor.prototype.isNode||!1},e.isFunctionAssignmentNode=function(e){return e&&e.isFunctionAssignmentNode&&e.constructor.prototype.isNode||!1},e.isFunctionNode=function(e){return e&&e.isFunctionNode&&e.constructor.prototype.isNode||!1},e.isIndexNode=function(e){return e&&e.isIndexNode&&e.constructor.prototype.isNode||!1},e.isNode=function(e){return e&&e.isNode&&e.constructor.prototype.isNode||!1},e.isObjectNode=function(e){return e&&e.isObjectNode&&e.constructor.prototype.isNode||!1},e.isOperatorNode=function(e){return e&&e.isOperatorNode&&e.constructor.prototype.isNode||!1},e.isParenthesisNode=function(e){return e&&e.isParenthesisNode&&e.constructor.prototype.isNode||!1},e.isRangeNode=function(e){return e&&e.isRangeNode&&e.constructor.prototype.isNode||!1},e.isSymbolNode=function(e){return e&&e.isSymbolNode&&e.constructor.prototype.isNode||!1},e.isChain=function(e){return e&&e.constructor.prototype.isChain||!1};var t=s();return t.types=[{name:"number",test:e.isNumber},{name:"Complex",test:e.isComplex},{name:"BigNumber",test:e.isBigNumber},{name:"Fraction",test:e.isFraction},{name:"Unit",test:e.isUnit},{name:"string",test:e.isString},{name:"Array",test:e.isArray},{name:"Matrix",test:e.isMatrix},{name:"DenseMatrix",test:e.isDenseMatrix},{name:"SparseMatrix",test:e.isSparseMatrix},{name:"Range",test:e.isRange},{name:"Index",test:e.isIndex},{name:"boolean",test:e.isBoolean},{name:"ResultSet",test:e.isResultSet},{name:"Help",test:e.isHelp},{name:"function",test:e.isFunction},{name:"Date",test:e.isDate},{name:"RegExp",test:e.isRegExp},{name:"null",test:e.isNull},{name:"undefined",test:e.isUndefined},{name:"OperatorNode",test:e.isOperatorNode},{name:"ConstantNode",test:e.isConstantNode},{name:"SymbolNode",test:e.isSymbolNode},{name:"ParenthesisNode",test:e.isParenthesisNode},{name:"FunctionNode",test:e.isFunctionNode},{name:"FunctionAssignmentNode",test:e.isFunctionAssignmentNode},{name:"ArrayNode",test:e.isArrayNode},{name:"AssignmentNode",test:e.isAssignmentNode},{name:"BlockNode",test:e.isBlockNode},{name:"ConditionalNode",test:e.isConditionalNode},{name:"IndexNode",test:e.isIndexNode},{name:"RangeNode",test:e.isRangeNode},{name:"Node",test:e.isNode},{name:"Object",test:e.isObject}],t.conversions=[{from:"number",to:"BigNumber",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"Fraction",to:"BigNumber",convert:function(e){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(t){return new e.Complex(t.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(t){if(new e.Fraction(t).valueOf()!==t)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"string",to:"BigNumber",convert:function(t){try{return new e.BigNumber(t)}catch(e){throw new Error('Cannot convert "'+t+'" to BigNumber')}}},{from:"string",to:"Fraction",convert:function(t){try{return new e.Fraction(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(t){try{return new e.Complex(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Complex')}}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.BigNumber(+t)}},{from:"boolean",to:"Fraction",convert:function(t){return new e.Fraction(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){"use strict";var n,i,a;i=[],void 0===(a="function"==typeof(n=function(){function e(){return!0}function t(){return!1}function r(){}return function n(){var i=[{name:"number",test:function(e){return"number"==typeof e}},{name:"string",test:function(e){return"string"==typeof e}},{name:"boolean",test:function(e){return"boolean"==typeof e}},{name:"Function",test:function(e){return"function"==typeof e}},{name:"Array",test:Array.isArray},{name:"Date",test:function(e){return e instanceof Date}},{name:"RegExp",test:function(e){return e instanceof RegExp}},{name:"Object",test:function(e){return"object"==typeof e&&e.constructor===Object}},{name:"null",test:function(e){return null===e}},{name:"undefined",test:function(e){return void 0===e}}],a={name:"any",test:e},o=[],s=[],u={types:i,conversions:s,ignore:o};function c(e){var t=D(u.types,function(t){return t.name===e});if(t)return t;if("any"===e)return a;var r=D(u.types,function(t){return t.name.toLowerCase()===e.toLowerCase()});throw new TypeError('Unknown type "'+e+'"'+(r?'. Did you mean "'+r.name+'"?':""))}function f(e){return e===a?999:u.types.indexOf(e)}function l(e){var t=D(u.types,function(t){return t.test(e)});if(t)return t.name;throw new TypeError("Value has unknown type. Value: "+e)}function p(e){return e.map(function(e){var t=e.types.map(w);return(e.restParam?"...":"")+t.join("|")}).join(",")}function m(e,t){var r,n,i=0===e.indexOf("..."),a=(i?e.length>3?e.slice(3):"any":e).split("|").map(C).filter(z).filter(T),o=(r=a,n={},t.forEach(function(e){-1!==r.indexOf(e.from)||-1===r.indexOf(e.to)||n[e.from]||(n[e.from]=e)}),Object.keys(n).map(function(e){return n[e]})),s=a.map(function(e){var t=c(e);return{name:e,typeIndex:f(t),test:t.test,conversion:null,conversionIndex:-1}}),u=o.map(function(e){var r=c(e.from);return{name:e.from,typeIndex:f(r),test:r.test,conversion:e,conversionIndex:t.indexOf(e)}});return{types:s.concat(u),restParam:i}}function h(e){var t=P(e);return!!t&&t.restParam}function d(e){return e.types.some(function(e){return null!=e.conversion})}function g(t){if(t&&0!==t.types.length){if(1===t.types.length)return c(t.types[0].name).test;if(2===t.types.length){var r=c(t.types[0].name).test,n=c(t.types[1].name).test;return function(e){return r(e)||n(e)}}var i=t.types.map(function(e){return c(e.name).test});return function(e){for(var t=0;t=a+1}}return 0===e.length?function(e){return 0===e.length}:1===e.length?(r=g(e[0]),function(e){return r(e[0])&&1===e.length}):2===e.length?(r=g(e[0]),n=g(e[1]),function(e){return r(e[0])&&n(e[1])&&2===e.length}):(t=e.map(g),function(e){for(var r=0;r=i:s?i>=a:i===a}(t,e)});if(t)throw new TypeError('Conflicting signatures "'+p(t.params)+'" and "'+p(e.params)+'".');i.push(e)});var a=k(i,function(e){return(e?S(e.params,!1):[]).map(function(t){return{params:t,fn:e.fn}})}).filter(B);a.sort(A);var o,s=a[0]&&a[0].params.length<=2&&!h(a[0].params),c=a[1]&&a[1].params.length<=2&&!h(a[1].params),f=a[2]&&a[2].params.length<=2&&!h(a[2].params),w=a[3]&&a[3].params.length<=2&&!h(a[3].params),b=a[4]&&a[4].params.length<=2&&!h(a[4].params),M=a[5]&&a[5].params.length<=2&&!h(a[5].params),E=s&&c&&f&&w&&b&&M,_=a.map(function(e){return y(e.params)}),T=s?g(a[0].params[0]):t,z=c?g(a[1].params[0]):t,P=f?g(a[2].params[0]):t,q=w?g(a[3].params[0]):t,L=b?g(a[4].params[0]):t,F=M?g(a[5].params[0]):t,j=s?g(a[0].params[1]):t,H=c?g(a[1].params[1]):t,$=f?g(a[2].params[1]):t,G=w?g(a[3].params[1]):t,V=b?g(a[4].params[1]):t,Z=M?g(a[5].params[1]):t,W=a.map(function(e){return function(e,t){var r=t;if(e.some(d)){var n=h(e),i=e.map(O);r=function(){for(var e=[],r=n?arguments.length-1:arguments.length,a=0;a0){var c=l(t[a]);return(n=new TypeError("Unexpected type of argument in function "+o+" (expected: "+i.join(" or ")+", actual: "+c+", index: "+a+")")).data={category:"wrongType",fn:o,index:a,actual:c,expected:i},n}}else s=u}var f=s.map(function(e){return h(e.params)?1/0:e.params.length});if(t.lengthp?((n=new TypeError("Too many arguments in function "+o+" (expected: "+p+", actual: "+t.length+")")).data={category:"tooManyArgs",fn:o,index:t.length,expectedLength:p},n):((n=new TypeError('Arguments of type "'+t.join(", ")+'" do not match any of the defined signatures of function '+o+".")).data={category:"mismatch",actual:t.map(l)},n)}(e,arguments,a)},fe=function(e,t){return arguments.length===te&&T(e)&&j(t)?Y.apply(null,arguments):arguments.length===re&&z(e)&&H(t)?X.apply(null,arguments):arguments.length===ne&&P(e)&&$(t)?J.apply(null,arguments):arguments.length===ie&&q(e)&&G(t)?Q.apply(null,arguments):arguments.length===ae&&L(e)&&V(t)?K.apply(null,arguments):arguments.length===oe&&F(e)&&Z(t)?ee.apply(null,arguments):ce.apply(null,arguments)};try{Object.defineProperty(fe,"name",{value:e})}catch(e){}return fe.signatures=(o={},a.forEach(function(e){e.params.some(d)||S(e.params,!0).forEach(function(t){o[p(t)]=e.fn})}),o),fe}function T(e){return-1===u.ignore.indexOf(e)}function C(e){return e.trim()}function z(e){return!!e}function B(e){return null!==e}function I(e){return 0===e.types.length}function P(e){return e[e.length-1]}function R(e,t,r){return Array.prototype.slice.call(e,t,r)}function U(e,t){for(var r=0;r0){for(a+=o,t=1;tr)throw Error(g+e)}function B(e,t,r,n){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=O,i=0):(i=Math.ceil((t+1)/O),t%=O),a=w(10,O-t),s=e[i]%a|0,null==n?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),o=r<4&&99999==s||r>3&&49999==s||5e4==s||0==s):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(e[i+1]/a/100|0)==w(10,t-2)-1||(s==a/2||0==s)&&0==(e[i+1]/a/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),o=(n||r<4)&&9999==s||!n&&r>3&&4999==s):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==w(10,t-3)-1,o}function I(e,t,r){for(var n,i,a=[0],o=0,s=e.length;or-1&&(void 0===a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}T.absoluteValue=T.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),R(e)},T.ceil=function(){return R(new this.constructor(this),this.e+1,2)},T.comparedTo=T.cmp=function(e){var t,r,n,i,a=this.d,o=(e=new this.constructor(e)).d,s=this.s,u=e.s;if(!a||!o)return s&&u?s!==u?s:a===o?0:!a^s<0?1:-1:NaN;if(!a[0]||!o[0])return a[0]?s:o[0]?-u:0;if(s!==u)return s;if(this.e!==e.e)return this.e>e.e^s<0?1:-1;for(t=0,r=(n=a.length)<(i=o.length)?n:i;to[t]^s<0?1:-1;return n===i?0:n>i^s<0?1:-1},T.cosine=T.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=function(e,t){var r,n,i=t.d.length;i<32?(r=Math.ceil(i/3),n=Math.pow(4,-r).toString()):(r=16,n="2.3283064365386962890625e-10");e.precision+=r,t=Y(e,1,t.times(n),new e(1));for(var a=r;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=r,t}(n,X(n,r)),n.precision=e,n.rounding=t,R(2==s||3==s?r.neg():r,e,t,!0)):new n(1):new n(NaN)},T.cubeRoot=T.cbrt=function(){var e,t,r,n,i,a,o,s,u,c,f=this,l=f.constructor;if(!f.isFinite()||f.isZero())return new l(f);for(h=!1,(a=f.s*Math.pow(f.s*f,1/3))&&Math.abs(a)!=1/0?n=new l(a.toString()):(r=C(f.d),(a=((e=f.e)-r.length+1)%3)&&(r+=1==a||-2==a?"0":"00"),a=Math.pow(r,1/3),e=x((e+1)/3)-(e%3==(e<0?-1:2)),(n=new l(r=a==1/0?"5e"+e:(r=a.toExponential()).slice(0,r.indexOf("e")+1)+e)).s=f.s),o=(e=l.precision)+3;;)if(c=(u=(s=n).times(s).times(s)).plus(f),n=P(c.plus(f).times(s),c.plus(u),o+2,1),C(s.d).slice(0,o)===(r=C(n.d)).slice(0,o)){if("9999"!=(r=r.slice(o-3,o+1))&&(i||"4999"!=r)){+r&&(+r.slice(1)||"5"!=r.charAt(0))||(R(n,e+1,1),t=!n.times(n).times(n).eq(f));break}if(!i&&(R(s,e+1,0),s.times(s).times(s).eq(f))){n=s;break}o+=4,i=1}return h=!0,R(n,e,l.rounding,t)},T.decimalPlaces=T.dp=function(){var e,t=this.d,r=NaN;if(t){if(r=((e=t.length-1)-x(this.e/O))*O,e=t[e])for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r},T.dividedBy=T.div=function(e){return P(this,new this.constructor(e))},T.dividedToIntegerBy=T.divToInt=function(e){var t=this.constructor;return R(P(this,new t(e),0,1,1),t.precision,t.rounding)},T.equals=T.eq=function(e){return 0===this.cmp(e)},T.floor=function(){return R(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(e){return this.cmp(e)>0},T.greaterThanOrEqualTo=T.gte=function(e){var t=this.cmp(e);return 1==t||0===t},T.hyperbolicCosine=T.cosh=function(){var e,t,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,(i=a.d.length)<32?(e=Math.ceil(i/3),t=Math.pow(4,-e).toString()):(e=16,t="2.3283064365386962890625e-10"),a=Y(o,1,a.times(t),new o(1),!0);for(var u,c=e,f=new o(8);c--;)u=a.times(a),a=s.minus(u.times(f.minus(u.times(f))));return R(a,o.precision=r,o.rounding=n,!0)},T.hyperbolicSine=T.sinh=function(){var e,t,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,r=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,(n=i.d.length)<3)i=Y(a,2,i,i,!0);else{e=(e=1.4*Math.sqrt(n))>16?16:0|e,i=Y(a,2,i=i.times(Math.pow(5,-e)),i,!0);for(var o,s=new a(5),u=new a(16),c=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(u.times(o).plus(c))))}return a.precision=t,a.rounding=r,R(i,t,r,!0)},T.hyperbolicTangent=T.tanh=function(){var e,t,r=this.constructor;return this.isFinite()?this.isZero()?new r(this):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,P(this.sinh(),this.cosh(),r.precision=e,r.rounding=t)):new r(this.s)},T.inverseCosine=T.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,a=r.rounding;return-1!==n?0===n?t.isNeg()?q(r,i,a):new r(0):new r(NaN):t.isZero()?q(r,i+4,a).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=q(r,i+4,a).times(.5),r.precision=i,r.rounding=a,e.minus(t))},T.inverseHyperbolicCosine=T.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,h=!1,r=r.times(r).minus(1).sqrt().plus(r),h=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)},T.inverseHyperbolicSine=T.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,h=!1,r=r.times(r).plus(1).sqrt().plus(r),h=!0,n.precision=e,n.rounding=t,r.ln())},T.inverseHyperbolicTangent=T.atanh=function(){var e,t,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?R(new a(i),e,t,!0):(a.precision=r=n-i.e,i=P(i.plus(1),new a(1).minus(i),r+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},T.inverseSine=T.asin=function(){var e,t,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),r=a.precision,n=a.rounding,-1!==t?0===t?((e=q(a,r+4,n).times(.5)).s=i.s,e):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))},T.inverseTangent=T.atan=function(){var e,t,r,n,i,a,o,s,u,c=this,f=c.constructor,l=f.precision,p=f.rounding;if(c.isFinite()){if(c.isZero())return new f(c);if(c.abs().eq(1)&&l+4<=_)return(o=q(f,l+4,p).times(.25)).s=c.s,o}else{if(!c.s)return new f(NaN);if(l+4<=_)return(o=q(f,l+4,p).times(.5)).s=c.s,o}for(f.precision=s=l+10,f.rounding=1,e=r=Math.min(28,s/O+2|0);e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(h=!1,t=Math.ceil(s/O),n=1,u=c.times(c),o=new f(c),i=c;-1!==e;)if(i=i.times(u),a=o.minus(i.div(n+=2)),i=i.times(u),void 0!==(o=a.plus(i.div(n+=2))).d[t])for(e=t;o.d[e]===a.d[e]&&e--;);return r&&(o=o.times(2<this.d.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isPositive=T.isPos=function(){return this.s>0},T.isZero=function(){return!!this.d&&0===this.d[0]},T.lessThan=T.lt=function(e){return this.cmp(e)<0},T.lessThanOrEqualTo=T.lte=function(e){return this.cmp(e)<1},T.logarithm=T.log=function(e){var t,r,n,i,a,o,s,u,c=this.constructor,f=c.precision,l=c.rounding;if(null==e)e=new c(10),t=!0;else{if(r=(e=new c(e)).d,e.s<0||!r||!r[0]||e.eq(1))return new c(NaN);t=e.eq(10)}if(r=this.d,this.s<0||!r||!r[0]||this.eq(1))return new c(r&&!r[0]?-1/0:1!=this.s?NaN:r?0:1/0);if(t)if(r.length>1)a=!0;else{for(i=r[0];i%10==0;)i/=10;a=1!==i}if(h=!1,o=V(this,s=f+5),n=t?k(c,s+10):V(e,s),B((u=P(o,n,s,1)).d,i=f,l))do{if(o=V(this,s+=10),n=t?k(c,s+10):V(e,s),u=P(o,n,s,1),!a){+C(u.d).slice(i+1,i+15)+1==1e14&&(u=R(u,f+1,0));break}}while(B(u.d,i+=10,l));return h=!0,R(u,f,l)},T.minus=T.sub=function(e){var t,r,n,i,a,o,s,u,c,f,l,p,m=this,d=m.constructor;if(e=new d(e),!m.d||!e.d)return m.s&&e.s?m.d?e.s=-e.s:e=new d(e.d||m.s!==e.s?m:NaN):e=new d(NaN),e;if(m.s!=e.s)return e.s=-e.s,m.plus(e);if(c=m.d,p=e.d,s=d.precision,u=d.rounding,!c[0]||!p[0]){if(p[0])e.s=-e.s;else{if(!c[0])return new d(3===u?-0:0);e=new d(m)}return h?R(e,s,u):e}if(r=x(e.e/O),f=x(m.e/O),c=c.slice(),a=f-r){for((l=a<0)?(t=c,a=-a,o=p.length):(t=p,r=f,o=c.length),a>(n=Math.max(Math.ceil(s/O),o)+2)&&(a=n,t.length=1),t.reverse(),n=a;n--;)t.push(0);t.reverse()}else{for((l=(n=c.length)<(o=p.length))&&(o=n),n=0;n0;--n)c[o++]=0;for(n=p.length;n>a;){if(c[--n](o=(a=Math.ceil(s/O))>o?a+1:o+1)&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for((o=c.length)-(i=f.length)<0&&(i=o,r=f,f=c,c=r),t=0;i;)t=(c[--i]=c[i]+f[i]+t)/A|0,c[i]%=A;for(t&&(c.unshift(t),++n),o=c.length;0==c[--o];)c.pop();return e.d=c,e.e=D(c,n),h?R(e,s,u):e},T.precision=T.sd=function(e){var t;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(g+e);return this.d?(t=L(this.d),e&&this.e+1>t&&(t=this.e+1)):t=NaN,t},T.round=function(){var e=this.constructor;return R(new e(this),this.e+1,e.rounding)},T.sine=T.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+O,n.rounding=1,r=function(e,t){var r,n=t.d.length;if(n<3)return Y(e,2,t,t);r=(r=1.4*Math.sqrt(n))>16?16:0|r,t=t.times(Math.pow(5,-r)),t=Y(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}(n,X(n,r)),n.precision=e,n.rounding=t,R(s>2?r.neg():r,e,t,!0)):new n(NaN)},T.squareRoot=T.sqrt=function(){var e,t,r,n,i,a,o=this.d,s=this.e,u=this.s,c=this.constructor;if(1!==u||!o||!o[0])return new c(!u||u<0&&(!o||o[0])?NaN:o?this:1/0);for(h=!1,0==(u=Math.sqrt(+this))||u==1/0?(((t=C(o)).length+s)%2==0&&(t+="0"),u=Math.sqrt(t),s=x((s+1)/2)-(s<0||s%2),n=new c(t=u==1/0?"1e"+s:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+s)):n=new c(u.toString()),r=(s=c.precision)+3;;)if(n=(a=n).plus(P(this,a,r+2,1)).times(.5),C(a.d).slice(0,r)===(t=C(n.d)).slice(0,r)){if("9999"!=(t=t.slice(r-3,r+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(R(n,s+1,1),e=!n.times(n).eq(this));break}if(!i&&(R(a,s+1,0),a.times(a).eq(this))){n=a;break}r+=4,i=1}return h=!0,R(n,s,c.rounding,e)},T.tangent=T.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,(r=r.sin()).s=1,r=P(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,R(2==s||4==s?r.neg():r,e,t,!0)):new n(NaN)},T.times=T.mul=function(e){var t,r,n,i,a,o,s,u,c,f=this.constructor,l=this.d,p=(e=new f(e)).d;if(e.s*=this.s,!(l&&l[0]&&p&&p[0]))return new f(!e.s||l&&!l[0]&&!p||p&&!p[0]&&!l?NaN:l&&p?0*e.s:e.s/0);for(r=x(this.e/O)+x(e.e/O),(u=l.length)<(c=p.length)&&(a=l,l=p,p=a,o=u,u=c,c=o),a=[],n=o=u+c;n--;)a.push(0);for(n=c;--n>=0;){for(t=0,i=u+n;i>n;)s=a[i]+p[n]*l[i-n-1]+t,a[i--]=s%A|0,t=s/A|0;a[i]=(a[i]+t)%A|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=D(a,r),h?R(e,f.precision,f.rounding):e},T.toBinary=function(e,t){return J(this,2,e,t)},T.toDecimalPlaces=T.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(z(e,0,c),void 0===t?t=n.rounding:z(t,0,8),R(r,e+r.e+1,t))},T.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=U(n,!0):(z(e,0,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(n),e+1,t),!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r},T.toFixed=function(e,t){var r,n,i=this.constructor;return void 0===e?r=U(this):(z(e,0,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(this),e+this.e+1,t),!1,e+n.e+1)),this.isNeg()&&!this.isZero()?"-"+r:r},T.toFraction=function(e){var t,r,n,i,a,o,s,u,c,f,l,p,m=this.d,d=this.constructor;if(!m)return new d(this);if(c=r=new d(1),o=(a=(t=new d(n=u=new d(0))).e=L(m)-this.e-1)%O,t.d[0]=w(10,o<0?O+o:o),null==e)e=a>0?t:c;else{if(!(s=new d(e)).isInt()||s.lt(c))throw Error(g+s);e=s.gt(t)?a>0?t:c:s}for(h=!1,s=new d(C(m)),f=d.precision,d.precision=a=m.length*O*2;l=P(s,t,0,1,1),1!=(i=r.plus(l.times(n))).cmp(e);)r=n,n=i,i=c,c=u.plus(l.times(i)),u=i,i=t,t=s.minus(l.times(i)),s=i;return i=P(e.minus(r),n,0,1,1),u=u.plus(i.times(c)),r=r.plus(i.times(n)),u.s=c.s=this.s,p=P(c,n,a,1).minus(this).abs().cmp(P(u,r,a,1).minus(this).abs())<1?[c,n]:[u,r],d.precision=f,h=!0,p},T.toHexadecimal=T.toHex=function(e,t){return J(this,16,e,t)},T.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),null==e){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),void 0!==t&&z(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(h=!1,t<4&&(t=[4,5,7,8][t]),r=P(r,e,0,t,1).times(e),h=!0,R(r)):(e.s=r.s,r=e),r},T.toNumber=function(){return+this},T.toOctal=function(e,t){return J(this,8,e,t)},T.toPower=T.pow=function(e){var t,r,n,i,a,o,s=this,u=s.constructor,c=+(e=new u(e));if(!(s.d&&e.d&&s.d[0]&&e.d[0]))return new u(w(+s,c));if((s=new u(s)).eq(1))return s;if(n=u.precision,a=u.rounding,e.eq(1))return R(s,n,a);if((t=x(e.e/O))>=e.d.length-1&&(r=c<0?-c:c)<=9007199254740991)return i=j(u,s,r,n),e.s<0?new u(1).div(i):R(i,n,a);if((o=s.s)<0){if(tu.maxE+1||t0?o/0:0):(h=!1,u.rounding=s.s=1,r=Math.min(12,(t+"").length),(i=G(e.times(V(s,n+r)),n)).d&&B((i=R(i,n+5,1)).d,n,a)&&(t=n+10,+C((i=R(G(e.times(V(s,t+r)),t),t+5,1)).d).slice(n+1,n+15)+1==1e14&&(i=R(i,n+1,0))),i.s=o,h=!0,u.rounding=a,R(i,n,a))},T.toPrecision=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=U(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(z(e,1,c),void 0===t?t=i.rounding:z(t,0,8),r=U(n=R(new i(n),e,t),e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r},T.toSignificantDigits=T.toSD=function(e,t){var r=this.constructor;return void 0===e?(e=r.precision,t=r.rounding):(z(e,1,c),void 0===t?t=r.rounding:z(t,0,8)),R(new r(this),e,t)},T.toString=function(){var e=this.constructor,t=U(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()&&!this.isZero()?"-"+t:t},T.truncated=T.trunc=function(){return R(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){var e=this.constructor,t=U(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()?"-"+t:t};var P=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;)e.shift()}return function(n,i,a,s,u,c){var f,l,p,m,h,d,g,y,v,w,b,N,M,E,S,_,T,C,z,B,I=n.constructor,P=n.s==i.s?1:-1,U=n.d,D=i.d;if(!(U&&U[0]&&D&&D[0]))return new I(n.s&&i.s&&(U?!D||U[0]!=D[0]:D)?U&&0==U[0]||!D?0*P:P/0:NaN);for(c?(h=1,l=n.e-i.e):(c=A,h=O,l=x(n.e/h)-x(i.e/h)),z=D.length,T=U.length,w=(v=new I(P)).d=[],p=0;D[p]==(U[p]||0);p++);if(D[p]>(U[p]||0)&&l--,null==a?(E=a=I.precision,s=I.rounding):E=u?a+(n.e-i.e)+1:a,E<0)w.push(1),d=!0;else{if(E=E/h+2|0,p=0,1==z){for(m=0,D=D[0],E++;(p1&&(D=e(D,m,c),U=e(U,m,c),z=D.length,T=U.length),_=z,N=(b=U.slice(0,z)).length;N=c/2&&++C;m=0,(f=t(D,b,z,N))<0?(M=b[0],z!=N&&(M=M*c+(b[1]||0)),(m=M/C|0)>1?(m>=c&&(m=c-1),1==(f=t(g=e(D,m,c),b,y=g.length,N=b.length))&&(m--,r(g,z=10;m/=10)p++;v.e=p+l*h-1,R(v,u?a+v.e+1:a,s,d)}return v}}();function R(e,t,r,n){var i,a,o,s,u,c,f,l,p,m=e.constructor;e:if(null!=t){if(!(l=e.d))return e;for(i=1,s=l[0];s>=10;s/=10)i++;if((a=t-i)<0)a+=O,o=t,u=(f=l[p=0])/w(10,i-o-1)%10|0;else if((p=Math.ceil((a+1)/O))>=(s=l.length)){if(!n)break e;for(;s++<=p;)l.push(0);f=u=0,i=1,o=(a%=O)-O+1}else{for(f=s=l[p],i=1;s>=10;s/=10)i++;u=(o=(a%=O)-O+i)<0?0:f/w(10,i-o-1)%10|0}if(n=n||t<0||void 0!==l[p+1]||(o<0?f:f%w(10,i-o-1)),c=r<4?(u||n)&&(0==r||r==(e.s<0?3:2)):u>5||5==u&&(4==r||n||6==r&&(a>0?o>0?f/w(10,i-o):0:l[p-1])%10&1||r==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=w(10,(O-t%O)%O),e.e=-t||0):l[0]=e.e=0,e;if(0==a?(l.length=p,s=1,p--):(l.length=p+1,s=w(10,O-a),l[p]=o>0?(f/w(10,i-o)%w(10,o)|0)*s:0),c)for(;;){if(0==p){for(a=1,o=l[0];o>=10;o/=10)a++;for(o=l[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,l[0]==A&&(l[0]=1));break}if(l[p]+=s,l[p]!=A)break;l[p--]=0,s=1}for(a=l.length;0===l[--a];)l.pop()}return h&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e0?a=a.charAt(0)+"."+a.slice(1)+F(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(e.e<0?"e":"e+")+e.e):i<0?(a="0."+F(-i-1)+a,r&&(n=r-o)>0&&(a+=F(n))):i>=o?(a+=F(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+F(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=F(n))),a}function D(e,t){var r=e[0];for(t*=O;r>=10;r/=10)t++;return t}function k(e,t,r){if(t>S)throw h=!0,r&&(e.precision=r),Error(y);return R(new e(l),t,1,!0)}function q(e,t,r){if(t>_)throw Error(y);return R(new e(p),t,r,!0)}function L(e){var t=e.length-1,r=t*O+1;if(t=e[t]){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function F(e){for(var t="";e--;)t+="0";return t}function j(e,t,r,n){var i,a=new e(1),o=Math.ceil(n/O+4);for(h=!1;;){if(r%2&&Q((a=a.times(t)).d,o)&&(i=!0),0===(r=x(r/2))){r=a.d.length-1,i&&0===a.d[r]&&++a.d[r];break}Q((t=t.times(t)).d,o)}return h=!0,a}function H(e){return 1&e.d[e.d.length-1]}function $(e,t,r){for(var n,i=new e(t[0]),a=0;++a17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(h=!1,u=d):u=t,s=new p(.03125);e.e>-2;)e=e.times(s),l+=5;for(u+=n=Math.log(w(2,l))/Math.LN10*2+5|0,r=a=o=new p(1),p.precision=u;;){if(a=R(a.times(e),u,1),r=r.times(++f),C((s=o.plus(P(a,r,u,1))).d).slice(0,u)===C(o.d).slice(0,u)){for(i=l;i--;)o=R(o.times(o),u,1);if(null!=t)return p.precision=d,o;if(!(c<3&&B(o.d,u-n,m,c)))return R(o,p.precision=d,m,h=!0);p.precision=u+=10,r=a=s=new p(1),f=0,c++}o=s}}function V(e,t){var r,n,i,a,o,s,u,c,f,l,p,m=1,d=e,g=d.d,y=d.constructor,v=y.rounding,x=y.precision;if(d.s<0||!g||!g[0]||!d.e&&1==g[0]&&1==g.length)return new y(g&&!g[0]?-1/0:1!=d.s?NaN:g?0:d);if(null==t?(h=!1,f=x):f=t,y.precision=f+=10,n=(r=C(g)).charAt(0),!(Math.abs(a=d.e)<15e14))return c=k(y,f+2,x).times(a+""),d=V(new y(n+"."+r.slice(1)),f-10).plus(c),y.precision=x,null==t?R(d,x,v,h=!0):d;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=C((d=d.times(e)).d)).charAt(0),m++;for(a=d.e,n>1?(d=new y("0."+r),a++):d=new y(n+"."+r.slice(1)),l=d,u=o=d=P(d.minus(1),d.plus(1),f,1),p=R(d.times(d),f,1),i=3;;){if(o=R(o.times(p),f,1),C((c=u.plus(P(o,new y(i),f,1))).d).slice(0,f)===C(u.d).slice(0,f)){if(u=u.times(2),0!==a&&(u=u.plus(k(y,f+2,x).times(a+""))),u=P(u,new y(m),f,1),null!=t)return y.precision=x,u;if(!B(u.d,f-10,v,s))return R(u,y.precision=x,v,h=!0);y.precision=f+=10,c=o=d=P(l.minus(1),l.plus(1),f,1),p=R(d.times(d),f,1),i=s=1}u=c,i+=2}}function Z(e){return String(e.s*e.s/0)}function W(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);n++);for(i=t.length;48===t.charCodeAt(i-1);--i);if(t=t.slice(n,i)){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%O,r<0&&(n+=O),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e=0&&(m=m.replace(".",""),(d=new g(1)).e=m.length-s,d.d=I(U(d),10,i),d.e=d.d.length),a=l=(h=I(m,10,i)).length;0==h[--l];)h.pop();if(h[0]){if(s<0?a--:((e=new g(e)).d=h,e.e=a,h=(e=P(e,d,r,n,0,i)).d,a=e.e,p=o),s=h[r],u=i/2,p=p||void 0!==h[r+1],p=n<4?(void 0!==s||p)&&(0===n||n===(e.s<0?3:2)):s>u||s===u&&(4===n||p||6===n&&1&h[r-1]||n===(e.s<0?8:7)),h.length=r,p)for(;++h[--r]>i-1;)h[r]=0,r||(++a,h.unshift(1));for(l=h.length;!h[l-1];--l);for(s=0,m="";s1)if(16==t||8==t){for(s=16==t?4:3,--l;l%s;l++)m+="0";for(l=(h=I(m,i,t)).length;!h[l-1];--l);for(s=1,m="1.";sl)for(a-=l;a--;)m+="0";else at)return e.length=t,!0}function K(e){return new this(e).abs()}function ee(e){return new this(e).acos()}function te(e){return new this(e).acosh()}function re(e,t){return new this(e).plus(t)}function ne(e){return new this(e).asin()}function ie(e){return new this(e).asinh()}function ae(e){return new this(e).atan()}function oe(e){return new this(e).atanh()}function se(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,a=n+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(r=t.s<0?q(this,n,i):new this(0)).s=e.s:!e.d||t.isZero()?(r=q(this,a,1).times(.5)).s=e.s:t.s<0?(this.precision=a,this.rounding=1,r=this.atan(P(e,t,a,1)),t=q(this,a,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(P(e,t,a,1)):(r=q(this,a,1).times(t.s>0?.25:.75)).s=e.s:r=new this(NaN),r}function ue(e){return new this(e).cbrt()}function ce(e){return R(e=new this(e),e.e+1,2)}function fe(e){if(!e||"object"!=typeof e)throw Error(d+"Object expected");var t,r,n,i=!0===e.defaults,a=["precision",1,c,"rounding",0,8,"toExpNeg",-u,0,"toExpPos",0,u,"maxE",0,u,"minE",-u,0,"modulo",0,9];for(t=0;t=a[t+1]&&n<=a[t+2]))throw Error(g+r+": "+n);this[r]=n}if(r="crypto",i&&(this[r]=m[r]),void 0!==(n=e[r])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(g+r+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(v);this[r]=!0}else this[r]=!1}return this}function le(e){return new this(e).cos()}function pe(e){return new this(e).cosh()}function me(e,t){return new this(e).div(t)}function he(e){return new this(e).exp()}function de(e){return R(e=new this(e),e.e+1,3)}function ge(){var e,t,r=new this(0);for(h=!1,e=0;e=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else{if(!crypto.randomBytes)throw Error(v);for(t=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=n/4}else for(;a=10;i/=10)n++;n=10;r/=10)t++;return i.e=t,void(i.d=[e])}return 0*e!=0?(e||(i.s=NaN),i.e=NaN,void(i.d=null)):W(i,e.toString())}if("string"!==n)throw Error(g+e);return 45===e.charCodeAt(0)?(e=e.slice(1),i.s=-1):i.s=1,E.test(e)?W(i,e):function(e,t){var r,n,i,o,s,u,c,f,l;if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(N.test(t))r=16,t=t.toLowerCase();else if(b.test(t))r=2;else{if(!M.test(t))throw Error(g+t);r=8}for((o=t.search(/p/i))>0?(c=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),s=(o=t.indexOf("."))>=0,n=e.constructor,s&&(o=(u=(t=t.replace(".","")).length)-o,i=j(n,new n(r),o,2*o)),o=l=(f=I(t,r,A)).length-1;0===f[o];--o)f.pop();return o<0?new n(0*e.s):(e.e=D(f,l),e.d=f,h=!1,s&&(e=P(e,i,4*u)),c&&(e=e.times(Math.abs(c)<54?Math.pow(2,c):a.pow(2,c))),h=!0,e)}(i,e)}if(o.prototype=T,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=fe,o.clone=e,o.isDecimal=ye,o.abs=K,o.acos=ee,o.acosh=te,o.add=re,o.asin=ne,o.asinh=ie,o.atan=ae,o.atanh=oe,o.atan2=se,o.cbrt=ue,o.ceil=ce,o.cos=le,o.cosh=pe,o.div=me,o.exp=he,o.floor=de,o.hypot=ge,o.ln=ve,o.log=xe,o.log10=be,o.log2=we,o.max=Ne,o.min=Me,o.mod=Ee,o.mul=Ae,o.pow=Oe,o.random=Se,o.round=_e,o.sign=Te,o.sin=Ce,o.sinh=ze,o.sqrt=Be,o.sub=Ie,o.tan=Pe,o.tanh=Re,o.trunc=Ue,void 0===t&&(t={}),t&&!0!==t.defaults)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r0){for(e>=1&&(e/=h=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)));g<=1e7&&v<=1e7;){if(e===(r=(d+y)/(g+v))){g+v<=1e7?(n=d+y,a=g+v):v>g?(n=y,a=v):(n=d,a=g);break}e>r?(d+=y,g+=v):(y+=d,v+=g),g>1e7?(n=y,a=v):(n=d,a=g)}n*=h}else(isNaN(e)||isNaN(t))&&(a=n=NaN);break;case"string":if(null===(g=e.match(/\d+|./g))&&c(),"-"===g[d]?(s=-1,d++):"+"===g[d]&&d++,g.length===d+1?l=u(g[d++],s):"."===g[d+1]||"."===g[d]?("."!==g[d]&&(f=u(g[d++],s)),(++d+1===g.length||"("===g[d+1]&&")"===g[d+3]||"'"===g[d+1]&&"'"===g[d+3])&&(l=u(g[d],s),m=Math.pow(10,g[d].length),d++),("("===g[d]&&")"===g[d+2]||"'"===g[d]&&"'"===g[d+2])&&(p=u(g[d+1],s),h=Math.pow(10,g[d+1].length)-1,d+=3)):"/"===g[d+1]||":"===g[d+1]?(l=u(g[d],s),m=u(g[d+2],1),d+=3):"/"===g[d+3]&&" "===g[d+1]&&(f=u(g[d],s),l=u(g[d+2],s),m=u(g[d+4],1),d+=5),g.length<=d){s=n=p+(a=m*h)*f+h*l;break}default:c()}if(0===a)throw new o;i.s=s<0?-1:1,i.n=Math.abs(n),i.d=Math.abs(a)},l=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(!(e%=t))return t;if(!(t%=e))return e}};function p(e,t){if(!(this instanceof p))return new p(e,t);f(e,t),e=p.REDUCE?l(i.d,i.n):1,this.s=i.s,this.n=i.n/e,this.d=i.d/e}p.REDUCE=1,p.prototype={s:1,n:0,d:1,abs:function(){return new p(this.n,this.d)},neg:function(){return new p(-this.s*this.n,this.d)},add:function(e,t){return f(e,t),new p(this.s*this.n*i.d+i.s*this.d*i.n,this.d*i.d)},sub:function(e,t){return f(e,t),new p(this.s*this.n*i.d-i.s*this.d*i.n,this.d*i.d)},mul:function(e,t){return f(e,t),new p(this.s*i.s*this.n*i.n,this.d*i.d)},div:function(e,t){return f(e,t),new p(this.s*i.s*this.n*i.d,this.d*i.n)},clone:function(){return new p(this)},mod:function(e,t){return isNaN(this.n)||isNaN(this.d)?new p(NaN):void 0===e?new p(this.s*this.n%this.d,1):(f(e,t),0===i.n&&0===this.d&&p(0,0),new p(this.s*i.d*this.n%(i.n*this.d),i.d*this.d))},gcd:function(e,t){return f(e,t),new p(l(i.n,this.n),i.d*this.d/l(i.d,this.d))},lcm:function(e,t){return f(e,t),0===i.n&&0===this.n?new p:new p(i.n*this.n/l(i.n,this.n),l(i.d,this.d))},ceil:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return new p(this.s*this.d,this.n)},pow:function(e){return e<0?new p(Math.pow(this.s*this.d,-e),Math.pow(this.n,-e)):new p(Math.pow(this.s*this.n,e),Math.pow(this.d,e))},equals:function(e,t){return f(e,t),this.s*this.n*i.d==i.s*i.n*this.d},compare:function(e,t){f(e,t);var r=this.s*this.n*i.d-i.s*i.n*this.d;return(00&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toContinued:function(){for(var e,t=this.n,r=this.d,n=[];n.push(Math.floor(t/r)),e=t%r,t=r,r=e,1!==t;);return n},toString:function(){var e,t=this.n,r=this.d;if(isNaN(t)||isNaN(r))return"NaN";p.REDUCE||(t/=e=l(t,r),r/=e);var n=function(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>2e3)return 0;return n}(0,r),i=function(e,t,r){for(var n=1,i=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n}(10,r,t),a=0;a<300;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0}(0,r,n),a=-1===this.s?"-":"";if(a+=t/r|0,t%=r,(t*=10)&&(a+="."),n){for(var o=i;o--;)a+=t/r|0,t%=r,t*=10;a+="(";for(o=n;o--;)a+=t/r|0,t%=r,t*=10;a+=")"}else for(o=15;t&&o--;)a+=t/r|0,t%=r,t*=10;return a}},void 0===(n=function(){return p}.apply(t,[]))||(e.exports=n)}()},function(e,t,r){e.exports=[r(73),r(45),r(177),r(178),r(179),r(180),r(26),r(90),r(181),r(1),r(182)]},function(e,t,r){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t,r){"use strict";var n=r(24),i=r(10),a=n.array,o=n.object,s=n.string,u=n.number,c=Array.isArray,f=u.isNumber,l=u.isInteger,p=s.isString,m=a.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=function(e,t,h,d){var g=h(r(73)),y=h(r(8));function v(t,r){if(!(this instanceof v))throw new SyntaxError("Constructor must be called with the new operator");if(r&&!p(r))throw new Error("Invalid datatype: "+r);if(e.isMatrix(t))x(this,t,r);else if(t&&c(t.index)&&c(t.ptr)&&c(t.size))this._values=t.values,this._index=t.index,this._ptr=t.ptr,this._size=t.size,this._datatype=r||t.datatype;else if(c(t))w(this,t,r);else{if(t)throw new TypeError("Unsupported type of data ("+n.types.type(t)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=r}}var x=function(e,t,r){"SparseMatrix"===t.type?(e._values=t._values?o.clone(t._values):void 0,e._index=o.clone(t._index),e._ptr=o.clone(t._ptr),e._size=o.clone(t._size),e._datatype=r||t._datatype):w(e,t.valueOf(),r||t._datatype)},w=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(p(r)&&(a=d.find(y,[r,r])||y,o=d.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;u");for(var m=r.min()[0],h=r.min()[1],d=u[0],g=u[1],y=0;yo-1||a>s-1)&&(O(this,Math.max(n+1,o),Math.max(a+1,s),r),o=this._size[0],s=this._size[1]),m(n,o),m(a,s);var l=M(n,this._ptr[a],this._ptr[a+1],this._index);return lm){for(u=m;ul){if(f){var h=0;for(u=0;ut-1&&(e._values.splice(c,1),e._index.splice(c,1),v++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.reshape=function(e,t){if(!c(e))throw new TypeError("Array expected");if(2!==e.length)throw new Error("Sparse matrices can only be reshaped in two dimensions");if(e.forEach(function(t){if(!u.isNumber(t)||!u.isInteger(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")}),this._size[0]*this._size[1]!=e[0]*e[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var r=t?this.clone():this;if(this._size[0]===e[0]&&this._size[1]===e[1])return r;for(var n=[],i=0;i=t&&N<=r){if(!o)for(var M=w;M "+(this._values?s.format(this._values[c],e):"X")}return i},v.prototype.toString=function(){return s.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!f(t)||!l(t))throw new TypeError("The parameter k must be an integer number")}else t=0;var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=[],c=[];c[0]=0;for(var p=r;p0?n:0,h=n<0?-n:0,g=t[0],x=t[1],w=Math.min(g-h,x-m);if(c(r)){if(r.length!==w)throw new Error("Invalid value array length");u=function(e){return r[e]}}else if(e.isMatrix(r)){var b=r.size();if(1!==b.length||b[0]!==w)throw new Error("Invalid matrix length");u=function(e){return r.get([e])}}else u=function(){return r};for(var N=[],M=[],E=[],A=0;A=0&&O=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(f<=c?c+1:c,1),n&&n.splice(f<=c?c+1:c,1)}else if(f=u||i[c]!==e)){var m=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,m),i.splice(c<=f?f+1:f,1),n&&n.splice(c<=f?f+1:f,1)}}},e.Matrix._storage.sparse=v,v},t.lazy=!1},function(e,t,r){"use strict";t.name="Spa",t.path="type",t.factory=function(e,t,n){var i=n(r(15)),a=n(r(8));function o(){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}return o.prototype.type="Spa",o.prototype.isSpa=!0,o.prototype.set=function(e,t){if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},o.prototype.get=function(e){var t=this._values[e];return t?t.value:0},o.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=i(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},o.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,o=[],s=n.extractMinimum();for(s&&o.push(s);s&&s.key<=t;)s.key>=e&&(a(s.value,0)||r(s.key,s.value,this)),(s=n.extractMinimum())&&o.push(s);for(var u=0;u0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=p(t,this._size)),this._size--,this._minimum=t,e},u.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&a(t.key,n.key)&&(f(e,t,n),l(e,n)),a(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){var r,n,i,u=Math.floor(Math.log(t)*s)+1,c=new Array(u),f=0,l=e;if(l)for(f++,l=l.right;l!==e;)f++,l=l.right;for(;f>0;){for(var p=l.degree,m=l.right;r=c[p];){if(o(l.key,r.key)){var h=r;r=l,l=h}i=l,(n=r).left.right=n.right,n.right.left=n.left,n.parent=i,i.child?(n.left=i.child,n.right=i.child.right,i.child.right=n,n.right.left=n):(i.child=n,n.right=n,n.left=n),i.degree++,n.mark=!1,c[p]=null,p++}c[p]=l,l=m,f--}e=null;for(var d=0;d="0"&&e<="9"}function T(){f++,l=c.charAt(f)}function C(e){f=e,l=c.charAt(f)}function z(){var e,t,r="";if(e=f,"+"==l?T():"-"==l&&(r+=l,T()),!((t=l)>="0"&&t<="9"||"."==t))return C(e),null;if("."==l){if(r+=l,T(),!_(l))return C(e),null}else{for(;_(l);)r+=l,T();"."==l&&(r+=l,T())}for(;_(l);)r+=l,T();if("E"==l||"e"==l){var n="",i=f;if(n+=l,T(),"+"!=l&&"-"!=l||(n+=l,T()),!_(l))return C(i),r;for(r+=n;_(l);)r+=l,T()}return r}function B(){for(var e="",t=c.charCodeAt(f);t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122;)e+=l,T(),t=c.charCodeAt(f);return((t=e.charCodeAt(0))>=65&&t<=90||t>=97&&t<=122)&&e||null}function I(e){return l===e?(T(),e):null}function P(e){if(F.hasOwnProperty(e))return{unit:i=F[e],prefix:r=i.prefixes[""]};for(var t in F)if(F.hasOwnProperty(t)&&n(e,t)){var r,i=F[t],a=e.length-t.length,o=e.substring(0,a);if(void 0!==(r=i.prefixes.hasOwnProperty(o)?i.prefixes[o]:void 0))return{unit:i,prefix:r}}return null}O.prototype.type="Unit",O.prototype.isUnit=!0,O.parse=function(r,n){if(n=n||{},f=-1,l="","string"!=typeof(c=r))throw new TypeError("Invalid argument in Unit.parse, string expected");var i=new O;i.units=[],T(),S();var a=z(),o=null;a&&(o="BigNumber"===t.number?new e.BigNumber(a):"Fraction"===t.number?new e.Fraction(a):parseFloat(a)),S();for(var s=1,u=!1,p=[],m=1;;){for(S();"("===l;)p.push(s),m*=s,s=1,T(),S();if(!l)break;var h=l,d=B();if(null==d)throw new SyntaxError('Unexpected "'+h+'" in "'+c+'" at index '+f.toString());var g=P(d);if(null==g)throw new SyntaxError('Unit "'+d+'" not found.');var y=s*m;if(S(),I("^")){S();var v=z();if(null==v)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');y*=v}i.units.push({unit:g.unit,prefix:g.prefix,power:y});for(var x=0;x1||Math.abs(this.units[0].power-1)>1e-15)},O.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=O._getNumberConverter(M(e));for(var s=0;s1e-12)return!1;return!0},O.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},O.prototype.equals=function(e){return this.equalBase(e)&&w(this.value,e.value)},O.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&(G.hasOwnProperty(o)?r.push({unit:G[o].unit,prefix:G[o].prefix,power:this.dimensions[a]||0}):i=!0)}r.length1e-12){if(!$.si.hasOwnProperty(n))throw new Error("Cannot express custom unit "+n+" in SI units");t.push({unit:$.si[n].unit,prefix:$.si[n].prefix,power:e.dimensions[r]||0})}}return e.units=t,e.isUnitListSimplified=!0,e},O.prototype.formatUnits=function(){this.simplifyUnitListLazy();for(var e="",t="",r=0,n=0,i=0;i0?(r++,e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},O.prototype.format=function(t){this.simplifyUnitListLazy();var r=!1;for(var n in void 0!==this.value&&null!==this.value&&e.isComplex(this.value)&&(r=Math.abs(this.value.re)<1e-14,Math.abs(this.value.im)),this.units)this.units[n].unit&&("VA"===this.units[n].unit.name&&r?this.units[n].unit=F.VAR:"VAR"!==this.units[n].unit.name||r||(this.units[n].unit=F.VA));1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var i=this._denormalize(this.value),a=null!==this.value?N(i,t||{}):"",o=this.formatUnits();return this.value&&e.isComplex(this.value)&&(a="("+a+")"),o.length>0&&a.length>0&&(a+=" "),a+=o},O.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=null!==this.value?y(this.value):0,t=y(this.units[0].unit.value),r=this.units[0].prefix;if(0===e)return r;var n=this.units[0].power,i=Math.log(e/Math.pow(r.value*t,n))/Math.LN10-1.2;if(i>-2.200001&&i<1.800001)return r;i=Math.abs(i);var a=this.units[0].unit.prefixes;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];if(s.scientific){var u=Math.abs(Math.log(e/Math.pow(s.value*t,n))/Math.LN10-1.2);(u0&&!(n(r)||(i=r)>="0"&&i<="9"))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+e+'"')}var i}(e);var n,i,a=null,o=[],s=0;if(t&&"Unit"===t.type)a=t.clone();else if("string"==typeof t)""!==t&&(n=t);else{if("object"!=typeof t)throw new TypeError('Cannot create unit "'+e+'" from "'+t.toString()+'": expecting "string" or "Unit" or "Object"');n=t.definition,i=t.prefixes,s=t.offset,t.aliases&&(o=t.aliases.valueOf())}if(o)for(var u=0;u1e-12){l=!1;break}if(l){f=!0;break}}f||(m=e+"_STUFF",(d={dimensions:a.dimensions.slice(0)}).key=m,q[m]=d,G[m]={unit:c,prefix:U.NONE[""]},c.base=m)}else{var m=e+"_STUFF";if(k.indexOf(m)>=0)throw new Error('Cannot create new base unit "'+e+'": a base unit with that name already exists (and cannot be overridden)');for(var h in k.push(m),q)q.hasOwnProperty(h)&&(q[h].dimensions[k.length-1]=0);var d={dimensions:[]};for(u=0;u1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]}},function(e,t){e.exports={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]}},function(e,t){e.exports={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number, number": f(x)=x+x })',"double(2)",'double("hello")'],seealso:[]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]}},function(e,t){e.exports={name:"map",category:"Matrix",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], square)"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]}},function(e,t){e.exports={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])"],seealso:["size","squeeze","resize"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural"]}},function(e,t){e.exports={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]}},function(e,t){e.exports={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]}},function(e,t){e.exports={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]}},function(e,t){e.exports={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]}},function(e,t){e.exports={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]}},function(e,t){e.exports={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]}},function(e,t){e.exports={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]}},function(e,t){e.exports={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]}},function(e,t){e.exports={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var","quantileSeq"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(387),r(389),r(390),r(110),r(111)]},function(e,t,r){"use strict";var n=r(0);t.name="compile",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return n(e,function(e){return o(e).compile()})}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).setSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22)),u=a(r(1));return function(e,t,r){try{if(Array.isArray(e))return u(e).subset(t,r).valueOf();if(e&&"function"==typeof e.subset)return e.subset(t,r);if("string"==typeof e)return s(e,t,r);if("object"==typeof e){if(!t.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty(),r),e}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";var n=r(0);t.name="eval",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile().eval({})},"string, Object":function(e,t){return o(e).compile().eval(t)},"Array | Matrix":function(e){var t={};return n(e,function(e){return o(e).compile().eval(t)})},"Array | Matrix, Object":function(e,t){return n(e,function(e){return o(e).compile().eval(t)})}})}},function(e,t,r){"use strict";var n=r(13).getSafeProperty;t.math=!0,t.name="help",t.factory=function(e,t,i,a,o){var s=i(r(96));return a("help",{any:function(t){var r,i=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){i=r;break}var a=n(s,i);if(!a)throw new Error('No documentation found on "'+i+'"');return new e.Help(a)}})}},function(e,t,r){e.exports=[r(100),r(103),r(104),r(105),r(106),r(56),r(76),r(107),r(65),r(14),r(108),r(57),r(64),r(109),r(48),r(392)]},function(e,t,r){"use strict";t.name="UpdateNode",t.path="expression.node",t.factory=function(e,t,r,n){return function(){throw new Error("UpdateNode is deprecated. Use AssignmentNode instead.")}}},function(e,t,r){e.exports=[r(394),r(395),r(396),r(397),r(398),r(399),r(400),r(401),r(402),r(403)]},function(e,t,r){"use strict";var n=r(41).transform;t.name="concat",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(66));return a("concat",{"...any":function(t){var r=t.length-1,i=t[r];e.isNumber(i)?t[r]=i-1:e.isBigNumber(i)&&(t[r]=i.minus(1));try{return o.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(2).filter,i=r(2).filterRegExp,a=r(30).maxArgumentCount;function o(e,t){var r=a(t);return n(e,function(e,n,i){return 1===r?t(e):2===r?t(e,[n+1]):t(e,[n+1],i)})}t.name="filter",t.path="expression.transform",t.factory=function(e,t,n,a){var s=n(r(77)),u=n(r(1));function c(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),f(i,a)}c.rawArgs=!0;var f=a("filter",{"Array, function":o,"Matrix, function":function(e,t){return u(o(e.toArray(),t))},"Array, RegExp":i,"Matrix, RegExp":function(e,t){return u(i(e.toArray(),t))}});return f.toTex=void 0,c}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount,i=r(2).forEach;t.name="forEach",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(77));function u(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),c(i,a)}u.rawArgs=!0;var c=o("forEach",{"Array | Matrix, function":function(e,t){var r=n(t),a=function(n,o){Array.isArray(n)?i(n,function(e,t){a(e,o.concat(t+1))}):1===r?t(n):2===r?t(n,o):t(n,o,e)};a(e.valueOf(),[])}});return u}},function(e,t,r){"use strict";t.name="index",t.path="expression.transform",t.factory=function(e,t,r){return function(){for(var t=[],r=0,n=arguments.length;r0?0:2;else if(i&&!0===i.isSet)i=i.map(function(e){return e-1});else if(e.isArray(i)||e.isMatrix(i))i=i.map(function(e){return e-1});else if(e.isNumber(i))i--;else if(e.isBigNumber(i))i=i.toNumber()-1;else if("string"!=typeof i)throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount,i=r(2).map;function a(e,t,r){var a=n(t);return function e(n,o){return Array.isArray(n)?i(n,function(t,r){return e(t,o.concat(r+1))}):1===a?t(n):2===a?t(n,o):t(n,o,r)}(e,[])}t.name="map",t.path="expression.transform",t.factory=function(e,t,n,i){var o=n(r(77)),s=n(r(1));function u(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):o(t[1],r,n)),c(i,a)}u.rawArgs=!0;var c=i("map",{"Array, function":function(e,t){return a(e,t,e)},"Matrix, function":function(e,t){return s(a(e.valueOf(),t,e))}});return u}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="max",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(113));return o("max",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="mean",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(114));return o("mean",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="min",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(117));return o("min",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";t.name="range",t.path="expression.transform",t.factory=function(e,t,n,i){var a=n(r(118));return i("range",{"...any":function(e){return"boolean"!=typeof e[e.length-1]&&e.push(!0),a.apply(null,e)}})}},function(e,t,r){"use strict";var n=r(41).transform;t.name="subset",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(22));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(5),i=r(9);t.name="Help",t.path="type",t.factory=function(e,t,a,o){var s=a(r(111))();function u(e){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}return u.prototype.type="Help",u.prototype.isHelp=!0,u.prototype.toString=function(){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){r+="Examples:\n";for(var n=0;n0){for(var n=y(e,t.args[0],r),i=1;i0){var i=t.args.filter(function(e){return void 0===r[e]}),a=1===i.length?i[0]:new p("*","multiply",i),o=n.concat(v(a,r));return new p("*","multiply",o)}return new p("+","add",t.args.map(function(e){return new p("*","multiply",t.args.map(function(t){return t===e?v(t,r):t.clone()}))}))}if("/"===t.op&&t.isBinary()){var c=t.args[0],f=t.args[1];return void 0!==r[f]?new p("/","divide",[v(c,r),f]):void 0!==r[c]?new p("*","multiply",[new p("-","unaryMinus",[c]),new p("/","divide",[v(f,r),new p("^","pow",[f.clone(),x(2)])])]):new p("/","divide",[new p("-","subtract",[new p("*","multiply",[v(c,r),f.clone()]),new p("*","multiply",[c.clone(),v(f,r)])]),new p("^","pow",[f.clone(),x(2)])])}if("^"===t.op&&t.isBinary()){if(c=t.args[0],f=t.args[1],void 0!==r[c])return e.isConstantNode(c)&&(u(c.value)||s(c.value,1))?x(0):new p("*","multiply",[t,new p("*","multiply",[new l("log",[c.clone()]),v(f.clone(),r)])]);if(void 0!==r[f]){if(e.isConstantNode(f)){if(u(f.value))return x(0);if(s(f.value,1))return v(c,r)}var m=new p("^","pow",[c.clone(),new p("-","subtract",[f,x(1)])]);return new p("*","multiply",[f.clone(),new p("*","multiply",[v(c,r),m])])}return new p("*","multiply",[new p("^","pow",[c.clone(),f.clone()]),new p("+","add",[new p("*","multiply",[v(c,r),new p("/","divide",[f.clone(),c.clone()])]),new p("*","multiply",[v(f,r),new l("log",[c.clone()])])])])}throw new Error('Operator "'+t.op+'" is not supported by derivative, or a wrong number of arguments is passed')}});function x(e,r){return new f(c(e,r||t.number))}return d}},function(e,t,r){"use strict";t.math=!0,t.name="resolve",t.path="algebra.simplify",t.factory=function(e,t,r,n,i){var a=i.expression.node.Node,o=i.expression.node.OperatorNode,s=i.expression.node.FunctionNode,u=i.expression.node.ParenthesisNode;return function t(r,n){if(!n)return r;if(e.isSymbolNode(r)){var c=n[r.name];if(c instanceof a)return t(c,n);if("number"==typeof c)return i.parse(String(c))}else{if(e.isOperatorNode(r)){var f=r.args.map(function(e){return t(e,n)});return new o(r.op,r.fn,f)}if(e.isParenthesisNode(r))return new u(t(r.content,n));if(e.isFunctionNode(r))return f=r.args.map(function(e){return t(e,n)}),new s(r.name,f)}return r}}},function(e,t,r){"use strict";t.name="rationalize",t.factory=function(e,t,n,i){var a=n(r(79)),o=n(r(121)),s=n(r(119)),u=r(44),c=n(r(110)),f=r(3),l=n(r(56)),p=n(r(57)),m=n(r(48)),h=i("rationalize",{string:function(e){return h(c(e),{},!1)},"string, boolean":function(e,t){return h(c(e),{},t)},"string, Object":function(e,t){return h(c(e),t,!1)},"string, Object, boolean":function(e,t,r){return h(c(e),t,r)},Node:function(e){return h(e,{},!1)},"Node, boolean":function(e,t){return h(e,{},t)},"Node, Object":function(e,t){return h(e,t,!1)},"Node, Object, boolean":function(e,t,r){var n,i,c,m,h=function(e,t,r){var n=[],i=a(e,t),o="+-*"+((r=!!r)?"/":"");!function e(t){var r=t.type;if("FunctionNode"===r)throw new u("There is an unsolved function call");if("OperatorNode"===r)if("^"===t.op&&t.isBinary()){if("ConstantNode"!==t.args[1].type||!f.isInteger(parseFloat(t.args[1].value)))throw new u("There is a non-integer exponent");e(t.args[0])}else{if(-1===o.indexOf(t.op))throw new u("Operator "+t.op+" invalid in polynomial expression");for(var i=0;i=1){var y=((m={}).firstRules=(n=[o,{l:"n+n",r:"2*n"},{l:"n+-n",r:"0"},s,{l:"n*(n1^-1)",r:"n/n1"},{l:"n*n1^-n2",r:"n/n1^n2"},{l:"n1^-1",r:"1/n1"},{l:"n*(n1/n2)",r:"(n*n1)/n2"},{l:"1*n",r:"n"}]).concat(i=[{l:"(-n1)/(-n2)",r:"n1/n2"},{l:"(-n1)*(-n2)",r:"n1*n2"},{l:"n1--n2",r:"n1+n2"},{l:"n1-n2",r:"n1+(-n2)"},{l:"(n1+n2)*n3",r:"(n1*n3 + n2*n3)"},{l:"n1*(n2+n3)",r:"(n1*n2+n1*n3)"},{l:"c1*n + c2*n",r:"(c1+c2)*n"},{l:"-v*-c",r:"c*v"},{l:"-v*c",r:"-c*v"},{l:"v*-c",r:"-c*v"},{l:"v*c",r:"c*v"},{l:"-(-n1*n2)",r:"(n1*n2)"},{l:"-(n1*n2)",r:"(-n1*n2)"},{l:"-(-n1+n2)",r:"(n1-n2)"},{l:"-(n1+n2)",r:"(-n1-n2)"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"},{l:"-(-n1/n2)",r:"(n1/n2)"},{l:"-(n1/n2)",r:"(-n1/n2)"}],c=[{l:"(n1/(n2/n3))",r:"((n1*n3)/n2)"},{l:"(n1/n2/n3)",r:"(n1/(n2*n3))"}]),m.distrDivRules=[{l:"(n1/n2 + n3/n4)",r:"((n1*n4 + n3*n2)/(n2*n4))"},{l:"(n1/n2 + n3)",r:"((n1 + n3*n2)/n2)"},{l:"(n1 + n2/n3)",r:"((n1*n3 + n2)/n3)"}],m.sucDivRules=c,m.firstRulesAgain=n.concat(i),m.finalRules=[o,{l:"n*-n",r:"-n^2"},{l:"n*n",r:"n^2"},s,{l:"n*-n^n1",r:"-n^(n1+1)"},{l:"n*n^n1",r:"n^(n1+1)"},{l:"n^n1*-n^n2",r:"-n^(n1+n2)"},{l:"n^n1*n^n2",r:"n^(n1+n2)"},{l:"n^n1*-n",r:"-n^(n1+1)"},{l:"n^n1*n",r:"n^(n1+1)"},{l:"n^n1/-n",r:"-n^(n1-1)"},{l:"n^n1/n",r:"n^(n1-1)"},{l:"n/-n^n1",r:"-n^(1-n1)"},{l:"n/n^n1",r:"n^(1-n1)"},{l:"n^n1/-n^n2",r:"n^(n1-n2)"},{l:"n^n1/n^n2",r:"n^(n1-n2)"},{l:"n1+(-n2*n3)",r:"n1-n2*n3"},{l:"v*(-c)",r:"-c*v"},{l:"n1+-n2",r:"n1-n2"},{l:"v*c",r:"c*v"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"}],m);e=function e(t,r,n){var i=t.type,a=arguments.length>1;if("OperatorNode"===i&&t.isBinary()){var o=!1;if("^"===t.op&&("ParenthesisNode"===t.args[0].type||"OperatorNode"===t.args[0].type)&&"ConstantNode"===t.args[1].type){var s=parseFloat(t.args[1].value);o=s>=2&&f.isInteger(s)}if(o){if(s>2){var u=t.args[0],c=new p("^","pow",[t.args[0].cloneDeep(),new l(s-1)]);t=new p("*","multiply",[u,c])}else t=new p("*","multiply",[t.args[0],t.args[0].cloneDeep()]);a&&("content"===n?r.content=t:r.args[n]=t)}}if("ParenthesisNode"===i)e(t.content,t,"content");else if("ConstantNode"!==i&&"SymbolNode"!==i)for(var m=0;mi&&(t[l]=0),t[l]+=o.cte*("+"===o.oper?1:-1),void(i=Math.max(l,i))}o.cte=l,""===o.fire&&(t[0]+=o.cte*("+"===o.oper?1:-1))}}(e,null,n);var o=!0;for(r=i=t.length-1;r>=0;r--)if(0!==t[r]){var s,c=new l(o?t[r]:Math.abs(t[r])),h=t[r]<0?"-":"+";if(r>0){var d=new m(a);if(r>1){var g=new l(r);d=new p("^","pow",[d,g])}c=-1===t[r]&&o?new p("-","unaryMinus",[d]):1===Math.abs(t[r])?d:new p("*","multiply",[c,d])}s=o?c:"+"===h?new p("+","add",[s,c]):new p("-","subtract",[s,c]),o=!1}return o?new l(0):s}return h}},function(e,t,r){"use strict";t.name="qr",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(39)),s=n(r(63)),u=(n(r(122)),n(r(58))),c=(n(r(59)),n(r(123))),f=(n(r(27)),n(r(124))),l=n(r(50)),p=n(r(125)),m=n(r(33)),h=n(r(16)),d=n(r(12)),g=n(r(21)),y=n(r(19)),v=i("qr",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=a(e),r=x(t);return{Q:r.Q.valueOf(),R:r.R.valueOf()}}}),x=function(e){var t,r,n,i=e._size[0],a=e._size[1],v=s([i],"dense"),x=v._data,w=e.clone(),b=w._data,N=o([i],"");for(n=0;n=0;u--)for(f=r[u],l=r[u+1],c=f;c=0;s--)m[s]=-1,-1!=(u=h[s])&&(0==d[v+u]++&&(d[y+u]=s),d[0+s]=d[g+u],d[g+u]=s);for(t.lnz=0,t.m2=a,u=0;ui))for(var h=f[p+1];ms)r[u+m]=0,r[a+m]=-1,p++,t[m]=i(e),r[u+e]++;else{var d=r[c+h];-1!=d&&(f[d]=m),r[l+m]=r[c+h],r[c+h]=m}}return p},m=function(e,t,r,n,i){if(e<2||e+t<0){for(var a=0;a3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var d=f(e,t,n,s,c);a(d,h,null);for(var g,y,v,x,w,b,N,M,E,A,O,S,_,T,C,z,B=d._index,I=d._ptr,P=I[s],R=[],U=[],D=s+1,k=2*(s+1),q=3*(s+1),L=4*(s+1),F=5*(s+1),j=6*(s+1),H=7*(s+1),$=R,G=l(s,I,U,0,q,$,k,H,D,j,L,F),V=p(s,I,U,F,L,j,c,D,q,$,k),Z=0;VW?(b=v,N=J,M=U[0+v]-W):(N=I[b=B[J++]],M=U[0+b]),w=1;w<=M;w++)(E=U[D+(g=B[N++])])<=0||(X+=E,U[D+g]=-E,B[K++]=g,-1!=U[k+g]&&($[U[k+g]]=$[g]),-1!=$[g]?U[k+$[g]]=U[k+g]:U[q+U[F+g]]=U[k+g]);b!=v&&(I[b]=i(v),U[j+b]=0)}for(0!==W&&(P=K),U[F+v]=X,I[v]=Q,U[0+v]=K-Q,U[L+v]=-2,G=m(G,u,U,j,s),A=Q;A=G?U[j+b]-=E:0!==U[j+b]&&(U[j+b]=U[F+b]+ee)}for(A=Q;A0?(z+=te,B[T++]=b,C+=b):(I[b]=i(v),U[j+b]=0)}U[L+g]=T-S+1;var re=T,ne=S+U[0+g];for(J=_+1;J=0))for(g=U[H+(C=$[g])],U[H+C]=-1;-1!=g&&-1!=U[k+g];g=U[k+g],G++){for(M=U[0+g],O=U[L+g],J=I[g]+1;J<=I[g]+M-1;J++)U[j+B[J]]=G;var ae=g;for(y=U[k+g];-1!=y;){var oe=U[0+y]===M&&U[L+y]===O;for(J=I[y]+1;oe&&J<=I[y]+M-1;J++)U[j+B[J]]!=G&&(oe=0);oe?(I[y]=i(g),U[D+g]+=U[D+y],U[D+y]=0,U[L+y]=-1,y=U[k+y],U[k+ae]=y):(ae=y,y=U[k+y])}}for(J=Q,A=Q;A=0;y--)U[D+y]>0||(U[k+y]=U[q+I[y]],U[q+I[y]]=y);for(b=s;b>=0;b--)U[D+b]<=0||-1!=I[b]&&(U[k+b]=U[q+I[b]],U[q+I[b]]=b);for(v=0,g=0;g<=s;g++)-1==I[g]&&(v=o(g,v,U,q,k,R,j));return R.splice(R.length-1,1),R}}},function(e,t,r){"use strict";t.name="cs_fkeep",t.path="sparse",t.factory=function(){return function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size[1],s=0,u=0;u=0;r--)-1!=e[r]&&(o[s+r]=o[0+e[r]],o[0+e[r]]=r);for(r=0;r=1&&M[s]++,2==S.jleaf&&M[S.q]--}-1!=t[s]&&(y[0+s]=t[s])}for(s=0;s=0;){e=n[h];var d=s?s[e]:e;i(p,e)||(a(p,e),n[m+h]=d<0?0:o(p[d]));var g=1;for(c=n[m+h],f=d<0?0:o(p[d+1]);c=0||t.predictable?i(r):new e.Complex(r,0).log().div(Math.LN10)},Complex:function(t){return new e.Complex(t).log().div(Math.LN10)},BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():new e.Complex(r.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\log_{10}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";t.name="mod",t.factory=function(e,t,n,i){var a=n(r(1)),o=r(4),s=n(r(23)),u=n(r(17)),c=n(r(62)),f=n(r(20)),l=n(r(18)),p=n(r(7)),m=n(r(6)),h=i("mod",{"number, number":function(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")},"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h,!1)},"SparseMatrix, DenseMatrix":function(e,t){return s(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return p(e,t,h)},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return m(e,t,h,!1)},"any, SparseMatrix":function(e,t){return l(t,e,h,!0)},"any, DenseMatrix":function(e,t){return m(t,e,h,!0)},"Array, any":function(e,t){return m(a(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(a(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+o.operators.mod+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";t.name="norm",t.factory=function(e,t,n,i){var a=n(r(27)),o=n(r(15)),s=n(r(38)),u=n(r(50)),c=n(r(11)),f=n(r(8)),l=n(r(32)),p=n(r(37)),m=n(r(1)),h=n(r(137)),d=n(r(68)),g=i("norm",{number:Math.abs,Complex:function(e){return e.abs()},BigNumber:function(e){return e.abs()},boolean:function(e){return Math.abs(e)},Array:function(e){return y(m(e),2)},Matrix:function(e){return y(e,2)},"number | Complex | BigNumber | boolean, number | BigNumber | string":function(e){return g(e)},"Array, number | BigNumber | string":function(e,t){return y(m(e),t)},"Matrix, number | BigNumber | string":function(e,t){return y(e,t)}});function y(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=a(e);l(t,n)&&(n=t)},!0),n}var i;if(t===Number.NEGATIVE_INFINITY||"-inf"===t)return e.forEach(function(e){var t=a(e);i&&!p(t,i)||(i=t)},!0),i||0;if("fro"===t)return y(e,2);if("number"==typeof t&&!isNaN(t)){if(!f(t,0)){var m=0;return e.forEach(function(e){m=o(s(a(e),t),m)},!0),s(m,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var g=[],v=0;return e.forEach(function(e,t){var r=t[1],n=o(g[r]||0,a(e));l(n,v)&&(v=n),g[r]=n},!0),v}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=o(x[r]||0,a(e));l(n,w)&&(w=n),x[r]=n},!0),w}if("fro"===t)return u(h(c(d(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}return g.toTex={1:"\\left\\|${args[0]}\\right\\|",2:void 0},g}},function(e,t,r){"use strict";function n(e,t){var r=t<0;if(r&&(t=-t),0===t)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function i(e,t){if(t<0)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!=0)throw new Error("Root must be an integer");for(var r=e.arg(),n=e.abs(),i=[],a=Math.pow(n,1/t),o=0;o>t},"BigNumber, BigNumber":i,"SparseMatrix, SparseMatrix":function(e,t){return m(e,t,v,!1)},"SparseMatrix, DenseMatrix":function(e,t){return p(t,e,v,!0)},"DenseMatrix, SparseMatrix":function(e,t){return l(e,t,v,!1)},"DenseMatrix, DenseMatrix":function(e,t){return g(e,t,v)},"Array, Array":function(e,t){return v(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return v(u(e),t)},"Matrix, Array":function(e,t){return v(e,u(t))},"SparseMatrix, number | BigNumber":function(e,t){return c(t,0)?e.clone():d(e,t,v,!1)},"DenseMatrix, number | BigNumber":function(e,t){return c(t,0)?e.clone():y(e,t,v,!1)},"number | BigNumber, SparseMatrix":function(e,t){return c(e,0)?f(t.size(),t.storage()):h(t,e,v,!0)},"number | BigNumber, DenseMatrix":function(e,t){return c(e,0)?f(t.size(),t.storage()):y(t,e,v,!0)},"Array, number | BigNumber":function(e,t){return v(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return v(e,u(t)).valueOf()}});return v.toTex={2:"\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)"},v}},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():e.isNegative()?new r(-1):e.isFinite()?new r(0):new r(NaN)}},function(e,t,r){"use strict";var n=r(3).isInteger;t.name="rightLogShift",t.factory=function(e,t,i,a){var o=r(4),s=i(r(1)),u=i(r(8)),c=i(r(39)),f=i(r(31)),l=i(r(23)),p=i(r(84)),m=i(r(36)),h=i(r(20)),d=i(r(7)),g=i(r(6)),y=a("rightLogShift",{"number, number":function(e,t){if(!n(e)||!n(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"SparseMatrix, SparseMatrix":function(e,t){return p(e,t,y,!1)},"SparseMatrix, DenseMatrix":function(e,t){return l(t,e,y,!0)},"DenseMatrix, SparseMatrix":function(e,t){return f(e,t,y,!1)},"DenseMatrix, DenseMatrix":function(e,t){return d(e,t,y)},"Array, Array":function(e,t){return y(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return y(s(e),t)},"Matrix, Array":function(e,t){return y(e,s(t))},"SparseMatrix, number | BigNumber":function(e,t){return u(t,0)?e.clone():h(e,t,y,!1)},"DenseMatrix, number | BigNumber":function(e,t){return u(t,0)?e.clone():g(e,t,y,!1)},"number | BigNumber, SparseMatrix":function(e,t){return u(e,0)?c(t.size(),t.storage()):m(t,e,y,!0)},"number | BigNumber, DenseMatrix":function(e,t){return u(e,0)?c(t.size(),t.storage()):g(t,e,y,!0)},"Array, number | BigNumber":function(e,t){return y(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,s(t)).valueOf()}});return y.toTex={2:"\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)"},y}},function(e,t,r){e.exports=[r(459),r(460),r(138),r(461)]},function(e,t,r){"use strict";t.name="bellNumbers",t.factory=function(e,t,n,i){var a=n(r(15)),o=n(r(138)),s=n(r(60)),u=n(r(51)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;r<=e;r++)t=a(t,o(e,r));return t}});return c.toTex={1:"\\mathrm{B}_{${args[0]}}"},c}},function(e,t,r){"use strict";t.name="composition",t.factory=function(e,t,n,i){var a=n(r(71)),o=n(r(16)),s=n(r(59)),u=n(r(51)),c=n(r(32)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex=void 0,f}},function(e,t,r){"use strict";t.name="catalan",t.factory=function(e,t,n,i){var a=n(r(15)),o=n(r(43)),s=n(r(11)),u=n(r(71)),c=n(r(60)),f=n(r(51)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex={1:"\\mathrm{C}_{${args[0]}}"},l}},function(e,t,r){e.exports=[r(463),r(125),r(464),r(465)]},function(e,t,r){"use strict";var n=r(0);t.name="arg",t.factory=function(e,t,r,i){var a=i("arg",{number:function(e){return Math.atan2(0,e)},BigNumber:function(t){return e.BigNumber.atan2(0,t)},Complex:function(e){return e.arg()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\arg\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="im",t.factory=function(e,t,r,i){var a=i("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){"use strict";var n=r(0);t.name="re",t.factory=function(e,t,r,i){var a=i("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){e.exports=[r(467),r(468)]},function(e,t,r){"use strict";t.name="intersect",t.factory=function(e,t,n,i){var a=n(r(27)),o=n(r(15)),s=n(r(16)),u=n(r(1)),c=n(r(11)),f=n(r(21)),l=n(r(12)),p=n(r(19)),m=n(r(37)),h=n(r(8)),d=i("intersect",{"Array, Array, Array":function(e,t,r){if(!v(e))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!v(t))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!(4===(n=r).length&&g(n[0])&&g(n[1])&&g(n[2])&&g(n[3])))throw new TypeError("Array with 4 numbers expected as third argument");var n,i,a,o,u,c,m,h,d,y,x,w,b,N,M,E,A,O,S,_,T;return i=e[0],a=e[1],o=e[2],u=t[0],c=t[1],m=t[2],h=r[0],d=r[1],y=r[2],x=r[3],w=f(i,h),b=f(u,h),N=f(a,d),M=f(c,d),E=f(o,y),A=f(m,y),O=l(p(p(p(x,w),N),E),p(p(p(s(s(b,M),A),w),N),E)),S=s(i,f(O,p(u,i))),_=s(a,f(O,p(c,a))),T=s(o,f(O,p(m,o))),[S,_,T]},"Array, Array, Array, Array":function(e,r,n,i){if(2===e.length){if(!y(e))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!y(r))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!y(n))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!y(i))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return function(e,r,n,i){var u=e,h=n,d=p(u,r),g=p(h,i),y=p(f(d[0],g[1]),f(g[0],d[1]));if(m(a(y),t.epsilon))return null;var v=f(g[0],u[1]),x=f(g[1],u[0]),w=f(g[0],h[1]),b=f(g[1],h[0]),N=l(s(p(p(v,x),w),b),y);return o(c(d,N),u)}(e,r,n,i)}if(3===e.length){if(!v(e))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!v(r))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!v(n))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!v(i))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return u=e[0],d=e[1],g=e[2],w=r[0],b=r[1],N=r[2],M=n[0],E=n[1],A=n[2],O=i[0],S=i[1],_=i[2],T=x(u,M,O,M,d,E,S,E,g,A,_,A),C=x(O,M,w,u,S,E,b,d,_,A,N,g),z=x(u,M,w,u,d,E,b,d,g,A,N,g),B=x(O,M,O,M,S,E,S,E,_,A,_,A),I=x(w,u,w,u,b,d,b,d,N,g,N,g),P=l(p(f(T,C),f(z,B)),p(f(I,B),f(C,C))),R=l(s(T,f(P,C)),B),U=s(u,f(P,p(w,u))),D=s(d,f(P,p(b,d))),k=s(g,f(P,p(N,g))),q=s(M,f(R,p(O,M))),L=s(E,f(R,p(S,E))),F=s(A,f(R,p(_,A))),h(U,q)&&h(D,L)&&h(k,F)?[U,D,k]:null}throw new TypeError("Arrays with two or thee dimensional points expected");var u,d,g,w,b,N,M,E,A,O,S,_,T,C,z,B,I,P,R,U,D,k,q,L,F},"Matrix, Matrix, Matrix":function(e,t,r){return u(d(e.valueOf(),t.valueOf(),r.valueOf()))},"Matrix, Matrix, Matrix, Matrix":function(e,t,r,n){return u(d(e.valueOf(),t.valueOf(),r.valueOf(),n.valueOf()))}});function g(t){return"number"==typeof t||e.isBigNumber(t)}function y(e){return 2===e.length&&g(e[0])&&g(e[1])}function v(e){return 3===e.length&&g(e[0])&&g(e[1])&&g(e[2])}function x(e,t,r,n,i,a,o,u,c,l,m,h){var d=f(p(e,t),p(r,n)),g=f(p(i,a),p(o,u)),y=f(p(c,l),p(m,h));return s(s(d,g),y)}return d}},function(e,t,r){"use strict";t.name="distance",t.factory=function(e,t,n,i){n(r(1));var a=n(r(16)),o=n(r(19)),s=n(r(21)),u=n(r(12)),c=n(r(33)),f=n(r(50)),l=n(r(27));function p(t){return"number"==typeof t||e.isBigNumber(t)}function m(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])}function h(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])&&p(e[2])}function d(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])&&p(e[2])&&p(e[3])&&p(e[4])&&p(e[5])}function g(e){for(var t=Object.keys(e),r=[],n=0;n1?[o]:o}}},function(e,t,r){"use strict";var n=r(2),i=(r(5).clone,r(3).isInteger);t.name="diag",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("diag",{Array:function(e){return c(e,0,n.size(e),null)},"Array, number":function(e,t){return c(e,t,n.size(e),null)},"Array, BigNumber":function(e,t){return c(e,t.toNumber(),n.size(e),null)},"Array, string":function(e,t){return c(e,0,n.size(e),t)},"Array, number, string":function(e,t,r){return c(e,t,n.size(e),r)},"Array, BigNumber, string":function(e,t,r){return c(e,t.toNumber(),n.size(e),r)},Matrix:function(e){return c(e,0,e.size(),e.storage())},"Matrix, number":function(e,t){return c(e,t,e.size(),e.storage())},"Matrix, BigNumber":function(e,t){return c(e,t.toNumber(),e.size(),e.storage())},"Matrix, string":function(e,t){return c(e,0,e.size(),t)},"Matrix, number, string":function(e,t,r){return c(e,t,e.size(),r)},"Matrix, BigNumber, string":function(e,t,r){return c(e,t.toNumber(),e.size(),r)}});return u.toTex=void 0,u;function c(t,r,n,a){if(!i(r))throw new TypeError("Second parameter in function diag must be an integer");var o,u,c,f,l,p,m=r>0?r:0,h=r<0?-r:0;switch(n.length){case 1:return o=t,u=r,c=a,f=n[0],l=[f+h,f+m],p=e.Matrix.storage(c||"dense").diagonal(l,o,u),null!==c?p:p.valueOf();case 2:return function(t,r,n,i,a,o){if(e.isMatrix(t)){var u=t.diagonal(r);return null!==n?n!==u.storage()?s(u,n):u:u.valueOf()}for(var c=Math.min(i[0]-a,i[1]-o),f=[],l=0;l2||n(t).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(e.length)+", y = "+JSON.stringify(t.length)+")");var r=[],i=[];return e.map(function(e){return t.map(function(t){return e.map(function(e){return t.map(function(t){return i.push(s(e,t))})},r.push(i=[]))})},r=[])&&r}}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(2).resize;t.name="ones",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("ones",{"":function(){return"Array"===t.matrix?c([]):c([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?c(e,e.pop()):"Array"===t.matrix?c(e):c(e,"default")},Array:c,Matrix:function(e){var t=e.storage();return c(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return c(e.valueOf(),t)}});return u.toTex=void 0,u;function c(t,r){var a,o=(a=!1,t.forEach(function(t,r,n){e.isBigNumber(t)&&(a=!0,n[r]=t.toNumber())}),a?new e.BigNumber(1):1);if(t.forEach(function(e){if("number"!=typeof e||!n(e)||e<0)throw new Error("Parameters in function ones must be positive integers")}),r){var u=s(r);return t.length>0?u.resize(t,o):u}var c=[];return t.length>0?i(c,t,o):c}}},function(e,t,r){"use strict";r(10);var n=r(3).isInteger,i=r(2);t.name="reshape",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("reshape",{"Matrix, Array":function(e,t){return e.reshape?e.reshape(t):s(i.reshape(e.valueOf(),t))},"Array, Array":function(e,t){return t.forEach(function(e){if(!n(e))throw new TypeError("Invalid size for dimension: "+e)}),i.reshape(e,t)}});return u.toTex=void 0,u}},function(e,t,r){"use strict";var n=r(10),i=r(44),a=r(3).isInteger,o=r(9).format,s=r(5).clone,u=r(2);t.name="resize",t.factory=function(e,t,c,f){var l=c(r(1)),p=function(r,c,f){if(2!=arguments.length&&3!=arguments.length)throw new i("resize",arguments.length,2,3);if(e.isMatrix(c)&&(c=c.valueOf()),e.isBigNumber(c[0])&&(c=c.map(function(t){return e.isBigNumber(t)?t.toNumber():t})),e.isMatrix(r))return r.resize(c,f,!0);if("string"==typeof r)return function(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new n(t.length,1);var i=t[0];if("number"!=typeof i||!a(i))throw new TypeError("Invalid size, must contain positive integers (size: "+o(t)+")");if(e.length>i)return e.substring(0,i);if(e.lengthg)return 1}for(var y=0,v=Math.max(m.length,h.length);yi)return 1}return 0}},function(e,t,r){"use strict";var n=r(5),i=r(2);t.name="squeeze",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("squeeze",{Array:function(e){return i.squeeze(n.clone(e))},Matrix:function(e){var t=i.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return n.clone(e)}});return u.toTex=void 0,u}},function(e,t,r){e.exports=[r(71),r(70),r(139),r(488),r(489),r(490),r(491),r(495),r(496)]},function(e,t,r){"use strict";t.name="kldivergence",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(43)),s=n(r(142)),u=n(r(11)),c=n(r(134)),f=n(r(136)),l=n(r(54));function p(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");if(0===s(e))throw new Error("Sum of elements in first object must be non zero");if(0===s(t))throw new Error("Sum of elements in second object must be non zero");var i=o(e,s(e)),a=o(t,s(t)),p=s(u(i,f(c(i,a))));return l(p)?p:Number.NaN}return i("kldivergence",{"Array, Array":function(e,t){return p(a(e),a(t))},"Matrix, Array":function(e,t){return p(e,a(t))},"Array, Matrix":function(e,t){return p(a(e),t)},"Matrix, Matrix":function(e,t){return p(e,t)}})}},function(e,t,r){"use strict";var n=r(42);t.name="multinomial",t.factory=function(e,t,i,a){var o=i(r(15)),s=i(r(11)),u=i(r(43)),c=i(r(70)),f=i(r(51)),l=i(r(59));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return n(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}},function(e,t,r){"use strict";var n=r(3).isInteger;function i(e){return e.isInteger()&&e.gte(0)}t.name="permutations",t.factory=function(e,t,a,o){var s=o("permutations",{"number | BigNumber":a(r(70)),"number, number":function(e,t){var r,i;if(!n(e)||e<0)throw new TypeError("Positive integer value expected in function permutations");if(!n(t)||t<0)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,i=e-t+1;i<=e;i++)r*=i;return r},"BigNumber, BigNumber":function(t,r){var n,a;if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(n=new e.BigNumber(1),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return s.toTex=void 0,s}},function(e,t,r){"use strict";t.name="pickRandom",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").pickRandom;return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(493),i=n();t.factory=function(e,t,r,a,o){var s;function u(e){s=null===e?i:n(String(e))}return u(t.randomSeed),o.on("config",function(e,t,r){void 0!==r.randomSeed&&u(e.randomSeed)}),function(){return s()}},t.math=!0},function(e,t,r){"use strict";(function(t){var r=256,n=[],i=void 0===t?window:t,a=Math.pow(r,6),o=Math.pow(2,52),s=2*o,u=r-1,c=Math.random;function f(e,t){for(var r,n=e+"",i=0;i=s;)e/=2,t/=2,n>>>=1;return(e+n)/t}},e.exports.resetGlobal=function(){Math.random=c},f(Math.random(),n)}).call(t,r(494))},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.name="random",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").random;return a.toTex=void 0,a}},function(e,t,r){"use strict";t.name="randomInt",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").randomInt;return a.toTex=void 0,a}},function(e,t,r){e.exports=[r(52),r(29),r(498),r(46),r(32),r(129),r(37),r(499),r(123)]},function(e,t,r){"use strict";t.name="deepEqual",t.factory=function(e,t,n,i){var a=n(r(46)),o=i("deepEqual",{"any, any":function(e,t){return function e(t,r){if(Array.isArray(t)){if(Array.isArray(r)){var n=t.length;if(n!==r.length)return!1;for(var i=0;i0;r--)for(var n=0;ne[n+1].length&&(t=e[n],e[n]=e[n+1],e[n+1]=t);return e}(r)}});function f(e,t){for(var r=[],n=0;n=c?i(e):t<=a?i(e)*function(e){var t,r=e*e,n=s[0][4]*r,i=r;for(t=0;t<3;t+=1)n=(n+s[0][t])*r,i=(i+u[0][t])*r;return e*(n+s[0][3])/(i+u[0][3])}(t):t<=4?i(e)*(1-function(e){var t,r=s[1][8]*e,n=e;for(t=0;t<7;t+=1)r=(r+s[1][t])*e,n=(n+u[1][t])*e;var i=(r+s[1][7])/(n+u[1][7]),a=parseInt(16*e)/16,o=(e-a)*(e+a);return Math.exp(-a*a)*Math.exp(-o)*i}(t)):i(e)*(1-function(e){var t,r=1/(e*e),n=s[2][5]*r,i=r;for(t=0;t<4;t+=1)n=(n+s[2][t])*r,i=(i+u[2][t])*r;var a=r*(n+s[2][4])/(i+u[2][4]);a=(o-a)/e,r=parseInt(16*e)/16;var c=(e-r)*(e+r);return Math.exp(-r*r)*Math.exp(-c)*a}(t))},BigNumber:function(t){return new e.BigNumber(l(t.toNumber()))},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"erf\\left(${args[0]}\\right)"},l}},function(e,t,r){e.exports=[r(511),r(113),r(114),r(146),r(117),r(512),r(513),r(514),r(515),r(142),r(147)]},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mad",t.factory=function(e,t,i,a){var o=i(r(27)),s=i(r(141)),u=i(r(146)),c=i(r(19)),f=i(r(34)),l=a("mad",{"Array | Matrix":p,"...":function(e){return p(e)}});return l.toTex=void 0,l;function p(e){if(0===(e=n(e.valueOf())).length)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var t=u(e);return u(s(e,function(e){return o(c(e,t))}))}catch(e){throw e instanceof TypeError&&-1!==e.message.indexOf("median")?new TypeError(e.message.replace("median","mad")):f(e,"mad")}}}},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mode",t.factory=function(e,t,r,i){return i("mode",{"Array | Matrix":a,"...":function(e){return a(e)}});function a(e){if(0==(e=n(e.valueOf())).length)throw new Error("Cannot calculate mode of an empty array");var t={},r=[],i=0;for(var a in e)e[a]in t||(t[e[a]]=0),t[e[a]]++,t[e[a]]==i?r.push(e[a]):t[e[a]]>i&&(i=t[e[a]],r=[e[a]]);return r}}},function(e,t,r){"use strict";var n=r(42);t.name="prod",t.factory=function(e,t,i,a){var o=i(r(21)),s=i(r(34)),u=a("prod",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(e){return c(e)}});return u.toTex=void 0,u;function c(e){var t=void 0;if(n(e,function(e){try{t=void 0===t?e:o(t,e)}catch(t){throw s(t,"prod",e)}}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).isNumber,a=r(2).flatten,o=r(49);t.name="quantileSeq",t.factory=function(e,t,s,u){var c=s(r(15)),f=s(r(11)),l=s(r(85)),p=s(r(52));function m(e,t,r){var n=a(e),o=n.length;if(0===o)throw new Error("Cannot calculate quantile of an empty sequence");if(i(t)){var s;if(0==(v=(s=t*(o-1))%1)){var u=r?n[s]:l(n,s);return h(u),u}var m=Math.floor(s);if(r)g=n[m],y=n[m+1];else{y=l(n,m+1),g=n[m];for(var d=0;d0&&(g=n[d])}return h(g),h(y),c(f(g,1-v),f(y,v))}if((s=t.times(o-1)).isInteger())return s=s.toNumber(),u=r?n[s]:l(n,s),h(u),u;m=s.floor();var g,y,v=s.minus(m),x=m.toNumber();if(r)g=n[x],y=n[x+1];else for(y=l(n,x+1),g=n[x],d=0;d0&&(g=n[d]);h(g),h(y);var w=new v.constructor(1);return c(f(g,w.minus(v)),f(y,v))}var h=u({"number | BigNumber | Unit":function(e){return e}});return function(t,r,a){var s,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(o(t)){if("boolean"==typeof(a=a||!1)){if(u=t.valueOf(),i(r)){if(r<0)throw new Error("N/prob must be non-negative");if(r<=1)return m(u,r,a);if(r>1){if(!n(r))throw new Error("N must be a positive integer");var f=r+1;s=new Array(r);for(var l=0;l4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");for(f=new e.BigNumber(p+1),s=new Array(p),l=0;l1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!e.isBigNumber(h))throw new TypeError("Unexpected type of argument in function quantileSeq");if(c=new h.constructor(1),h.isNegative()||h.gt(c))throw new Error("Probability must be between 0 and 1, inclusive")}s[l]=m(u,h,a)}return s}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}}},function(e,t,r){"use strict";t.name="std",t.factory=function(e,t,n,i){var a=n(r(50)),o=n(r(147)),s=i("std",{"Array | Matrix":u,"Array | Matrix, string":u,"...":function(e){return u(e)}});return s.toTex=void 0,s;function u(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{return a(o.apply(null,arguments))}catch(e){throw e instanceof TypeError&&-1!==e.message.indexOf(" var")?new TypeError(e.message.replace(" var"," std")):e}}}},function(e,t,r){e.exports=[r(95),r(517)]},function(e,t,r){"use strict";var n=r(9).isString,i=r(9).format;function a(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,a){for(var o=a.split("."),s=t[o.shift()];o.length&&void 0!==s;){var u=o.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:i(s,r):e})}t.name="print",t.factory=function(e,t,r,n){var i=n("print",{"string, Object":a,"string, Object, number | Object":a});return i.toTex=void 0,i}},function(e,t,r){e.exports=[r(519),r(148),r(520),r(521),r(522),r(523),r(524),r(525),r(526),r(527),r(528),r(529),r(530),r(531),r(532),r(533),r(534),r(535),r(536),r(537),r(538),r(539),r(540),r(541),r(542)]},function(e,t,r){"use strict";var n=r(0);t.name="acos",t.factory=function(e,t,r,i){var a=i("acos",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.acos(r):new e.Complex(r,0).acos()},Complex:function(e){return e.acos()},BigNumber:function(e){return e.acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acot",t.factory=function(e,t,r,i){var a=i("acot",{number:function(e){return Math.atan(1/e)},Complex:function(e){return e.acot()},BigNumber:function(t){return new e.BigNumber(1).div(t).atan()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acoth",t.factory=function(e,t,r,i){var a=i("acoth",{number:function(r){return r>=1||r<=-1||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:new e.Complex(r,0).acoth()},Complex:function(e){return e.acoth()},BigNumber:function(t){return new e.BigNumber(1).div(t).atanh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\coth^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acsc",t.factory=function(e,t,r,i){var a=i("acsc",{number:function(r){return r<=-1||r>=1||t.predictable?Math.asin(1/r):new e.Complex(r,0).acsc()},Complex:function(e){return e.acsc()},BigNumber:function(t){return new e.BigNumber(1).div(t).asin()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acsch",t.factory=function(e,t,r,i){var a=i("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(e){return e.acsch()},BigNumber:function(t){return new e.BigNumber(1).div(t).asinh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asec",t.factory=function(e,t,r,i){var a=i("asec",{number:function(r){return r<=-1||r>=1||t.predictable?Math.acos(1/r):new e.Complex(r,0).asec()},Complex:function(e){return e.asec()},BigNumber:function(t){return new e.BigNumber(1).div(t).acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asech",t.factory=function(e,t,i,a){a.find(i(r(148)),["Complex"]);var o=a("asech",{number:function(r){if(r<=1&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return new e.Complex(r,0).asech()},Complex:function(e){return e.asech()},BigNumber:function(t){return new e.BigNumber(1).div(t).acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="asin",t.factory=function(e,t,r,i){var a=i("asin",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.asin(r):new e.Complex(r,0).asin()},Complex:function(e){return e.asin()},BigNumber:function(e){return e.asin()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asinh",t.factory=function(e,t,r,i){var a=i("asinh",{number:Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){return e.asinh()},BigNumber:function(e){return e.asinh()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sinh^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="atan",t.factory=function(e,t,r,i){var a=i("atan",{number:function(e){return Math.atan(e)},Complex:function(e){return e.atan()},BigNumber:function(e){return e.atan()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";t.name="atan2",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(23)),s=n(r(17)),u=n(r(135)),c=n(r(20)),f=n(r(18)),l=n(r(7)),p=n(r(6)),m=i("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return e.BigNumber.atan2(t,r)},"SparseMatrix, SparseMatrix":function(e,t){return u(e,t,m,!1)},"SparseMatrix, DenseMatrix":function(e,t){return o(t,e,m,!0)},"DenseMatrix, SparseMatrix":function(e,t){return s(e,t,m,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,m)},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"SparseMatrix, number | BigNumber":function(e,t){return c(e,t,m,!1)},"DenseMatrix, number | BigNumber":function(e,t){return p(e,t,m,!1)},"number | BigNumber, SparseMatrix":function(e,t){return f(t,e,m,!0)},"number | BigNumber, DenseMatrix":function(e,t){return p(t,e,m,!0)},"Array, number | BigNumber":function(e,t){return p(a(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(a(t),e,m,!0).valueOf()}});return m.toTex={2:"\\mathrm{atan2}\\left(${args}\\right)"},m}},function(e,t,r){"use strict";var n=r(0);var i=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2};t.name="atanh",t.factory=function(e,t,r,a){var o=a("atanh",{number:function(r){return r<=1&&r>=-1||t.predictable?i(r):new e.Complex(r,0).atanh()},Complex:function(e){return e.atanh()},BigNumber:function(e){return e.atanh()},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="cos",t.factory=function(e,t,r,i){var a=i("cos",{number:Math.cos,Complex:function(e){return e.cos()},BigNumber:function(e){return e.cos()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2};t.name="cosh",t.factory=function(e,t,r,a){var o=a("cosh",{number:i,Complex:function(e){return e.cosh()},BigNumber:function(e){return e.cosh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="cot",t.factory=function(e,t,r,i){var a=i("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(e){return e.cot()},BigNumber:function(t){return new e.BigNumber(1).div(t.tan())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}t.name="coth",t.factory=function(e,t,r,a){var o=a("coth",{number:i,Complex:function(e){return e.coth()},BigNumber:function(t){return new e.BigNumber(1).div(t.tanh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\coth\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="csc",t.factory=function(e,t,r,i){var a=i("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(e){return e.csc()},BigNumber:function(t){return new e.BigNumber(1).div(t.sin())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0),i=r(3).sign;function a(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*i(e)}t.name="csch",t.factory=function(e,t,r,i){var o=i("csch",{number:a,Complex:function(e){return e.csch()},BigNumber:function(t){return new e.BigNumber(1).div(t.sinh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{csch}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="sec",t.factory=function(e,t,r,i){var a=i("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(e){return e.sec()},BigNumber:function(t){return new e.BigNumber(1).div(t.cos())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);function i(e){return 2/(Math.exp(e)+Math.exp(-e))}t.name="sech",t.factory=function(e,t,r,a){var o=a("sech",{number:i,Complex:function(e){return e.sech()},BigNumber:function(t){return new e.BigNumber(1).div(t.cosh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{sech}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="sin",t.factory=function(e,t,r,i){var a=i("sin",{number:Math.sin,Complex:function(e){return e.sin()},BigNumber:function(e){return e.sin()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2};t.name="sinh",t.factory=function(e,t,r,a){var o=a("sinh",{number:i,Complex:function(e){return e.sinh()},BigNumber:function(e){return e.sinh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\sinh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="tan",t.factory=function(e,t,r,i){var a=i("tan",{number:Math.tan,Complex:function(e){return e.tan()},BigNumber:function(e){return e.tan()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};t.name="tanh",t.factory=function(e,t,r,a){var o=a("tanh",{number:i,Complex:function(e){return e.tanh()},BigNumber:function(e){return e.tanh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh\\left(${args[0]}\\right)"},o}},function(e,t,r){e.exports=[r(544)]},function(e,t,r){"use strict";t.name="to",t.factory=function(e,t,n,i){var a=r(4),o=n(r(1)),s=n(r(7)),u=n(r(6)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex={2:"\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)"},c}},function(e,t,r){e.exports=[r(122),r(51),r(60),r(54),r(59),r(546),r(58),r(547),r(47)]},function(e,t,r){"use strict";var n=r(0);t.name="isPrime",t.factory=function(e,t,r,i){var a=i("isPrime",{number:function(e){if(e<2)return!1;if(2==e)return!0;if(e%2==0)return!1;for(var t=3;t*t<=e;t+=2)if(e%t==0)return!1;return!0},BigNumber:function(t){if(t.lt(2))return!1;if(t.equals(2))return!0;if(t.mod(2).isZero())return!1;for(var r=e.BigNumber(3);r.times(r).lte(t);r=r.plus(1))if(t.mod(r).isZero())return!1;return!0},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNaN",t.factory=function(e,t,r,i){return i("isNaN",{number:function(e){return Number.isNaN(e)},BigNumber:function(e){return e.isNaN()},Fraction:function(e){return!1},Complex:function(e){return e.isNaN()},Unit:function(e){return Number.isNaN(e.value)},"Array | Matrix":function(e){return n(e,Number.isNaN)}})}},function(e,t,r){e.exports=[r(549)]},function(e,t,r){"use strict";t.name="reviver",t.path="json",t.factory=function(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}},function(e,t,r){"use strict";var n=r(44),i=r(10),a=r(53);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); +!function(r){"use strict";var i={s:1,n:0,d:1};function a(e){var t=function(){var t=Error.apply(this,arguments);t.name=this.name=e,this.stack=t.stack,this.message=t.message},r=function(){};return r.prototype=Error.prototype,t.prototype=new r,t}var o=p.DivisionByZero=a("DivisionByZero"),s=p.InvalidParameter=a("InvalidParameter");function u(e,t){return isNaN(e=parseInt(e,10))&&c(),e*t}function c(){throw new s}var f=function(e,t){var r,n=0,a=1,s=1,f=0,l=0,p=0,m=1,h=1,d=0,g=1,y=1,v=1;if(null==e);else if(void 0!==t)s=(n=e)*(a=t);else switch(typeof e){case"object":"d"in e&&"n"in e?(n=e.n,a=e.d,"s"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(a=e[1])):c(),s=n*a;break;case"number":if(e<0&&(s=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(e/=h=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)));g<=1e7&&v<=1e7;){if(e===(r=(d+y)/(g+v))){g+v<=1e7?(n=d+y,a=g+v):v>g?(n=y,a=v):(n=d,a=g);break}e>r?(d+=y,g+=v):(y+=d,v+=g),g>1e7?(n=y,a=v):(n=d,a=g)}n*=h}else(isNaN(e)||isNaN(t))&&(a=n=NaN);break;case"string":if(null===(g=e.match(/\d+|./g))&&c(),"-"===g[d]?(s=-1,d++):"+"===g[d]&&d++,g.length===d+1?l=u(g[d++],s):"."===g[d+1]||"."===g[d]?("."!==g[d]&&(f=u(g[d++],s)),(++d+1===g.length||"("===g[d+1]&&")"===g[d+3]||"'"===g[d+1]&&"'"===g[d+3])&&(l=u(g[d],s),m=Math.pow(10,g[d].length),d++),("("===g[d]&&")"===g[d+2]||"'"===g[d]&&"'"===g[d+2])&&(p=u(g[d+1],s),h=Math.pow(10,g[d+1].length)-1,d+=3)):"/"===g[d+1]||":"===g[d+1]?(l=u(g[d],s),m=u(g[d+2],1),d+=3):"/"===g[d+3]&&" "===g[d+1]&&(f=u(g[d],s),l=u(g[d+2],s),m=u(g[d+4],1),d+=5),g.length<=d){s=n=p+(a=m*h)*f+h*l;break}default:c()}if(0===a)throw new o;i.s=s<0?-1:1,i.n=Math.abs(n),i.d=Math.abs(a)},l=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(!(e%=t))return t;if(!(t%=e))return e}};function p(e,t){if(!(this instanceof p))return new p(e,t);f(e,t),e=p.REDUCE?l(i.d,i.n):1,this.s=i.s,this.n=i.n/e,this.d=i.d/e}p.REDUCE=1,p.prototype={s:1,n:0,d:1,abs:function(){return new p(this.n,this.d)},neg:function(){return new p(-this.s*this.n,this.d)},add:function(e,t){return f(e,t),new p(this.s*this.n*i.d+i.s*this.d*i.n,this.d*i.d)},sub:function(e,t){return f(e,t),new p(this.s*this.n*i.d-i.s*this.d*i.n,this.d*i.d)},mul:function(e,t){return f(e,t),new p(this.s*i.s*this.n*i.n,this.d*i.d)},div:function(e,t){return f(e,t),new p(this.s*i.s*this.n*i.d,this.d*i.n)},clone:function(){return new p(this)},mod:function(e,t){return isNaN(this.n)||isNaN(this.d)?new p(NaN):void 0===e?new p(this.s*this.n%this.d,1):(f(e,t),0===i.n&&0===this.d&&p(0,0),new p(this.s*i.d*this.n%(i.n*this.d),i.d*this.d))},gcd:function(e,t){return f(e,t),new p(l(i.n,this.n),i.d*this.d/l(i.d,this.d))},lcm:function(e,t){return f(e,t),0===i.n&&0===this.n?new p:new p(i.n*this.n/l(i.n,this.n),l(i.d,this.d))},ceil:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):new p(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return new p(this.s*this.d,this.n)},pow:function(e){return e<0?new p(Math.pow(this.s*this.d,-e),Math.pow(this.n,-e)):new p(Math.pow(this.s*this.n,e),Math.pow(this.d,e))},equals:function(e,t){return f(e,t),this.s*this.n*i.d==i.s*i.n*this.d},compare:function(e,t){f(e,t);var r=this.s*this.n*i.d-i.s*i.n*this.d;return(00&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toContinued:function(){for(var e,t=this.n,r=this.d,n=[];n.push(Math.floor(t/r)),e=t%r,t=r,r=e,1!==t;);return n},toString:function(){var e,t=this.n,r=this.d;if(isNaN(t)||isNaN(r))return"NaN";p.REDUCE||(t/=e=l(t,r),r/=e);var n=function(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>2e3)return 0;return n}(0,r),i=function(e,t,r){for(var n=1,i=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n}(10,r,t),a=0;a<300;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0}(0,r,n),a=-1===this.s?"-":"";if(a+=t/r|0,t%=r,(t*=10)&&(a+="."),n){for(var o=i;o--;)a+=t/r|0,t%=r,t*=10;a+="(";for(o=n;o--;)a+=t/r|0,t%=r,t*=10;a+=")"}else for(o=15;t&&o--;)a+=t/r|0,t%=r,t*=10;return a}},void 0===(n=function(){return p}.apply(t,[]))||(e.exports=n)}()},function(e,t,r){e.exports=[r(73),r(45),r(177),r(178),r(179),r(180),r(26),r(90),r(181),r(1),r(182)]},function(e,t,r){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t,r){"use strict";var n=r(24),i=r(10),a=n.array,o=n.object,s=n.string,u=n.number,c=Array.isArray,f=u.isNumber,l=u.isInteger,p=s.isString,m=a.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=function(e,t,h,d){var g=h(r(73)),y=h(r(8));function v(t,r){if(!(this instanceof v))throw new SyntaxError("Constructor must be called with the new operator");if(r&&!p(r))throw new Error("Invalid datatype: "+r);if(e.isMatrix(t))x(this,t,r);else if(t&&c(t.index)&&c(t.ptr)&&c(t.size))this._values=t.values,this._index=t.index,this._ptr=t.ptr,this._size=t.size,this._datatype=r||t.datatype;else if(c(t))w(this,t,r);else{if(t)throw new TypeError("Unsupported type of data ("+n.types.type(t)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=r}}var x=function(e,t,r){"SparseMatrix"===t.type?(e._values=t._values?o.clone(t._values):void 0,e._index=o.clone(t._index),e._ptr=o.clone(t._ptr),e._size=o.clone(t._size),e._datatype=r||t._datatype):w(e,t.valueOf(),r||t._datatype)},w=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(p(r)&&(a=d.find(y,[r,r])||y,o=d.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;u");for(var m=r.min()[0],h=r.min()[1],d=u[0],g=u[1],y=0;yo-1||a>s-1)&&(O(this,Math.max(n+1,o),Math.max(a+1,s),r),o=this._size[0],s=this._size[1]),m(n,o),m(a,s);var l=M(n,this._ptr[a],this._ptr[a+1],this._index);return lm){for(u=m;ul){if(f){var h=0;for(u=0;ut-1&&(e._values.splice(c,1),e._index.splice(c,1),v++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.reshape=function(e,t){if(!c(e))throw new TypeError("Array expected");if(2!==e.length)throw new Error("Sparse matrices can only be reshaped in two dimensions");if(e.forEach(function(t){if(!u.isNumber(t)||!u.isInteger(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")}),this._size[0]*this._size[1]!=e[0]*e[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var r=t?this.clone():this;if(this._size[0]===e[0]&&this._size[1]===e[1])return r;for(var n=[],i=0;i=t&&N<=r){if(!o)for(var M=w;M "+(this._values?s.format(this._values[c],e):"X")}return i},v.prototype.toString=function(){return s.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!f(t)||!l(t))throw new TypeError("The parameter k must be an integer number")}else t=0;var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=[],c=[];c[0]=0;for(var p=r;p0?n:0,h=n<0?-n:0,g=t[0],x=t[1],w=Math.min(g-h,x-m);if(c(r)){if(r.length!==w)throw new Error("Invalid value array length");u=function(e){return r[e]}}else if(e.isMatrix(r)){var b=r.size();if(1!==b.length||b[0]!==w)throw new Error("Invalid matrix length");u=function(e){return r.get([e])}}else u=function(){return r};for(var N=[],M=[],E=[],A=0;A=0&&O=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(f<=c?c+1:c,1),n&&n.splice(f<=c?c+1:c,1)}else if(f=u||i[c]!==e)){var m=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,m),i.splice(c<=f?f+1:f,1),n&&n.splice(c<=f?f+1:f,1)}}},e.Matrix._storage.sparse=v,v},t.lazy=!1},function(e,t,r){"use strict";t.name="Spa",t.path="type",t.factory=function(e,t,n){var i=n(r(15)),a=n(r(8));function o(){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}return o.prototype.type="Spa",o.prototype.isSpa=!0,o.prototype.set=function(e,t){if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},o.prototype.get=function(e){var t=this._values[e];return t?t.value:0},o.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=i(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},o.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,o=[],s=n.extractMinimum();for(s&&o.push(s);s&&s.key<=t;)s.key>=e&&(a(s.value,0)||r(s.key,s.value,this)),(s=n.extractMinimum())&&o.push(s);for(var u=0;u0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=p(t,this._size)),this._size--,this._minimum=t,e},u.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&a(t.key,n.key)&&(f(e,t,n),l(e,n)),a(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){var r,n,i,u=Math.floor(Math.log(t)*s)+1,c=new Array(u),f=0,l=e;if(l)for(f++,l=l.right;l!==e;)f++,l=l.right;for(;f>0;){for(var p=l.degree,m=l.right;r=c[p];){if(o(l.key,r.key)){var h=r;r=l,l=h}i=l,(n=r).left.right=n.right,n.right.left=n.left,n.parent=i,i.child?(n.left=i.child,n.right=i.child.right,i.child.right=n,n.right.left=n):(i.child=n,n.right=n,n.left=n),i.degree++,n.mark=!1,c[p]=null,p++}c[p]=l,l=m,f--}e=null;for(var d=0;d="0"&&e<="9"}function T(){f++,l=c.charAt(f)}function C(e){f=e,l=c.charAt(f)}function z(){var e,t,r="";if(e=f,"+"==l?T():"-"==l&&(r+=l,T()),!((t=l)>="0"&&t<="9"||"."==t))return C(e),null;if("."==l){if(r+=l,T(),!_(l))return C(e),null}else{for(;_(l);)r+=l,T();"."==l&&(r+=l,T())}for(;_(l);)r+=l,T();if("E"==l||"e"==l){var n="",i=f;if(n+=l,T(),"+"!=l&&"-"!=l||(n+=l,T()),!_(l))return C(i),r;for(r+=n;_(l);)r+=l,T()}return r}function B(){for(var e="",t=c.charCodeAt(f);t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122;)e+=l,T(),t=c.charCodeAt(f);return((t=e.charCodeAt(0))>=65&&t<=90||t>=97&&t<=122)&&e||null}function I(e){return l===e?(T(),e):null}function P(e){if(F.hasOwnProperty(e))return{unit:i=F[e],prefix:r=i.prefixes[""]};for(var t in F)if(F.hasOwnProperty(t)&&n(e,t)){var r,i=F[t],a=e.length-t.length,o=e.substring(0,a);if(void 0!==(r=i.prefixes.hasOwnProperty(o)?i.prefixes[o]:void 0))return{unit:i,prefix:r}}return null}O.prototype.type="Unit",O.prototype.isUnit=!0,O.parse=function(r,n){if(n=n||{},f=-1,l="","string"!=typeof(c=r))throw new TypeError("Invalid argument in Unit.parse, string expected");var i=new O;i.units=[];var a=1,o=!1;T(),S();var s=z(),u=null;s&&(u="BigNumber"===t.number?new e.BigNumber(s):"Fraction"===t.number?new e.Fraction(s):parseFloat(s),S(),I("*")?(a=1,o=!0):I("/")&&(a=-1,o=!0));for(var p=[],m=1;;){for(S();"("===l;)p.push(a),m*=a,a=1,T(),S();if(!l)break;var h=l,d=B();if(null==d)throw new SyntaxError('Unexpected "'+h+'" in "'+c+'" at index '+f.toString());var g=P(d);if(null==g)throw new SyntaxError('Unit "'+d+'" not found.');var y=a*m;if(S(),I("^")){S();var v=z();if(null==v)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');y*=v}i.units.push({unit:g.unit,prefix:g.prefix,power:y});for(var x=0;x1||Math.abs(this.units[0].power-1)>1e-15)},O.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=O._getNumberConverter(M(e));for(var s=0;s1e-12)return!1;return!0},O.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},O.prototype.equals=function(e){return this.equalBase(e)&&w(this.value,e.value)},O.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&(G.hasOwnProperty(o)?r.push({unit:G[o].unit,prefix:G[o].prefix,power:this.dimensions[a]||0}):i=!0)}r.length1e-12){if(!$.si.hasOwnProperty(n))throw new Error("Cannot express custom unit "+n+" in SI units");t.push({unit:$.si[n].unit,prefix:$.si[n].prefix,power:e.dimensions[r]||0})}}return e.units=t,e.isUnitListSimplified=!0,e},O.prototype.formatUnits=function(){this.simplifyUnitListLazy();for(var e="",t="",r=0,n=0,i=0;i0?(r++,e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},O.prototype.format=function(t){this.simplifyUnitListLazy();var r=!1;for(var n in void 0!==this.value&&null!==this.value&&e.isComplex(this.value)&&(r=Math.abs(this.value.re)<1e-14,Math.abs(this.value.im)),this.units)this.units[n].unit&&("VA"===this.units[n].unit.name&&r?this.units[n].unit=F.VAR:"VAR"!==this.units[n].unit.name||r||(this.units[n].unit=F.VA));1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var i=this._denormalize(this.value),a=null!==this.value?N(i,t||{}):"",o=this.formatUnits();return this.value&&e.isComplex(this.value)&&(a="("+a+")"),o.length>0&&a.length>0&&(a+=" "),a+=o},O.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=null!==this.value?y(this.value):0,t=y(this.units[0].unit.value),r=this.units[0].prefix;if(0===e)return r;var n=this.units[0].power,i=Math.log(e/Math.pow(r.value*t,n))/Math.LN10-1.2;if(i>-2.200001&&i<1.800001)return r;i=Math.abs(i);var a=this.units[0].unit.prefixes;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];if(s.scientific){var u=Math.abs(Math.log(e/Math.pow(s.value*t,n))/Math.LN10-1.2);(u0&&!(n(r)||(i=r)>="0"&&i<="9"))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+e+'"')}var i}(e);var n,i,a=null,o=[],s=0;if(t&&"Unit"===t.type)a=t.clone();else if("string"==typeof t)""!==t&&(n=t);else{if("object"!=typeof t)throw new TypeError('Cannot create unit "'+e+'" from "'+t.toString()+'": expecting "string" or "Unit" or "Object"');n=t.definition,i=t.prefixes,s=t.offset,t.aliases&&(o=t.aliases.valueOf())}if(o)for(var u=0;u1e-12){l=!1;break}if(l){f=!0;break}}f||(m=e+"_STUFF",(d={dimensions:a.dimensions.slice(0)}).key=m,q[m]=d,G[m]={unit:c,prefix:U.NONE[""]},c.base=m)}else{var m=e+"_STUFF";if(k.indexOf(m)>=0)throw new Error('Cannot create new base unit "'+e+'": a base unit with that name already exists (and cannot be overridden)');for(var h in k.push(m),q)q.hasOwnProperty(h)&&(q[h].dimensions[k.length-1]=0);var d={dimensions:[]};for(u=0;u1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]}},function(e,t){e.exports={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]}},function(e,t){e.exports={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number, number": f(x)=x+x })',"double(2)",'double("hello")'],seealso:[]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]}},function(e,t){e.exports={name:"map",category:"Matrix",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], square)"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]}},function(e,t){e.exports={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])"],seealso:["size","squeeze","resize"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural"]}},function(e,t){e.exports={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]}},function(e,t){e.exports={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]}},function(e,t){e.exports={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]}},function(e,t){e.exports={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]}},function(e,t){e.exports={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]}},function(e,t){e.exports={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]}},function(e,t){e.exports={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]}},function(e,t){e.exports={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]}},function(e,t){e.exports={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var","quantileSeq"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(387),r(389),r(390),r(110),r(111)]},function(e,t,r){"use strict";var n=r(0);t.name="compile",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return n(e,function(e){return o(e).compile()})}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).setSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22)),u=a(r(1));return function(e,t,r){try{if(Array.isArray(e))return u(e).subset(t,r).valueOf();if(e&&"function"==typeof e.subset)return e.subset(t,r);if("string"==typeof e)return s(e,t,r);if("object"==typeof e){if(!t.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty(),r),e}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";var n=r(0);t.name="eval",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile().eval({})},"string, Object":function(e,t){return o(e).compile().eval(t)},"Array | Matrix":function(e){var t={};return n(e,function(e){return o(e).compile().eval(t)})},"Array | Matrix, Object":function(e,t){return n(e,function(e){return o(e).compile().eval(t)})}})}},function(e,t,r){"use strict";var n=r(13).getSafeProperty;t.math=!0,t.name="help",t.factory=function(e,t,i,a,o){var s=i(r(96));return a("help",{any:function(t){var r,i=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){i=r;break}var a=n(s,i);if(!a)throw new Error('No documentation found on "'+i+'"');return new e.Help(a)}})}},function(e,t,r){e.exports=[r(100),r(103),r(104),r(105),r(106),r(56),r(76),r(107),r(65),r(14),r(108),r(57),r(64),r(109),r(48),r(392)]},function(e,t,r){"use strict";t.name="UpdateNode",t.path="expression.node",t.factory=function(e,t,r,n){return function(){throw new Error("UpdateNode is deprecated. Use AssignmentNode instead.")}}},function(e,t,r){e.exports=[r(394),r(395),r(396),r(397),r(398),r(399),r(400),r(401),r(402),r(403)]},function(e,t,r){"use strict";var n=r(41).transform;t.name="concat",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(66));return a("concat",{"...any":function(t){var r=t.length-1,i=t[r];e.isNumber(i)?t[r]=i-1:e.isBigNumber(i)&&(t[r]=i.minus(1));try{return o.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(2).filter,i=r(2).filterRegExp,a=r(30).maxArgumentCount;function o(e,t){var r=a(t);return n(e,function(e,n,i){return 1===r?t(e):2===r?t(e,[n+1]):t(e,[n+1],i)})}t.name="filter",t.path="expression.transform",t.factory=function(e,t,n,a){var s=n(r(77)),u=n(r(1));function c(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),f(i,a)}c.rawArgs=!0;var f=a("filter",{"Array, function":o,"Matrix, function":function(e,t){return u(o(e.toArray(),t))},"Array, RegExp":i,"Matrix, RegExp":function(e,t){return u(i(e.toArray(),t))}});return f.toTex=void 0,c}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount,i=r(2).forEach;t.name="forEach",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(77));function u(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),c(i,a)}u.rawArgs=!0;var c=o("forEach",{"Array | Matrix, function":function(e,t){var r=n(t),a=function(n,o){Array.isArray(n)?i(n,function(e,t){a(e,o.concat(t+1))}):1===r?t(n):2===r?t(n,o):t(n,o,e)};a(e.valueOf(),[])}});return u}},function(e,t,r){"use strict";t.name="index",t.path="expression.transform",t.factory=function(e,t,r){return function(){for(var t=[],r=0,n=arguments.length;r0?0:2;else if(i&&!0===i.isSet)i=i.map(function(e){return e-1});else if(e.isArray(i)||e.isMatrix(i))i=i.map(function(e){return e-1});else if(e.isNumber(i))i--;else if(e.isBigNumber(i))i=i.toNumber()-1;else if("string"!=typeof i)throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}},function(e,t,r){"use strict";var n=r(30).maxArgumentCount,i=r(2).map;function a(e,t,r){var a=n(t);return function e(n,o){return Array.isArray(n)?i(n,function(t,r){return e(t,o.concat(r+1))}):1===a?t(n):2===a?t(n,o):t(n,o,r)}(e,[])}t.name="map",t.path="expression.transform",t.factory=function(e,t,n,i){var o=n(r(77)),s=n(r(1));function u(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):o(t[1],r,n)),c(i,a)}u.rawArgs=!0;var c=i("map",{"Array, function":function(e,t){return a(e,t,e)},"Matrix, function":function(e,t){return s(a(e.valueOf(),t,e))}});return u}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="max",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(113));return o("max",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="mean",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(114));return o("mean",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(49);t.name="min",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(117));return o("min",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";t.name="range",t.path="expression.transform",t.factory=function(e,t,n,i){var a=n(r(118));return i("range",{"...any":function(e){return"boolean"!=typeof e[e.length-1]&&e.push(!0),a.apply(null,e)}})}},function(e,t,r){"use strict";var n=r(41).transform;t.name="subset",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(22));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(5),i=r(9);t.name="Help",t.path="type",t.factory=function(e,t,a,o){var s=a(r(111))();function u(e){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}return u.prototype.type="Help",u.prototype.isHelp=!0,u.prototype.toString=function(){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){r+="Examples:\n";for(var n=0;n0){for(var n=y(e,t.args[0],r),i=1;i0){var i=t.args.filter(function(e){return void 0===r[e]}),a=1===i.length?i[0]:new p("*","multiply",i),o=n.concat(v(a,r));return new p("*","multiply",o)}return new p("+","add",t.args.map(function(e){return new p("*","multiply",t.args.map(function(t){return t===e?v(t,r):t.clone()}))}))}if("/"===t.op&&t.isBinary()){var c=t.args[0],f=t.args[1];return void 0!==r[f]?new p("/","divide",[v(c,r),f]):void 0!==r[c]?new p("*","multiply",[new p("-","unaryMinus",[c]),new p("/","divide",[v(f,r),new p("^","pow",[f.clone(),x(2)])])]):new p("/","divide",[new p("-","subtract",[new p("*","multiply",[v(c,r),f.clone()]),new p("*","multiply",[c.clone(),v(f,r)])]),new p("^","pow",[f.clone(),x(2)])])}if("^"===t.op&&t.isBinary()){if(c=t.args[0],f=t.args[1],void 0!==r[c])return e.isConstantNode(c)&&(u(c.value)||s(c.value,1))?x(0):new p("*","multiply",[t,new p("*","multiply",[new l("log",[c.clone()]),v(f.clone(),r)])]);if(void 0!==r[f]){if(e.isConstantNode(f)){if(u(f.value))return x(0);if(s(f.value,1))return v(c,r)}var m=new p("^","pow",[c.clone(),new p("-","subtract",[f,x(1)])]);return new p("*","multiply",[f.clone(),new p("*","multiply",[v(c,r),m])])}return new p("*","multiply",[new p("^","pow",[c.clone(),f.clone()]),new p("+","add",[new p("*","multiply",[v(c,r),new p("/","divide",[f.clone(),c.clone()])]),new p("*","multiply",[v(f,r),new l("log",[c.clone()])])])])}throw new Error('Operator "'+t.op+'" is not supported by derivative, or a wrong number of arguments is passed')}});function x(e,r){return new f(c(e,r||t.number))}return d}},function(e,t,r){"use strict";t.math=!0,t.name="resolve",t.path="algebra.simplify",t.factory=function(e,t,r,n,i){var a=i.expression.node.Node,o=i.expression.node.OperatorNode,s=i.expression.node.FunctionNode,u=i.expression.node.ParenthesisNode;return function t(r,n){if(!n)return r;if(e.isSymbolNode(r)){var c=n[r.name];if(c instanceof a)return t(c,n);if("number"==typeof c)return i.parse(String(c))}else{if(e.isOperatorNode(r)){var f=r.args.map(function(e){return t(e,n)});return new o(r.op,r.fn,f)}if(e.isParenthesisNode(r))return new u(t(r.content,n));if(e.isFunctionNode(r))return f=r.args.map(function(e){return t(e,n)}),new s(r.name,f)}return r}}},function(e,t,r){"use strict";t.name="rationalize",t.factory=function(e,t,n,i){var a=n(r(79)),o=n(r(121)),s=n(r(119)),u=r(44),c=n(r(110)),f=r(3),l=n(r(56)),p=n(r(57)),m=n(r(48)),h=i("rationalize",{string:function(e){return h(c(e),{},!1)},"string, boolean":function(e,t){return h(c(e),{},t)},"string, Object":function(e,t){return h(c(e),t,!1)},"string, Object, boolean":function(e,t,r){return h(c(e),t,r)},Node:function(e){return h(e,{},!1)},"Node, boolean":function(e,t){return h(e,{},t)},"Node, Object":function(e,t){return h(e,t,!1)},"Node, Object, boolean":function(e,t,r){var n,i,c,m,h=function(e,t,r){var n=[],i=a(e,t),o="+-*"+((r=!!r)?"/":"");!function e(t){var r=t.type;if("FunctionNode"===r)throw new u("There is an unsolved function call");if("OperatorNode"===r)if("^"===t.op&&t.isBinary()){if("ConstantNode"!==t.args[1].type||!f.isInteger(parseFloat(t.args[1].value)))throw new u("There is a non-integer exponent");e(t.args[0])}else{if(-1===o.indexOf(t.op))throw new u("Operator "+t.op+" invalid in polynomial expression");for(var i=0;i=1){var y=((m={}).firstRules=(n=[o,{l:"n+n",r:"2*n"},{l:"n+-n",r:"0"},s,{l:"n*(n1^-1)",r:"n/n1"},{l:"n*n1^-n2",r:"n/n1^n2"},{l:"n1^-1",r:"1/n1"},{l:"n*(n1/n2)",r:"(n*n1)/n2"},{l:"1*n",r:"n"}]).concat(i=[{l:"(-n1)/(-n2)",r:"n1/n2"},{l:"(-n1)*(-n2)",r:"n1*n2"},{l:"n1--n2",r:"n1+n2"},{l:"n1-n2",r:"n1+(-n2)"},{l:"(n1+n2)*n3",r:"(n1*n3 + n2*n3)"},{l:"n1*(n2+n3)",r:"(n1*n2+n1*n3)"},{l:"c1*n + c2*n",r:"(c1+c2)*n"},{l:"-v*-c",r:"c*v"},{l:"-v*c",r:"-c*v"},{l:"v*-c",r:"-c*v"},{l:"v*c",r:"c*v"},{l:"-(-n1*n2)",r:"(n1*n2)"},{l:"-(n1*n2)",r:"(-n1*n2)"},{l:"-(-n1+n2)",r:"(n1-n2)"},{l:"-(n1+n2)",r:"(-n1-n2)"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"},{l:"-(-n1/n2)",r:"(n1/n2)"},{l:"-(n1/n2)",r:"(-n1/n2)"}],c=[{l:"(n1/(n2/n3))",r:"((n1*n3)/n2)"},{l:"(n1/n2/n3)",r:"(n1/(n2*n3))"}]),m.distrDivRules=[{l:"(n1/n2 + n3/n4)",r:"((n1*n4 + n3*n2)/(n2*n4))"},{l:"(n1/n2 + n3)",r:"((n1 + n3*n2)/n2)"},{l:"(n1 + n2/n3)",r:"((n1*n3 + n2)/n3)"}],m.sucDivRules=c,m.firstRulesAgain=n.concat(i),m.finalRules=[o,{l:"n*-n",r:"-n^2"},{l:"n*n",r:"n^2"},s,{l:"n*-n^n1",r:"-n^(n1+1)"},{l:"n*n^n1",r:"n^(n1+1)"},{l:"n^n1*-n^n2",r:"-n^(n1+n2)"},{l:"n^n1*n^n2",r:"n^(n1+n2)"},{l:"n^n1*-n",r:"-n^(n1+1)"},{l:"n^n1*n",r:"n^(n1+1)"},{l:"n^n1/-n",r:"-n^(n1-1)"},{l:"n^n1/n",r:"n^(n1-1)"},{l:"n/-n^n1",r:"-n^(1-n1)"},{l:"n/n^n1",r:"n^(1-n1)"},{l:"n^n1/-n^n2",r:"n^(n1-n2)"},{l:"n^n1/n^n2",r:"n^(n1-n2)"},{l:"n1+(-n2*n3)",r:"n1-n2*n3"},{l:"v*(-c)",r:"-c*v"},{l:"n1+-n2",r:"n1-n2"},{l:"v*c",r:"c*v"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"}],m);e=function e(t,r,n){var i=t.type,a=arguments.length>1;if("OperatorNode"===i&&t.isBinary()){var o=!1;if("^"===t.op&&("ParenthesisNode"===t.args[0].type||"OperatorNode"===t.args[0].type)&&"ConstantNode"===t.args[1].type){var s=parseFloat(t.args[1].value);o=s>=2&&f.isInteger(s)}if(o){if(s>2){var u=t.args[0],c=new p("^","pow",[t.args[0].cloneDeep(),new l(s-1)]);t=new p("*","multiply",[u,c])}else t=new p("*","multiply",[t.args[0],t.args[0].cloneDeep()]);a&&("content"===n?r.content=t:r.args[n]=t)}}if("ParenthesisNode"===i)e(t.content,t,"content");else if("ConstantNode"!==i&&"SymbolNode"!==i)for(var m=0;mi&&(t[l]=0),t[l]+=o.cte*("+"===o.oper?1:-1),void(i=Math.max(l,i))}o.cte=l,""===o.fire&&(t[0]+=o.cte*("+"===o.oper?1:-1))}}(e,null,n);var o=!0;for(r=i=t.length-1;r>=0;r--)if(0!==t[r]){var s,c=new l(o?t[r]:Math.abs(t[r])),h=t[r]<0?"-":"+";if(r>0){var d=new m(a);if(r>1){var g=new l(r);d=new p("^","pow",[d,g])}c=-1===t[r]&&o?new p("-","unaryMinus",[d]):1===Math.abs(t[r])?d:new p("*","multiply",[c,d])}s=o?c:"+"===h?new p("+","add",[s,c]):new p("-","subtract",[s,c]),o=!1}return o?new l(0):s}return h}},function(e,t,r){"use strict";t.name="qr",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(39)),s=n(r(63)),u=(n(r(122)),n(r(58))),c=(n(r(59)),n(r(123))),f=(n(r(27)),n(r(124))),l=n(r(50)),p=n(r(125)),m=n(r(33)),h=n(r(16)),d=n(r(12)),g=n(r(21)),y=n(r(19)),v=i("qr",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=a(e),r=x(t);return{Q:r.Q.valueOf(),R:r.R.valueOf()}}}),x=function(e){var t,r,n,i=e._size[0],a=e._size[1],v=s([i],"dense"),x=v._data,w=e.clone(),b=w._data,N=o([i],"");for(n=0;n=0;u--)for(f=r[u],l=r[u+1],c=f;c=0;s--)m[s]=-1,-1!=(u=h[s])&&(0==d[v+u]++&&(d[y+u]=s),d[0+s]=d[g+u],d[g+u]=s);for(t.lnz=0,t.m2=a,u=0;ui))for(var h=f[p+1];ms)r[u+m]=0,r[a+m]=-1,p++,t[m]=i(e),r[u+e]++;else{var d=r[c+h];-1!=d&&(f[d]=m),r[l+m]=r[c+h],r[c+h]=m}}return p},m=function(e,t,r,n,i){if(e<2||e+t<0){for(var a=0;a3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var d=f(e,t,n,s,c);a(d,h,null);for(var g,y,v,x,w,b,N,M,E,A,O,S,_,T,C,z,B=d._index,I=d._ptr,P=I[s],R=[],U=[],D=s+1,k=2*(s+1),q=3*(s+1),L=4*(s+1),F=5*(s+1),j=6*(s+1),H=7*(s+1),$=R,G=l(s,I,U,0,q,$,k,H,D,j,L,F),V=p(s,I,U,F,L,j,c,D,q,$,k),Z=0;VW?(b=v,N=J,M=U[0+v]-W):(N=I[b=B[J++]],M=U[0+b]),w=1;w<=M;w++)(E=U[D+(g=B[N++])])<=0||(X+=E,U[D+g]=-E,B[K++]=g,-1!=U[k+g]&&($[U[k+g]]=$[g]),-1!=$[g]?U[k+$[g]]=U[k+g]:U[q+U[F+g]]=U[k+g]);b!=v&&(I[b]=i(v),U[j+b]=0)}for(0!==W&&(P=K),U[F+v]=X,I[v]=Q,U[0+v]=K-Q,U[L+v]=-2,G=m(G,u,U,j,s),A=Q;A=G?U[j+b]-=E:0!==U[j+b]&&(U[j+b]=U[F+b]+ee)}for(A=Q;A0?(z+=te,B[T++]=b,C+=b):(I[b]=i(v),U[j+b]=0)}U[L+g]=T-S+1;var re=T,ne=S+U[0+g];for(J=_+1;J=0))for(g=U[H+(C=$[g])],U[H+C]=-1;-1!=g&&-1!=U[k+g];g=U[k+g],G++){for(M=U[0+g],O=U[L+g],J=I[g]+1;J<=I[g]+M-1;J++)U[j+B[J]]=G;var ae=g;for(y=U[k+g];-1!=y;){var oe=U[0+y]===M&&U[L+y]===O;for(J=I[y]+1;oe&&J<=I[y]+M-1;J++)U[j+B[J]]!=G&&(oe=0);oe?(I[y]=i(g),U[D+g]+=U[D+y],U[D+y]=0,U[L+y]=-1,y=U[k+y],U[k+ae]=y):(ae=y,y=U[k+y])}}for(J=Q,A=Q;A=0;y--)U[D+y]>0||(U[k+y]=U[q+I[y]],U[q+I[y]]=y);for(b=s;b>=0;b--)U[D+b]<=0||-1!=I[b]&&(U[k+b]=U[q+I[b]],U[q+I[b]]=b);for(v=0,g=0;g<=s;g++)-1==I[g]&&(v=o(g,v,U,q,k,R,j));return R.splice(R.length-1,1),R}}},function(e,t,r){"use strict";t.name="cs_fkeep",t.path="sparse",t.factory=function(){return function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size[1],s=0,u=0;u=0;r--)-1!=e[r]&&(o[s+r]=o[0+e[r]],o[0+e[r]]=r);for(r=0;r=1&&M[s]++,2==S.jleaf&&M[S.q]--}-1!=t[s]&&(y[0+s]=t[s])}for(s=0;s=0;){e=n[h];var d=s?s[e]:e;i(p,e)||(a(p,e),n[m+h]=d<0?0:o(p[d]));var g=1;for(c=n[m+h],f=d<0?0:o(p[d+1]);c=0||t.predictable?i(r):new e.Complex(r,0).log().div(Math.LN10)},Complex:function(t){return new e.Complex(t).log().div(Math.LN10)},BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():new e.Complex(r.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\log_{10}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";t.name="mod",t.factory=function(e,t,n,i){var a=n(r(1)),o=r(4),s=n(r(23)),u=n(r(17)),c=n(r(62)),f=n(r(20)),l=n(r(18)),p=n(r(7)),m=n(r(6)),h=i("mod",{"number, number":function(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")},"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"SparseMatrix, SparseMatrix":function(e,t){return c(e,t,h,!1)},"SparseMatrix, DenseMatrix":function(e,t){return s(t,e,h,!0)},"DenseMatrix, SparseMatrix":function(e,t){return u(e,t,h,!1)},"DenseMatrix, DenseMatrix":function(e,t){return p(e,t,h)},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"SparseMatrix, any":function(e,t){return f(e,t,h,!1)},"DenseMatrix, any":function(e,t){return m(e,t,h,!1)},"any, SparseMatrix":function(e,t){return l(t,e,h,!0)},"any, DenseMatrix":function(e,t){return m(t,e,h,!0)},"Array, any":function(e,t){return m(a(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(a(t),e,h,!0).valueOf()}});return h.toTex={2:"\\left(${args[0]}"+o.operators.mod+"${args[1]}\\right)"},h}},function(e,t,r){"use strict";t.name="norm",t.factory=function(e,t,n,i){var a=n(r(27)),o=n(r(15)),s=n(r(38)),u=n(r(50)),c=n(r(11)),f=n(r(8)),l=n(r(32)),p=n(r(37)),m=n(r(1)),h=n(r(137)),d=n(r(68)),g=i("norm",{number:Math.abs,Complex:function(e){return e.abs()},BigNumber:function(e){return e.abs()},boolean:function(e){return Math.abs(e)},Array:function(e){return y(m(e),2)},Matrix:function(e){return y(e,2)},"number | Complex | BigNumber | boolean, number | BigNumber | string":function(e){return g(e)},"Array, number | BigNumber | string":function(e,t){return y(m(e),t)},"Matrix, number | BigNumber | string":function(e,t){return y(e,t)}});function y(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=a(e);l(t,n)&&(n=t)},!0),n}var i;if(t===Number.NEGATIVE_INFINITY||"-inf"===t)return e.forEach(function(e){var t=a(e);i&&!p(t,i)||(i=t)},!0),i||0;if("fro"===t)return y(e,2);if("number"==typeof t&&!isNaN(t)){if(!f(t,0)){var m=0;return e.forEach(function(e){m=o(s(a(e),t),m)},!0),s(m,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var g=[],v=0;return e.forEach(function(e,t){var r=t[1],n=o(g[r]||0,a(e));l(n,v)&&(v=n),g[r]=n},!0),v}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=o(x[r]||0,a(e));l(n,w)&&(w=n),x[r]=n},!0),w}if("fro"===t)return u(h(c(d(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}return g.toTex={1:"\\left\\|${args[0]}\\right\\|",2:void 0},g}},function(e,t,r){"use strict";function n(e,t){var r=t<0;if(r&&(t=-t),0===t)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function i(e,t){if(t<0)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!=0)throw new Error("Root must be an integer");for(var r=e.arg(),n=e.abs(),i=[],a=Math.pow(n,1/t),o=0;o>t},"BigNumber, BigNumber":i,"SparseMatrix, SparseMatrix":function(e,t){return m(e,t,v,!1)},"SparseMatrix, DenseMatrix":function(e,t){return p(t,e,v,!0)},"DenseMatrix, SparseMatrix":function(e,t){return l(e,t,v,!1)},"DenseMatrix, DenseMatrix":function(e,t){return g(e,t,v)},"Array, Array":function(e,t){return v(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return v(u(e),t)},"Matrix, Array":function(e,t){return v(e,u(t))},"SparseMatrix, number | BigNumber":function(e,t){return c(t,0)?e.clone():d(e,t,v,!1)},"DenseMatrix, number | BigNumber":function(e,t){return c(t,0)?e.clone():y(e,t,v,!1)},"number | BigNumber, SparseMatrix":function(e,t){return c(e,0)?f(t.size(),t.storage()):h(t,e,v,!0)},"number | BigNumber, DenseMatrix":function(e,t){return c(e,0)?f(t.size(),t.storage()):y(t,e,v,!0)},"Array, number | BigNumber":function(e,t){return v(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return v(e,u(t)).valueOf()}});return v.toTex={2:"\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)"},v}},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():e.isNegative()?new r(-1):e.isFinite()?new r(0):new r(NaN)}},function(e,t,r){"use strict";var n=r(3).isInteger;t.name="rightLogShift",t.factory=function(e,t,i,a){var o=r(4),s=i(r(1)),u=i(r(8)),c=i(r(39)),f=i(r(31)),l=i(r(23)),p=i(r(84)),m=i(r(36)),h=i(r(20)),d=i(r(7)),g=i(r(6)),y=a("rightLogShift",{"number, number":function(e,t){if(!n(e)||!n(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"SparseMatrix, SparseMatrix":function(e,t){return p(e,t,y,!1)},"SparseMatrix, DenseMatrix":function(e,t){return l(t,e,y,!0)},"DenseMatrix, SparseMatrix":function(e,t){return f(e,t,y,!1)},"DenseMatrix, DenseMatrix":function(e,t){return d(e,t,y)},"Array, Array":function(e,t){return y(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return y(s(e),t)},"Matrix, Array":function(e,t){return y(e,s(t))},"SparseMatrix, number | BigNumber":function(e,t){return u(t,0)?e.clone():h(e,t,y,!1)},"DenseMatrix, number | BigNumber":function(e,t){return u(t,0)?e.clone():g(e,t,y,!1)},"number | BigNumber, SparseMatrix":function(e,t){return u(e,0)?c(t.size(),t.storage()):m(t,e,y,!0)},"number | BigNumber, DenseMatrix":function(e,t){return u(e,0)?c(t.size(),t.storage()):g(t,e,y,!0)},"Array, number | BigNumber":function(e,t){return y(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,s(t)).valueOf()}});return y.toTex={2:"\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)"},y}},function(e,t,r){e.exports=[r(459),r(460),r(138),r(461)]},function(e,t,r){"use strict";t.name="bellNumbers",t.factory=function(e,t,n,i){var a=n(r(15)),o=n(r(138)),s=n(r(60)),u=n(r(51)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;r<=e;r++)t=a(t,o(e,r));return t}});return c.toTex={1:"\\mathrm{B}_{${args[0]}}"},c}},function(e,t,r){"use strict";t.name="composition",t.factory=function(e,t,n,i){var a=n(r(71)),o=n(r(16)),s=n(r(59)),u=n(r(51)),c=n(r(32)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex=void 0,f}},function(e,t,r){"use strict";t.name="catalan",t.factory=function(e,t,n,i){var a=n(r(15)),o=n(r(43)),s=n(r(11)),u=n(r(71)),c=n(r(60)),f=n(r(51)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex={1:"\\mathrm{C}_{${args[0]}}"},l}},function(e,t,r){e.exports=[r(463),r(125),r(464),r(465)]},function(e,t,r){"use strict";var n=r(0);t.name="arg",t.factory=function(e,t,r,i){var a=i("arg",{number:function(e){return Math.atan2(0,e)},BigNumber:function(t){return e.BigNumber.atan2(0,t)},Complex:function(e){return e.arg()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\arg\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="im",t.factory=function(e,t,r,i){var a=i("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){"use strict";var n=r(0);t.name="re",t.factory=function(e,t,r,i){var a=i("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){e.exports=[r(467),r(468)]},function(e,t,r){"use strict";t.name="intersect",t.factory=function(e,t,n,i){var a=n(r(27)),o=n(r(15)),s=n(r(16)),u=n(r(1)),c=n(r(11)),f=n(r(21)),l=n(r(12)),p=n(r(19)),m=n(r(37)),h=n(r(8)),d=i("intersect",{"Array, Array, Array":function(e,t,r){if(!v(e))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!v(t))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!(4===(n=r).length&&g(n[0])&&g(n[1])&&g(n[2])&&g(n[3])))throw new TypeError("Array with 4 numbers expected as third argument");var n,i,a,o,u,c,m,h,d,y,x,w,b,N,M,E,A,O,S,_,T;return i=e[0],a=e[1],o=e[2],u=t[0],c=t[1],m=t[2],h=r[0],d=r[1],y=r[2],x=r[3],w=f(i,h),b=f(u,h),N=f(a,d),M=f(c,d),E=f(o,y),A=f(m,y),O=l(p(p(p(x,w),N),E),p(p(p(s(s(b,M),A),w),N),E)),S=s(i,f(O,p(u,i))),_=s(a,f(O,p(c,a))),T=s(o,f(O,p(m,o))),[S,_,T]},"Array, Array, Array, Array":function(e,r,n,i){if(2===e.length){if(!y(e))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!y(r))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!y(n))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!y(i))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return function(e,r,n,i){var u=e,h=n,d=p(u,r),g=p(h,i),y=p(f(d[0],g[1]),f(g[0],d[1]));if(m(a(y),t.epsilon))return null;var v=f(g[0],u[1]),x=f(g[1],u[0]),w=f(g[0],h[1]),b=f(g[1],h[0]),N=l(s(p(p(v,x),w),b),y);return o(c(d,N),u)}(e,r,n,i)}if(3===e.length){if(!v(e))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!v(r))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!v(n))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!v(i))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return u=e[0],d=e[1],g=e[2],w=r[0],b=r[1],N=r[2],M=n[0],E=n[1],A=n[2],O=i[0],S=i[1],_=i[2],T=x(u,M,O,M,d,E,S,E,g,A,_,A),C=x(O,M,w,u,S,E,b,d,_,A,N,g),z=x(u,M,w,u,d,E,b,d,g,A,N,g),B=x(O,M,O,M,S,E,S,E,_,A,_,A),I=x(w,u,w,u,b,d,b,d,N,g,N,g),P=l(p(f(T,C),f(z,B)),p(f(I,B),f(C,C))),R=l(s(T,f(P,C)),B),U=s(u,f(P,p(w,u))),D=s(d,f(P,p(b,d))),k=s(g,f(P,p(N,g))),q=s(M,f(R,p(O,M))),L=s(E,f(R,p(S,E))),F=s(A,f(R,p(_,A))),h(U,q)&&h(D,L)&&h(k,F)?[U,D,k]:null}throw new TypeError("Arrays with two or thee dimensional points expected");var u,d,g,w,b,N,M,E,A,O,S,_,T,C,z,B,I,P,R,U,D,k,q,L,F},"Matrix, Matrix, Matrix":function(e,t,r){return u(d(e.valueOf(),t.valueOf(),r.valueOf()))},"Matrix, Matrix, Matrix, Matrix":function(e,t,r,n){return u(d(e.valueOf(),t.valueOf(),r.valueOf(),n.valueOf()))}});function g(t){return"number"==typeof t||e.isBigNumber(t)}function y(e){return 2===e.length&&g(e[0])&&g(e[1])}function v(e){return 3===e.length&&g(e[0])&&g(e[1])&&g(e[2])}function x(e,t,r,n,i,a,o,u,c,l,m,h){var d=f(p(e,t),p(r,n)),g=f(p(i,a),p(o,u)),y=f(p(c,l),p(m,h));return s(s(d,g),y)}return d}},function(e,t,r){"use strict";t.name="distance",t.factory=function(e,t,n,i){n(r(1));var a=n(r(16)),o=n(r(19)),s=n(r(21)),u=n(r(12)),c=n(r(33)),f=n(r(50)),l=n(r(27));function p(t){return"number"==typeof t||e.isBigNumber(t)}function m(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])}function h(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])&&p(e[2])}function d(e){return e.constructor!==Array&&(e=g(e)),p(e[0])&&p(e[1])&&p(e[2])&&p(e[3])&&p(e[4])&&p(e[5])}function g(e){for(var t=Object.keys(e),r=[],n=0;n1?[o]:o}}},function(e,t,r){"use strict";var n=r(2),i=(r(5).clone,r(3).isInteger);t.name="diag",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("diag",{Array:function(e){return c(e,0,n.size(e),null)},"Array, number":function(e,t){return c(e,t,n.size(e),null)},"Array, BigNumber":function(e,t){return c(e,t.toNumber(),n.size(e),null)},"Array, string":function(e,t){return c(e,0,n.size(e),t)},"Array, number, string":function(e,t,r){return c(e,t,n.size(e),r)},"Array, BigNumber, string":function(e,t,r){return c(e,t.toNumber(),n.size(e),r)},Matrix:function(e){return c(e,0,e.size(),e.storage())},"Matrix, number":function(e,t){return c(e,t,e.size(),e.storage())},"Matrix, BigNumber":function(e,t){return c(e,t.toNumber(),e.size(),e.storage())},"Matrix, string":function(e,t){return c(e,0,e.size(),t)},"Matrix, number, string":function(e,t,r){return c(e,t,e.size(),r)},"Matrix, BigNumber, string":function(e,t,r){return c(e,t.toNumber(),e.size(),r)}});return u.toTex=void 0,u;function c(t,r,n,a){if(!i(r))throw new TypeError("Second parameter in function diag must be an integer");var o,u,c,f,l,p,m=r>0?r:0,h=r<0?-r:0;switch(n.length){case 1:return o=t,u=r,c=a,f=n[0],l=[f+h,f+m],p=e.Matrix.storage(c||"dense").diagonal(l,o,u),null!==c?p:p.valueOf();case 2:return function(t,r,n,i,a,o){if(e.isMatrix(t)){var u=t.diagonal(r);return null!==n?n!==u.storage()?s(u,n):u:u.valueOf()}for(var c=Math.min(i[0]-a,i[1]-o),f=[],l=0;l2||n(t).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(e.length)+", y = "+JSON.stringify(t.length)+")");var r=[],i=[];return e.map(function(e){return t.map(function(t){return e.map(function(e){return t.map(function(t){return i.push(s(e,t))})},r.push(i=[]))})},r=[])&&r}}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(2).resize;t.name="ones",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("ones",{"":function(){return"Array"===t.matrix?c([]):c([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?c(e,e.pop()):"Array"===t.matrix?c(e):c(e,"default")},Array:c,Matrix:function(e){var t=e.storage();return c(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return c(e.valueOf(),t)}});return u.toTex=void 0,u;function c(t,r){var a,o=(a=!1,t.forEach(function(t,r,n){e.isBigNumber(t)&&(a=!0,n[r]=t.toNumber())}),a?new e.BigNumber(1):1);if(t.forEach(function(e){if("number"!=typeof e||!n(e)||e<0)throw new Error("Parameters in function ones must be positive integers")}),r){var u=s(r);return t.length>0?u.resize(t,o):u}var c=[];return t.length>0?i(c,t,o):c}}},function(e,t,r){"use strict";r(10);var n=r(3).isInteger,i=r(2);t.name="reshape",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("reshape",{"Matrix, Array":function(e,t){return e.reshape?e.reshape(t):s(i.reshape(e.valueOf(),t))},"Array, Array":function(e,t){return t.forEach(function(e){if(!n(e))throw new TypeError("Invalid size for dimension: "+e)}),i.reshape(e,t)}});return u.toTex=void 0,u}},function(e,t,r){"use strict";var n=r(10),i=r(44),a=r(3).isInteger,o=r(9).format,s=r(5).clone,u=r(2);t.name="resize",t.factory=function(e,t,c,f){var l=c(r(1)),p=function(r,c,f){if(2!=arguments.length&&3!=arguments.length)throw new i("resize",arguments.length,2,3);if(e.isMatrix(c)&&(c=c.valueOf()),e.isBigNumber(c[0])&&(c=c.map(function(t){return e.isBigNumber(t)?t.toNumber():t})),e.isMatrix(r))return r.resize(c,f,!0);if("string"==typeof r)return function(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new n(t.length,1);var i=t[0];if("number"!=typeof i||!a(i))throw new TypeError("Invalid size, must contain positive integers (size: "+o(t)+")");if(e.length>i)return e.substring(0,i);if(e.lengthg)return 1}for(var y=0,v=Math.max(m.length,h.length);yi)return 1}return 0}},function(e,t,r){"use strict";var n=r(5),i=r(2);t.name="squeeze",t.factory=function(e,t,a,o){var s=a(r(1)),u=o("squeeze",{Array:function(e){return i.squeeze(n.clone(e))},Matrix:function(e){var t=i.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return n.clone(e)}});return u.toTex=void 0,u}},function(e,t,r){e.exports=[r(71),r(70),r(139),r(488),r(489),r(490),r(491),r(495),r(496)]},function(e,t,r){"use strict";t.name="kldivergence",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(43)),s=n(r(142)),u=n(r(11)),c=n(r(134)),f=n(r(136)),l=n(r(54));function p(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");if(0===s(e))throw new Error("Sum of elements in first object must be non zero");if(0===s(t))throw new Error("Sum of elements in second object must be non zero");var i=o(e,s(e)),a=o(t,s(t)),p=s(u(i,f(c(i,a))));return l(p)?p:Number.NaN}return i("kldivergence",{"Array, Array":function(e,t){return p(a(e),a(t))},"Matrix, Array":function(e,t){return p(e,a(t))},"Array, Matrix":function(e,t){return p(a(e),t)},"Matrix, Matrix":function(e,t){return p(e,t)}})}},function(e,t,r){"use strict";var n=r(42);t.name="multinomial",t.factory=function(e,t,i,a){var o=i(r(15)),s=i(r(11)),u=i(r(43)),c=i(r(70)),f=i(r(51)),l=i(r(59));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return n(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}},function(e,t,r){"use strict";var n=r(3).isInteger;function i(e){return e.isInteger()&&e.gte(0)}t.name="permutations",t.factory=function(e,t,a,o){var s=o("permutations",{"number | BigNumber":a(r(70)),"number, number":function(e,t){var r,i;if(!n(e)||e<0)throw new TypeError("Positive integer value expected in function permutations");if(!n(t)||t<0)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,i=e-t+1;i<=e;i++)r*=i;return r},"BigNumber, BigNumber":function(t,r){var n,a;if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(n=new e.BigNumber(1),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return s.toTex=void 0,s}},function(e,t,r){"use strict";t.name="pickRandom",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").pickRandom;return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(493),i=n();t.factory=function(e,t,r,a,o){var s;function u(e){s=null===e?i:n(String(e))}return u(t.randomSeed),o.on("config",function(e,t,r){void 0!==r.randomSeed&&u(e.randomSeed)}),function(){return s()}},t.math=!0},function(e,t,r){"use strict";(function(t){var r=256,n=[],i=void 0===t?window:t,a=Math.pow(r,6),o=Math.pow(2,52),s=2*o,u=r-1,c=Math.random;function f(e,t){for(var r,n=e+"",i=0;i=s;)e/=2,t/=2,n>>>=1;return(e+n)/t}},e.exports.resetGlobal=function(){Math.random=c},f(Math.random(),n)}).call(t,r(494))},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.name="random",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").random;return a.toTex=void 0,a}},function(e,t,r){"use strict";t.name="randomInt",t.factory=function(e,t,n,i){var a=n(r(86))("uniform").randomInt;return a.toTex=void 0,a}},function(e,t,r){e.exports=[r(52),r(29),r(498),r(46),r(32),r(129),r(37),r(499),r(123)]},function(e,t,r){"use strict";t.name="deepEqual",t.factory=function(e,t,n,i){var a=n(r(46)),o=i("deepEqual",{"any, any":function(e,t){return function e(t,r){if(Array.isArray(t)){if(Array.isArray(r)){var n=t.length;if(n!==r.length)return!1;for(var i=0;i0;r--)for(var n=0;ne[n+1].length&&(t=e[n],e[n]=e[n+1],e[n+1]=t);return e}(r)}});function f(e,t){for(var r=[],n=0;n=c?i(e):t<=a?i(e)*function(e){var t,r=e*e,n=s[0][4]*r,i=r;for(t=0;t<3;t+=1)n=(n+s[0][t])*r,i=(i+u[0][t])*r;return e*(n+s[0][3])/(i+u[0][3])}(t):t<=4?i(e)*(1-function(e){var t,r=s[1][8]*e,n=e;for(t=0;t<7;t+=1)r=(r+s[1][t])*e,n=(n+u[1][t])*e;var i=(r+s[1][7])/(n+u[1][7]),a=parseInt(16*e)/16,o=(e-a)*(e+a);return Math.exp(-a*a)*Math.exp(-o)*i}(t)):i(e)*(1-function(e){var t,r=1/(e*e),n=s[2][5]*r,i=r;for(t=0;t<4;t+=1)n=(n+s[2][t])*r,i=(i+u[2][t])*r;var a=r*(n+s[2][4])/(i+u[2][4]);a=(o-a)/e,r=parseInt(16*e)/16;var c=(e-r)*(e+r);return Math.exp(-r*r)*Math.exp(-c)*a}(t))},BigNumber:function(t){return new e.BigNumber(l(t.toNumber()))},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"erf\\left(${args[0]}\\right)"},l}},function(e,t,r){e.exports=[r(511),r(113),r(114),r(146),r(117),r(512),r(513),r(514),r(515),r(142),r(147)]},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mad",t.factory=function(e,t,i,a){var o=i(r(27)),s=i(r(141)),u=i(r(146)),c=i(r(19)),f=i(r(34)),l=a("mad",{"Array | Matrix":p,"...":function(e){return p(e)}});return l.toTex=void 0,l;function p(e){if(0===(e=n(e.valueOf())).length)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var t=u(e);return u(s(e,function(e){return o(c(e,t))}))}catch(e){throw e instanceof TypeError&&-1!==e.message.indexOf("median")?new TypeError(e.message.replace("median","mad")):f(e,"mad")}}}},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mode",t.factory=function(e,t,r,i){return i("mode",{"Array | Matrix":a,"...":function(e){return a(e)}});function a(e){if(0==(e=n(e.valueOf())).length)throw new Error("Cannot calculate mode of an empty array");var t={},r=[],i=0;for(var a in e)e[a]in t||(t[e[a]]=0),t[e[a]]++,t[e[a]]==i?r.push(e[a]):t[e[a]]>i&&(i=t[e[a]],r=[e[a]]);return r}}},function(e,t,r){"use strict";var n=r(42);t.name="prod",t.factory=function(e,t,i,a){var o=i(r(21)),s=i(r(34)),u=a("prod",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(e){return c(e)}});return u.toTex=void 0,u;function c(e){var t=void 0;if(n(e,function(e){try{t=void 0===t?e:o(t,e)}catch(t){throw s(t,"prod",e)}}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).isNumber,a=r(2).flatten,o=r(49);t.name="quantileSeq",t.factory=function(e,t,s,u){var c=s(r(15)),f=s(r(11)),l=s(r(85)),p=s(r(52));function m(e,t,r){var n=a(e),o=n.length;if(0===o)throw new Error("Cannot calculate quantile of an empty sequence");if(i(t)){var s;if(0==(v=(s=t*(o-1))%1)){var u=r?n[s]:l(n,s);return h(u),u}var m=Math.floor(s);if(r)g=n[m],y=n[m+1];else{y=l(n,m+1),g=n[m];for(var d=0;d0&&(g=n[d])}return h(g),h(y),c(f(g,1-v),f(y,v))}if((s=t.times(o-1)).isInteger())return s=s.toNumber(),u=r?n[s]:l(n,s),h(u),u;m=s.floor();var g,y,v=s.minus(m),x=m.toNumber();if(r)g=n[x],y=n[x+1];else for(y=l(n,x+1),g=n[x],d=0;d0&&(g=n[d]);h(g),h(y);var w=new v.constructor(1);return c(f(g,w.minus(v)),f(y,v))}var h=u({"number | BigNumber | Unit":function(e){return e}});return function(t,r,a){var s,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(o(t)){if("boolean"==typeof(a=a||!1)){if(u=t.valueOf(),i(r)){if(r<0)throw new Error("N/prob must be non-negative");if(r<=1)return m(u,r,a);if(r>1){if(!n(r))throw new Error("N must be a positive integer");var f=r+1;s=new Array(r);for(var l=0;l4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");for(f=new e.BigNumber(p+1),s=new Array(p),l=0;l1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!e.isBigNumber(h))throw new TypeError("Unexpected type of argument in function quantileSeq");if(c=new h.constructor(1),h.isNegative()||h.gt(c))throw new Error("Probability must be between 0 and 1, inclusive")}s[l]=m(u,h,a)}return s}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}}},function(e,t,r){"use strict";t.name="std",t.factory=function(e,t,n,i){var a=n(r(50)),o=n(r(147)),s=i("std",{"Array | Matrix":u,"Array | Matrix, string":u,"...":function(e){return u(e)}});return s.toTex=void 0,s;function u(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{return a(o.apply(null,arguments))}catch(e){throw e instanceof TypeError&&-1!==e.message.indexOf(" var")?new TypeError(e.message.replace(" var"," std")):e}}}},function(e,t,r){e.exports=[r(95),r(517)]},function(e,t,r){"use strict";var n=r(9).isString,i=r(9).format;function a(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,a){for(var o=a.split("."),s=t[o.shift()];o.length&&void 0!==s;){var u=o.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:i(s,r):e})}t.name="print",t.factory=function(e,t,r,n){var i=n("print",{"string, Object":a,"string, Object, number | Object":a});return i.toTex=void 0,i}},function(e,t,r){e.exports=[r(519),r(148),r(520),r(521),r(522),r(523),r(524),r(525),r(526),r(527),r(528),r(529),r(530),r(531),r(532),r(533),r(534),r(535),r(536),r(537),r(538),r(539),r(540),r(541),r(542)]},function(e,t,r){"use strict";var n=r(0);t.name="acos",t.factory=function(e,t,r,i){var a=i("acos",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.acos(r):new e.Complex(r,0).acos()},Complex:function(e){return e.acos()},BigNumber:function(e){return e.acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acot",t.factory=function(e,t,r,i){var a=i("acot",{number:function(e){return Math.atan(1/e)},Complex:function(e){return e.acot()},BigNumber:function(t){return new e.BigNumber(1).div(t).atan()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acoth",t.factory=function(e,t,r,i){var a=i("acoth",{number:function(r){return r>=1||r<=-1||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:new e.Complex(r,0).acoth()},Complex:function(e){return e.acoth()},BigNumber:function(t){return new e.BigNumber(1).div(t).atanh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\coth^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acsc",t.factory=function(e,t,r,i){var a=i("acsc",{number:function(r){return r<=-1||r>=1||t.predictable?Math.asin(1/r):new e.Complex(r,0).acsc()},Complex:function(e){return e.acsc()},BigNumber:function(t){return new e.BigNumber(1).div(t).asin()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="acsch",t.factory=function(e,t,r,i){var a=i("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(e){return e.acsch()},BigNumber:function(t){return new e.BigNumber(1).div(t).asinh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asec",t.factory=function(e,t,r,i){var a=i("asec",{number:function(r){return r<=-1||r>=1||t.predictable?Math.acos(1/r):new e.Complex(r,0).asec()},Complex:function(e){return e.asec()},BigNumber:function(t){return new e.BigNumber(1).div(t).acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asech",t.factory=function(e,t,i,a){a.find(i(r(148)),["Complex"]);var o=a("asech",{number:function(r){if(r<=1&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return new e.Complex(r,0).asech()},Complex:function(e){return e.asech()},BigNumber:function(t){return new e.BigNumber(1).div(t).acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="asin",t.factory=function(e,t,r,i){var a=i("asin",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.asin(r):new e.Complex(r,0).asin()},Complex:function(e){return e.asin()},BigNumber:function(e){return e.asin()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="asinh",t.factory=function(e,t,r,i){var a=i("asinh",{number:Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){return e.asinh()},BigNumber:function(e){return e.asinh()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sinh^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);t.name="atan",t.factory=function(e,t,r,i){var a=i("atan",{number:function(e){return Math.atan(e)},Complex:function(e){return e.atan()},BigNumber:function(e){return e.atan()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";t.name="atan2",t.factory=function(e,t,n,i){var a=n(r(1)),o=n(r(23)),s=n(r(17)),u=n(r(135)),c=n(r(20)),f=n(r(18)),l=n(r(7)),p=n(r(6)),m=i("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return e.BigNumber.atan2(t,r)},"SparseMatrix, SparseMatrix":function(e,t){return u(e,t,m,!1)},"SparseMatrix, DenseMatrix":function(e,t){return o(t,e,m,!0)},"DenseMatrix, SparseMatrix":function(e,t){return s(e,t,m,!1)},"DenseMatrix, DenseMatrix":function(e,t){return l(e,t,m)},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"SparseMatrix, number | BigNumber":function(e,t){return c(e,t,m,!1)},"DenseMatrix, number | BigNumber":function(e,t){return p(e,t,m,!1)},"number | BigNumber, SparseMatrix":function(e,t){return f(t,e,m,!0)},"number | BigNumber, DenseMatrix":function(e,t){return p(t,e,m,!0)},"Array, number | BigNumber":function(e,t){return p(a(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(a(t),e,m,!0).valueOf()}});return m.toTex={2:"\\mathrm{atan2}\\left(${args}\\right)"},m}},function(e,t,r){"use strict";var n=r(0);var i=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2};t.name="atanh",t.factory=function(e,t,r,a){var o=a("atanh",{number:function(r){return r<=1&&r>=-1||t.predictable?i(r):new e.Complex(r,0).atanh()},Complex:function(e){return e.atanh()},BigNumber:function(e){return e.atanh()},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="cos",t.factory=function(e,t,r,i){var a=i("cos",{number:Math.cos,Complex:function(e){return e.cos()},BigNumber:function(e){return e.cos()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2};t.name="cosh",t.factory=function(e,t,r,a){var o=a("cosh",{number:i,Complex:function(e){return e.cosh()},BigNumber:function(e){return e.cosh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="cot",t.factory=function(e,t,r,i){var a=i("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(e){return e.cot()},BigNumber:function(t){return new e.BigNumber(1).div(t.tan())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}t.name="coth",t.factory=function(e,t,r,a){var o=a("coth",{number:i,Complex:function(e){return e.coth()},BigNumber:function(t){return new e.BigNumber(1).div(t.tanh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\coth\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="csc",t.factory=function(e,t,r,i){var a=i("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(e){return e.csc()},BigNumber:function(t){return new e.BigNumber(1).div(t.sin())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0),i=r(3).sign;function a(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*i(e)}t.name="csch",t.factory=function(e,t,r,i){var o=i("csch",{number:a,Complex:function(e){return e.csch()},BigNumber:function(t){return new e.BigNumber(1).div(t.sinh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{csch}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="sec",t.factory=function(e,t,r,i){var a=i("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(e){return e.sec()},BigNumber:function(t){return new e.BigNumber(1).div(t.cos())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);function i(e){return 2/(Math.exp(e)+Math.exp(-e))}t.name="sech",t.factory=function(e,t,r,a){var o=a("sech",{number:i,Complex:function(e){return e.sech()},BigNumber:function(t){return new e.BigNumber(1).div(t.cosh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{sech}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="sin",t.factory=function(e,t,r,i){var a=i("sin",{number:Math.sin,Complex:function(e){return e.sin()},BigNumber:function(e){return e.sin()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2};t.name="sinh",t.factory=function(e,t,r,a){var o=a("sinh",{number:i,Complex:function(e){return e.sinh()},BigNumber:function(e){return e.sinh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\sinh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(0);t.name="tan",t.factory=function(e,t,r,i){var a=i("tan",{number:Math.tan,Complex:function(e){return e.tan()},BigNumber:function(e){return e.tan()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(0);var i=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};t.name="tanh",t.factory=function(e,t,r,a){var o=a("tanh",{number:i,Complex:function(e){return e.tanh()},BigNumber:function(e){return e.tanh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh\\left(${args[0]}\\right)"},o}},function(e,t,r){e.exports=[r(544)]},function(e,t,r){"use strict";t.name="to",t.factory=function(e,t,n,i){var a=r(4),o=n(r(1)),s=n(r(7)),u=n(r(6)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex={2:"\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)"},c}},function(e,t,r){e.exports=[r(122),r(51),r(60),r(54),r(59),r(546),r(58),r(547),r(47)]},function(e,t,r){"use strict";var n=r(0);t.name="isPrime",t.factory=function(e,t,r,i){var a=i("isPrime",{number:function(e){if(e<2)return!1;if(2==e)return!0;if(e%2==0)return!1;for(var t=3;t*t<=e;t+=2)if(e%t==0)return!1;return!0},BigNumber:function(t){if(t.lt(2))return!1;if(t.equals(2))return!0;if(t.mod(2).isZero())return!1;for(var r=e.BigNumber(3);r.times(r).lte(t);r=r.plus(1))if(t.mod(r).isZero())return!1;return!0},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(0);r(3);t.name="isNaN",t.factory=function(e,t,r,i){return i("isNaN",{number:function(e){return Number.isNaN(e)},BigNumber:function(e){return e.isNaN()},Fraction:function(e){return!1},Complex:function(e){return e.isNaN()},Unit:function(e){return Number.isNaN(e.value)},"Array | Matrix":function(e){return n(e,Number.isNaN)}})}},function(e,t,r){e.exports=[r(549)]},function(e,t,r){"use strict";t.name="reviver",t.path="json",t.factory=function(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}},function(e,t,r){"use strict";var n=r(44),i=r(10),a=r(53);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); //# sourceMappingURL=math.min.map \ No newline at end of file diff --git a/dist/math.min.map b/dist/math.min.map index 1eefbf93d..49c691a3a 100644 --- a/dist/math.min.map +++ b/dist/math.min.map @@ -1 +1 @@ -{"version":3,"sources":["math.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","deepMap","array","callback","skipZeros","map","x","type","config","load","typed","matrix","","_create","string","format","string, string","datatype","Array","data","Matrix","storage","Array | Matrix, string","Array | Matrix, string, string","toTex","0","1","2","number","DimensionError","IndexError","size","isArray","push","length","validate","_validate","dim","len","dimNext","child","validateIndex","index","isNumber","isInteger","TypeError","resize","defaultValue","Error","forEach","value","_resize","elem","oldLen","newLen","minLen","Math","min","undefined","reshape","sizes","newArray","flatArray","flatten","product","arr","reduce","prev","curr","_reshape","accumulator","shift","slice","e","squeeze","dims","_squeeze","ii","next","unsqueeze","outer","unshift","_unsqueeze","flat","filter","filterRegExp","regexp","entry","test","join","separator","identify","a","b","count","identifier","generalize","zeros","isFinite","round","sign","options","Infinity","isNaN","notation","precision","toFixed","toExponential","toEngineering","exponential","lower","upper","fixedOptions","assign","lowerExp","log","LN10","upperExp","console","warn","JSON","stringify","toPrecision","replace","digits","arguments","splitNumber","match","String","toLowerCase","SyntaxError","exponent","parseFloat","dot","indexOf","coefficients","split","parseInt","rounded","roundDigits","newExp","significandsDiff","abs","concat","expDiff","decimalIdx","decimals","decimalVal","str","toString","splitValue","pp","splice","first","pop","DBL_EPSILON","Number","EPSILON","nearlyEqual","y","epsilon","diff","max","escape_latex","symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","xi","Omicron","omicron","Pi","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","inf","Inf","infinity","oo","lim","operators","transpose","factorial","pow","dotPow","unaryPlus","unaryMinus","bitNot","not","multiply","divide","dotMultiply","dotDivide","mod","add","subtract","to","leftShift","rightArithShift","rightLogShift","equal","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","units","deg","escape","preserveFormatting","toSymbol","isUnit","isBigNumber","clone","valueOf","Boolean","Date","RegExp","key","extend","prop","deepExtend","constructor","deepEqual","canDefineProperty","lazy","fn","_value","_uninitialized","set","traverse","path","obj","names","isFactory","DenseMatrix","_iterate","f","level","av","bv","inverse","cv","j","dt","adata","_data","asize","_size","adt","_datatype","cf","convert","find","cdata","util","isString","bdata","bsize","bdt","csize","RangeError","bigNearlyEqual","equalScalar","boolean, boolean","number, number","BigNumber, BigNumber","eq","Fraction, Fraction","equals","Complex, Complex","Unit, Unit","equalBase","formatNumber","formatBigNumber","endsWith","text","search","start","end","substring","fraction","formatArray","syntax","entries","escaped","charAt","actual","expected","relation","message","stack","isDimensionError","latex","addScalar","multiplyScalar","algorithm11","algorithm14","SparseMatrix","Array, Array","_validateMatrixDimensions","isMatrix","Matrix, Matrix","xsize","ysize","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","Matrix, Array","Array, Matrix","SparseMatrix, any","DenseMatrix, any","any, SparseMatrix","any, DenseMatrix","Array, any","any, Array","any, any","any, any, ...any","rest","result","signatures","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","sum","arows","acolumns","row","avalues","_values","aindex","_index","aptr","_ptr","brows","cvalues","cindex","cptr","zero","w","ib","vbi","ka0","ka1","ka","ia","p1","ic","values","ptr","DenseMatrix, DenseMatrix","DenseMatrix, SparseMatrix","bvalues","bindex","bptr","jb","kb0","kb1","last","cij","mark","kb","SparseMatrix, DenseMatrix","vbij","p0","SparseMatrix, SparseMatrix","divideScalar","div","Unit, number | Fraction | BigNumber","res","_normalize","number | Fraction | BigNumber, Unit","isSafeProperty","safeNativeProperties","Function","isSafeMethod","method","__proto__","safeNativeMethods","isPlainObject","toLocaleString","getSafeProperty","setSafeProperty","validateSafeMethod","keywords","math","Node","eval","scope","compile","isNode","comment","expr","_compile","expression","mathWithTransform","args","symbol","_validateScope","argNames","_ifNode","node","_traverse","parent","transform","_transform","nodes","cloneDeep","other","customString","handler","_toString","toHTML","customTex","_toTex","getIdentifier","getContent","algorithm01","algorithm04","algorithm10","algorithm13","plus","fixPrefix","denseMatrix","sparseMatrix","rows","columns","z","k0","k1","k","r","checkEqualDimensions","algorithm03","algorithm05","sub","minus","v","mul","times","number | Fraction | BigNumber | Complex, Unit","Unit, number | Fraction | BigNumber | Complex","_getObjectProperty","dimension","_setObjectProperty","replacement","updated","subset","Array, Index","isScalar","Matrix, Index","Object, Index","string, Index","isIndex","strLen","range","substr","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","_setSubstring","string, Index, string, string","Object, Index, any","chars","emitter","_scatter","xa","xb","wa","wb","va","vb","Index","ranges","_dimensions","_isScalar","arg","isRange","_createImmutableMatrix","ImmutableDenseMatrix","create","apply","isObjectProperty","getObjectProperty","toArray","strings","toJSON","mathjs","dimensions","fromJSON","json","Complex","BigNumber","Fraction","Array | Matrix","Unit","number | Complex | BigNumber | Unit | boolean | null","naturalSort","getTypeOf","compare","compareBooleans","compareNatural","typeX","typeY","compareMatricesAndArrays","isSparseMatrix","compareArrays","isDenseMatrix","re","im","formatUnits","keysX","keys","keysY","sort","compareObjects","memoize","hasher","cache","hash","maxArgumentCount","signature","callWithRightArgumentCount","argCount","algorithm07","algorithm12","gt","neg","getType","err","fnName","details","isZero","lte","lt","eye","_pow","predictable","toNumber","Array, number","_powArray","Array, BigNumber","Matrix, number","_powMatrix","Matrix, BigNumber","Unit, number","yFrac","yNum","ex","NaN","px","_zeros","...number | BigNumber | string","hasBigNumbers","ArgumentsError","numeric","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","FunctionNode","RangeNode","SymbolNode","parse","extra_nodes","parseStart","TOKENTYPE","NULL","DELIMITER","NUMBER","SYMBOL","UNKNOWN","DELIMITERS",",","(",")","[","]","{","}","\"",";","+","-","*",".*","/","./","%","^",".^","~","!","&","|","^|","'","=",":","?","==","!=","<",">","<=",">=","<<",">>",">>>","NAMED_DELIMITERS","in","CONSTANTS","null","NUMERIC_CONSTANTS","token","token_type","nesting_level","conditional_level","tokenStates","prevPreview","nextPreview","pushTokenState","popTokenState","restoredState","getToken","isWhitespace","c2","c3","isDigitDot","isDigit","isDecimalMark","createSyntaxError","isAlpha","getTokenSkipNewline","openParams","closeParams","visible","blocks","parseAssignment","parseBlock","createError","valid","parseLogicalXor","parseLogicalOr","condition","trueExpr","falseExpr","parseConditional","isSymbolNode","isAccessorNode","isFunctionNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","params","parseShift","parseConversion","parseRange","parseAddSubtract","parseMultiplyDivide","parseImplicitMultiplication","parseRule2","isConstantNode","isOperatorNode","op","parseUnary","CustomNode","parseAccessors","parseStringToken","cols","parseRow","items","properties","numberStr","parseEnd","parseParentheses","parseObject","parseMatrix","parseCustomNodes","parseLeftHandOperators","types","col","error","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","nestingLevel","isIndexError","deepForEach","inv","Array | Matrix, Array | Matrix","any, Array | Matrix","isArgumentsError","preprocess","_getSubmatrix","_get","submatrix","sSize","iSize","_fit","_setSubmatrix","dataIndex","subIndex","_set","index_i","copy","newSize","changed","me","recurse","diagonal","kSuper","kSub","ms","swapRows","_swapRows","vi","_storage","dense","_typeof","any","t","isComplex","isFraction","isChain","isHelp","isValuelessUnit","context","undef","sqrt","_sqrtNumber","isNegative","isInt","cmp","isNumeric","number | BigNumber | Fraction | boolean","Complex | Unit | string","latexLeftParens","latexRightParens","latexParens","OperatorNode:or","associativity","associativeWith","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","getPrecedence","_node","parenthesis","getAssociativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","escapeLatex","toLatex","implicit","every","calculateNecessaryParentheses","precedence","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","rhsParens","lhsPrecedence","assocWithLhs","lhsIdentifier","rhsIdentifier","rhsPrecedence","assocWithRhs","argPrecedence","assocWithArg","argAssociativity","isParenthesisNode","evalArgs","evalArg0","evalArg1","evalArg","isUnary","isBinary","parens","assoc","operand","lhs","rhs","stringifiedArgs","lhsTex","rhsTex","texifiedArgs","isPositive","isNeg","wai","wbi","vc","number | BigNumber","_eye","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","_eyeVector","Array, string","Matrix, string","Big","one","minimum","content","bind","deprecated","rawArgs","isIndexNode","evalObject","evalFn","nodeToString","expandTemplate","template","regex","inputPos","exec","ReferenceError","isFunctionAssignmentNode","nodeToTex","latexConverter","customToTex","_concat","concatDim","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","...string","isCollection","_denseTranspose","_sparseTranspose","transposedRow","transposed","q","scatter","u","isPositiveInteger","gte","combinations","dividedBy","num","Unit, string | Unit","unit","valuelessUnit","Range","dotNotation","createRange","step","evalDimensions","isRangeNode","needsEnd","childArgNames","evalStart","evalEnd","evalStep","childArgs","evalRange","evalDimension","subScope","arraySize","_reduce","mat","ret","val","tran","I","J","tmp","_switch","simplifyConstant","simplifyCore","resolve","isCommutative","isAssociative","unflattenr","unflattenl","createMakeNodeFunction","simplify","rules","string, Object","string, Array","string, Array, Object","Node, Object","Node, Array","Node, Array, Object","ruleSet","newRule","rule","ruleType","lr","removeParens","evaluate","makeNode","expandsym","_lastsym","expanded","_buildRules","visited","applyRule","SUPPORTED_CONSTANTS","LN2","LOG2E","LOG10E","SQRT1_2","SQRT2","commutative","repl","matches","_ruleMatch","placeholders","mergeMatch","match1","match2","_exactMatch","combineChildMatches","list1","list2","merged","i1","i2","isSplit","splits","right","rightArgs","getSplits","splitMatches","matchSet","childMatches","childMatch","sets","uniqueSets","unique","mergeChildMatches","msize","decCoefficientToBinaryString","xe","strL","arrL","reverse","func","xBits","yBits","minBits","maxBits","minSign","xSign","ySign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","asc","desc","Array | Matrix, number","_partitionSelect","Array | Matrix, number, string","Array | Matrix, number, function","quickSelect","from","pivot","floor","random","rng","distribution","distributions","randFunctions","_pickRandom","_random","_randomInt","_randomDataForMatrix","arg1","arg2","arg3","randomInt","number | Array","number | Array, number","Array, number, number","pickRandom","possibles","Array, number | Array","weights","Array, number | Array, Array | number","single","totalWeights","pick","randKey","randFunc","uniform","normal","u1","u2","picked","cos","PI","Emitter","mixin","on","off","once","emit","toPolar","strRe","strIm","fromPolar","hasBase","numerator","denominator","nums","some","ceil","ResultSet","isResultSet","exp","acos","fix","NO_INT","Complex, number","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","Fraction, number","SparseMatrix, number | BigNumber","DenseMatrix, number | BigNumber","number | Complex | BigNumber, SparseMatrix","number | Complex | BigNumber, DenseMatrix","Array, number | BigNumber","number | Complex | BigNumber, Array","any, Object | function | number","construction","docs","bignumber","complex","createUnit","sparse","splitUnit","E","version","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","coulomb","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","derivative","lsolve","lup","lusolve","rationalize","slu","usolve","qr","cbrt","cube","gcd","hypot","lcm","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","kron","ones","partitionSelect","trace","kldivergence","multinomial","permutations","setCartesian","setDifference","setDistinct","setIntersect","setIsSubset","setMultiplicity","setPowerset","setSize","setSymDifference","setUnion","erf","mad","mean","median","mode","prod","quantileSeq","std","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","atan2","cosh","cot","coth","csc","csch","sec","sech","sin","sinh","tan","tanh","isPrime","category","seealso","valueType","access","needParenthesis","isArrayNode","isObjectNode","evalIndex","errorTransform","evalItems","item","evalItem","childNode","exprPrecedence","isAssignmentNode","evalValue","childObject","evalParentObject","parentProp","evalParentIndex","parentIndex","block","isBlockNode","evalBlocks","results","param","mathTypeOf","isConditionalNode","evalCondition","evalTrueExpr","evalFalseExpr","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","evalExpr","evalEntries","stringifiedKey","parsedKey","startPrecedence","stepPrecedence","endPrecedence","string | Array | Matrix","string | Array | Matrix, Object","Parser","customs","_parse","isParser","getAll","remove","clear","containsCollections","improveErrorMessage","_max","Array | Matrix, number | BigNumber","_largest","...","_mean","_inv","temp","A","B","Ac","Bc","Ar","Br","compute_mu","fa","_det","_min","_smallest","ZERO","ONE","_strRange","string, boolean","_out","_rangeEx","number, number, number","number, number, boolean","includeEnd","_rangeInc","number, number, number, boolean","_bigRangeEx","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","_bigRangeInc","BigNumber, BigNumber, BigNumber, boolean","allChildren","_eval","fnname","_toNumber","ignore","_toNode","vn","unaryMinusNode","negated","_exactFraction","foldOp","ignoreandcontinue","foldFraction","ignoreandcontine","consts","vars","associative","children","findChildren","curnode","node0","node1","a0","a1","a00","a00_a1","a01","_unequal","conjugate","Spa","_denseLUP","_sparseLUP","L","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","pv","kx","ky","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","spa","vkj","_forEachRow","vik","accumulate","swap","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","head","post","top","cs_flip","solveValidation","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","_sparseBackwardSubstitution","_denseBackwardSubstitution","algorithm02","ln","base","_denseTrace","kFactorial","negativeOne","kChooseI","iPower","g","twoN","threeN","fourN","fiveN","real","den","twoPiSqrt","bigFactorial","_map","Array, function","Matrix, function","_sum","a2","inb2","b1","b2","_median","mid","left","middle2","middle","number | BigNumber | Complex | Unit","number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit","DEFAULT_NORMALIZATION","variance","_var","normalization","_acosh","core","typedFactory","importFactory","configFactory","factories","instances","_config","randomSeed","instance","typedFunction","createTyped","isBoolean","isFunction","isDate","isRegExp","isObject","isNull","isUndefined","conversions","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","ok","notOk","_types","anyType","_ignore","_conversions","findTypeByName","typeName","hint","findTypeIndex","findTypeName","stringifyParams","typeNames","getTypeName","restParam","parseParam","trim","notEmpty","notIgnore","matchingConversions","conversion","exactTypes","typeIndex","conversionIndex","convertibleTypes","hasRestParam","hasConversions","compileTest","test0","test1","tests","compileTests","varIndex","lastTest","testRestParam","getParamAtIndex","getExpectedTypeNames","excludeConversions","isExactType","mergeExpectedParams","uniq","flatMap","getLowestTypeIndex","getLowestConversionIndex","compareSignatures","signature1","signature2","param1","param2","compileArgConversion","conversion0","conversion1","splitParams","ignoreConversionTypes","_splitParams","typeGroups","filteredTypes","typeGroup","createTypedFunction","signaturesMap","parsedSignatures","parsedParam","isInvalidParam","notNull","parsedSignature","conflictingSignature","hasOverlap","len1","len2","restParam1","restParam2","hasConflictingParams","ok0","ok1","ok2","ok3","ok4","ok5","allOk","test00","test10","test20","test30","test40","test50","test01","test11","test21","test31","test41","test51","fns","fnConvert","compiledConversions","fnPreprocess","offset","compileArgsPreprocessing","fn0","fn1","fn2","fn3","fn4","fn5","len0","len3","len4","len5","iStart","iEnd","generic","_name","matchingSignatures","nextMatchingDefs","actualType","lengths","maxLength","expectedLength","arg0","array1","array2","getName","...Function","addType","addConversion","ctx","listener","_","evtArr","evts","liveEvents","_import","wrap","wrapper","isTypedFunction","override","_importTransform","silent","allowedInExpressions","_importFactory","existingTransform","namespace","existing","resolver","factoryAllowedInExpressions","unsafe","chain","math_import","validateOption","MATRIX","changes","Decimal","globalScope","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","DEFAULTS","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","mathpow","isHex","isOctal","isDecimal","BASE","LOG_BASE","LN10_PRECISION","PI_PRECISION","P","digitsToString","ws","indexOfLastWord","getZeroString","checkInt32","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","absoluteValue","finalise","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","pr","Ctor","sd","taylorSeries","cos2x","toLessThanHalfPi","cubeRoot","rep","t3","t3plusx","decimalPlaces","dp","dividedToIntegerBy","divToInt","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh2_x","d8","hyperbolicSine","sinh2_x","d5","d16","d20","hyperbolicTangent","inverseCosine","halfPi","getPi","inverseHyperbolicCosine","inverseHyperbolicSine","inverseHyperbolicTangent","wpr","xsd","inverseSine","inverseTangent","x2","isPos","lessThan","lessThanOrEqualTo","logarithm","isBase10","naturalLogarithm","getLn10","xLTy","getBase10Exponent","naturalExponential","carry","getPrecision","sine","sin2_x","squareRoot","tangent","rL","toBinary","toStringBinary","toDP","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toSignificantDigits","toSD","truncated","trunc","multiplyInteger","aL","bL","logBase","more","prodL","qd","rem","remL","rem0","xL","yd0","yL","yz","isTruncated","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","ltgt","guard","c0","x1","parseDecimal","charCodeAt","isHyperbolic","useDefaults","defaults","ps","getRandomValues","randomBytes","isDecimalInstance","log2","Uint32Array","divisor","isFloat","parseOther","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","bool","boolean","lcase","Chain","createProxy","chainify","done","parser_exit","logHypot","_a","_b","tokens","loh","t1","t2","noIM","oneMinus","onePlus","places","toVector","defaultEscapes","\\","#","$","formatEscapes","–","—"," ","\t","\r\n","\n","defaultEscapeMapFn","_ref","_ref$preserveFormatti","_ref$escapeMapFn","escapeMapFn","runningStr","escapes","escapeKeys","_loop","specialCharFound","startsWith","errorConstructor","IntermediateInheritor","DivisionByZero","InvalidParameter","throwInvalidParam","p2","M","C","D","divisible","excludeWhole","whole","toContinued","N","cycLen","cycleLen","cycOff","rem1","rem2","modpow","cycleStart","_createFromMatrix","_createFromArray","source","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","x0","y0","_getValueIndex","_remove","_insert","bottom","ins","colIndex","rowIndex","r1","c1","h","minRow","maxRow","minColumn","maxColumn","invoke","_toArray","vx","vy","_heap","FibonacciHeap","isSpa","insert","heap","extractMinimum","nodei","nodej","oneOverLogPhi","_minimum","isFibonacciHeap","degree","isEmpty","numberOfChildren","tempRight","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","numRoots","isImmutableDenseMatrix","...number | string | BigNumber | Range | Array | Matrix","constants","UNIT_NONE","prefix","PREFIXES","NONE","power","BASE_DIMENSIONS","isUnitListSimplified","skipWhitespace","revert","oldIndex","parseNumber","tentativeNumber","tentativeIndex","parseUnit","unitName","code","parseCharacter","toFind","_findUnit","UNITS","prefixes","prefixLen","prefixName","valueStr","powerMultiplierCurrent","expectingUnit","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","baseDim","UNIT_SYSTEMS","auto","allowNoUnits","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","_denormalize","prefixValue","BASE_UNITS","inverted","valThis","valOther","getNumericIfUnitless","toNumeric","simplifyUnitListLazy","matchingBase","matchingUnit","proposedUnitList","currentUnitSystem","missingBaseDim","toSI","strNum","strDen","nNum","nDen","isImaginary","_bestPrefix","unitStr","absValue","absUnitValue","bestPrefix","bestDiff","scientific","parts","xNumeric","xRounded","testSum","SHORT","da","G","T","Z","Y","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","ANGLE","BIT","meter","inch","foot","yard","mile","link","rod","angstrom","ft","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","acre","hectare","m3","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","second","minute","hour","day","week","month","year","decade","century","millennium","hertz","reciprocal","Hz","rad","radian","grad","gradian","cycle","arcsec","arcmin","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","newton","dyn","dyne","lbf","poundforce","kip","joule","erg","Wh","eV","electronvolt","W","watt","hp","VAR","VA","Pa","atm","bar","torr","mmHg","mmH2O","cmH2O","farad","F","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","kips","acres","hectares","sqfeet","sqyard","sqmile","sqmiles","mmhg","mmh2o","cmh2o","seconds","secs","minutes","mins","hours","hr","hrs","days","weeks","months","years","radians","degrees","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","calculateAngleValues","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","deleteUnit","aliases","lastUnit","createUnitSingle","isValidAlpha","assertUnitNameIsValid","definition","defUnit","toUpperCase","newUnit","anyMatch","baseName","newBaseUnit","aliasName","number | BigNumber | Fraction | Complex, string","Object, Object","string, Unit | string | Object, Object","def","string, Unit | string | Object","Unit, Array","setLazyConstant","fixedUnit","bigConstants","setConstant","Array | Matrix, Object","doc","Help","...any","lastIndex","_filter","compileInlineExpression","filterTransform","Array, RegExp","Matrix, RegExp","forEachTransform","_forEach","Array | Matrix, function","isSet","orig","argsCount","mapTransform","parser","Node, SymbolNode, Object","variable","constNodes","constTag","_derivative","Node, SymbolNode","string, SymbolNode","string, SymbolNode, Object","string, string, Object","Node, string","Node, string, Object","_simplify","deriv","_derivTex","Node, SymbolNode, ConstantNode","string, string, number","Object, ConstantNode, string","Object, SymbolNode, string","varName","Object, ParenthesisNode, string","Object, FunctionAssignmentNode, string","Object, FunctionNode | OperatorNode, string","isConst","ConstantNode, Object","createConstantNode","SymbolNode, Object","ParenthesisNode, Object","FunctionAssignmentNode, Object","FunctionNode, Object","funcArgsCheck","funcDerivative","negative","chainDerivative","OperatorNode, Object","constantTerms","nonConstantTerms","nonConstantNode","newArgs","argOuter","argInner","powMinusOne","detailed","string, Object, boolean","Node, boolean","Node, Object, boolean","oldRules","rulesFirst","rulesSucDiv","setRules","polyRet","extended","variables","oper","recPoly","tp","pos","retFunc","polynomial","nVars","firstRules","distrDivRules","sucDivRules","firstRulesAgain","finalRules","expandPower","indParent","internal","does","nEsqTopo","nDirTopo","sBefore","redoInic","eDistrDiv","retRationalize","polyToCanonical","cte","fire","maxExpo","varname","recurPol","noPai","noFil","valor","no","n2","n3","_denseQR","_sparseQR","Q","R","Qdata","Rdata","sgn","conjSgn","alphaSquared","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","_vcount","leftmost","tail","nque","lnz","pa","unz","cs_fkeep","cs_tdfs","_createTargetMatrix","at","tindex","tptr","_initializeQuotientGraph","hhead","nv","elen","_wclear","_initializeDegreeLists","nel","lemax","_diag","cm","k2","pj","nvi","pk","eln","pn","cnz","mindeg","elenk","nvk","dk","pk1","pk2","wnvi","dext","p3","p4","nvj","jlast","nz","t0","ata","inext","cs_leaf","maxfirst","prevleaf","colcount","jleaf","ancestor","sparent","jprev","cs_spsolve","tol","ipiv","xabs","cs_reach","lo","gvalues","gindex","gptr","cs_dfs","cs_marked","cs_mark","gsize","cs_unflip","jnew","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_cbrtNumber","negate","_cbrtComplex","Complex, boolean","third","allRoots","arg_3","principal","all","algorithm09","_gcd","number | BigNumber, SparseMatrix","number | BigNumber, DenseMatrix","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","... number | BigNumber","largest","_lcm","algorithm06","update","_log10","_norm","number | Complex | BigNumber | boolean, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","sizeX","POSITIVE_INFINITY","pinf","ninf","NEGATIVE_INFINITY","maxc","cj","maxr","ri","_nthRoot","_nthComplexRoot","roots","_bigNthRoot","boolean | string","lastx","lasty","bigBitAnd","bitwise","bigBitNot","bigBitOr","negOne","bigBitXor","bigLeftShift","algorithm08","bigRightArithShift","Array, Array, Array","plane","_3d","_isNumber","y1","z1","y2","z2","x1x","x2x","y1y","y2y","z1z","z2z","py","pz","Array, Array, Array, Array","_2d","p1a","p1b","p2a","p2b","o1","o2","d20o11","d21o10","d20o21","d21o20","_intersect2d","x3","y3","z3","x4","y4","z4","d1343","_intersect3dHelper","d4321","d1321","d4343","d2121","ta","tb","pax","pay","paz","pbx","pby","pbz","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","add1","add2","add3","_objectToArray","_parametricLine","_distancePointLine2D","_distancePointLine3D","z0","_distance2d","yDiff","xDiff","radicant","_distance3d","zDiff","xCoeff","yCoeff","constant","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","xCoeffLine","yCoeffLine","pointZ","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_cross","highestDimension","xSize","ySize","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","dm","vector","_getDiagonal","_dot","_filterCallback","_flatten","_kron","_ones","defaultChar","_resizeString","compareAsc","compareDesc","_arrayIsVector","_matrixIsVector","_comparator","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","_kldiv","plength","qlength","qnorm","pnorm","denom","ai","seedrandom","singletonRandom","setSeed","seed","global","width","pool","GLOBAL","window","startdenom","significance","overflow","mask","oldRandom","mixkey","smear","stringseed","tostring","fromCharCode","arc4","depth","typ","entropy","Uint8Array","navigator","plugins","screen","autoseed","keylen","resetGlobal","_deepEqual","number | BigNumber | Fraction | Complex, Array | Matrix","_subset","_sort","bitarray","Array | Matrix, boolean","THRESH","SQRPI","MAX_NUM","ysq","xnum","xden","erf1","del","erfc2","erfc3","_mad","med","_mode","_prod","_quantileSeq","prob","sorted","fracPart","integerPart","integerPartNumber","number | BigNumber | Unit","probOrN","probArr","dataArr","nPlusOne","intN","currProb","_std","_print","original","print","string, Object, number | Object","_atanh","_cosh","_coth","_csch","_sech","_sinh","_tanh","Unit, Unit | string","Matrix, any","any, Matrix"],"mappings":"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e,8NACfC,UACE,WACA,eACA,SACA,SACA,iBACA,uBACA,mBACA,SAEFiI,SACE,MACA,WAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,YAEFyyB,YAAe,4CACfC,UACE,iBACA,eACA,SACA,uBACA,kBAEFiI,SACE,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,QACA,UACA,aAEFyyB,YACI,gEACJC,UACE,QACA,SACA,WACA,mBACA,WACA,YAEFiI,SAAY,YAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,YACZ16B,QACE,QACA,kBAEFyyB,YAAe,uBACfC,UACE,gBACA,UACA,YACA,cACA,cAEFiI,SACE,YAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,UACA,cAEFyyB,YAAe,oDACfC,UACE,YACA,aACA,eACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOE,SAAUxpC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,aACZ16B,QACE,aACA,oBAEFyyB,YAAe,qJAGfC,UACE,QACA,iBACA,gBACA,WAEFiI,SACE,OACA,SAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,QACA,aAEFyyB,YACI,uCACJC,UACE,MACA,QACA,oBAEFiI,SAAa,cAMT,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,WACA,eAEFyyB,YACI,4LACJC,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFiI,SAAY,OAAQ,QAAS,SAMzB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,WAEFyyB,YACI,iGACJC,UACE,YACA,aACA,WAEFiI,SACE,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRy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CRywC,SAAY,OACZ16B,QACE,oBACA,8BAEFyyB,YAAe,gDACfC,UACE,4CACA,UACA,cAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,OACZ16B,QACE,oBACA,2BAEFyyB,YAAe,2BACfC,UACE,iDACA,YACA,mBAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UAEFyyB,YACI,iGACJC,UACE,cACA,cACA,eAEFiI,SACE,KACA,KACA,OACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,UACZ16B,QACE,WAEFyyB,YACI,gGACJC,UACE,eACA,eACA,eAEFiI,SACE,KACA,KACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SAEFyyB,YAAe,yCACfC,UACE,aACA,aACA,YACA,WAEFiI,SACE,KACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SAEFyyB,YAAe,8CACfC,UACE,aACA,aACA,YACA,WAEFiI,SACE,KACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,mBACA,oCAEFyyB,YAAe,uDACfC,UACE,gBACA,2BAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,eACA,gBAEFyyB,YAAe,oDACfC,UACE,aACA,mBAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,WACZ16B,QACE,+BACA,iCAEFyyB,YAAe,wDACfC,UACE,yBACA,4BAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,WACZ16B,QACE,wCACA,kCAEFyyB,YAAe,0DACfC,UACE,gDACA,mDAEFiI,aAMI,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AAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UAEFyyB,YAAe,6GACfC,UACE,WACA,YACA,UAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,UAEFyyB,YAAe,8KACfC,UACE,kBACA,kBAEFiI,SACE,OACA,SACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,eAEFyyB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,UACA,gBAEFyyB,YAAe,mDACfC,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFiI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,aACZ16B,QACE,uBACA,aAEFyyB,YAAe,mLACfC,UACE,kBACA,yBAEFiI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,MACA,iBAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,eAEFyyB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,UACA,4BAEFyyB,YAAe,2HACfC,UACE,sBACA,8BACA,uBAEFiI,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,WAEFyyB,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,aACZ16B,QACE,iCACA,gDACA,+BAEFyyB,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEFiI,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,yBAEFyyB,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,UAEFyyB,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEFiI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,yBAEFyyB,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,oDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,6FACfC,UACE,cAEFiI,SACE,OACA,QACA,WAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,8CACfC,UACE,YACA,iBACA,WAEFiI,SACE,MACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,6GACfC,UA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","file":"math.js"} \ No newline at end of file +{"version":3,"sources":["math.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","deepMap","array","callback","skipZeros","map","x","type","config","load","typed","matrix","","_create","string","format","string, string","datatype","Array","data","Matrix","storage","Array | Matrix, string","Array | Matrix, string, string","toTex","0","1","2","number","DimensionError","IndexError","size","isArray","push","length","validate","_validate","dim","len","dimNext","child","validateIndex","index","isNumber","isInteger","TypeError","resize","defaultValue","Error","forEach","value","_resize","elem","oldLen","newLen","minLen","Math","min","undefined","reshape","sizes","newArray","flatArray","flatten","product","arr","reduce","prev","curr","_reshape","accumulator","shift","slice","e","squeeze","dims","_squeeze","ii","next","unsqueeze","outer","unshift","_unsqueeze","flat","filter","filterRegExp","regexp","entry","test","join","separator","identify","a","b","count","identifier","generalize","zeros","isFinite","round","sign","options","Infinity","isNaN","notation","precision","toFixed","toExponential","toEngineering","exponential","lower","upper","fixedOptions","assign","lowerExp","log","LN10","upperExp","console","warn","JSON","stringify","toPrecision","replace","digits","arguments","splitNumber","match","String","toLowerCase","SyntaxError","exponent","parseFloat","dot","indexOf","coefficients","split","parseInt","rounded","roundDigits","newExp","significandsDiff","abs","concat","expDiff","decimalIdx","decimals","decimalVal","str","toString","splitValue","pp","splice","first","pop","DBL_EPSILON","Number","EPSILON","nearlyEqual","y","epsilon","diff","max","escape_latex","symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","xi","Omicron","omicron","Pi","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","inf","Inf","infinity","oo","lim","operators","transpose","factorial","pow","dotPow","unaryPlus","unaryMinus","bitNot","not","multiply","divide","dotMultiply","dotDivide","mod","add","subtract","to","leftShift","rightArithShift","rightLogShift","equal","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","units","deg","escape","preserveFormatting","toSymbol","isUnit","isBigNumber","clone","valueOf","Boolean","Date","RegExp","key","extend","prop","deepExtend","constructor","deepEqual","canDefineProperty","lazy","fn","_value","_uninitialized","set","traverse","path","obj","names","isFactory","DenseMatrix","_iterate","f","level","av","bv","inverse","cv","j","dt","adata","_data","asize","_size","adt","_datatype","cf","convert","find","cdata","util","isString","bdata","bsize","bdt","csize","RangeError","bigNearlyEqual","equalScalar","boolean, boolean","number, number","BigNumber, BigNumber","eq","Fraction, Fraction","equals","Complex, Complex","Unit, Unit","equalBase","formatNumber","formatBigNumber","endsWith","text","search","start","end","substring","fraction","formatArray","syntax","entries","escaped","charAt","actual","expected","relation","message","stack","isDimensionError","latex","addScalar","multiplyScalar","algorithm11","algorithm14","SparseMatrix","Array, Array","_validateMatrixDimensions","isMatrix","Matrix, Matrix","xsize","ysize","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","Matrix, Array","Array, Matrix","SparseMatrix, any","DenseMatrix, any","any, SparseMatrix","any, DenseMatrix","Array, any","any, Array","any, any","any, any, ...any","rest","result","signatures","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","sum","arows","acolumns","row","avalues","_values","aindex","_index","aptr","_ptr","brows","cvalues","cindex","cptr","zero","w","ib","vbi","ka0","ka1","ka","ia","p1","ic","values","ptr","DenseMatrix, DenseMatrix","DenseMatrix, SparseMatrix","bvalues","bindex","bptr","jb","kb0","kb1","last","cij","mark","kb","SparseMatrix, DenseMatrix","vbij","p0","SparseMatrix, SparseMatrix","divideScalar","div","Unit, number | Fraction | BigNumber","res","_normalize","number | Fraction | BigNumber, Unit","isSafeProperty","safeNativeProperties","Function","isSafeMethod","method","__proto__","safeNativeMethods","isPlainObject","toLocaleString","getSafeProperty","setSafeProperty","validateSafeMethod","keywords","math","Node","eval","scope","compile","isNode","comment","expr","_compile","expression","mathWithTransform","args","symbol","_validateScope","argNames","_ifNode","node","_traverse","parent","transform","_transform","nodes","cloneDeep","other","customString","handler","_toString","toHTML","customTex","_toTex","getIdentifier","getContent","algorithm01","algorithm04","algorithm10","algorithm13","plus","fixPrefix","denseMatrix","sparseMatrix","rows","columns","z","k0","k1","k","r","checkEqualDimensions","algorithm03","algorithm05","sub","minus","v","mul","times","number | Fraction | BigNumber | Complex, Unit","Unit, number | Fraction | BigNumber | Complex","_getObjectProperty","dimension","_setObjectProperty","replacement","updated","subset","Array, Index","isScalar","Matrix, Index","Object, Index","string, Index","isIndex","strLen","range","substr","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","_setSubstring","string, Index, string, string","Object, Index, any","chars","emitter","_scatter","xa","xb","wa","wb","va","vb","Index","ranges","_dimensions","_isScalar","arg","isRange","_createImmutableMatrix","ImmutableDenseMatrix","create","apply","isObjectProperty","getObjectProperty","toArray","strings","toJSON","mathjs","dimensions","fromJSON","json","Complex","BigNumber","Fraction","Array | Matrix","Unit","number | Complex | BigNumber | Unit | boolean | null","naturalSort","getTypeOf","compare","compareBooleans","compareNatural","typeX","typeY","compareMatricesAndArrays","isSparseMatrix","compareArrays","isDenseMatrix","re","im","formatUnits","keysX","keys","keysY","sort","compareObjects","memoize","hasher","cache","hash","maxArgumentCount","signature","callWithRightArgumentCount","argCount","algorithm07","algorithm12","gt","neg","getType","err","fnName","details","isZero","lte","lt","eye","_pow","predictable","toNumber","Array, number","_powArray","Array, BigNumber","Matrix, number","_powMatrix","Matrix, BigNumber","Unit, number","yFrac","yNum","ex","NaN","px","_zeros","...number | BigNumber | string","hasBigNumbers","ArgumentsError","numeric","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","FunctionNode","RangeNode","SymbolNode","parse","extra_nodes","parseStart","TOKENTYPE","NULL","DELIMITER","NUMBER","SYMBOL","UNKNOWN","DELIMITERS",",","(",")","[","]","{","}","\"",";","+","-","*",".*","/","./","%","^",".^","~","!","&","|","^|","'","=",":","?","==","!=","<",">","<=",">=","<<",">>",">>>","NAMED_DELIMITERS","in","CONSTANTS","null","NUMERIC_CONSTANTS","token","token_type","nesting_level","conditional_level","tokenStates","prevPreview","nextPreview","pushTokenState","popTokenState","restoredState","getToken","isWhitespace","c2","c3","isDigitDot","isDigit","isDecimalMark","createSyntaxError","isAlpha","getTokenSkipNewline","openParams","closeParams","visible","blocks","parseAssignment","parseBlock","createError","valid","parseLogicalXor","parseLogicalOr","condition","trueExpr","falseExpr","parseConditional","isSymbolNode","isAccessorNode","isFunctionNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","params","parseShift","parseConversion","parseRange","parseAddSubtract","parseMultiplyDivide","parseImplicitMultiplication","parseRule2","isConstantNode","isOperatorNode","op","parseUnary","CustomNode","parseAccessors","parseStringToken","cols","parseRow","items","properties","numberStr","parseEnd","parseParentheses","parseObject","parseMatrix","parseCustomNodes","parseLeftHandOperators","types","col","error","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","nestingLevel","isIndexError","deepForEach","inv","Array | Matrix, Array | Matrix","any, Array | Matrix","isArgumentsError","preprocess","_getSubmatrix","_get","submatrix","sSize","iSize","_fit","_setSubmatrix","dataIndex","subIndex","_set","index_i","copy","newSize","changed","me","recurse","diagonal","kSuper","kSub","ms","swapRows","_swapRows","vi","_storage","dense","_typeof","any","t","isComplex","isFraction","isChain","isHelp","isValuelessUnit","context","undef","sqrt","_sqrtNumber","isNegative","isInt","cmp","isNumeric","number | BigNumber | Fraction | boolean","Complex | Unit | string","latexLeftParens","latexRightParens","latexParens","OperatorNode:or","associativity","associativeWith","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","getPrecedence","_node","parenthesis","getAssociativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","escapeLatex","toLatex","implicit","every","calculateNecessaryParentheses","precedence","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","rhsParens","lhsPrecedence","assocWithLhs","lhsIdentifier","rhsIdentifier","rhsPrecedence","assocWithRhs","argPrecedence","assocWithArg","argAssociativity","isParenthesisNode","evalArgs","evalArg0","evalArg1","evalArg","isUnary","isBinary","parens","assoc","operand","lhs","rhs","stringifiedArgs","lhsTex","rhsTex","texifiedArgs","isPositive","isNeg","wai","wbi","vc","number | BigNumber","_eye","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","_eyeVector","Array, string","Matrix, string","Big","one","minimum","content","bind","deprecated","rawArgs","isIndexNode","evalObject","evalFn","nodeToString","expandTemplate","template","regex","inputPos","exec","ReferenceError","isFunctionAssignmentNode","nodeToTex","latexConverter","customToTex","_concat","concatDim","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","...string","isCollection","_denseTranspose","_sparseTranspose","transposedRow","transposed","q","scatter","u","isPositiveInteger","gte","combinations","dividedBy","num","Unit, string | Unit","unit","valuelessUnit","Range","dotNotation","createRange","step","evalDimensions","isRangeNode","needsEnd","childArgNames","evalStart","evalEnd","evalStep","childArgs","evalRange","evalDimension","subScope","arraySize","_reduce","mat","ret","val","tran","I","J","tmp","_switch","simplifyConstant","simplifyCore","resolve","isCommutative","isAssociative","unflattenr","unflattenl","createMakeNodeFunction","simplify","rules","string, Object","string, Array","string, Array, Object","Node, Object","Node, Array","Node, Array, Object","ruleSet","newRule","rule","ruleType","lr","removeParens","evaluate","makeNode","expandsym","_lastsym","expanded","_buildRules","visited","applyRule","SUPPORTED_CONSTANTS","LN2","LOG2E","LOG10E","SQRT1_2","SQRT2","commutative","repl","matches","_ruleMatch","placeholders","mergeMatch","match1","match2","_exactMatch","combineChildMatches","list1","list2","merged","i1","i2","isSplit","splits","right","rightArgs","getSplits","splitMatches","matchSet","childMatches","childMatch","sets","uniqueSets","unique","mergeChildMatches","msize","decCoefficientToBinaryString","xe","strL","arrL","reverse","func","xBits","yBits","minBits","maxBits","minSign","xSign","ySign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","asc","desc","Array | Matrix, number","_partitionSelect","Array | Matrix, number, string","Array | Matrix, number, function","quickSelect","from","pivot","floor","random","rng","distribution","distributions","randFunctions","_pickRandom","_random","_randomInt","_randomDataForMatrix","arg1","arg2","arg3","randomInt","number | Array","number | Array, number","Array, number, number","pickRandom","possibles","Array, number | Array","weights","Array, number | Array, Array | number","single","totalWeights","pick","randKey","randFunc","uniform","normal","u1","u2","picked","cos","PI","Emitter","mixin","on","off","once","emit","toPolar","strRe","strIm","fromPolar","hasBase","numerator","denominator","nums","some","ceil","ResultSet","isResultSet","exp","acos","fix","NO_INT","Complex, number","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","Fraction, number","SparseMatrix, number | BigNumber","DenseMatrix, number | BigNumber","number | Complex | BigNumber, SparseMatrix","number | Complex | BigNumber, DenseMatrix","Array, number | BigNumber","number | Complex | BigNumber, Array","any, Object | function | number","construction","docs","bignumber","complex","createUnit","sparse","splitUnit","E","version","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","coulomb","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","derivative","lsolve","lup","lusolve","rationalize","slu","usolve","qr","cbrt","cube","gcd","hypot","lcm","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","kron","ones","partitionSelect","trace","kldivergence","multinomial","permutations","setCartesian","setDifference","setDistinct","setIntersect","setIsSubset","setMultiplicity","setPowerset","setSize","setSymDifference","setUnion","erf","mad","mean","median","mode","prod","quantileSeq","std","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","atan2","cosh","cot","coth","csc","csch","sec","sech","sin","sinh","tan","tanh","isPrime","category","seealso","valueType","access","needParenthesis","isArrayNode","isObjectNode","evalIndex","errorTransform","evalItems","item","evalItem","childNode","exprPrecedence","isAssignmentNode","evalValue","childObject","evalParentObject","parentProp","evalParentIndex","parentIndex","block","isBlockNode","evalBlocks","results","param","mathTypeOf","isConditionalNode","evalCondition","evalTrueExpr","evalFalseExpr","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","evalExpr","evalEntries","stringifiedKey","parsedKey","startPrecedence","stepPrecedence","endPrecedence","string | Array | Matrix","string | Array | Matrix, Object","Parser","customs","_parse","isParser","getAll","remove","clear","containsCollections","improveErrorMessage","_max","Array | Matrix, number | BigNumber","_largest","...","_mean","_inv","temp","A","B","Ac","Bc","Ar","Br","compute_mu","fa","_det","_min","_smallest","ZERO","ONE","_strRange","string, boolean","_out","_rangeEx","number, number, number","number, number, boolean","includeEnd","_rangeInc","number, number, number, boolean","_bigRangeEx","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","_bigRangeInc","BigNumber, BigNumber, BigNumber, boolean","allChildren","_eval","fnname","_toNumber","ignore","_toNode","vn","unaryMinusNode","negated","_exactFraction","foldOp","ignoreandcontinue","foldFraction","ignoreandcontine","consts","vars","associative","children","findChildren","curnode","node0","node1","a0","a1","a00","a00_a1","a01","_unequal","conjugate","Spa","_denseLUP","_sparseLUP","L","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","pv","kx","ky","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","spa","vkj","_forEachRow","vik","accumulate","swap","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","head","post","top","cs_flip","solveValidation","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","_sparseBackwardSubstitution","_denseBackwardSubstitution","algorithm02","ln","base","_denseTrace","kFactorial","negativeOne","kChooseI","iPower","g","twoN","threeN","fourN","fiveN","real","den","twoPiSqrt","bigFactorial","_map","Array, function","Matrix, function","_sum","a2","inb2","b1","b2","_median","mid","left","middle2","middle","number | BigNumber | Complex | Unit","number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit","DEFAULT_NORMALIZATION","variance","_var","normalization","_acosh","core","typedFactory","importFactory","configFactory","factories","instances","_config","randomSeed","instance","typedFunction","createTyped","isBoolean","isFunction","isDate","isRegExp","isObject","isNull","isUndefined","conversions","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","ok","notOk","_types","anyType","_ignore","_conversions","findTypeByName","typeName","findInArray","hint","findTypeIndex","findTypeName","stringifyParams","typeNames","getTypeName","restParam","parseParam","trim","notEmpty","notIgnore","matchingConversions","conversion","exactTypes","typeIndex","conversionIndex","convertibleTypes","hasRestParam","hasConversions","compileTest","test0","test1","tests","compileTests","varIndex","lastTest","testRestParam","getParamAtIndex","getExpectedTypeNames","excludeConversions","isExactType","mergeExpectedParams","uniq","flatMap","getLowestTypeIndex","getLowestConversionIndex","compareSignatures","signature1","signature2","param1","param2","compileArgConversion","conversion0","conversion1","splitParams","ignoreConversionTypes","_splitParams","typeGroups","filteredTypes","typeGroup","createTypedFunction","signaturesMap","parsedSignatures","parsedParam","isInvalidParam","notNull","parsedSignature","conflictingSignature","hasOverlap","len1","len2","restParam1","restParam2","hasConflictingParams","ok0","ok1","ok2","ok3","ok4","ok5","allOk","test00","test10","test20","test30","test40","test50","test01","test11","test21","test31","test41","test51","fns","fnConvert","compiledConversions","fnPreprocess","offset","compileArgsPreprocessing","fn0","fn1","fn2","fn3","fn4","fn5","len0","len3","len4","len5","iStart","iEnd","generic","_name","matchingSignatures","nextMatchingDefs","actualType","lengths","maxLength","expectedLength","arg0","array1","array2","getName","...Function","addType","addConversion","ctx","listener","_","evtArr","evts","liveEvents","_import","wrap","wrapper","isTypedFunction","override","_importTransform","silent","allowedInExpressions","_importFactory","existingTransform","namespace","existing","resolver","factoryAllowedInExpressions","unsafe","chain","math_import","validateOption","MATRIX","changes","Decimal","globalScope","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","DEFAULTS","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","mathpow","isHex","isOctal","isDecimal","BASE","LOG_BASE","LN10_PRECISION","PI_PRECISION","P","digitsToString","ws","indexOfLastWord","getZeroString","checkInt32","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","absoluteValue","finalise","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","pr","Ctor","sd","taylorSeries","cos2x","toLessThanHalfPi","cubeRoot","rep","t3","t3plusx","decimalPlaces","dp","dividedToIntegerBy","divToInt","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh2_x","d8","hyperbolicSine","sinh2_x","d5","d16","d20","hyperbolicTangent","inverseCosine","halfPi","getPi","inverseHyperbolicCosine","inverseHyperbolicSine","inverseHyperbolicTangent","wpr","xsd","inverseSine","inverseTangent","x2","isPos","lessThan","lessThanOrEqualTo","logarithm","isBase10","naturalLogarithm","getLn10","xLTy","getBase10Exponent","naturalExponential","carry","getPrecision","sine","sin2_x","squareRoot","tangent","rL","toBinary","toStringBinary","toDP","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toSignificantDigits","toSD","truncated","trunc","multiplyInteger","aL","bL","logBase","more","prodL","qd","rem","remL","rem0","xL","yd0","yL","yz","isTruncated","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","ltgt","guard","c0","x1","parseDecimal","charCodeAt","isHyperbolic","useDefaults","defaults","ps","getRandomValues","randomBytes","isDecimalInstance","log2","Uint32Array","divisor","isFloat","parseOther","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","bool","boolean","lcase","Chain","createProxy","chainify","done","parser_exit","logHypot","_a","_b","tokens","loh","t1","t2","noIM","oneMinus","onePlus","places","toVector","defaultEscapes","\\","#","$","formatEscapes","–","—"," ","\t","\r\n","\n","defaultEscapeMapFn","_ref","_ref$preserveFormatti","_ref$escapeMapFn","escapeMapFn","runningStr","escapes","escapeKeys","_loop","specialCharFound","startsWith","errorConstructor","IntermediateInheritor","DivisionByZero","InvalidParameter","throwInvalidParam","p2","M","C","D","divisible","excludeWhole","whole","toContinued","N","cycLen","cycleLen","cycOff","rem1","rem2","modpow","cycleStart","_createFromMatrix","_createFromArray","source","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","x0","y0","_getValueIndex","_remove","_insert","bottom","ins","colIndex","rowIndex","r1","c1","h","minRow","maxRow","minColumn","maxColumn","invoke","_toArray","vx","vy","_heap","FibonacciHeap","isSpa","insert","heap","extractMinimum","nodei","nodej","oneOverLogPhi","_minimum","isFibonacciHeap","degree","isEmpty","numberOfChildren","tempRight","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","numRoots","isImmutableDenseMatrix","...number | string | BigNumber | Range | Array | Matrix","constants","UNIT_NONE","prefix","PREFIXES","NONE","power","BASE_DIMENSIONS","isUnitListSimplified","skipWhitespace","revert","oldIndex","parseNumber","tentativeNumber","tentativeIndex","parseUnit","unitName","code","parseCharacter","toFind","_findUnit","UNITS","prefixes","prefixLen","prefixName","powerMultiplierCurrent","expectingUnit","valueStr","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","baseDim","UNIT_SYSTEMS","auto","allowNoUnits","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","_denormalize","prefixValue","BASE_UNITS","inverted","valThis","valOther","getNumericIfUnitless","toNumeric","simplifyUnitListLazy","matchingBase","matchingUnit","proposedUnitList","currentUnitSystem","missingBaseDim","toSI","strNum","strDen","nNum","nDen","isImaginary","_bestPrefix","unitStr","absValue","absUnitValue","bestPrefix","bestDiff","scientific","parts","xNumeric","xRounded","testSum","SHORT","da","G","T","Z","Y","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","ANGLE","BIT","meter","inch","foot","yard","mile","link","rod","angstrom","ft","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","acre","hectare","m3","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","second","minute","hour","day","week","month","year","decade","century","millennium","hertz","reciprocal","Hz","rad","radian","grad","gradian","cycle","arcsec","arcmin","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","newton","dyn","dyne","lbf","poundforce","kip","joule","erg","Wh","eV","electronvolt","W","watt","hp","VAR","VA","Pa","atm","bar","torr","mmHg","mmH2O","cmH2O","farad","F","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","kips","acres","hectares","sqfeet","sqyard","sqmile","sqmiles","mmhg","mmh2o","cmh2o","seconds","secs","minutes","mins","hours","hr","hrs","days","weeks","months","years","radians","degrees","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","calculateAngleValues","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","deleteUnit","aliases","lastUnit","createUnitSingle","isValidAlpha","assertUnitNameIsValid","definition","defUnit","toUpperCase","newUnit","anyMatch","baseName","newBaseUnit","aliasName","number | BigNumber | Fraction | Complex, string","Object, Object","string, Unit | string | Object, Object","def","string, Unit | string | Object","Unit, Array","setLazyConstant","fixedUnit","bigConstants","setConstant","Array | Matrix, Object","doc","Help","...any","lastIndex","_filter","compileInlineExpression","filterTransform","Array, RegExp","Matrix, RegExp","forEachTransform","_forEach","Array | Matrix, function","isSet","orig","argsCount","mapTransform","parser","Node, SymbolNode, Object","variable","constNodes","constTag","_derivative","Node, SymbolNode","string, SymbolNode","string, SymbolNode, Object","string, string, Object","Node, string","Node, string, Object","_simplify","deriv","_derivTex","Node, SymbolNode, ConstantNode","string, string, number","Object, ConstantNode, string","Object, SymbolNode, string","varName","Object, ParenthesisNode, string","Object, FunctionAssignmentNode, string","Object, FunctionNode | OperatorNode, string","isConst","ConstantNode, Object","createConstantNode","SymbolNode, Object","ParenthesisNode, Object","FunctionAssignmentNode, Object","FunctionNode, Object","funcArgsCheck","funcDerivative","negative","chainDerivative","OperatorNode, Object","constantTerms","nonConstantTerms","nonConstantNode","newArgs","argOuter","argInner","powMinusOne","detailed","string, Object, boolean","Node, boolean","Node, Object, boolean","oldRules","rulesFirst","rulesSucDiv","setRules","polyRet","extended","variables","oper","recPoly","tp","pos","retFunc","polynomial","nVars","firstRules","distrDivRules","sucDivRules","firstRulesAgain","finalRules","expandPower","indParent","internal","does","nEsqTopo","nDirTopo","sBefore","redoInic","eDistrDiv","retRationalize","polyToCanonical","cte","fire","maxExpo","varname","recurPol","noPai","noFil","valor","no","n2","n3","_denseQR","_sparseQR","Q","R","Qdata","Rdata","sgn","conjSgn","alphaSquared","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","_vcount","leftmost","tail","nque","lnz","pa","unz","cs_fkeep","cs_tdfs","_createTargetMatrix","at","tindex","tptr","_initializeQuotientGraph","hhead","nv","elen","_wclear","_initializeDegreeLists","nel","lemax","_diag","cm","k2","pj","nvi","pk","eln","pn","cnz","mindeg","elenk","nvk","dk","pk1","pk2","wnvi","dext","p3","p4","nvj","jlast","nz","t0","ata","inext","cs_leaf","maxfirst","prevleaf","colcount","jleaf","ancestor","sparent","jprev","cs_spsolve","tol","ipiv","xabs","cs_reach","lo","gvalues","gindex","gptr","cs_dfs","cs_marked","cs_mark","gsize","cs_unflip","jnew","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_cbrtNumber","negate","_cbrtComplex","Complex, boolean","third","allRoots","arg_3","principal","all","algorithm09","_gcd","number | BigNumber, SparseMatrix","number | BigNumber, DenseMatrix","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","... number | BigNumber","largest","_lcm","algorithm06","update","_log10","_norm","number | Complex | BigNumber | boolean, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","sizeX","POSITIVE_INFINITY","pinf","ninf","NEGATIVE_INFINITY","maxc","cj","maxr","ri","_nthRoot","_nthComplexRoot","roots","_bigNthRoot","boolean | string","lastx","lasty","bigBitAnd","bitwise","bigBitNot","bigBitOr","negOne","bigBitXor","bigLeftShift","algorithm08","bigRightArithShift","Array, Array, Array","plane","_3d","_isNumber","y1","z1","y2","z2","x1x","x2x","y1y","y2y","z1z","z2z","py","pz","Array, Array, Array, Array","_2d","p1a","p1b","p2a","p2b","o1","o2","d20o11","d21o10","d20o21","d21o20","_intersect2d","x3","y3","z3","x4","y4","z4","d1343","_intersect3dHelper","d4321","d1321","d4343","d2121","ta","tb","pax","pay","paz","pbx","pby","pbz","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","add1","add2","add3","_objectToArray","_parametricLine","_distancePointLine2D","_distancePointLine3D","z0","_distance2d","yDiff","xDiff","radicant","_distance3d","zDiff","xCoeff","yCoeff","constant","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","xCoeffLine","yCoeffLine","pointZ","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_cross","highestDimension","xSize","ySize","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","dm","vector","_getDiagonal","_dot","_filterCallback","_flatten","_kron","_ones","defaultChar","_resizeString","compareAsc","compareDesc","_arrayIsVector","_matrixIsVector","_comparator","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","_kldiv","plength","qlength","qnorm","pnorm","denom","ai","seedrandom","singletonRandom","setSeed","seed","global","width","pool","GLOBAL","window","startdenom","significance","overflow","mask","oldRandom","mixkey","smear","stringseed","tostring","fromCharCode","arc4","depth","typ","entropy","Uint8Array","navigator","plugins","screen","autoseed","keylen","resetGlobal","_deepEqual","number | BigNumber | Fraction | Complex, Array | Matrix","_subset","_sort","bitarray","Array | Matrix, boolean","THRESH","SQRPI","MAX_NUM","ysq","xnum","xden","erf1","del","erfc2","erfc3","_mad","med","_mode","_prod","_quantileSeq","prob","sorted","fracPart","integerPart","integerPartNumber","number | BigNumber | Unit","probOrN","probArr","dataArr","nPlusOne","intN","currProb","_std","_print","original","print","string, Object, number | Object","_atanh","_cosh","_coth","_csch","_sech","_sinh","_tanh","Unit, Unit | string","Matrix, any","any, Matrix"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;CA2BA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,UAAWH,GACe,iBAAZC,QACdA,QAAc,KAAID,IAElBD,EAAW,KAAIC,IARjB,CASmB,oBAATK,KAAuBA,KAAOC,KAAM,WAC9C,OAAgB,SAAUC,GAEhB,IAAIC,KAGJ,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUT,QAGnC,IAAIC,EAASM,EAAiBE,IAC7BC,EAAGD,EACHE,GAAG,EACHX,YAUD,OANAM,EAAQG,GAAUG,KAAKX,EAAOD,QAASC,EAAQA,EAAOD,QAASQ,GAG/DP,EAAOU,GAAI,EAGJV,EAAOD,QAqCf,OAhCAQ,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,SAASf,EAASgB,EAAMC,GAC3CT,EAAoBU,EAAElB,EAASgB,IAClCG,OAAOC,eAAepB,EAASgB,GAC9BK,cAAc,EACdC,YAAY,EACZC,IAAKN,KAMRT,EAAoBgB,EAAI,SAASvB,GAChC,IAAIgB,EAAShB,GAAUA,EAAOwB,WAC7B,WAAwB,OAAOxB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAO,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRT,EAAoBU,EAAI,SAASQ,EAAQC,GAAY,OAAOR,OAAOS,UAAUC,eAAejB,KAAKc,EAAQC,IAGzGnB,EAAoBsB,EAAI,GAGjBtB,EAAoBA,EAAoBuB,EAAI,KA9D7C,EAmEV,SAAU9B,EAAQD,EAASQ,GAEjC,aAeAP,EAAOD,QAAU,SAASgC,EAAQC,EAAOC,EAAUC,GACjD,OAAIF,GAA+B,mBAAdA,EAAMG,IAElBH,EAAMG,IAAI,SAAUC,GACzB,OAAOL,EAAQK,EAAGH,EAAUC,KAIvBD,EAASD,KAOd,SAAUhC,EAAQD,EAASQ,GAEjC,aAuFAR,EAAQgB,KAAO,SACfhB,EAAQD,QArFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAiCpC,IAAIC,EAASD,EAAM,UACjBE,GAAI,WACF,OAAOC,OAGTC,OAAU,SAAUC,GAClB,OAAOF,KAAYE,IAGrBC,iBAAkB,SAAUD,EAAQE,GAClC,OAAOJ,KAAYE,EAAQE,IAG7BC,MAAS,SAAUC,GACjB,OAAON,EAAQM,IAGjBC,OAAU,SAAUD,GAClB,OAAON,EAAQM,EAAMA,EAAKE,YAG5BC,yBAA0BT,EAE1BU,iCAAkCV,IASpC,OANAF,EAAOa,OACLC,EAAG,iCACHC,EAAG,4BACHC,EAAG,6BAGEhB,EAUP,SAASE,EAAQM,EAAMJ,EAAQE,GAK7B,OAAO,IAHCV,EAAKa,OAAOC,QAAQN,GAAU,WAG/B,CAAMI,EAAMF,MAUjB,SAAU/C,EAAQD,EAASQ,GAEjC,aAGA,IAAImD,EAASnD,EAAoB,GAC7BqC,EAASrC,EAAoB,GAE7BoD,EAAiBpD,EAAoB,IACrCqD,EAAarD,EAAoB,IASrCR,EAAQ8D,KAAO,SAAUzB,GAGvB,IAFA,IAAIN,KAEGkB,MAAMc,QAAQ1B,IACnBN,EAAEiC,KAAK3B,EAAE4B,QACT5B,EAAIA,EAAE,GAGR,OAAON,GAgDT/B,EAAQkE,SAAW,SAASjC,EAAO6B,GAEjC,GAD+B,GAAfA,EAAKG,QAGnB,GAAIhB,MAAMc,QAAQ9B,GAChB,MAAM,IAAI2B,EAAe3B,EAAMgC,OAAQ,QAzC7C,SAASE,EAAUlC,EAAO6B,EAAMM,GAC9B,IAAI1D,EACA2D,EAAMpC,EAAMgC,OAEhB,GAAII,GAAOP,EAAKM,GACd,MAAM,IAAIR,EAAeS,EAAKP,EAAKM,IAGrC,GAAIA,EAAMN,EAAKG,OAAS,EAAG,CAEzB,IAAIK,EAAUF,EAAM,EACpB,IAAK1D,EAAI,EAAGA,EAAI2D,EAAK3D,IAAK,CACxB,IAAI6D,EAAQtC,EAAMvB,GAClB,IAAKuC,MAAMc,QAAQQ,GACjB,MAAM,IAAIX,EAAeE,EAAKG,OAAS,EAAGH,EAAKG,OAAQ,KAEzDE,EAAUlC,EAAMvB,GAAIoD,EAAMQ,SAK5B,IAAK5D,EAAI,EAAGA,EAAI2D,EAAK3D,IACnB,GAAIuC,MAAMc,QAAQ9B,EAAMvB,IACtB,MAAM,IAAIkD,EAAeE,EAAKG,OAAS,EAAGH,EAAKG,OAAQ,KAuB3DE,CAAUlC,EAAO6B,EAAM,IAU3B9D,EAAQwE,cAAgB,SAASC,EAAOR,GACtC,IAAKN,EAAOe,SAASD,KAAWd,EAAOgB,UAAUF,GAC/C,MAAM,IAAIG,UAAU,oCAAsCH,EAAQ,KAEpE,GAAIA,EAAQ,GAAwB,iBAAXR,GAAuBQ,GAASR,EACvD,MAAM,IAAIJ,EAAWY,EAAOR,IAchCjE,EAAQ6E,OAAS,SAAS5C,EAAO6B,EAAMgB,GAIrC,IAAK7B,MAAMc,QAAQ9B,KAAWgB,MAAMc,QAAQD,GAC1C,MAAM,IAAIc,UAAU,kBAEtB,GAAoB,IAAhBd,EAAKG,OACP,MAAM,IAAIc,MAAM,uCAelB,OAXAjB,EAAKkB,QAAQ,SAAUC,GACrB,IAAKtB,EAAOe,SAASO,KAAWtB,EAAOgB,UAAUM,IAAUA,EAAQ,EACjE,MAAM,IAAIL,UAAU,uDACJ/B,EAAOC,OAAOgB,GAAQ,OAoB5C,SAASoB,EAASjD,EAAO6B,EAAMM,EAAKU,GAClC,IAAIpE,EACJ,IAAIyE,EACJ,IAAIC,EAASnD,EAAMgC,OACnB,IAAIoB,EAASvB,EAAKM,GAClB,IAAIkB,EAASC,KAAKC,IAAIJ,EAAQC,GAG9BpD,EAAMgC,OAASoB,EAEf,GAAIjB,EAAMN,EAAKG,OAAS,EAAG,CAEzB,IAAIK,EAAUF,EAAM,EAGpB,IAAK1D,EAAI,EAAGA,EAAI4E,EAAQ5E,IAEtByE,EAAOlD,EAAMvB,GACRuC,MAAMc,QAAQoB,KACjBA,GAAQA,GACRlD,EAAMvB,GAAKyE,GAEbD,EAAQC,EAAMrB,EAAMQ,EAASQ,GAI/B,IAAKpE,EAAI4E,EAAQ5E,EAAI2E,EAAQ3E,IAE3ByE,KACAlD,EAAMvB,GAAKyE,EAGXD,EAAQC,EAAMrB,EAAMQ,EAASQ,OAG5B,CAIH,IAAKpE,EAAI,EAAGA,EAAI4E,EAAQ5E,IACtB,KAAOuC,MAAMc,QAAQ9B,EAAMvB,KACzBuB,EAAMvB,GAAKuB,EAAMvB,GAAG,GAKxB,IAAKA,EAAI4E,EAAQ5E,EAAI2E,EAAQ3E,IAC3BuB,EAAMvB,GAAKoE,GA7DfI,CAAQjD,EAAO6B,EAAM,OADiB2B,IAAjBX,EAA8BA,EAAe,GAG3D7C,GA0ETjC,EAAQ0F,QAAU,SAASzD,EAAO0D,GAChC,IACIC,EADAC,EAAY7F,EAAQ8F,QAAQ7D,GAG5B8D,EAAU,SAAUC,GACtB,OAAOA,EAAIC,OAAO,SAAUC,EAAMC,GAChC,OAAOD,EAAOC,KAIlB,IAAKlD,MAAMc,QAAQ9B,KAAWgB,MAAMc,QAAQ4B,GAC1C,MAAM,IAAIf,UAAU,kBAGtB,GAAqB,IAAjBe,EAAM1B,OACR,MAAM,IAAIL,EAAe,EAAGmC,EAAQ/F,EAAQ8D,KAAK7B,IAAS,MAG5D,IACE2D,EAiCJ,SAASQ,EAASnE,EAAO0D,GACvB,IAAIU,KACJ,IAAI3F,EAEJ,GAAqB,IAAjBiF,EAAM1B,OAAc,CACtB,GAAqB,IAAjBhC,EAAMgC,OACR,MAAM,IAAIL,EAAe,KAAM,KAAM,MAEvC,OAAO3B,EAAMqE,QAEf,IAAK5F,EAAI,EAAGA,EAAIiF,EAAM,GAAIjF,GAAK,EAC7B2F,EAAYrC,KAAKoC,EAASnE,EAAO0D,EAAMY,MAAM,KAE/C,OAAOF,EA9COD,CAASP,EAAWF,GAChC,MAAOa,GACP,GAAIA,aAAa5C,EACf,MAAM,IAAIA,EACRmC,EAAQJ,GACRI,EAAQ/F,EAAQ8D,KAAK7B,IACrB,MAGJ,MAAMuE,EAGR,GAAIX,EAAU5B,OAAS,EACrB,MAAM,IAAIL,EACRmC,EAAQJ,GACRI,EAAQ/F,EAAQ8D,KAAK7B,IACrB,MAIJ,OAAO2D,GAoCT5F,EAAQyG,QAAU,SAASxE,EAAO6B,GAIhC,IAHA,IAAI/B,EAAI+B,GAAQ9D,EAAQ8D,KAAK7B,GAGtBgB,MAAMc,QAAQ9B,IAA2B,IAAjBA,EAAMgC,QACnChC,EAAQA,EAAM,GACdF,EAAEuE,QAKJ,IADA,IAAII,EAAO3E,EAAEkC,OACU,IAAhBlC,EAAE2E,EAAO,IACdA,IASF,OALIA,EAAO3E,EAAEkC,SACXhC,EAeJ,SAAS0E,EAAU1E,EAAOyE,EAAMtC,GAC9B,IAAI1D,EAAGkG,EAEP,GAAIxC,EAAMsC,EAAM,CACd,IAAIG,EAAOzC,EAAM,EACjB,IAAK1D,EAAI,EAAGkG,EAAK3E,EAAMgC,OAAQvD,EAAIkG,EAAIlG,IACrCuB,EAAMvB,GAAKiG,EAAS1E,EAAMvB,GAAIgG,EAAMG,QAItC,KAAO5D,MAAMc,QAAQ9B,IACnBA,EAAQA,EAAM,GAIlB,OAAOA,EA9BG0E,CAAS1E,EAAOyE,EAAM,GAC9B3E,EAAEkC,OAASyC,GAGNzE,GAyCTjC,EAAQ8G,UAAY,SAAS7E,EAAOyE,EAAMK,EAAOjD,GAC/C,IAAI/B,EAAI+B,GAAQ9D,EAAQ8D,KAAK7B,GAG7B,GAAI8E,EACF,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAOrG,IACzBuB,GAASA,GACTF,EAAEiF,QAAQ,GAMd,IADA/E,EAgBF,SAASgF,EAAYhF,EAAOyE,EAAMtC,GAChC,IAAI1D,EAAGkG,EAEP,GAAI3D,MAAMc,QAAQ9B,GAAQ,CACxB,IAAI4E,EAAOzC,EAAM,EACjB,IAAK1D,EAAI,EAAGkG,EAAK3E,EAAMgC,OAAQvD,EAAIkG,EAAIlG,IACrCuB,EAAMvB,GAAKuG,EAAWhF,EAAMvB,GAAIgG,EAAMG,QAIxC,IAAK,IAAI9F,EAAIqD,EAAKrD,EAAI2F,EAAM3F,IAC1BkB,GAASA,GAIb,OAAOA,EA/BCgF,CAAWhF,EAAOyE,EAAM,GACzB3E,EAAEkC,OAASyC,GAChB3E,EAAEiC,KAAK,GAGT,OAAO/B,GAkCTjC,EAAQ8F,QAAU,SAAS7D,GACzB,IAAKgB,MAAMc,QAAQ9B,GAEjB,OAAOA,EAET,IAAIiF,KAWJ,OATAjF,EAAM+C,QAAQ,SAAS9C,EAAS+C,GAC1BhC,MAAMc,QAAQkB,GAChBA,EAAMD,QAAQ9C,GAGdgF,EAAKlD,KAAKiB,KAIPiC,GAQTlH,EAAQoC,IAAM,SAAUH,EAAOC,GAC7B,OAAOe,MAAMrB,UAAUQ,IAAIxB,KAAKqB,EAAOC,IAQzClC,EAAQgF,QAAU,SAAU/C,EAAOC,GACjCe,MAAMrB,UAAUoD,QAAQpE,KAAKqB,EAAOC,IAQtClC,EAAQmH,OAAS,SAAUlF,EAAOC,GAChC,GAAmC,IAA/BlC,EAAQ8D,KAAK7B,GAAOgC,OACtB,MAAM,IAAIc,MAAM,2CAGlB,OAAO9B,MAAMrB,UAAUuF,OAAOvG,KAAKqB,EAAOC,IAU5ClC,EAAQoH,aAAe,SAAUnF,EAAOoF,GACtC,GAAmC,IAA/BrH,EAAQ8D,KAAK7B,GAAOgC,OACtB,MAAM,IAAIc,MAAM,2CAGlB,OAAO9B,MAAMrB,UAAUuF,OAAOvG,KAAKqB,EAAO,SAAUqF,GAClD,OAAOD,EAAOE,KAAKD,MASvBtH,EAAQwH,KAAO,SAAUvF,EAAOwF,GAC9B,OAAOxE,MAAMrB,UAAU4F,KAAK5G,KAAKqB,EAAOwF,IAQ1CzH,EAAQ0H,SAAW,SAASC,GAC1B,IAAK1E,MAAMc,QAAQ4D,GACpB,MAAM,IAAI/C,UAAU,wBAGnB,GAAiB,IAAb+C,EAAE1D,OACP,OAAO0D,EAGN,IAAIC,KACAC,EAAQ,EACZD,EAAE,IAAM3C,MAAO0C,EAAE,GAAIG,WAAY,GACjC,IAAK,IAAIpH,EAAE,EAAGA,EAAEiH,EAAE1D,OAAQvD,IACpBiH,EAAEjH,KAAOiH,EAAEjH,EAAE,GAClBmH,IAGGA,EAAQ,EAEVD,EAAE5D,MAAMiB,MAAO0C,EAAEjH,GAAIoH,WAAYD,IAEnC,OAAOD,GAQT5H,EAAQ+H,WAAa,SAASJ,GAC5B,IAAK1E,MAAMc,QAAQ4D,GACpB,MAAM,IAAI/C,UAAU,wBAGnB,GAAiB,IAAb+C,EAAE1D,OACP,OAAO0D,EAIN,IADA,IAAIC,KACKlH,EAAE,EAAGA,EAAEiH,EAAE1D,OAAQvD,IACxBkH,EAAE5D,KAAK2D,EAAEjH,GAAGuE,OAEd,OAAO2C,GAQT5H,EAAQ+D,QAAUd,MAAMc,SAKlB,SAAU9D,EAAQD,EAASQ,GAEjC,aA0cA,SAASwH,EAAM/D,GAEb,IADA,IAAI+B,KACKtF,EAAI,EAAGA,EAAIuD,EAAQvD,IAC1BsF,EAAIhC,KAAK,GAEX,OAAOgC,EAncThG,EAAQ0E,SAAW,SAASO,GAC1B,MAAwB,iBAAVA,GAQhBjF,EAAQ2E,UAAY,SAASM,GAC3B,QAAOgD,SAAShD,IACTA,GAASM,KAAK2C,MAAMjD,IAU7BjF,EAAQmI,KAAO5C,KAAK4C,MAAQ,SAAS9F,GACnC,OAAIA,EAAI,EACC,EAEAA,EAAI,GACH,EAGD,GAyEXrC,EAAQ8C,OAAS,SAASmC,EAAOmD,GAC/B,GAAuB,mBAAZA,EAET,OAAOA,EAAQnD,GAIjB,GAAIA,IAAUoD,EAAAA,EACZ,MAAO,WAEJ,GAAIpD,KAAWoD,EAAAA,EAClB,MAAO,YAEJ,GAAIC,MAAMrD,GACb,MAAO,MAIT,IAAIsD,EAAW,OACXC,OAAY/C,EAkBhB,OAhBI2C,IAEEA,EAAQG,WACVA,EAAWH,EAAQG,UAIjBvI,EAAQ0E,SAAS0D,GACnBI,EAAYJ,EAELA,EAAQI,YACfA,EAAYJ,EAAQI,YAKhBD,GACN,IAAK,QACH,OAAOvI,EAAQyI,QAAQxD,EAAOuD,GAEhC,IAAK,cACH,OAAOxI,EAAQ0I,cAAczD,EAAOuD,GAEtC,IAAK,cACH,OAAOxI,EAAQ2I,cAAc1D,EAAOuD,GAEtC,IAAK,OAGH,GAAIJ,GAAWA,EAAQQ,mBAA8CnD,IAA9B2C,EAAQQ,YAAYC,YAAqDpD,IAA9B2C,EAAQQ,YAAYE,OAAsB,CAC1H,IAAIC,EAAe5H,OAAO6H,UAAWZ,GAerC,OAdAW,EAAaH,iBAAcnD,OACOA,IAA9B2C,EAAQQ,YAAYC,QACtBE,EAAaE,SAAW1D,KAAK2C,MAAM3C,KAAK2D,IAAId,EAAQQ,YAAYC,OAAStD,KAAK4D,YAE9C1D,IAA9B2C,EAAQQ,YAAYE,QACtBC,EAAaK,SAAW7D,KAAK2C,MAAM3C,KAAK2D,IAAId,EAAQQ,YAAYE,OAASvD,KAAK4D,OAGhFE,QAAQC,KAAK,2OAIIC,KAAKC,UAAUpB,GAAW,SAAWmB,KAAKC,UAAUT,IAE9D/I,EAAQyJ,YAAYxE,EAAOuD,EAAWO,GAG/C,OAAO/I,EACFyJ,YAAYxE,EAAOuD,EAAWJ,GAAWA,GAGzCsB,QAAQ,sBAAuB,WAC9B,IAAIC,EAASC,UAAU,GACnBpD,EAAIoD,UAAU,GAClB,MAAmB,MAAXD,EAAkBA,EAASnD,EAAIA,IAG/C,QACE,MAAM,IAAIzB,MAAM,qBAAuBwD,EAAW,kDAWxDvI,EAAQ6J,YAAc,SAAU5E,GAE9B,IAAI6E,EAAQC,OAAO9E,GAAO+E,cAAcF,MAAM,sCAC9C,IAAKA,EACH,MAAM,IAAIG,YAAY,kBAAoBhF,GAG5C,IAAIkD,EAAe2B,EAAM,GACrBH,EAAeG,EAAM,GACrBI,EAAeC,WAAWL,EAAM,IAAM,KAEtCM,EAAMT,EAAOU,QAAQ,KACzBH,IAAsB,IAATE,EAAeA,EAAM,EAAMT,EAAO1F,OAAS,EAExD,IAAIqG,EAAeX,EACdD,QAAQ,IAAK,IACbA,QAAQ,MAAO,SAAU1B,GAGxB,OADAkC,GAAYlC,EAAM/D,OACX,KAERyF,QAAQ,MAAO,IACfa,MAAM,IACNnI,IAAI,SAAUrB,GACb,OAAOyJ,SAASzJ,KAQtB,OAL4B,IAAxBuJ,EAAarG,SACfqG,EAAatG,KAAK,GAClBkG,MAIA/B,KAAMA,EACNmC,aAAcA,EACdJ,SAAUA,IAWdlK,EAAQ2I,cAAgB,SAAU1D,EAAOuD,GACvC,GAAIF,MAAMrD,KAAWgD,SAAShD,GAC5B,OAAO8E,OAAO9E,GAGhB,IAAIwF,EAAUzK,EAAQ0K,YAAY1K,EAAQ6J,YAAY5E,GAAQuD,GAE1DhC,EAAIiE,EAAQP,SACZpJ,EAAI2J,EAAQH,aAGZK,EAASnE,EAAI,GAAM,EAAIA,EAAKA,EAAI,EAAKA,EAAI,EAAMA,EAAI,EAAKA,EAAKA,EAAI,EAGjEoE,EAAmBpE,GAAK,EAAIA,EAAIjB,KAAKsF,IAAIF,GAGzC7J,EAAEmD,OAAS,EAAI2G,IAAkB9J,EAAIA,EAAEgK,OAAO9C,EAAM4C,GAAoB9J,EAAEmD,OAAS,MAQvF,IALA,IAAI8G,EAAUxF,KAAKsF,IAAIrE,EAAImE,GAEvBK,EAAa,IAGRD,GAAW,GAAGC,IAIvB,IAAIC,EAAWnK,EAAEyF,MAAMyE,GAAYxD,KAAK,IACpC0D,EAAaD,EAASnB,MAAM,SAAY,IAAMmB,EAAY,GAE1DE,EAAMrK,EAAEyF,MAAM,EAAGyE,GAAYxD,KAAK,IAClC0D,EACA,KAAO1E,GAAK,EAAI,IAAM,IAAMmE,EAAOS,WACvC,OAAOX,EAAQtC,KAAOgD,GASxBnL,EAAQyI,QAAU,SAAUxD,EAAOuD,GACjC,GAAIF,MAAMrD,KAAWgD,SAAShD,GAC5B,OAAO8E,OAAO9E,GAGhB,IAAIoG,EAAarL,EAAQ6J,YAAY5E,GACjCwF,EAAgC,iBAAdjC,EAChBxI,EAAQ0K,YAAYW,EAAYA,EAAWnB,SAAW,EAAI1B,GAC1D6C,EACFvK,EAAI2J,EAAQH,aACZxI,EAAI2I,EAAQP,SAAW,EAGvBoB,EAAKxJ,GAAK0G,GAAa,GAgB3B,OAfI1H,EAAEmD,OAASqH,IACbxK,EAAIA,EAAEgK,OAAO9C,EAAMsD,EAAKxK,EAAEmD,UAIxBnC,EAAI,IACNhB,EAAIkH,EAAW,EAAJlG,GAAOgJ,OAAOhK,GACzBgB,EAAI,GAIFA,EAAIhB,EAAEmD,QACRnD,EAAEyK,OAAOzJ,EAAG,EAAU,IAANA,EAAW,KAAO,KAG7B2I,EAAQtC,KAAOrH,EAAE0G,KAAK,KAU/BxH,EAAQ0I,cAAgB,SAAUzD,EAAOuD,GACvC,GAAIF,MAAMrD,KAAWgD,SAAShD,GAC5B,OAAO8E,OAAO9E,GAIhB,IAAIsF,EAAQvK,EAAQ6J,YAAY5E,GAC5BwF,EAAUjC,EAAYxI,EAAQ0K,YAAYH,EAAO/B,GAAa+B,EAC9DzJ,EAAI2J,EAAQH,aACZ9D,EAAIiE,EAAQP,SAGZpJ,EAAEmD,OAASuE,IACb1H,EAAIA,EAAEgK,OAAO9C,EAAMQ,EAAY1H,EAAEmD,UAInC,IAAIuH,EAAQ1K,EAAEwF,QACd,OAAOmE,EAAQtC,KAAOqD,GAAS1K,EAAEmD,OAAS,EAAK,IAAMnD,EAAE0G,KAAK,IAAO,IAC/D,KAAOhB,GAAK,EAAI,IAAM,IAAMA,GAalCxG,EAAQyJ,YAAc,SAAUxE,EAAOuD,EAAWJ,GAChD,GAAIE,MAAMrD,KAAWgD,SAAShD,GAC5B,OAAO8E,OAAO9E,GAIhB,IAAIgE,EAAYb,QAAgC3C,IAArB2C,EAAQa,SAA0Bb,EAAQa,UAAY,EAC7EG,EAAYhB,QAAgC3C,IAArB2C,EAAQgB,SAA0BhB,EAAQgB,SAAW,EAE5EmB,EAAQvK,EAAQ6J,YAAY5E,GAChC,GAAIsF,EAAML,SAAWjB,GAAYsB,EAAML,UAAYd,EAEjD,OAAOpJ,EAAQ0I,cAAczD,EAAOuD,GAGpC,IAAIiC,EAAUjC,EAAYxI,EAAQ0K,YAAYH,EAAO/B,GAAa+B,EAC9DzJ,EAAI2J,EAAQH,aACZ9D,EAAIiE,EAAQP,SAGZpJ,EAAEmD,OAASuE,IACb1H,EAAIA,EAAEgK,OAAO9C,EAAMQ,EAAY1H,EAAEmD,UAKnCnD,EAAIA,EAAEgK,OAAO9C,EAAMxB,EAAI1F,EAAEmD,OAAS,GAC7BnD,EAAEmD,OAASuE,EAAYA,EAAY1H,EAAEmD,OAAS,KAKnD,IAAImG,EAAM5D,EAAI,EAAIA,EAAI,EAKtB,OAJI4D,GAHJtJ,EAAIkH,GAAOxB,GAAGsE,OAAOhK,IAGTmD,OAAS,GACnBnD,EAAEyK,OAAOnB,EAAM,EAAG,EAAG,KAGhBK,EAAQtC,KAAOrH,EAAE0G,KAAK,KAYjCxH,EAAQ0K,YAAc,SAAUH,EAAO/B,GAUrC,IARA,IAAIiC,GACFtC,KAAMoC,EAAMpC,KACZmC,aAAcC,EAAMD,aACpBJ,SAAUK,EAAML,UAEdpJ,EAAI2J,EAAQH,aAGT9B,GAAa,GAClB1H,EAAEkG,QAAQ,GACVyD,EAAQP,WACR1B,IAGF,GAAI1H,EAAEmD,OAASuE,GACC1H,EAAEyK,OAAO/C,EAAW1H,EAAEmD,OAASuE,GAEjC,IAAM,EAAG,CACnB,IAAI9H,EAAI8H,EAAY,EAEpB,IADA1H,EAAEJ,KACc,KAATI,EAAEJ,IACPI,EAAE2K,MACQ,IAAN/K,IACFI,EAAEkG,QAAQ,GACVyD,EAAQP,WACRxJ,KAGFI,IADAJ,KAMN,OAAO+J,GA2BTzK,EAAQ2J,OAAS,SAAS1E,GACxB,OAAOA,EACFyD,gBACAgB,QAAQ,OAAQ,IAChBA,QAAS,aAAc,IACvBzF,QAMPjE,EAAQ0L,YAAcC,OAAOC,SAAW,sBAWxC5L,EAAQ6L,YAAc,SAASxJ,EAAGyJ,EAAGC,GAEnC,GAAe,MAAXA,EACF,OAAO1J,GAAKyJ,EAId,GAAIzJ,GAAKyJ,EACP,OAAO,EAIT,GAAIxD,MAAMjG,IAAMiG,MAAMwD,GACpB,OAAO,EAIT,GAAG7D,SAAS5F,IAAM4F,SAAS6D,GAAI,CAE7B,IAAIE,EAAOzG,KAAKsF,IAAIxI,EAAIyJ,GACxB,OAAIE,EAAOhM,EAAQ0L,aAKVM,GAAQzG,KAAK0G,IAAI1G,KAAKsF,IAAIxI,GAAIkD,KAAKsF,IAAIiB,IAAMC,EAKxD,OAAO,IAMH,SAAU9L,EAAQD,EAASQ,GAEjC,aAGA,IAAI0L,EAAe1L,EAAoB,KAEvCR,EAAQmM,SAENC,MAAO,IAASC,MAAO,UACvBC,KAAM,IAAUC,KAAM,SACtBC,MAAO,UAAcC,MAAO,UAC5BC,MAAO,UAAcC,MAAO,UAC5BC,QAAS,IAAOb,QAAS,YAAcc,WAAY,eACnDC,KAAM,IAAUC,KAAM,SACtBC,IAAK,IAAWC,IAAK,QACrBC,MAAO,UAAcC,MAAO,UAAcC,SAAU,aACpDC,KAAM,IAAUC,KAAM,SACtBC,MAAO,IAASC,MAAO,UAAcC,SAAU,aAC/CC,OAAQ,WAAcC,OAAQ,WAC9BC,GAAI,IAAYC,GAAI,OACpBC,GAAI,IAAYC,GAAI,OACpBC,GAAI,OAAcC,GAAI,OACtBC,QAAS,IAAOC,QAAS,IACzBC,GAAI,OAAcC,GAAI,OAAcC,MAAO,UAC3CC,IAAK,IAAWC,IAAK,QAAcC,OAAQ,WAC3CC,MAAO,UAAcC,MAAO,UAAcC,SAAU,aACpDC,IAAK,IAAWC,IAAK,QACrBC,QAAS,YAAcC,QAAS,YAChCC,IAAK,QAAcC,IAAK,QAAcC,OAAQ,WAC9CC,IAAK,IAAWC,IAAK,QACrBC,IAAK,QAAcC,IAAK,QACxBC,MAAO,UAAcC,MAAO,UAE5BC,KAAQ,iBACRC,MAAS,kBAETjP,EAAG,IACHkP,IAAK,UACLC,IAAK,UACLC,SAAU,UACVzH,SAAU,UACV0H,GAAI,UACJC,IAAK,QACLvK,UAAa,eAGfzF,EAAQiQ,WACNC,UAAa,SACbC,UAAa,IACbC,IAAO,IACPC,OAAU,YACVC,UAAa,IACbC,WAAc,IACdC,OAAU,IACVC,IAAO,QACPC,SAAY,SACZC,OAAU,SACVC,YAAe,UACfC,UAAa,KACbC,IAAO,QACPC,IAAO,IACPC,SAAY,IACZC,GAAM,eACNC,UAAa,KACbC,gBAAmB,KACnBC,cAAiB,MACjBC,MAAS,IACTC,QAAW,QACXC,QAAW,IACXC,OAAU,IACVC,UAAa,QACbC,SAAY,QACZC,OAAU,MACVC,OAAU,iBACVC,MAAS,IACTC,IAAO,UACPC,IAAO,WACPC,GAAM,SAGRhS,EAAQiS,gBAAkB,0CAE1B,IAAIC,GACFC,IAAK,WAGPnS,EAAQoS,OAAS,SAAUvP,GACzB,OAAOqJ,EAAarJ,GAASwP,oBAAsB,KAKrDrS,EAAQsS,SAAW,SAAUtR,EAAMuR,GAEjC,OADAA,OAA2B,IAAXA,GAAiCA,GAE3CL,EAAMrQ,eAAeb,GAChBkR,EAAMlR,GAGR,YAAchB,EAAQoS,OAAOpR,GAAQ,IAG1ChB,EAAQmM,QAAQtK,eAAeb,GAC1BhB,EAAQmM,QAAQnL,GAGlBhB,EAAQoS,OAAOpR,KAMlB,SAAUf,EAAQD,EAASQ,GAEjC,aAGA,IAAIgS,EAAchS,EAAoB,IAatCR,EAAQyS,MAAQ,SAASA,EAAMpQ,GAC7B,IAAIC,SAAcD,EAGlB,GAAa,WAATC,GAA8B,WAATA,GAA8B,YAATA,GAA1CA,MACAD,EACF,OAAOA,EAIT,GAAuB,mBAAZA,EAAEoQ,MACX,OAAOpQ,EAAEoQ,QAIX,GAAIxP,MAAMc,QAAQ1B,GAChB,OAAOA,EAAED,IAAI,SAAU6C,GACrB,OAAOwN,EAAMxN,KAIjB,GAAI5C,aAAasJ,OAAW,OAAO,IAAIA,OAAOtJ,EAAEqQ,WAChD,GAAIrQ,aAAa0H,OAAW,OAAO,IAAIA,OAAO1H,EAAEqQ,WAChD,GAAIrQ,aAAasQ,QAAW,OAAO,IAAIA,QAAQtQ,EAAEqQ,WACjD,GAAIrQ,aAAauQ,KAAW,OAAO,IAAIA,KAAKvQ,EAAEqQ,WAC9C,GAAIF,EAAYnQ,GAAY,OAAOA,EACnC,GAAIA,aAAawQ,OAAS,MAAM,IAAIjO,UAAU,gBAAkBvC,GAGhE,OAAOrC,EAAQoC,IAAIC,EAAGoQ,IASxBzS,EAAQoC,IAAM,SAASV,EAAQQ,GAC7B,IAAIuQ,KAEJ,IAAK,IAAIK,KAAOpR,EACV1B,EAAQ6B,eAAeH,EAAQoR,KACjCL,EAAMK,GAAO5Q,EAASR,EAAOoR,KAIjC,OAAOL,GASTzS,EAAQ+S,OAAS,SAASpL,EAAGC,GAC3B,IAAK,IAAIoL,KAAQpL,EACX5H,EAAQ6B,eAAe+F,EAAGoL,KAC5BrL,EAAEqL,GAAQpL,EAAEoL,IAGhB,OAAOrL,GAST3H,EAAQiT,WAAa,SAASA,EAAYtL,EAAGC,GAE3C,GAAI3E,MAAMc,QAAQ6D,GAChB,MAAM,IAAIhD,UAAU,0CAGtB,IAAK,IAAIoO,KAAQpL,EACf,GAAI5H,EAAQ6B,eAAe+F,EAAGoL,GAC5B,GAAIpL,EAAEoL,IAASpL,EAAEoL,GAAME,cAAgB/R,YACrBsE,IAAZkC,EAAEqL,KACJrL,EAAEqL,OAEArL,EAAEqL,GAAME,cAAgB/R,OAC1B8R,EAAWtL,EAAEqL,GAAOpL,EAAEoL,IAGtBrL,EAAEqL,GAAQpL,EAAEoL,OAET,CAAA,GAAI/P,MAAMc,QAAQ6D,EAAEoL,IACzB,MAAM,IAAIpO,UAAU,0CAEpB+C,EAAEqL,GAAQpL,EAAEoL,GAIlB,OAAOrL,GAST3H,EAAQmT,UAAY,SAAoBxL,EAAGC,GACzC,IAAIoL,EAAMtS,EAAG2D,EACb,GAAIpB,MAAMc,QAAQ4D,GAAI,CACpB,IAAK1E,MAAMc,QAAQ6D,GACjB,OAAO,EAGT,GAAID,EAAE1D,QAAU2D,EAAE3D,OAChB,OAAO,EAGT,IAAKvD,EAAI,EAAG2D,EAAMsD,EAAE1D,OAAQvD,EAAI2D,EAAK3D,IACnC,IAAKV,EAAQmT,UAAUxL,EAAEjH,GAAIkH,EAAElH,IAC7B,OAAO,EAGX,OAAO,EAEJ,GAAIiH,aAAaxG,OAAQ,CAC5B,GAAI8B,MAAMc,QAAQ6D,MAAQA,aAAazG,QACrC,OAAO,EAGT,IAAK6R,KAAQrL,EAEX,IAAK3H,EAAQmT,UAAUxL,EAAEqL,GAAOpL,EAAEoL,IAChC,OAAO,EAGX,IAAKA,KAAQpL,EAEX,IAAK5H,EAAQmT,UAAUxL,EAAEqL,GAAOpL,EAAEoL,IAChC,OAAO,EAGX,OAAO,EAGP,cAAerL,UAAaC,GAAOD,GAAKC,GAQ5C5H,EAAQoT,kBAAoB,WAE1B,IACE,GAAIjS,OAAOC,eAET,OADAD,OAAOC,kBAAmB,KAAOG,IAAK,gBAC/B,EAET,MAAOiF,IAET,OAAO,GAaTxG,EAAQqT,KAAO,SAAU3R,EAAQsR,EAAMM,GACrC,GAAItT,EAAQoT,oBAAqB,CAC/B,IACIG,EADAC,GAAiB,EAErBrS,OAAOC,eAAeM,EAAQsR,GAC5BzR,IAAK,WAKH,OAJIiS,IACFD,EAASD,IACTE,GAAiB,GAEZD,GAGTE,IAAK,SAAUxO,GACbsO,EAAStO,EACTuO,GAAiB,GAGnBnS,cAAc,EACdC,YAAY,SAKdI,EAAOsR,GAAQM,KAWnBtT,EAAQ0T,SAAW,SAAShS,EAAQiS,GAClC,IAAIC,EAAMlS,EAEV,GAAIiS,EAEF,IADA,IAAIE,EAAQF,EAAKpJ,MAAM,KACd7J,EAAI,EAAGA,EAAImT,EAAM5P,OAAQvD,IAAK,CACrC,IAAIM,EAAO6S,EAAMnT,GACXM,KAAQ4S,IACZA,EAAI5S,OAEN4S,EAAMA,EAAI5S,GAId,OAAO4S,GAQT5T,EAAQ6B,eAAiB,SAAUH,EAAQC,GACzC,OAAOD,GAAUP,OAAOU,eAAejB,KAAKc,EAAQC,IAetD3B,EAAQ8T,UAAY,SAAUpS,GAC5B,OAAOA,GAAoC,mBAAnBA,EAAO3B,UAM3B,SAAUE,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MA8EnCzS,EAAQgB,KAAO,cACfhB,EAAQD,QA7ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAkDnBC,EAAW,SAAUC,EAAGC,EAAOnS,EAAGP,EAAG2S,EAAIC,EAAIC,GAE/C,IAAIC,KAEJ,GAAIJ,IAAUnS,EAAEkC,OAAS,EAEvB,IAAK,IAAIvD,EAAI,EAAGA,EAAIc,EAAGd,IAErB4T,EAAG5T,GAAK2T,EAAUJ,EAAEG,EAAID,EAAGzT,IAAMuT,EAAEE,EAAGzT,GAAI0T,QAK5C,IAAK,IAAIG,EAAI,EAAGA,EAAI/S,EAAG+S,IAErBD,EAAGC,GAAKP,EAASC,EAAGC,EAAQ,EAAGnS,EAAGA,EAAEmS,EAAQ,GAAIC,EAAGI,GAAIH,EAAIC,GAG/D,OAAOC,GAGT,OAtDkB,SAAU3M,EAAGC,EAAG1F,EAAUmS,GAE1C,IAKIG,EALAC,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAKRC,EAAK7S,EAGU,iBAAR2S,IAETL,EAAKK,EAELjN,EAAInF,EAAMuS,QAAQpN,EAAG4M,GAErBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAIjC,IAAIU,EAAQP,EAAM1Q,OAAS,EAAI+P,EAASe,EAAI,EAAGJ,EAAOA,EAAM,GAAIF,EAAO7M,EAAGyM,MAG1E,OAAO,IAAIN,GACT7Q,KAAMgS,EACNpR,KAAM2O,EAAMkC,GACZ3R,SAAUwR,OAmCV,SAAUvU,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAC3BoD,EAAiBpD,EAAoB,IAE5B2U,EAAKtS,OACIuS,SAgGtBpV,EAAQgB,KAAO,cACfhB,EAAQD,QA/FR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAoEnBC,EAAW,SAAUC,EAAGC,EAAOnS,EAAGP,EAAG2S,EAAIC,GAE3C,IAAIE,KAEJ,GAAIJ,IAAUnS,EAAEkC,OAAS,EAEvB,IAAK,IAAIvD,EAAI,EAAGA,EAAIc,EAAGd,IAErB4T,EAAG5T,GAAKuT,EAAEE,EAAGzT,GAAI0T,EAAG1T,SAKtB,IAAK,IAAI6T,EAAI,EAAGA,EAAI/S,EAAG+S,IAErBD,EAAGC,GAAKP,EAASC,EAAGC,EAAQ,EAAGnS,EAAGA,EAAEmS,EAAQ,GAAIC,EAAGI,GAAIH,EAAGG,IAG9D,OAAOD,GAGT,OAzEkB,SAAU3M,EAAGC,EAAG1F,GAEhC,IAwBIsS,EAxBAC,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAERO,EAAQzN,EAAE8M,MACVY,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAERU,KAGJ,GAAIb,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,IAAK,IAAIlC,EAAI,EAAGA,EAAI4S,EAAM1Q,OAAQlC,IAAK,CAErC,GAAI4S,EAAM5S,KAAOuT,EAAMvT,GACrB,MAAM,IAAI0T,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAEtGE,EAAMzT,GAAK4S,EAAM5S,GAMnB,IAAIgT,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELjN,EAAInF,EAAMuS,QAAQpN,EAAG4M,GAErBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAIjC,IAAIU,EAAQM,EAAMvR,OAAS,EAAI+P,EAASe,EAAI,EAAGS,EAAOA,EAAM,GAAIf,EAAOY,MAGvE,OAAO,IAAItB,GACT7Q,KAAMgS,EACNpR,KAAM0R,EACNxS,SAAUwR,OAmCV,SAAUvU,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IA6CzCR,EAAQD,QA3CR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAUpC,IAAIkT,EAAclT,EAAM,eAEtBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,IAAMyJ,GAGf+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,IAAMyJ,GAAKD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,UAG7C+J,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAE0T,GAAGjK,IAAM4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,UAGhDiK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAOzJ,EAAE4T,OAAOnK,IAGlBoK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAE4T,OAAOnK,IAGlBqK,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAO4Q,EAAYtT,EAAE4C,MAAO6G,EAAE7G,UAIlC,OAAO0Q,IAQH,SAAU1V,EAAQD,EAASQ,GAEjC,aAGA,IAAI6V,EAAe7V,EAAoB,GAAGsC,OACtCwT,EAAkB9V,EAAoB,KAAKsC,OAC3C0P,EAAchS,EAAoB,IAOtCR,EAAQoV,SAAW,SAASnQ,GAC1B,MAAwB,iBAAVA,GAQhBjF,EAAQuW,SAAW,SAASC,EAAMC,GAChC,IAAIC,EAAQF,EAAKvS,OAASwS,EAAOxS,OAC7B0S,EAAMH,EAAKvS,OACf,OAAQuS,EAAKI,UAAUF,EAAOC,KAASF,GAsCzCzW,EAAQ8C,OAAS,SAASmC,EAAOmD,GAC/B,GAAqB,iBAAVnD,EACT,OAAOoR,EAAapR,EAAOmD,GAG7B,GAAIoK,EAAYvN,GACd,OAAOqR,EAAgBrR,EAAOmD,GAKhC,IAmI0BnD,EAnIJA,IAqID,iBAAVA,GACY,iBAAZA,EAAMlD,GACM,iBAAZkD,EAAMzD,GACM,iBAAZyD,EAAMlE,EAvIf,OAAKqH,GAAgC,YAArBA,EAAQyO,SAMf5R,EAAMmG,WAJLnG,EAAMlD,EAAIkD,EAAMzD,EAAK,IAAMyD,EAAMlE,EAgI/C,IAA4BkE,EAxH1B,GAAIhC,MAAMc,QAAQkB,GAChB,OAgGJ,SAAS6R,EAAa7U,EAAOmG,GAC3B,CAAA,GAAInF,MAAMc,QAAQ9B,GAAQ,CAGxB,IAFA,IAAIkJ,EAAM,IACN9G,EAAMpC,EAAMgC,OACPvD,EAAI,EAAGA,EAAI2D,EAAK3D,IACd,GAALA,IACFyK,GAAO,MAETA,GAAO2L,EAAY7U,EAAMvB,GAAI0H,GAG/B,OADA+C,GAAO,IAIP,OAAOnL,EAAQ8C,OAAOb,EAAOmG,IA9GtB0O,CAAY7R,EAAOmD,GAG5B,GAAIpI,EAAQoV,SAASnQ,GACnB,MAAO,IAAMA,EAAQ,IAGvB,GAAqB,mBAAVA,EACT,OAAOA,EAAM8R,OAAShN,OAAO9E,EAAM8R,QAAU,WAG/C,GAAI9R,GAA0B,iBAAVA,EAAoB,CACtC,GAA4B,mBAAjBA,EAAMnC,OACf,OAAOmC,EAAMnC,OAAOsF,GAEjB,GAAInD,GAASA,EAAMmG,gBAAkBA,WAExC,OAAOnG,EAAMmG,WAGb,IAAI4L,KAEJ,IAAK,IAAIlE,KAAO7N,EACVA,EAAMpD,eAAeiR,IACvBkE,EAAQhT,KAAK,IAAM8O,EAAM,MAAQ9S,EAAQ8C,OAAOmC,EAAM6N,GAAM1K,IAIhE,MAAO,IAAM4O,EAAQxP,KAAK,MAAQ,IAItC,OAAOuC,OAAO9E,IAShBjF,EAAQwJ,UAAY,SAAUvE,GAI5B,IAHA,IAAIuR,EAAOzM,OAAO9E,GACdgS,EAAU,GACVvW,EAAI,EACDA,EAAI8V,EAAKvS,QAAQ,CACtB,IAAInD,EAAI0V,EAAKU,OAAOxW,GAEV,OAANI,GACFmW,GAAWnW,EACXJ,IAGU,MADVI,EAAI0V,EAAKU,OAAOxW,MAC6B,IAA7B,aAAa2J,QAAQvJ,KACnCmW,GAAW,MAEbA,GAAWnW,GAGXmW,GADa,MAANnW,EACI,MAGAA,EAEbJ,IAGF,MAAO,IAAMuW,EAAU,KAQzBjX,EAAQoS,OAAS,SAAUnN,GACzB,IAAIuR,EAAOzM,OAAO9E,GAOlB,OANAuR,EAAOA,EAAK9M,QAAQ,KAAM,SACvBA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UAiDb,SAAUzJ,EAAQD,EAASQ,GAEjC,aAYA,SAASoD,EAAeuT,EAAQC,EAAUC,GACxC,KAAMhX,gBAAgBuD,GACpB,MAAM,IAAIqG,YAAY,oDAGxB5J,KAAK8W,OAAWA,EAChB9W,KAAK+W,SAAWA,EAChB/W,KAAKgX,SAAWA,EAEhBhX,KAAKiX,QAAU,wBACVrU,MAAMc,QAAQoT,GAAW,IAAMA,EAAO3P,KAAK,MAAQ,IAAO2P,GAC3D,KAAO9W,KAAKgX,UAAY,MAAQ,KAC/BpU,MAAMc,QAAQqT,GAAa,IAAMA,EAAS5P,KAAK,MAAQ,IAAO4P,GAC/D,IAEJ/W,KAAKkX,OAAQ,IAAKxS,OAASwS,MAG7B3T,EAAehC,UAAY,IAAI6T,WAC/B7R,EAAehC,UAAUsR,YAAcuC,WACvC7R,EAAehC,UAAUZ,KAAO,iBAChC4C,EAAehC,UAAU4V,kBAAmB,EAE5CvX,EAAOD,QAAU4D,GAKX,SAAU3D,EAAQD,EAASQ,GAEjC,aAGA,IAAIuS,EAASvS,EAAoB,GAAGuS,OAChC9Q,EAAQzB,EAAoB,GA+5BhCR,EAAQgB,KAAO,WACfhB,EAAQD,QA95BR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAE5BkC,EAASF,EAAKhC,EAAoB,IAClCkX,EAAYlV,EAAKhC,EAAoB,KACrCmX,EAAiBnV,EAAKhC,EAAoB,KAC1CmV,EAAcnT,EAAKhC,EAAoB,IAEvCoX,EAAcpV,EAAKhC,EAAoB,KACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCuT,EAAczR,EAAKyR,YACnB+D,EAAexV,EAAKwV,aAmCpBpH,EAAWjO,EAAM,WAAYsQ,GAG/BgF,eAAgB,SAAU1V,EAAGyJ,GAE3BkM,EAA0B/V,EAAM6B,KAAKzB,GAAIJ,EAAM6B,KAAKgI,IAGpD,IAAIjL,EAAI6P,EAAShO,EAAOL,GAAIK,EAAOoJ,IAEnC,OAAOxJ,EAAK2V,SAASpX,GAAKA,EAAE6R,UAAY7R,GAG1CqX,iBAAkB,SAAU7V,EAAGyJ,GAE7B,IAAIqM,EAAQ9V,EAAEyB,OACVsU,EAAQtM,EAAEhI,OAMd,OAHAkU,EAA0BG,EAAOC,GAGZ,IAAjBD,EAAMlU,OAEa,IAAjBmU,EAAMnU,OAEDoU,EAAsBhW,EAAGyJ,EAAGqM,EAAM,IAGpCG,EAAsBjW,EAAGyJ,GAGb,IAAjBsM,EAAMnU,OAEDsU,EAAsBlW,EAAGyJ,GAG3B0M,EAAsBnW,EAAGyJ,IAGlC2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAO4E,EAASrO,EAAGK,EAAOoJ,KAG5B4M,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAO4E,EAAShO,EAAOL,EAAGyJ,EAAE1I,WAAY0I,IAG1C6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO8L,EAAYvV,EAAGyJ,EAAG6L,GAAgB,IAG3CiB,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG6L,GAAgB,IAG3CkB,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO8L,EAAY9L,EAAGzJ,EAAGsV,GAAgB,IAG3CmB,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGsV,GAAgB,IAG3CoB,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG6L,GAAgB,GAAOjF,WAG1DsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGsV,GAAgB,GAAMjF,WAGzDuG,WAAYtB,EAEZuB,mBAAoB,SAAU7W,EAAGyJ,EAAGqN,GAGlC,IAFA,IAAIC,EAAS1I,EAASrO,EAAGyJ,GAEhBpL,EAAI,EAAGA,EAAIyY,EAAKlV,OAAQvD,IAC/B0Y,EAAS1I,EAAS0I,EAAQD,EAAKzY,IAGjC,OAAO0Y,IAERzB,EAAe0B,aAEdrB,EAA4B,SAAUsB,EAAOC,GAE/C,OAAQD,EAAMrV,QACZ,KAAK,EAEH,OAAQsV,EAAMtV,QACZ,KAAK,EAEH,GAAIqV,EAAM,KAAOC,EAAM,GAErB,MAAM,IAAI9D,WAAW,2EAEvB,MACF,KAAK,EAEH,GAAI6D,EAAM,KAAOC,EAAM,GAErB,MAAM,IAAI9D,WAAW,wDAA0D6D,EAAM,GAAK,6BAA+BC,EAAM,GAAK,KAEtI,MACF,QACE,MAAM,IAAIxU,MAAM,+DAAiEwU,EAAMtV,OAAS,gBAEpG,MACF,KAAK,EAEH,OAAQsV,EAAMtV,QACZ,KAAK,EAEH,GAAIqV,EAAM,KAAOC,EAAM,GAErB,MAAM,IAAI9D,WAAW,yDAA2D6D,EAAM,GAAK,+BAAiCC,EAAM,GAAK,KAEzI,MACF,KAAK,EAEH,GAAID,EAAM,KAAOC,EAAM,GAErB,MAAM,IAAI9D,WAAW,2DAA6D6D,EAAM,GAAK,+BAAiCC,EAAM,GAAK,KAE3I,MACF,QACE,MAAM,IAAIxU,MAAM,+DAAiEwU,EAAMtV,OAAS,gBAEpG,MACF,QACE,MAAM,IAAIc,MAAM,+DAAiEuU,EAAMrV,OAAS,kBAYlGoU,EAAwB,SAAU1Q,EAAGC,EAAGpG,GAE1C,GAAU,IAANA,EACF,MAAM,IAAIuD,MAAM,qCAGlB,IAOIyP,EAPAC,EAAQ9M,EAAE+M,MACVG,EAAMlN,EAAEmN,UAERO,EAAQzN,EAAE8M,MACVa,EAAM3N,EAAEkN,UAKR0E,EAAK9B,EAEL+B,EAAK9B,EAGL9C,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,KAMvC,IAFA,IAAI1T,EAAI2Y,EAAGhF,EAAM,GAAIY,EAAM,IAElB3U,EAAI,EAAGA,EAAIc,EAAGd,IAErBI,EAAI0Y,EAAG1Y,EAAG2Y,EAAGhF,EAAM/T,GAAI2U,EAAM3U,KAE/B,OAAOI,GAWLwX,EAAwB,SAAU3Q,EAAGC,GAEvC,GAAoB,UAAhBA,EAAExE,UACJ,MAAM,IAAI2B,MAAM,4CAElB,OAAO2U,EAA2B/R,EAAGC,IAWnC8R,EAA6B,SAAU/R,EAAGC,GAE5C,IAYI4M,EAZAC,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAERO,EAAQzN,EAAE8M,MACVY,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAER6E,EAAUhF,EAAM,GAChBiF,EAAWtE,EAAM,GAKjBkE,EAAK9B,EAEL+B,EAAK9B,EAGL9C,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,KAOvC,IAHA,IAAI1T,KAGKyT,EAAI,EAAGA,EAAIqF,EAAUrF,IAAK,CAIjC,IAFA,IAAIsF,EAAMJ,EAAGhF,EAAM,GAAIY,EAAM,GAAGd,IAEvB7T,EAAI,EAAGA,EAAIiZ,EAASjZ,IAE3BmZ,EAAML,EAAGK,EAAKJ,EAAGhF,EAAM/T,GAAI2U,EAAM3U,GAAG6T,KAEtCzT,EAAEyT,GAAKsF,EAIT,OAAO,IAAI9F,GACT7Q,KAAMpC,EACNgD,MAAO8V,GACP5W,SAAUwR,KAYV+D,EAAwB9V,EAAM,yBAChCmW,mBA2BF,SAAoCjR,EAAGC,GAErC,IAWI4M,EAXAC,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAERO,EAAQzN,EAAE8M,MACVa,EAAM3N,EAAEkN,UAERgF,EAAQnF,EAAM,GACdoF,EAAWpF,EAAM,GAKjB6E,EAAK9B,EAEL+B,EAAK9B,EAGL9C,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,KAOvC,IAHA,IAAI1T,KAGKJ,EAAI,EAAGA,EAAIoZ,EAAOpZ,IAAK,CAM9B,IAJA,IAAIsZ,EAAMvF,EAAM/T,GAEZmZ,EAAMJ,EAAGO,EAAI,GAAI3E,EAAM,IAElBd,EAAI,EAAGA,EAAIwF,EAAUxF,IAE5BsF,EAAML,EAAGK,EAAKJ,EAAGO,EAAIzF,GAAIc,EAAMd,KAEjCzT,EAAEJ,GAAKmZ,EAIT,OAAO,IAAI9F,GACT7Q,KAAMpC,EACNgD,MAAOgW,GACP9W,SAAUwR,KA3EZmE,oBA0QF,SAAqChR,EAAGC,GAEtC,IAAIqS,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACTzF,EAAMlN,EAAEmN,UAEZ,IAAKmF,EACH,MAAM,IAAIlV,MAAM,0DAElB,IAWIyP,EAXAa,EAAQzN,EAAE8M,MACVa,EAAM3N,EAAEkN,UAERgF,EAAQnS,EAAEiN,MAAM,GAChB2F,EAAQ3S,EAAEgN,MAAM,GAEhB4F,KACAC,KACAC,KAKAlB,EAAK9B,EAEL+B,EAAK9B,EAEL5B,EAAKJ,EAELgF,EAAO,EAGP9F,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,IACrCuB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,IAI1B,IAAInS,KAEAuY,KAGJF,EAAK,GAAK,EAEV,IAAK,IAAIG,EAAK,EAAGA,EAAKN,EAAOM,IAAM,CAEjC,IAAIC,EAAMzF,EAAMwF,GAEhB,IAAK9E,EAAG+E,EAAKH,GAEX,IAAK,IAAII,EAAMV,EAAKQ,GAAKG,EAAMX,EAAKQ,EAAK,GAAII,EAAKF,EAAKE,EAAKD,EAAKC,IAAM,CAErE,IAAIC,EAAKf,EAAOc,GAEXL,EAAEM,GAUL7Y,EAAE6Y,GAAM1B,EAAGnX,EAAE6Y,GAAKzB,EAAGqB,EAAKb,EAAQgB,MARlCL,EAAEM,IAAM,EAERT,EAAOzW,KAAKkX,GAEZ7Y,EAAE6Y,GAAMzB,EAAGqB,EAAKb,EAAQgB,MAUhC,IAAK,IAAIE,EAAKV,EAAOxW,OAAQnC,EAAI,EAAGA,EAAIqZ,EAAIrZ,IAAK,CAE/C,IAAIsZ,EAAKX,EAAO3Y,GAEhB0Y,EAAQ1Y,GAAKO,EAAE+Y,GAMjB,OAHAV,EAAK,GAAKD,EAAOxW,OAGV,IAAI6T,GACTuD,OAASb,EACT/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOgW,EAAO,GACd9W,SAAUwR,OA3VVgE,EAAwB/V,EAAM,yBAChC8Y,2BA2EF,SAA0C5T,EAAGC,GAE3C,IAaI4M,EAbAC,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAERO,EAAQzN,EAAE8M,MACVY,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAERgF,EAAQnF,EAAM,GACdoF,EAAWpF,EAAM,GACjBiF,EAAWtE,EAAM,GAKjBkE,EAAK9B,EAEL+B,EAAK9B,EAGL9C,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,KAOvC,IAHA,IAAI1T,KAGKJ,EAAI,EAAGA,EAAIoZ,EAAOpZ,IAAK,CAE9B,IAAIsZ,EAAMvF,EAAM/T,GAEhBI,EAAEJ,MAEF,IAAK,IAAI6T,EAAI,EAAGA,EAAIqF,EAAUrF,IAAK,CAIjC,IAFA,IAAIsF,EAAMJ,EAAGO,EAAI,GAAI3E,EAAM,GAAGd,IAErBlS,EAAI,EAAGA,EAAI0X,EAAU1X,IAE5BwX,EAAML,EAAGK,EAAKJ,EAAGO,EAAI3X,GAAIgT,EAAMhT,GAAGkS,KAEpCzT,EAAEJ,GAAG6T,GAAKsF,GAKd,OAAO,IAAI9F,GACT7Q,KAAMpC,EACNgD,MAAOgW,EAAOF,GACd5W,SAAUwR,KAlIZgH,4BA8IF,SAA2C7T,EAAGC,GAE5C,IAAI6M,EAAQ9M,EAAE+M,MACVC,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACThF,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAEZ,IAAK2G,EACH,MAAM,IAAI1W,MAAM,0DAElB,IAIIyP,EAJAsF,EAAQnF,EAAM,GACdiF,EAAWtE,EAAM,GAKjBkE,EAAK9B,EAEL+B,EAAK9B,EAEL5B,EAAKJ,EAELgF,EAAO,EAGP9F,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,IACrCuB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,IAiB1B,IAbA,IAAIgG,KACAC,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAASb,EACT/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOgW,EAAOF,GACd5W,SAAUwR,IAIHoH,EAAK,EAAGA,EAAKhC,EAAUgC,IAAM,CAEpClB,EAAKkB,GAAMnB,EAAOxW,OAElB,IAAI4X,EAAMF,EAAKC,GACXE,EAAMH,EAAKC,EAAK,GAEpB,GAAIE,EAAMD,EAIR,IAFA,IAAIE,EAAO,EAEFrb,EAAI,EAAGA,EAAIoZ,EAAOpZ,IAAK,CAM9B,IAJA,IAEIsb,EAFAC,EAAOvb,EAAI,EAINwb,EAAKL,EAAKK,EAAKJ,EAAKI,IAAM,CAEjC,IAAIrB,EAAKa,EAAOQ,GAEZH,IAASE,GAEXD,EAAMvC,EAAGhF,EAAM/T,GAAGma,GAAKY,EAAQS,IAE/BH,EAAOE,GAIPD,EAAMxC,EAAGwC,EAAKvC,EAAGhF,EAAM/T,GAAGma,GAAKY,EAAQS,KAIvCH,IAASE,GAASlG,EAAGiG,EAAKrB,KAE5BF,EAAOzW,KAAKtD,GACZ8Z,EAAQxW,KAAKgY,KASrB,OAHAtB,EAAKd,GAAYa,EAAOxW,OAGjBnD,GAjPPqb,4BAoWF,SAA0CxU,EAAGC,GAE3C,IAAIqS,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACTzF,EAAMlN,EAAEmN,UAEZ,IAAKmF,EACH,MAAM,IAAIlV,MAAM,0DAElB,IAQIyP,EARAa,EAAQzN,EAAE8M,MACVa,EAAM3N,EAAEkN,UAERgF,EAAQnS,EAAEiN,MAAM,GAChB2F,EAAQ3S,EAAEgN,MAAM,GAChBgF,EAAWhS,EAAEgN,MAAM,GAKnB4E,EAAK9B,EAEL+B,EAAK9B,EAEL5B,EAAKJ,EAELgF,EAAO,EAGP9F,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,IACrCuB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,IAsB1B,IAlBA,IAAIgG,KACAC,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAASb,EACT/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOgW,EAAOF,GACd5W,SAAUwR,IAIRnS,KAEAuY,KAGKgB,EAAK,EAAGA,EAAKhC,EAAUgC,IAAM,CAEpClB,EAAKkB,GAAMnB,EAAOxW,OAIlB,IAFA,IAAIgY,EAAOL,EAAK,EAEPf,EAAK,EAAGA,EAAKN,EAAOM,IAAM,CAEjC,IAAIuB,EAAO/G,EAAMwF,GAAIe,GAErB,IAAK7F,EAAGqG,EAAMzB,GAEZ,IAAK,IAAII,EAAMV,EAAKQ,GAAKG,EAAMX,EAAKQ,EAAK,GAAII,EAAKF,EAAKE,EAAKD,EAAKC,IAAM,CAErE,IAAIC,EAAKf,EAAOc,GAEZL,EAAEM,KAAQe,GAEZrB,EAAEM,GAAMe,EAERxB,EAAOzW,KAAKkX,GAEZ7Y,EAAE6Y,GAAMzB,EAAG2C,EAAMnC,EAAQgB,KAIzB5Y,EAAE6Y,GAAM1B,EAAGnX,EAAE6Y,GAAKzB,EAAG2C,EAAMnC,EAAQgB,MAM3C,IAAK,IAAIoB,EAAK3B,EAAKkB,GAAKT,EAAKV,EAAOxW,OAAQnC,EAAIua,EAAIva,EAAIqZ,EAAIrZ,IAAK,CAE/D,IAAIsZ,EAAKX,EAAO3Y,GAEhB0Y,EAAQ1Y,GAAKO,EAAE+Y,IAOnB,OAHAV,EAAKd,GAAYa,EAAOxW,OAGjBnD,GAzcPwb,6BAodF,SAA2C3U,EAAGC,GAE5C,IAiBI4M,EAjBAyF,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACTzF,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACT/E,EAAM3N,EAAEkN,UAGRgF,EAAQnS,EAAEiN,MAAM,GAChBgF,EAAWhS,EAAEgN,MAAM,GAEnByG,EAASpB,GAAWwB,EAKpBjC,EAAK9B,EAEL+B,EAAK9B,EAGL9C,GAAOU,GAAOV,IAAQU,GAAsB,iBAARV,IAEtCL,EAAKK,EAEL2E,EAAK/W,EAAMwS,KAAKyC,GAAYlD,EAAIA,IAChCiF,EAAKhX,EAAMwS,KAAK0C,GAAiBnD,EAAIA,KAuBvC,IAnBA,IAiBIyG,EAAIF,EAAKC,EAAKkB,EAAIL,EAAKC,EAAKZ,EAAIL,EAjBhCL,EAAUa,UAAc5V,EACxBgV,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAASb,EACT/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOgW,EAAOF,GACd5W,SAAUwR,IAIRnS,EAAIgZ,UAAc5V,EAElBmV,KAIKgB,EAAK,EAAGA,EAAKhC,EAAUgC,IAAM,CAEpClB,EAAKkB,GAAMnB,EAAOxW,OAElB,IAAIgY,EAAOL,EAAK,EAEhB,IAAKC,EAAMF,EAAKC,GAAKE,EAAMH,EAAKC,EAAK,GAAIM,EAAKL,EAAKK,EAAKJ,EAAKI,IAI3D,GAFArB,EAAKa,EAAOQ,GAERb,EAEF,IAAKN,EAAMV,EAAKQ,GAAKG,EAAMX,EAAKQ,EAAK,GAAII,EAAKF,EAAKE,EAAKD,EAAKC,IAE3DC,EAAKf,EAAOc,GAERL,EAAEM,KAAQe,GAEZrB,EAAEM,GAAMe,EAERxB,EAAOzW,KAAKkX,GAEZ7Y,EAAE6Y,GAAMzB,EAAGgC,EAAQS,GAAKjC,EAAQgB,KAIhC5Y,EAAE6Y,GAAM1B,EAAGnX,EAAE6Y,GAAKzB,EAAGgC,EAAQS,GAAKjC,EAAQgB,UAM9C,IAAKF,EAAMV,EAAKQ,GAAKG,EAAMX,EAAKQ,EAAK,GAAII,EAAKF,EAAKE,EAAKD,EAAKC,IAE3DC,EAAKf,EAAOc,GAERL,EAAEM,KAAQe,IAEZrB,EAAEM,GAAMe,EAERxB,EAAOzW,KAAKkX,IAMpB,GAAIG,EAEF,IAAK,IAAIgB,EAAK3B,EAAKkB,GAAKT,EAAKV,EAAOxW,OAAQnC,EAAIua,EAAIva,EAAIqZ,EAAIrZ,IAAK,CAE/D,IAAIsZ,EAAKX,EAAO3Y,GAEhB0Y,EAAQ1Y,GAAKO,EAAE+Y,IAQrB,OAHAV,EAAKd,GAAYa,EAAOxW,OAGjBnD,KAOT,OAJA4P,EAASnN,OACPG,EAAG,oBAAsB+T,EAAMxH,UAAoB,SAAI,sBAGlDS,IASH,SAAUzQ,EAAQD,EAASQ,GAEjC,aA2DAR,EAAQD,QAxDR,SAAiBuC,EAAMC,EAAQC,EAAMC,GACnC,IAAIkV,EAAiBnV,EAAKhC,EAAoB,KAe1C+b,EAAe9Z,EAAM,UACvBoT,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,GAGboK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAEma,IAAI1Q,IAGfgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAEma,IAAI1Q,IAGfkK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAOzJ,EAAEma,IAAI1Q,IAGf2Q,sCAAuC,SAAUpa,EAAGyJ,GAClD,IAAI4Q,EAAMra,EAAEoQ,QAGZ,OADAiK,EAAIzX,MAAQsX,EAA6B,OAAdG,EAAIzX,MAAkByX,EAAIC,WAAW,GAAKD,EAAIzX,MAAQ6G,GAC1E4Q,GAGTE,sCAAuC,SAAUva,EAAGyJ,GAClD,IAAI4Q,EAAM5Q,EAAEsE,KAAK,GAGjB,OADAsM,EAAIzX,MAAQ0S,EAA+B,OAAd+E,EAAIzX,MAAkByX,EAAIC,WAAW,GAAKD,EAAIzX,MAAQ5C,GAC5Eqa,GAGTvG,aAAc,SAAU9T,EAAGyJ,GACzB,OAAOzJ,EAAEsO,OAAO7E,MAKpB,OAAOyQ,IAQH,SAAUtc,EAAQD,EAASQ,GAEjC,aAGA,IAAIqB,EAAiBrB,EAAoB,GAAGqB,eAgD5C,SAASgb,EAAgBnb,EAAQsR,GAC/B,SAAKtR,GAA4B,iBAAXA,OAKlBG,EAAeib,EAAsB9J,MAKrCA,KAAQ7R,OAAOS,cAQfoR,KAAQ+J,SAASnb,YA6BvB,SAASob,EAActb,EAAQub,GAC7B,SAAKvb,GAAoC,mBAAnBA,EAAOub,QAMzBpb,EAAeH,EAAQub,IACtBvb,EAAOwb,WAAcD,KAAUvb,EAAOwb,eAKvCrb,EAAesb,EAAmBF,MAKlCA,KAAU9b,OAAOS,cAQjBqb,KAAUF,SAASnb,aASzB,SAASwb,EAAe1b,GACtB,MAAyB,iBAAXA,GAAuBA,GAAUA,EAAOwR,cAAgB/R,OAGxE,IAAI2b,GACF7Y,QAAQ,EACRjD,MAAM,GAGJmc,GACF/R,UAAU,EACVsH,SAAS,EACT2K,gBAAgB,GAGlBrd,EAAQsd,gBAxIR,SAA0B5b,EAAQsR,GAEhC,GAAIoK,EAAc1b,IAAWmb,EAAenb,EAAQsR,GAClD,OAAOtR,EAAOsR,GAGhB,GAA4B,mBAAjBtR,EAAOsR,IAAwBgK,EAAatb,EAAQsR,GAC7D,MAAM,IAAIjO,MAAM,yBAA2BiO,EAAO,mBAGpD,MAAM,IAAIjO,MAAM,0BAA4BiO,EAAO,MA+HrDhT,EAAQud,gBAlHR,SAA0B7b,EAAQsR,EAAM/N,GAEtC,GAAImY,EAAc1b,IAAWmb,EAAenb,EAAQsR,GAClD,OAAOtR,EAAOsR,GAAQ/N,EAGxB,MAAM,IAAIF,MAAM,0BAA4BiO,EAAO,MA6GrDhT,EAAQ6c,eAAiBA,EACzB7c,EAAQwd,mBAlER,SAA6B9b,EAAQub,GACnC,IAAKD,EAAatb,EAAQub,GACxB,MAAM,IAAIlY,MAAM,wBAA0BkY,EAAS,MAiEvDjd,EAAQgd,aAAeA,EACvBhd,EAAQod,cAAgBA,GAKlB,SAAUnd,EAAQD,EAASQ,GAEjC,aAGA,IAAIid,EAAWjd,EAAoB,KAC/B2S,EAAW3S,EAAoB,GAAG2S,UAClCtR,EAAiBrB,EAAoB,GAAGqB,eAqY5C7B,EAAQgB,KAAO,OACfhB,EAAQ2T,KAAO,kBACf3T,EAAQ0d,MAAO,EACf1d,EAAQD,QAtYR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAK3C,SAASC,IACP,KAAMtd,gBAAgBsd,GACpB,MAAM,IAAI1T,YAAY,oDAyX1B,OAhXA0T,EAAK/b,UAAUgc,KAAO,SAASC,GAC7B,OAAOxd,KAAKyd,UAAUF,KAAKC,IAG7BF,EAAK/b,UAAUU,KAAO,OAEtBqb,EAAK/b,UAAUmc,QAAS,EAExBJ,EAAK/b,UAAUoc,QAAU,GASzBL,EAAK/b,UAAUkc,QAAU,WACvB,IAAIG,EAAO5d,KAAK6d,SAASR,EAAKS,WAAWC,sBACrCC,KAEJ,OACET,KAAM,SAAkBC,GACtB,IAAI9b,EAAI8b,MAER,OA6UN,SAAwBA,GACtB,IAAK,IAAIS,KAAUT,EACjB,GAAIhc,EAAegc,EAAOS,IACpBA,KAAUb,EACZ,MAAM,IAAI1Y,MAAM,sCAAwCuZ,EAAS,2BAlVnEC,CAAexc,GACRkc,EAAKlc,EAAGsc,EALL,SAuBhBV,EAAK/b,UAAUsc,SAAW,SAAUR,EAAMc,GACxC,MAAM,IAAIzZ,MAAM,iDAAmD1E,KAAKiC,OAO1Eqb,EAAK/b,UAAUoD,QAAU,SAAU9C,GAEjC,MAAM,IAAI6C,MAAM,2CASlB4Y,EAAK/b,UAAUQ,IAAM,SAAUF,GAE7B,MAAM,IAAI6C,MAAM,uCASlB4Y,EAAK/b,UAAU6c,QAAU,SAAUC,GACjC,IAAKpc,EAAKyb,OAAOW,GACf,MAAM,IAAI9Z,UAAU,wCAGtB,OAAO8Z,GASTf,EAAK/b,UAAU8R,SAAW,SAAUxR,GAElCA,EAAS7B,KAAM,KAAM,MAGrB,SAASse,EAAUD,EAAMxc,GACvBwc,EAAK1Z,QAAQ,SAAUT,EAAOoP,EAAMiL,GAClC1c,EAASqC,EAAOoP,EAAMiL,GACtBD,EAAUpa,EAAOrC,KAIrByc,CAAUte,KAAM6B,IAwBlByb,EAAK/b,UAAUid,UAAY,SAAU3c,GAUnC,OARA,SAAS4c,EAAYJ,EAAMxc,GACzB,OAAOwc,EAAKtc,IAAI,SAASmC,EAAOoP,EAAMiL,GAEpC,OAAOE,EADW5c,EAASqC,EAAOoP,EAAMiL,GACT1c,KAK5B4c,CADW5c,EAAS7B,KAAM,KAAM,MACR6B,IAiBjCyb,EAAK/b,UAAUuF,OAAS,SAAUjF,GAChC,IAAI6c,KAQJ,OANA1e,KAAKqT,SAAS,SAAUgL,EAAM/K,EAAMiL,GAC9B1c,EAASwc,EAAM/K,EAAMiL,IACvBG,EAAM/a,KAAK0a,KAIRK,GAITpB,EAAK/b,UAAUqT,KAAO,WACpB,MAAM,IAAIlQ,MAAM,+DAIlB4Y,EAAK/b,UAAUkI,MAAQ,WACrB,MAAM,IAAI/E,MAAM,iGAOlB4Y,EAAK/b,UAAU6Q,MAAQ,WAErB,MAAM,IAAI1N,MAAM,kCAOlB4Y,EAAK/b,UAAUod,UAAY,WACzB,OAAO3e,KAAK+B,IAAI,SAAUsc,GACxB,OAAOA,EAAKM,eAUhBrB,EAAK/b,UAAUqU,OAAS,SAAUgJ,GAChC,QAAOA,GACD9L,EAAU9S,KAAM4e,IAmBxBtB,EAAK/b,UAAUwJ,SAAW,SAAUhD,GAClC,IAAI8W,EACJ,GAAI9W,GAA8B,iBAAZA,EAClB,cAAeA,EAAQ+W,SACrB,IAAK,SACL,IAAK,YACH,MACF,IAAK,WACHD,EAAe9W,EAAQ+W,QAAQ9e,KAAM+H,GACrC,MACF,QACE,MAAM,IAAIxD,UAAU,2CAI5B,YAA4B,IAAjBsa,EACFA,EAGF7e,KAAK+e,UAAUhX,IAkBxBuV,EAAK/b,UAAUyd,OAAS,SAAUjX,GAChC,IAAI8W,EACJ,GAAI9W,GAA8B,iBAAZA,EAClB,cAAeA,EAAQ+W,SACrB,IAAK,SACL,IAAK,YACH,MACF,IAAK,WACHD,EAAe9W,EAAQ+W,QAAQ9e,KAAM+H,GACrC,MACF,QACE,MAAM,IAAIxD,UAAU,2CAI5B,YAA4B,IAAjBsa,EACFA,EAGF7e,KAAKgf,OAAOjX,IASrBuV,EAAK/b,UAAUwd,UAAY,WAEzB,MAAM,IAAIra,MAAM,iCAAmC1E,KAAKiC,OAkB1Dqb,EAAK/b,UAAU2B,MAAQ,SAAU6E,GAC/B,IAAIkX,EACJ,GAAIlX,GAA6B,iBAAXA,EACpB,cAAeA,EAAQ+W,SACrB,IAAK,SACL,IAAK,YACH,MACF,IAAK,WACHG,EAAYlX,EAAQ+W,QAAQ9e,KAAM+H,GAClC,MACF,QACE,MAAM,IAAIxD,UAAU,2CAI1B,YAAyB,IAAd0a,EACFA,EAGFjf,KAAKkf,OAAOnX,IAUrBuV,EAAK/b,UAAU2d,OAAS,SAAUnX,GAEhC,MAAM,IAAIrD,MAAM,8BAAgC1E,KAAKiC,OAOvDqb,EAAK/b,UAAU4d,cAAgB,WAC7B,OAAOnf,KAAKiC,MAOdqb,EAAK/b,UAAU6d,WAAa,WAC1B,OAAOpf,MAkBFsd,IAWH,SAAU1d,EAAQD,EAASQ,GAEjC,aAGA,IAAIuS,EAASvS,EAAoB,GAAGuS,OAgIpC/S,EAAQgB,KAAO,MACfhB,EAAQD,QA/HR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCkX,EAAYlV,EAAKhC,EAAoB,KACrCiX,EAAQjX,EAAoB,GAE5Bkf,EAAcld,EAAKhC,EAAoB,KACvCmf,EAAcnd,EAAKhC,EAAoB,KACvCof,EAAcpd,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAoCvCuQ,EAAMtO,EAAM,MAAOsQ,GAGrBwI,2BAA4B,SAAUlZ,EAAGyJ,GACvC,OAAO+T,EAAYxd,EAAGyJ,EAAG4L,IAG3B8D,4BAA6B,SAAUnZ,EAAGyJ,GACxC,OAAO4T,EAAYrd,EAAGyJ,EAAG4L,GAAW,IAGtCyE,4BAA6B,SAAU9Z,EAAGyJ,GACxC,OAAO4T,EAAY5T,EAAGzJ,EAAGqV,GAAW,IAGtC4E,6BAA8B,SAAUja,EAAGyJ,GACzC,OAAO6T,EAAYtd,EAAGyJ,EAAG4L,IAG3BK,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOiF,EAAIrO,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGnCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOiF,EAAIrO,EAAOL,GAAIyJ,IAGxB2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOiF,EAAI1O,EAAGK,EAAOoJ,KAGvB8M,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG4L,GAAW,IAGtCiB,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO8T,EAAYvd,EAAGyJ,EAAG4L,GAAW,IAGtCoB,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGqV,GAAW,IAGtCmB,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO8T,EAAY9T,EAAGzJ,EAAGqV,GAAW,IAGtCqB,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG4L,GAAW,GAAOhF,WAGrDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGqV,GAAW,GAAMhF,WAGpDuG,WAAYvB,EAEZwB,mBAAoB,SAAU7W,EAAGyJ,EAAGqN,GAGlC,IAFA,IAAIC,EAASrI,EAAI1O,EAAGyJ,GAEXpL,EAAI,EAAGA,EAAIyY,EAAKlV,OAAQvD,IAC/B0Y,EAASrI,EAAIqI,EAAQD,EAAKzY,IAG5B,OAAO0Y,IAER1B,EAAU2B,aAMb,OAJAtI,EAAIxN,OACFG,EAAG,oBAAsB+T,EAAMxH,UAAe,IAAI,sBAG7Cc,IASH,SAAU9Q,EAAQD,EAASQ,GAEjC,aAmDAR,EAAQD,QAhDR,SAAiBuC,EAAMC,EAAQC,EAAMC,GAenC,IAAIsO,EAAMtO,EAAM,OAEdoT,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,GAGboK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAE0O,IAAIjF,IAGfgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAEyd,KAAKhU,IAGhBkK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAOzJ,EAAE0O,IAAIjF,IAGfqK,aAAc,SAAU9T,EAAGyJ,GACzB,GAAe,MAAXzJ,EAAE4C,MAAe,MAAM,IAAIF,MAAM,oDACrC,GAAe,MAAX+G,EAAE7G,MAAe,MAAM,IAAIF,MAAM,oDACrC,IAAK1C,EAAE+T,UAAUtK,GAAI,MAAM,IAAI/G,MAAM,sBAErC,IAAI2X,EAAMra,EAAEoQ,QAGZ,OAFAiK,EAAIzX,MAAQ8L,EAAI2L,EAAIzX,MAAO6G,EAAE7G,OAC7ByX,EAAIqD,WAAY,EACTrD,KAIX,OAAO3L,IAQH,SAAU9Q,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAyHzCR,EAAQgB,KAAO,cACfhB,EAAQD,QAxHR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAkHvB,OA7FkB,SAAUiM,EAAaC,EAAc/d,EAAUmS,GAE/D,IAAII,EAAQuL,EAAYtL,MACpBC,EAAQqL,EAAYpL,MACpBC,EAAMmL,EAAYlL,UAElB2G,EAAUwE,EAAa/F,QACvBwB,EAASuE,EAAa7F,OACtBuB,EAAOsE,EAAa3F,KACpBhF,EAAQ2K,EAAarL,MACrBW,EAAM0K,EAAanL,UAGvB,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAAKmG,EACH,MAAM,IAAI1W,MAAM,sEAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBgG,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAEL8F,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAOjC,IAHA,IAAIU,KAGKkL,EAAI,EAAGA,EAAIF,EAAME,IAExBlL,EAAMkL,MASR,IALA,IAAI/d,KAEAuY,KAGKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAIhC,IAFA,IAAI0H,EAAO1H,EAAI,EAEN8L,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAI7f,EAAIgb,EAAO6E,GAEfle,EAAE3B,GAAK2T,EAAUU,EAAG0G,EAAQ8E,GAAI9L,EAAM/T,GAAG6T,IAAMQ,EAAGN,EAAM/T,GAAG6T,GAAIkH,EAAQ8E,IACvE3F,EAAEla,GAAKub,EAGT,IAAK,IAAInQ,EAAI,EAAGA,EAAIoU,EAAMpU,IAEpB8O,EAAE9O,KAAOmQ,EAEX/G,EAAMpJ,GAAGyI,GAAKlS,EAAEyJ,GAIhBoJ,EAAMpJ,GAAGyI,GAAKF,EAAUU,EAAG4F,EAAMlG,EAAM3I,GAAGyI,IAAMQ,EAAGN,EAAM3I,GAAGyI,GAAIoG,GAMtE,OAAO,IAAI5G,GACT7Q,KAAMgS,EACNpR,MAAOoc,EAAMC,GACbnd,SAAUwR,OAaV,SAAUvU,EAAQD,EAASQ,GAEjC,aA6GAR,EAAQgB,KAAO,cACfhB,EAAQD,QA3GR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAqGvB,OAhFkB,SAAUhS,EAAG6F,EAAG1F,EAAUmS,GAE1C,IAAI4F,EAAUlY,EAAEmY,QACZC,EAASpY,EAAEqY,OACXC,EAAOtY,EAAEuY,KACT3F,EAAQ5S,EAAE6S,MACVC,EAAM9S,EAAE+S,UAGZ,IAAKmF,EACH,MAAM,IAAIlV,MAAM,sEAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBI,EAAK7S,EAGU,iBAAR2S,IAETL,EAAKK,EAELjN,EAAInF,EAAMuS,QAAQpN,EAAG4M,GAErBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAkBjC,IAdA,IAAIU,KAEApU,EAAI,IAAIiT,GACV7Q,KAAMgS,EACNpR,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRnS,KAEAuY,KAGKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAIhC,IAFA,IAAI0H,EAAO1H,EAAI,EAEN8L,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIrG,EAAOoG,GAEfle,EAAEme,GAAKvG,EAAQsG,GACf3F,EAAE4F,GAAKvE,EAGT,IAAK,IAAIvb,EAAI,EAAGA,EAAIwf,EAAMxf,IAEd,IAAN6T,IAEFW,EAAMxU,OAGJka,EAAEla,KAAOub,EAEX/G,EAAMxU,GAAG6T,GAAKF,EAAUU,EAAGnN,EAAGvF,EAAE3B,IAAMqU,EAAG1S,EAAE3B,GAAIkH,GAI/CsN,EAAMxU,GAAG6T,GAAKF,EAAUU,EAAGnN,EAAG,GAAKmN,EAAG,EAAGnN,GAM/C,OAAO9G,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAoKzC,SAASigB,EAAqBpe,EAAGyJ,GAC/B,IAAIqM,EAAQ9V,EAAEyB,OACVsU,EAAQtM,EAAEhI,OAEd,GAAIqU,EAAMlU,SAAWmU,EAAMnU,OACzB,MAAM,IAAIL,EAAeuU,EAAMlU,OAAQmU,EAAMnU,QAIjDjE,EAAQgB,KAAO,WACfhB,EAAQD,QA5KR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAE5BkC,EAASF,EAAKhC,EAAoB,IAClCkX,EAAYlV,EAAKhC,EAAoB,KACrC+P,EAAa/N,EAAKhC,EAAoB,KAEtCkf,EAAcld,EAAKhC,EAAoB,KACvCkgB,EAAcle,EAAKhC,EAAoB,KACvCmgB,EAAcne,EAAKhC,EAAoB,KACvCof,EAAcpd,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAqCvCwQ,EAAWvO,EAAM,YAEnBoT,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,GAGboK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAEue,IAAI9U,IAGfgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAEwe,MAAM/U,IAGjBkK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAOzJ,EAAEue,IAAI9U,IAGfqK,aAAc,SAAU9T,EAAGyJ,GACzB,GAAe,MAAXzJ,EAAE4C,MACJ,MAAM,IAAIF,MAAM,oDAGlB,GAAe,MAAX+G,EAAE7G,MACJ,MAAM,IAAIF,MAAM,oDAGlB,IAAK1C,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,sBAGlB,IAAI2X,EAAMra,EAAEoQ,QAIZ,OAHAiK,EAAIzX,MAAQ+L,EAAS0L,EAAIzX,MAAO6G,EAAE7G,OAClCyX,EAAIqD,WAAY,EAETrD,GAGTJ,6BAA8B,SAAUja,EAAGyJ,GAEzC,OADA2U,EAAqBpe,EAAGyJ,GACjB6U,EAAYte,EAAGyJ,EAAGkF,IAG3BmL,4BAA6B,SAAU9Z,EAAGyJ,GAExC,OADA2U,EAAqBpe,EAAGyJ,GACjB4U,EAAY5U,EAAGzJ,EAAG2O,GAAU,IAGrCwK,4BAA6B,SAAUnZ,EAAGyJ,GAExC,OADA2U,EAAqBpe,EAAGyJ,GACjB4T,EAAYrd,EAAGyJ,EAAGkF,GAAU,IAGrCuK,2BAA4B,SAAUlZ,EAAGyJ,GAEvC,OADA2U,EAAqBpe,EAAGyJ,GACjB+T,EAAYxd,EAAGyJ,EAAGkF,IAG3B+G,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOkF,EAAStO,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGxCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOkF,EAAStO,EAAOL,GAAIyJ,IAG7B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOkF,EAAS3O,EAAGK,EAAOoJ,KAG5B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO8T,EAAYvd,EAAGkO,EAAWzE,GAAI4L,IAGvCkB,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAGkF,IAG3B6H,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO8T,EAAY9T,EAAGzJ,EAAG2O,GAAU,IAGrC8H,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAG2O,GAAU,IAGrC+H,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAGkF,GAAU,GAAO0B,WAGpDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAG2O,GAAU,GAAM0B,aAQrD,OAJA1B,EAASzN,OACPG,EAAG,oBAAsB+T,EAAMxH,UAAoB,SAAI,sBAGlDe,IAwBH,SAAU/Q,EAAQD,EAASQ,GAEjC,aA4GAR,EAAQgB,KAAO,cACfhB,EAAQD,QA1GR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aAkGxB,OA7EkB,SAAU/V,EAAG6F,EAAG1F,EAAUmS,GAE1C,IAAI4F,EAAUlY,EAAEmY,QACZC,EAASpY,EAAEqY,OACXC,EAAOtY,EAAEuY,KACT3F,EAAQ5S,EAAE6S,MACVC,EAAM9S,EAAE+S,UAGZ,IAAKmF,EACH,MAAM,IAAIlV,MAAM,sEAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,IAETL,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExB5M,EAAInF,EAAMuS,QAAQpN,EAAG4M,GAErBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAiBjC,IAbA,IAAIgG,KACAC,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIHD,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhCmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAK,IAAIoc,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAI7f,EAAIyZ,EAAOoG,GAEXO,EAAIzM,EAAUU,EAAGnN,EAAGqS,EAAQsG,IAAMxL,EAAGkF,EAAQsG,GAAI3Y,GAEhDmO,EAAG+K,EAAGnG,KAETF,EAAOzW,KAAKtD,GACZ8Z,EAAQxW,KAAK8c,KAQnB,OAHApG,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAyDAR,EAAQD,QAtDR,SAAiBuC,EAAMC,EAAQC,EAAMC,GAenC,IAAIkV,EAAiBlV,EAAM,kBAEzBoT,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,GAGboK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAE0e,IAAIjV,IAGfgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAE2e,MAAMlV,IAGjBkK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAOzJ,EAAE0e,IAAIjV,IAGfmV,gDAAiD,SAAU5e,EAAGyJ,GAC5D,IAAI4Q,EAAM5Q,EAAE2G,QAEZ,OADAiK,EAAIzX,MAAuB,OAAdyX,EAAIzX,MAAkByX,EAAIC,WAAWta,GAAKsV,EAAe+E,EAAIzX,MAAO5C,GAC1Eqa,GAGTwE,gDAAiD,SAAU7e,EAAGyJ,GAC5D,IAAI4Q,EAAMra,EAAEoQ,QAEZ,OADAiK,EAAIzX,MAAuB,OAAdyX,EAAIzX,MAAkByX,EAAIC,WAAW7Q,GAAK6L,EAAe+E,EAAIzX,MAAO6G,GAC1E4Q,GAGTvG,aAAc,SAAU9T,EAAGyJ,GACzB,OAAOzJ,EAAEqO,SAAS5E,MAKtB,OAAO6L,IAQH,SAAU1X,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MAC/BjO,EAAgBhE,EAAoB,GAAGgE,cACvC8Y,EAAkB9c,EAAoB,IAAI8c,gBAC1CC,EAAkB/c,EAAoB,IAAI+c,gBAC1C3Z,EAAiBpD,EAAoB,IA2LzC,SAAS2gB,EAAoBzf,EAAQ+C,GACnC,GAA4B,IAAxBA,EAAMX,OAAOG,OACf,MAAM,IAAIL,EAAea,EAAMX,OAAQ,GAGzC,IAAIgP,EAAMrO,EAAM2c,UAAU,GAC1B,GAAmB,iBAARtO,EACT,MAAM,IAAIlO,UAAU,2DAGtB,OAAO0Y,EAAgB5b,EAAQoR,GAWjC,SAASuO,EAAoB3f,EAAQ+C,EAAO6c,GAC1C,GAA4B,IAAxB7c,EAAMX,OAAOG,OACf,MAAM,IAAIL,EAAea,EAAMX,OAAQ,GAGzC,IAAIgP,EAAMrO,EAAM2c,UAAU,GAC1B,GAAmB,iBAARtO,EACT,MAAM,IAAIlO,UAAU,2DAItB,IAAI2c,EAAU9O,EAAM/Q,GAGpB,OAFA6b,EAAgBgE,EAASzO,EAAKwO,GAEvBC,EAGTvhB,EAAQgB,KAAO,SACfhB,EAAQD,QAhOR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAoClCghB,EAAS/e,EAAM,UAEjBgf,eAAgB,SAAUxc,EAAOR,GAC/B,IACI+c,EADI9e,EAAOuC,GACAuc,OAAO/c,GACtB,OAAOA,EAAMid,WACPF,EACAA,EAAO9O,WAGfiP,gBAAiB,SAAU1c,EAAOR,GAChC,OAAOQ,EAAMuc,OAAO/c,IAGtBmd,gBAAiBT,EAEjBU,gBAuCF,SAAuB1W,EAAK1G,GAC1B,IAAKnC,EAAKwf,QAAQrd,GAEhB,MAAM,IAAIG,UAAU,kBAEtB,GAA2B,GAAvBH,EAAMX,OAAOG,OACf,MAAM,IAAIL,EAAea,EAAMX,OAAOG,OAAQ,GAIhD,IAAI8d,EAAS5W,EAAIlH,OACjBO,EAAcC,EAAMe,MAAM,GAAIuc,GAC9Bvd,EAAcC,EAAMwH,MAAM,GAAI8V,GAE9B,IAAIC,EAAQvd,EAAM2c,UAAU,GAExBa,EAAS,GAKb,OAJAD,EAAMhd,QAAQ,SAAU8b,GACtBmB,GAAU9W,EAAI+L,OAAO4J,KAGhBmB,GAzDPC,oBAAqB,SAAUjd,EAAOR,EAAO6c,GAC3C,OAAO5e,EAAO+P,EAAMxN,IACfuc,OAAO/c,EAAO6c,OAAa7b,GAC3BiN,WAGPyP,yBAA0B,SAAUld,EAAOR,EAAO6c,EAAaxc,GAC7D,OAAOpC,EAAO+P,EAAMxN,IACfuc,OAAO/c,EAAO6c,EAAaxc,GAC3B4N,WAGP0P,qBAAsB,SAAUnd,EAAOR,EAAO6c,GAC5C,OAAOrc,EAAMwN,QAAQ+O,OAAO/c,EAAO6c,IAGrCe,0BAA2B,SAAUpd,EAAOR,EAAO6c,EAAaxc,GAC9D,OAAOG,EAAMwN,QAAQ+O,OAAO/c,EAAO6c,EAAaxc,IAGlDwd,wBAAyBC,EACzBC,gCAAiCD,EACjCE,qBAAsBpB,IAKxB,OAFAG,EAAOje,WAAQkC,EAER+b,EA2CP,SAASe,EAAcpX,EAAK1G,EAAO6c,EAAaxc,GAC9C,IAAKL,IAA2B,IAAlBA,EAAMqd,QAElB,MAAM,IAAIld,UAAU,kBAEtB,GAA2B,GAAvBH,EAAMX,OAAOG,OACf,MAAM,IAAIL,EAAea,EAAMX,OAAOG,OAAQ,GAEhD,QAAqBwB,IAAjBX,GACF,GAA4B,iBAAjBA,GAAqD,IAAxBA,EAAab,OACnD,MAAM,IAAIW,UAAU,kDAItBE,EAAe,IAGjB,IAAIkd,EAAQvd,EAAM2c,UAAU,GACxB/c,EAAM2d,EAAMle,OAAO,GAEvB,GAAIO,GAAOid,EAAYrd,OACrB,MAAM,IAAIL,EAAeoe,EAAMle,OAAO,GAAIwd,EAAYrd,QAIxD,IAAI8d,EAAS5W,EAAIlH,OACjBO,EAAcC,EAAMe,MAAM,IAC1BhB,EAAcC,EAAMwH,MAAM,IAI1B,IADA,IAAIyW,KACKhiB,EAAI,EAAGA,EAAIqhB,EAAQrhB,IAC1BgiB,EAAMhiB,GAAKyK,EAAI+L,OAAOxW,GAQxB,GALAshB,EAAMhd,QAAQ,SAAU8b,EAAGpgB,GACzBgiB,EAAM5B,GAAKQ,EAAYpK,OAAOxW,EAAE,MAI9BgiB,EAAMze,OAAS8d,EACjB,IAAKrhB,EAAIqhB,EAAS,EAAG1d,EAAMqe,EAAMze,OAAQvD,EAAI2D,EAAK3D,IAC3CgiB,EAAMhiB,KACTgiB,EAAMhiB,GAAKoE,GAKjB,OAAO4d,EAAMlb,KAAK,OAuDhB,SAAUvH,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAmHzCR,EAAQgB,KAAO,cACfhB,EAAQD,QAlHR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aA0GxB,OArFkB,SAAUkI,EAAaC,EAAc/d,EAAUmS,GAE/D,IAAII,EAAQuL,EAAYtL,MACpBC,EAAQqL,EAAYpL,MACpBC,EAAMmL,EAAYlL,UAElB2G,EAAUwE,EAAa/F,QACvBwB,EAASuE,EAAa7F,OACtBuB,EAAOsE,EAAa3F,KACpBhF,EAAQ2K,EAAarL,MACrBW,EAAM0K,EAAanL,UAGvB,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAAKmG,EACH,MAAM,IAAI1W,MAAM,sEAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KASjC,IALA,IAAIgG,KACAC,KACAC,KAGKnG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhCmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAK,IAAIoc,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAI7f,EAAIgb,EAAO6E,GAEXvE,EAAM3H,EAAUU,EAAG0G,EAAQ8E,GAAI9L,EAAM/T,GAAG6T,IAAMQ,EAAGN,EAAM/T,GAAG6T,GAAIkH,EAAQ8E,IAErExK,EAAGiG,EAAKrB,KAEXF,EAAOzW,KAAKtD,GACZ8Z,EAAQxW,KAAKgY,KAQnB,OAHAtB,EAAKyF,GAAW1F,EAAOxW,OAGhB,IAAI6T,GACTuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,OAaV,SAAUvU,EAAQD,EAASQ,GAEjC,aAGAR,EAAQiC,MAAQzB,EAAoB,GACpCR,EAAiB,QAAIQ,EAAoB,KACzCR,EAAkB,SAAIQ,EAAoB,IAC1CR,EAAQ2D,OAASnD,EAAoB,GACrCR,EAAQ0B,OAASlB,EAAoB,GACrCR,EAAQ6C,OAASrC,EAAoB,GACrCR,EAAQ2iB,QAAUniB,EAAoB,KAKhC,SAAUP,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAwHzCR,EAAQgB,KAAO,cACfhB,EAAQD,QAvHR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAkGnB6O,EAAW,SAAU/hB,EAAG0T,EAAGqG,EAAGvY,EAAG4Z,GAMnC,IAJA,IAAIZ,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KAEHiG,EAAIjF,EAAI/G,GAAI+L,EAAKhF,EAAI/G,EAAI,GAAIgM,EAAID,EAAIC,IAAK,CAEjD,IAAI7f,EAAI+D,EAAM8b,GAEd3F,EAAEla,GAAKub,EACP5Z,EAAE3B,GAAK2a,EAAOkF,KAIlB,OAjGkB,SAAU5Y,EAAGC,EAAG1F,GAEhC,IAAIyS,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAERQ,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAIId,EAiBA9T,EAAG6T,EArBH2L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBgG,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAEL8F,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAOjC,IAAIU,KAEJ,IAAKxU,EAAI,EAAGA,EAAIwf,EAAMxf,IACpBwU,EAAMxU,MAGR,IAAII,EAAI,IAAIiT,GACV7Q,KAAMgS,EACNpR,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRqO,KACAC,KAEAC,KACAC,KAGJ,IAAKzO,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5B,IAAI0H,EAAO1H,EAAI,EAMf,IAJAqO,EAASjb,EAAG4M,EAAGwO,EAAIF,EAAI5G,GAEvB2G,EAAShb,EAAG2M,EAAGyO,EAAIF,EAAI7G,GAElBvb,EAAI,EAAGA,EAAIwf,EAAMxf,IAAK,CAEzB,IAAIuiB,EAAKF,EAAGriB,KAAOub,EAAO4G,EAAGniB,GAAKia,EAC9BuI,EAAKF,EAAGtiB,KAAOub,EAAO6G,EAAGpiB,GAAKia,EAElCzF,EAAMxU,GAAG6T,GAAKQ,EAAGkO,EAAIC,IAKzB,OAAOpiB,KA2BL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MAC/B9N,EAAYnE,EAAoB,GAAGmE,UAqRvC3E,EAAQgB,KAAO,QACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QArRR,SAAkBuC,GAsBhB,SAAS6gB,EAAMC,GACb,KAAM/iB,gBAAgB8iB,GACpB,MAAM,IAAIlZ,YAAY,oDAGxB5J,KAAKgjB,eACLhjB,KAAKijB,WAAY,EAEjB,IAAK,IAAI5iB,EAAI,EAAGkG,EAAKgD,UAAU3F,OAAQvD,EAAIkG,EAAIlG,IAAK,CAClD,IAAI6iB,EAAM3Z,UAAUlJ,GAEpB,GAAI4B,EAAKkhB,QAAQD,GACfljB,KAAKgjB,YAAYrf,KAAKuf,GACtBljB,KAAKijB,WAAY,OAEd,GAAIrgB,MAAMc,QAAQwf,IAAQjhB,EAAK2V,SAASsL,GAAM,CAEjD,IAAI1iB,EAAI4iB,EAAuBF,EAAI7Q,WACnCrS,KAAKgjB,YAAYrf,KAAKnD,GAEtB,IAAIiD,EAAOjD,EAAEiD,OAEO,IAAhBA,EAAKG,QAA4B,IAAZH,EAAK,KAC5BzD,KAAKijB,WAAY,QAGhB,GAAmB,iBAARC,EACdljB,KAAKgjB,YAAYrf,KAAKyf,GAAwBF,SAE3C,CAAA,GAAmB,iBAARA,EAMd,MAAM,IAAI3e,UAAU,gEAJpBvE,KAAKgjB,YAAYrf,KAAKuf,KAe5B,SAASE,EAAuBF,GAE9B,IAAK,IAAI7iB,EAAI,EAAGC,EAAI4iB,EAAItf,OAAQvD,EAAIC,EAAGD,IACrC,GAAsB,iBAAX6iB,EAAI7iB,KAAoBiE,EAAU4e,EAAI7iB,IAC/C,MAAM,IAAIkE,UAAU,qDAIxB,OAAO,IAAItC,EAAKohB,qBAAqBH,GAoMvC,OA/MAJ,EAAMvhB,UAAUU,KAAO,QACvB6gB,EAAMvhB,UAAUkgB,SAAU,EAkB1BqB,EAAMvhB,UAAU6Q,MAAQ,WACtB,IAAIhO,EAAQ,IAAI0e,EAGhB,OAFA1e,EAAM4e,YAAc5Q,EAAMpS,KAAKgjB,aAC/B5e,EAAM6e,UAAYjjB,KAAKijB,UAChB7e,GAUT0e,EAAMQ,OAAS,SAAUP,GACvB,IAAI3e,EAAQ,IAAI0e,EAEhB,OADAA,EAAMS,MAAMnf,EAAO2e,GACZ3e,GAQT0e,EAAMvhB,UAAUkC,KAAO,WAGrB,IAFA,IAAIA,KAEKpD,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IAAK,CACzD,IAAIK,EAAIV,KAAKgjB,YAAY3iB,GACzBoD,EAAKpD,GAAmB,iBAANK,EAAkB,EAAIA,EAAE+C,OAAO,GAGnD,OAAOA,GAQTqf,EAAMvhB,UAAUqK,IAAM,WAGpB,IAFA,IAAIoP,KAEK3a,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IAAK,CACzD,IAAIshB,EAAQ3hB,KAAKgjB,YAAY3iB,GAC7B2a,EAAO3a,GAAuB,iBAAVshB,EAAsBA,EAAQA,EAAM/V,MAG1D,OAAOoP,GAQT8H,EAAMvhB,UAAU4D,IAAM,WAGpB,IAFA,IAAI6V,KAEK3a,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IAAK,CACzD,IAAIshB,EAAQ3hB,KAAKgjB,YAAY3iB,GAC7B2a,EAAO3a,GAAuB,iBAAVshB,EAAsBA,EAAQA,EAAMxc,MAG1D,OAAO6V,GAUT8H,EAAMvhB,UAAUoD,QAAU,SAAU9C,GAClC,IAAK,IAAIxB,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IACpDwB,EAAS7B,KAAKgjB,YAAY3iB,GAAIA,EAAGL,OAUrC8iB,EAAMvhB,UAAUwf,UAAY,SAAUhd,GACpC,OAAO/D,KAAKgjB,YAAYjf,IAAQ,MAOlC+e,EAAMvhB,UAAUiiB,iBAAmB,WACjC,OAAmC,IAA5BxjB,KAAKgjB,YAAYpf,QAA+C,iBAAxB5D,KAAKgjB,YAAY,IAQlEF,EAAMvhB,UAAUkiB,kBAAoB,WAClC,OAAOzjB,KAAKwjB,mBAAqBxjB,KAAKgjB,YAAY,GAAK,MAWzDF,EAAMvhB,UAAU8f,SAAW,WACzB,OAAOrhB,KAAKijB,WASdH,EAAMvhB,UAAUmiB,QAAU,WAExB,IADA,IAAI9hB,KACKvB,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IAAK,CACzD,IAAI0gB,EAAY/gB,KAAKgjB,YAAY3iB,GACjCuB,EAAM+B,KAA2B,iBAAdod,EAA0BA,EAAYA,EAAU2C,WAErE,OAAO9hB,GASTkhB,EAAMvhB,UAAU8Q,QAAUyQ,EAAMvhB,UAAUmiB,QAO1CZ,EAAMvhB,UAAUwJ,SAAW,WAGzB,IAFA,IAAI4Y,KAEKtjB,EAAI,EAAGkG,EAAKvG,KAAKgjB,YAAYpf,OAAQvD,EAAIkG,EAAIlG,IAAK,CACzD,IAAI0gB,EAAY/gB,KAAKgjB,YAAY3iB,GACR,iBAAd0gB,EACT4C,EAAQhgB,KAAKuF,KAAKC,UAAU4X,IAG5B4C,EAAQhgB,KAAKod,EAAUhW,YAI3B,MAAO,IAAM4Y,EAAQxc,KAAK,MAAQ,KASpC2b,EAAMvhB,UAAUqiB,OAAS,WACvB,OACEC,OAAQ,QACRC,WAAY9jB,KAAKgjB,cAWrBF,EAAMiB,SAAW,SAAUC,GACzB,OAAOlB,EAAMQ,OAAOU,EAAKF,aAGpBhB,IAUH,SAAUljB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAyDlCR,EAAQgB,KAAO,MACfhB,EAAQD,QAxDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAyBpC,IAAIoI,EAAMpI,EAAM,OACdkB,OAAU4B,KAAKsF,IAEfyZ,QAAW,SAAUjiB,GACnB,OAAOA,EAAEwI,OAGX0Z,UAAa,SAAUliB,GACrB,OAAOA,EAAEwI,OAGX2Z,SAAY,SAAUniB,GACpB,OAAOA,EAAEwI,OAGX4Z,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAGwI,GAAK,IAGzB6Z,KAAQ,SAASriB,GACf,OAAOA,EAAEwI,SAMb,OAFAA,EAAItH,OAASE,EAAG,6BAEToH,IASH,SAAU5K,EAAQD,EAASQ,GAEjC,aAGA,IAAIyB,EAAQzB,EAAoB,GAmDhCR,EAAQgB,KAAO,OACfhB,EAAQD,QAlDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAyBlCsD,EAAOrB,EAAM,QACfU,OAAU,SAAUd,GAElB,OAAOK,EAAOL,EAAEyB,SAGlBb,MAAShB,EAAM6B,KAEfjB,OAAU,SAAUR,GAClB,MAA0B,UAAlBE,EAAOG,QAAuBL,EAAE4B,QAAUvB,GAAQL,EAAE4B,UAG9D0gB,uDAAwD,SAAUtiB,GAEhE,MAA0B,UAAlBE,EAAOG,UAA2BA,SAM9C,OAFAoB,EAAKP,WAAQkC,EAEN3B,IASH,SAAU7D,EAAQD,EAASQ,GAEjC,aAGA,IAAIokB,EAAcpkB,EAAoB,KAuQtCR,EAAQgB,KAAO,iBACfhB,EAAQD,QAtQR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIoiB,EAAYriB,EAAKhC,EAAoB,KACrCskB,EAAUtiB,EAAKhC,EAAoB,KAEnCukB,EAAkBD,EAAQzL,WAAW,mBA0DrC2L,EAAiBviB,EAAM,kBACzBwW,WAAY,SAAU5W,EAAGyJ,GACvB,IAEIhL,EAyLsBuB,EAAGyJ,EA3LzBmZ,EAAQJ,EAAUxiB,GAClB6iB,EAAQL,EAAU/Y,GAItB,KAAe,WAAVmZ,GAAgC,cAAVA,GAAmC,aAAVA,GACrC,WAAVC,GAAgC,cAAVA,GAAmC,aAAVA,GAElD,MAAqB,OADrBpkB,EAAIgkB,EAAQziB,EAAGyJ,IACTV,WAEGtK,EAAI,EAAI,GAAK,EAGb8jB,EAAYK,EAAOC,GAK9B,GAAc,UAAVD,GAA+B,WAAVA,GACX,UAAVC,GAA+B,WAAVA,EAEvB,OAAU,KADVpkB,EA6DN,SAASqkB,EAA0B9iB,EAAGyJ,GACpC,OAAIxJ,EAAK8iB,eAAe/iB,IAAMC,EAAK8iB,eAAetZ,GACzCuZ,EAAchjB,EAAE4hB,SAAS5I,OAAQvP,EAAEmY,SAAS5I,QAEjD/Y,EAAK8iB,eAAe/iB,GAEf8iB,EAAyB9iB,EAAE0hB,UAAWjY,GAE3CxJ,EAAK8iB,eAAetZ,GAEfqZ,EAAyB9iB,EAAGyJ,EAAEiY,WAInCzhB,EAAKgjB,cAAcjjB,GACd8iB,EAAyB9iB,EAAE4hB,SAAS/gB,KAAM4I,GAE/CxJ,EAAKgjB,cAAcxZ,GACdqZ,EAAyB9iB,EAAGyJ,EAAEmY,SAAS/gB,MAI3CD,MAAMc,QAAQ1B,GAGdY,MAAMc,QAAQ+H,GAIZuZ,EAAchjB,EAAGyJ,GAHfqZ,EAAyB9iB,GAAIyJ,IAH7BqZ,GAA0B9iB,GAAIyJ,GApF/BqZ,CAA0B9iB,EAAGyJ,IAExBhL,EAGA8jB,EAAYK,EAAOC,GAK9B,GAAID,IAAUC,EACZ,OAAON,EAAYK,EAAOC,GAG5B,GAAc,YAAVD,EACF,OAwJ2BnZ,EAxJKA,GAwJRzJ,EAxJKA,GAyJ7BkjB,GAAKzZ,EAAEyZ,GAAa,EACtBljB,EAAEkjB,GAAKzZ,EAAEyZ,IAAc,EAEvBljB,EAAEmjB,GAAK1Z,EAAE0Z,GAAa,EACtBnjB,EAAEmjB,GAAK1Z,EAAE0Z,IAAc,EAEpB,EA5JH,GAAc,SAAVP,EACF,OAAI5iB,EAAE+T,UAAUtK,GACPkZ,EAAe3iB,EAAE4C,MAAO6G,EAAE7G,OAI5BogB,EAAchjB,EAAEojB,cAAe3Z,EAAE2Z,eAG1C,GAAc,YAAVR,EACF,OAAOF,EAAgB1iB,EAAGyJ,GAG5B,GAAc,WAAVmZ,EACF,OAAOL,EAAYviB,EAAGyJ,GAGxB,GAAc,WAAVmZ,EACF,OA+FN,SAAyB5iB,EAAGyJ,GAC1B,IAAI4Z,EAAQvkB,OAAOwkB,KAAKtjB,GACpBujB,EAAQzkB,OAAOwkB,KAAK7Z,GAGxB4Z,EAAMG,KAAKjB,GACXgB,EAAMC,KAAKjB,GACX,IAAI9jB,EAAIukB,EAAcK,EAAOE,GAC7B,GAAU,IAAN9kB,EACF,OAAOA,EAIT,IAAK,IAAIJ,EAAI,EAAGA,EAAIglB,EAAMzhB,OAAQvD,IAAK,CACrC,IAAIogB,EAAIkE,EAAe3iB,EAAEqjB,EAAMhlB,IAAKoL,EAAE8Z,EAAMllB,KAC5C,GAAU,IAANogB,EACF,OAAOA,EAIX,OAAO,EAnHIgF,CAAezjB,EAAGyJ,GAG3B,GAAc,SAAVmZ,EACF,OAAO,EAGT,GAAc,cAAVA,EACF,OAAO,EAIT,MAAM,IAAIrgB,UAAU,8BAAgCqgB,EAAQ,QAwDhE,SAASI,EAAehjB,EAAGyJ,GAEzB,IAAK,IAAIpL,EAAI,EAAGkG,EAAKrB,KAAKC,IAAInD,EAAE4B,OAAQ6H,EAAE7H,QAASvD,EAAIkG,EAAIlG,IAAK,CAC9D,IAAIogB,EAAIkE,EAAe3iB,EAAE3B,GAAIoL,EAAEpL,IAC/B,GAAU,IAANogB,EACF,OAAOA,EAKX,OAAIze,EAAE4B,OAAS6H,EAAE7H,OAAiB,EAC9B5B,EAAE4B,OAAS6H,EAAE7H,QAAkB,EAG5B,EAoCT,OAtGA+gB,EAAezhB,WAAQkC,EAsGhBuf,IA6BH,SAAU/kB,EAAQD,GAexBA,EAAQ+lB,QAAU,SAASzS,EAAI0S,GAC7B,OAAO,SAASD,IACe,iBAAlBA,EAAQE,QACjBF,EAAQE,UAIV,IADA,IAAI5H,KACK3d,EAAI,EAAGA,EAAIkJ,UAAU3F,OAAQvD,IACpC2d,EAAK3d,GAAKkJ,UAAUlJ,GAGtB,IAAIwlB,EAAOF,EAASA,EAAO3H,GAAQ9U,KAAKC,UAAU6U,GAClD,OAAM6H,KAAQH,EAAQE,MAGfF,EAAQE,MAAMC,GAFZH,EAAQE,MAAMC,GAAQ5S,EAAGsQ,MAAMtQ,EAAI+K,KAYhDre,EAAQmmB,iBAAmB,SAAU7S,GACnC,OAAOnS,OAAOwkB,KAAKrS,EAAG+F,gBACjBpT,OAAO,SAAUoY,EAAM+H,GACtB,IAAIve,GAASue,EAAUtc,MAAM,WAAa7F,OAAS,EACnD,OAAOsB,KAAK0G,IAAIoS,EAAMxW,KACpB,IASV7H,EAAQqmB,2BAA6B,SAAU/S,EAAI+K,EAAMiI,GACvD,OAAOnlB,OAAOwkB,KAAKrS,EAAG+F,gBACjBpT,OAAO,SAAUoY,EAAM+H,GACtB,IAAIve,GAASue,EAAUtc,MAAM,WAAa7F,OAAS,EACnD,OAAOsB,KAAK0G,IAAIoS,EAAMxW,KACpB,KAMJ,SAAU5H,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IA8GzCR,EAAQgB,KAAO,cACfhB,EAAQD,QA7GR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAuGvB,OAlFkB,SAAUiM,EAAaC,EAAc/d,EAAUmS,GAE/D,IAAII,EAAQuL,EAAYtL,MACpBC,EAAQqL,EAAYpL,MACpBC,EAAMmL,EAAYlL,UAElB2G,EAAUwE,EAAa/F,QACvBwB,EAASuE,EAAa7F,OACtBuB,EAAOsE,EAAa3F,KACpBhF,EAAQ2K,EAAarL,MACrBW,EAAM0K,EAAanL,UAGvB,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAAKmG,EACH,MAAM,IAAI1W,MAAM,sEAGlB,IASIrE,EAAG6T,EATH2L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAGhBH,EAAoB,iBAARK,GAAoBA,IAAQU,EAAMV,OAAMpP,EAEpDsP,EAAKP,EAAK/R,EAAMwS,KAAK/S,GAAWsS,EAAIA,IAAOtS,EAM3CgT,KAEJ,IAAKxU,EAAI,EAAGA,EAAIwf,EAAMxf,IACpBwU,EAAMxU,MAGR,IAAI2B,KAEAuY,KAGJ,IAAKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAI5B,IAFA,IAAI0H,EAAO1H,EAAI,EAEN8L,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAIvDle,EAFA3B,EAAIgb,EAAO6E,IAEJlM,EAAUU,EAAG0G,EAAQ8E,GAAI9L,EAAM/T,GAAG6T,IAAMQ,EAAGN,EAAM/T,GAAG6T,GAAIkH,EAAQ8E,IAEvE3F,EAAEla,GAAKub,EAGT,IAAKvb,EAAI,EAAGA,EAAIwf,EAAMxf,IAEhBka,EAAEla,KAAOub,EAEX/G,EAAMxU,GAAG6T,GAAKlS,EAAE3B,GAIhBwU,EAAMxU,GAAG6T,GAAKE,EAAM/T,GAAG6T,GAM7B,OAAO,IAAIR,GACT7Q,KAAMgS,EACNpR,MAAOoc,EAAMC,GACbnd,SAAUwR,OAaV,SAAUvU,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IA2IzCR,EAAQgB,KAAO,SACfhB,EAAQD,QA1IR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCiX,EAAQjX,EAAoB,GAiC5BgR,EAAS/O,EAAM,UAEjBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,EAAIyJ,GAGb+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,IAAMD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,UAG5C+J,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAEokB,GAAG3a,KAAO4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,UAGjDiK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAwB,IAAjBzJ,EAAEyiB,QAAQhZ,IAGnBoK,mBAAoB,WAClB,MAAM,IAAItR,UAAU,wDAGtBuR,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAOyM,EAAOnP,EAAE4C,MAAO6G,EAAE7G,QAG3BqX,6BAA8B,SAASja,EAAGyJ,GACxC,OAAOya,EAAYlkB,EAAGyJ,EAAG0F,IAG3B2K,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGmP,GAAQ,IAGnCgK,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAG0F,GAAQ,IAGnC+J,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAG0F,IAG3BuG,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAO0F,EAAO9O,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGtCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAO0F,EAAO9O,EAAOL,GAAIyJ,IAG3B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAO0F,EAAOnP,EAAGK,EAAOoJ,KAG1B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAG0F,GAAQ,IAGnCoH,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG0F,GAAQ,IAGnCqH,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGmP,GAAQ,IAGnCsH,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGmP,GAAQ,IAGnCuH,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG0F,GAAQ,GAAOkB,WAGlDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGmP,GAAQ,GAAMkB,aAQnD,OAJAlB,EAAOjO,OACLG,EAAG,oBAAsB+T,EAAMxH,UAAkB,OAAI,sBAGhDuB,IASH,SAAUvR,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAkElCR,EAAQgB,KAAO,aACfhB,EAAQD,QAjER,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAyB5B+P,EAAa9N,EAAM,cACrBkB,OAAU,SAAUtB,GAClB,OAAQA,GAGViiB,QAAW,SAAUjiB,GACnB,OAAOA,EAAEqkB,OAGXnC,UAAa,SAAUliB,GACrB,OAAOA,EAAEqkB,OAGXlC,SAAY,SAAUniB,GACpB,OAAOA,EAAEqkB,OAGXhC,KAAQ,SAAUriB,GAChB,IAAIqa,EAAMra,EAAEoQ,QAEZ,OADAiK,EAAIzX,MAAQsL,EAAWlO,EAAE4C,OAClByX,GAGT+H,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAGkO,GAAY,MAUlC,OAJAA,EAAWhN,OACTE,EAAGgU,EAAMxH,UAAsB,WAAI,6BAG9BM,IASH,SAAUtQ,EAAQD,EAASQ,GAyCjCR,EAAQD,QArCR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkkB,EAAUnkB,EAAKhC,EAAoB,KAYvC,OAAO,SAA6BomB,EAAKC,EAAQ5hB,GAE/C,IAAI6hB,EAEJ,OAAgD,IAA5C/c,OAAO6c,GAAKvc,QAAQ,oBACtByc,EAAUld,UAAU3F,OAAS,EACvB,WAAa0iB,EAAQ1hB,GAAS,YAAcsE,KAAKC,UAAUvE,GAAS,IACpE,WAAa2hB,EAAI1jB,KAAKiU,OAAS,IAE9B,IAAIvS,UAAU,oBAAsBiiB,EAAS,gCAAkCC,KAGxC,IAA5C/c,OAAO6c,GAAKvc,QAAQ,oBACtByc,EAAUld,UAAU3F,OAAS,EACvB,WAAa0iB,EAAQ1hB,GAAS,YAAcsE,KAAKC,UAAUvE,GAAS,IACpE,GAEC,IAAIL,UAAU,oBAAsBiiB,EAAS,wDAA0DC,IAGzGF,KASL,SAAU3mB,EAAQD,EAASQ,GAEjC,aAYAP,EAAOD,QAAU,SAAqBqC,EAAGyJ,EAAGC,GAE1C,GAAe,MAAXA,EACF,OAAO1J,EAAE0T,GAAGjK,GAKd,GAAIzJ,EAAE0T,GAAGjK,GACP,OAAO,EAIT,GAAIzJ,EAAEiG,SAAWwD,EAAExD,QACjB,OAAO,EAIT,GAAGjG,EAAE4F,YAAc6D,EAAE7D,WAAY,CAE/B,IAAI+D,EAAO3J,EAAEwe,MAAM/U,GAAGjB,MACtB,GAAImB,EAAK+a,SACP,OAAO,EAIP,IAAI9a,EAAM5J,EAAE6Q,YAAYjH,IAAI5J,EAAEwI,MAAOiB,EAAEjB,OACvC,OAAOmB,EAAKgb,IAAI/a,EAAI+U,MAAMjV,IAK9B,OAAO,IAMH,SAAU9L,EAAQD,EAASQ,GAEjC,aA6GAR,EAAQgB,KAAO,cACfhB,EAAQD,QA3GR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIsR,EAAczR,EAAKyR,YAqGvB,OAhFkB,SAAUhS,EAAG6F,EAAG1F,EAAUmS,GAE1C,IAAI4F,EAAUlY,EAAEmY,QACZC,EAASpY,EAAEqY,OACXC,EAAOtY,EAAEuY,KACT3F,EAAQ5S,EAAE6S,MACVC,EAAM9S,EAAE+S,UAGZ,IAAKmF,EACH,MAAM,IAAIlV,MAAM,sEAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBI,EAAK7S,EAGU,iBAAR2S,IAETL,EAAKK,EAELjN,EAAInF,EAAMuS,QAAQpN,EAAG4M,GAErBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAkBjC,IAdA,IAAIU,KAEApU,EAAI,IAAIiT,GACV7Q,KAAMgS,EACNpR,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRnS,KAEAuY,KAGKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAIhC,IAFA,IAAI0H,EAAO1H,EAAI,EAEN8L,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIrG,EAAOoG,GAEfle,EAAEme,GAAKvG,EAAQsG,GACf3F,EAAE4F,GAAKvE,EAGT,IAAK,IAAIvb,EAAI,EAAGA,EAAIwf,EAAMxf,IAEd,IAAN6T,IAEFW,EAAMxU,OAGJka,EAAEla,KAAOub,EAEX/G,EAAMxU,GAAG6T,GAAKF,EAAUU,EAAGnN,EAAGvF,EAAE3B,IAAMqU,EAAG1S,EAAE3B,GAAIkH,GAI/CsN,EAAMxU,GAAG6T,GAAK3M,EAMpB,OAAO9G,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IA2IzCR,EAAQgB,KAAO,UACfhB,EAAQD,QA1IR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCiX,EAAQjX,EAAoB,GAiC5B+Q,EAAU9O,EAAM,WAElBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,EAAIyJ,GAGb+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,EAAIyJ,IAAMD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,UAG5C+J,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAE4kB,GAAGnb,KAAO4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,UAGjDiK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAyB,IAAlBzJ,EAAEyiB,QAAQhZ,IAGnBoK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,MAAM,IAAIlH,UAAU,wDAGtBuR,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAOwM,EAAQlP,EAAE4C,MAAO6G,EAAE7G,QAG5BqX,6BAA8B,SAASja,EAAGyJ,GACxC,OAAOya,EAAYlkB,EAAGyJ,EAAGyF,IAG3B4K,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGkP,GAAS,IAGpCiK,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAGyF,GAAS,IAGpCgK,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAGyF,IAG3BwG,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOyF,EAAQ7O,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGvCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOyF,EAAQ7O,EAAOL,GAAIyJ,IAG5B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOyF,EAAQlP,EAAGK,EAAOoJ,KAG3B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAGyF,GAAS,IAGpCqH,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAGyF,GAAS,IAGpCsH,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGkP,GAAS,IAGpCuH,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGkP,GAAS,IAGpCwH,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAGyF,GAAS,GAAOmB,WAGnDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGkP,GAAS,GAAMmB,aAQpD,OAJAnB,EAAQhO,OACNG,EAAG,oBAAsB+T,EAAMxH,UAAmB,QAAI,sBAGjDsB,IASH,SAAUtR,EAAQD,EAASQ,GAEjC,aAGA,IAAImE,EAAYnE,EAAoB,GAAGmE,UACnCb,EAAOtD,EAAoB,GAAGsD,KAoMlC9D,EAAQgB,KAAO,MACfhB,EAAQD,QAnMR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAC5B0mB,EAAM1kB,EAAKhC,EAAoB,KAC/BkQ,EAAWlO,EAAKhC,EAAoB,KACpCkC,EAASF,EAAKhC,EAAoB,IAClCqW,EAAWrU,EAAKhC,EAAoB,KACpCmD,EAASnB,EAAKhC,EAAoB,KAkClC4P,EAAM3N,EAAM,OACdoT,iBAAkBsR,EAElBjR,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAOzJ,EAAE+N,IAAItE,IAGfgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAIA,EAAEnH,aAAetC,GAAK,GAAKE,EAAO6kB,YAC7B/kB,EAAE+N,IAAItE,GAGN,IAAIxJ,EAAKgiB,QAAQjiB,EAAEglB,WAAY,GAAGjX,IAAItE,EAAEub,WAAY,IAI/DrR,qBAAsB,SAAU3T,EAAGyJ,GACjC,GAAY,IAARA,EAAE/K,EAAS,CACb,GAAIwB,EAAO6kB,YACT,MAAM,IAAIriB,MAAM,sEAGhB,OAAOoiB,EAAK9kB,EAAEqQ,UAAW5G,EAAE4G,WAI7B,OAAOrQ,EAAE+N,IAAItE,IAIjBwb,gBAAiBC,EAEjBC,mBAAoB,SAAUnlB,EAAGyJ,GAC/B,OAAOyb,EAAUllB,EAAGyJ,EAAEub,aAGxBI,iBAAkBC,EAElBC,oBAAqB,SAAUtlB,EAAGyJ,GAChC,OAAO4b,EAAWrlB,EAAGyJ,EAAEub,aAGzBO,eAAgB,SAAUvlB,EAAGyJ,GAC3B,OAAOzJ,EAAE+N,IAAItE,MAYjB,SAASqb,EAAK9kB,EAAGyJ,GAIf,GAAIvJ,EAAO6kB,cAAgBziB,EAAUmH,IAAMzJ,EAAI,EAE7C,IACE,IAAIwlB,EAAQhR,EAAS/K,GACjBgc,EAAOnkB,EAAOkkB,GAClB,IAAG/b,IAAMgc,GAAQviB,KAAKsF,KAAKiB,EAAIgc,GAAQhc,GAAK,QACvC+b,EAAM9mB,EAAI,GAAM,EACjB,OAAQ8mB,EAAMrmB,EAAI,GAAM,EAAI,GAAK,GAAK+D,KAAK6K,KAAK/N,EAAGyJ,GAIzD,MAAOic,IAUT,OAAK1lB,EAAEA,EAAI,GAAKyJ,IAAOzD,EAAAA,GAClBhG,EAAEA,EAAI,GAAKyJ,KAAM,EAAA,EACb,EAMLvJ,EAAO6kB,cACL/kB,GAAK,GAAcyJ,IAAOzD,EAAAA,GAC1BhG,GAAK,GAAKA,EAAI,GAAKyJ,KAAM,EAAA,GACtBkc,IAGLrjB,EAAUmH,IAAMzJ,GAAK,GAAKE,EAAO6kB,YAC5B7hB,KAAK6K,IAAI/N,EAAGyJ,GAGZ,IAAIxJ,EAAKgiB,QAAQjiB,EAAG,GAAG+N,IAAItE,EAAG,GAWzC,SAASyb,EAAUllB,EAAGyJ,GACpB,IAAKnH,EAAUmH,IAAMA,EAAI,EACvB,MAAM,IAAIlH,UAAU,mDAAqDkH,EAAI,KAG/E,IAAI/J,EAAI+B,EAAKzB,GACb,GAAgB,GAAZN,EAAEkC,OACJ,MAAM,IAAIc,MAAM,2CAA6ChD,EAAEkC,OAAS,gBAE1E,GAAIlC,EAAE,IAAMA,EAAE,GACZ,MAAM,IAAIgD,MAAM,sCAAwChD,EAAE,GAAK,IAAMA,EAAE,GAAK,KAK9E,IAFA,IAAI2a,EAAMwK,EAAInlB,EAAE,IAAI2Q,UAChBuV,EAAK5lB,EACFyJ,GAAK,GACK,IAAN,EAAJA,KACH4Q,EAAMhM,EAASuX,EAAIvL,IAErB5Q,IAAM,EACNmc,EAAKvX,EAASuX,EAAIA,GAEpB,OAAOvL,EAUT,SAASgL,EAAYrlB,EAAGyJ,GACtB,OAAOpJ,EAAO6kB,EAAUllB,EAAEqQ,UAAW5G,IASvC,OAJAsE,EAAI7M,OACFG,EAAG,4BAA8B+T,EAAMxH,UAAe,IAAI,gBAGrDG,IASH,SAAUnQ,EAAQD,EAASQ,GAEjC,aAGA,IAAImE,EAAYnE,EAAoB,GAAGmE,UACnCE,EAASrE,EAAoB,GAAGqE,OAiIpC7E,EAAQgB,KAAO,QACfhB,EAAQD,QAhIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAiClCwH,EAAQvF,EAAM,SAChBE,GAAI,WACF,MAA0B,UAAlBJ,EAAOG,OACTwlB,MACAA,KAAW,YAKnBC,iCAAkC,SAAUrkB,GAE1C,MAAoB,iBADTA,EAAKA,EAAKG,OAAS,GAGrBikB,EAAOpkB,EADDA,EAAK2H,OAGO,UAAlBlJ,EAAOG,OACPwlB,EAAOpkB,GAGPokB,EAAOpkB,EAAM,YAIxBb,MAASilB,EAET/kB,OAAU,SAAUW,GAClB,IAAIhB,EAASgB,EAAKV,UAClB,OAAO8kB,EAAOpkB,EAAK4O,UAAW5P,IAGhCO,yBAA0B,SAAUS,EAAMhB,GACxC,OAAOolB,EAAQpkB,EAAK4O,UAAW5P,MAMnC,OAFAkF,EAAMzE,WAAQkC,EAEPuC,EASP,SAASkgB,EAAOpkB,EAAMhB,GACpB,IAwBIslB,EAvBAtjB,GAuBAsjB,GAAgB,EAxBWtkB,EAyB1BkB,QAAQ,SAAUC,EAAOR,EAAOuB,GAC/B1D,EAAKkQ,YAAYvN,KACnBmjB,GAAgB,EAChBpiB,EAAIvB,GAASQ,EAAMoiB,cAGhBe,EA9B4B,IAAI9lB,EAAKiiB,UAAU,GAAK,GAG3D,GAFUzgB,EAkCLkB,QAAQ,SAAUC,GACrB,GAAqB,iBAAVA,IAAuBN,EAAUM,IAAUA,EAAQ,EAC5D,MAAM,IAAIF,MAAM,4DAlChBjC,EAAQ,CAEV,IAAIjC,EAAI6B,EAAOI,GACf,OAAIgB,EAAKG,OAAS,EACTpD,EAAEgE,OAAOf,EAAMgB,GAEjBjE,EAIP,IAAImF,KACJ,OAAIlC,EAAKG,OAAS,EACTY,EAAOmB,EAAKlC,EAAMgB,GAEpBkB,KAkCP,SAAU/F,EAAQD,EAASQ,GAEjC,aAGA,IAAI6nB,EAAiB7nB,EAAoB,IACrCwB,EAAUxB,EAAoB,GAspDlCR,EAAQgB,KAAO,QACfhB,EAAQ2T,KAAO,aACf3T,EAAQD,QAtpDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI6lB,EAAU9lB,EAAKhC,EAAoB,KAEnC+nB,EAA0B/lB,EAAKhC,EAAoB,MACnDgoB,EAA0BhmB,EAAKhC,EAAoB,MACnDioB,EAA0BjmB,EAAKhC,EAAoB,MACnDkoB,EAA0BlmB,EAAKhC,EAAoB,MACnDmoB,EAA0BnmB,EAAKhC,EAAoB,MACnDooB,EAA0BpmB,EAAKhC,EAAoB,KACnDqoB,EAA0BrmB,EAAKhC,EAAoB,MACnDsoB,EAA0BtmB,EAAKhC,EAAoB,KACnDuoB,EAA0BvmB,EAAKhC,EAAoB,MACnDwoB,EAA0BxmB,EAAKhC,EAAoB,KACnDyoB,EAA0BzmB,EAAKhC,EAAoB,KACnD0oB,EAA0B1mB,EAAKhC,EAAoB,KACnD2oB,EAA0B3mB,EAAKhC,EAAoB,MACnD4oB,EAA0B5mB,EAAKhC,EAAoB,KAkCvD,SAAS6oB,EAAOpL,EAAM7V,GACpB,GAAyB,IAArBwB,UAAU3F,QAAqC,IAArB2F,UAAU3F,OACtC,MAAM,IAAIokB,EAAe,QAASze,UAAU3F,OAAQ,EAAG,GAMzD,GAFAqlB,EAAelhB,GAAWA,EAAQ2W,MAAS3W,EAAQ2W,SAE/B,iBAATd,EAGT,OADAE,EAAaF,EACNsL,IAEJ,GAAItmB,MAAMc,QAAQka,IAASA,aAAgB3b,EAAKa,OAEnD,OAAOnB,EAAQic,EAAM,SAAU9Y,GAC7B,GAAoB,iBAATA,EAAmB,MAAM,IAAIP,UAAU,mBAGlD,OADAuZ,EAAahZ,EACNokB,MAKT,MAAM,IAAI3kB,UAAU,6BAKxB,IAAI4kB,GACFC,KAAO,EACPC,UAAY,EACZC,OAAS,EACTC,OAAS,EACTC,QAAU,GAIRC,GACFC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAM,EACNC,KAAK,EAELC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,KAAM,EACNC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,MAAM,EAENC,MAAM,EACNC,MAAM,EACNC,OAAO,GAILC,GACFrb,KAAO,EACPG,IAAM,EACNmb,IAAM,EACNta,KAAO,EACPC,KAAO,EACPC,IAAM,EACNvB,KAAO,GAGL4b,GACF3c,MAAQ,EACRC,OAAS,EACT2c,KAAQ,KACR7mB,eAAaA,GAGX8mB,GACF,MACA,YAGEjD,KACAnL,EAAa,GACbH,EAAU,GACVvZ,EAAQ,EACR3D,EAAI,GACJ0rB,EAAQ,GACRC,EAAajD,EAAUC,KACvBiD,EAAgB,EAChBC,EAAoB,KACpBC,KAqBJ,SAAS/lB,IACPpC,IACA3D,EAAIqd,EAAWjH,OAAOzS,GAQxB,SAASooB,IACP,OAAO1O,EAAWjH,OAAOzS,EAAQ,GAQnC,SAASqoB,IACP,OAAO3O,EAAWjH,OAAOzS,EAAQ,GAgBnC,SAASsoB,IACPH,EAAY5oB,MACVyoB,WAAYA,EACZD,MAAOA,EACPxO,QAASA,EACTvZ,MAAOA,EACP3D,EAAGA,IAQP,SAASksB,IACP,IAAIC,EAAgBL,EAAYnhB,MAChCghB,EAAaQ,EAAcR,WAC3BD,EAAQS,EAAcT,MACtBxO,EAAUiP,EAAcjP,QACxBvZ,EAAQwoB,EAAcxoB,MACtB3D,EAAImsB,EAAcnsB,EAgBpB,SAASosB,IAOP,IANAT,EAAajD,EAAUC,KACvB+C,EAAQ,GACRxO,EAAU,GAIHqL,EAAM8D,aAAarsB,EAAG4rB,IAC3B7lB,IAIF,GAAU,MAAN/F,EACF,KAAa,OAANA,GAAoB,KAANA,GACnBkd,GAAWld,EACX+F,IAKJ,GAAU,KAAN/F,EAAJ,CAOA,GAAU,OAANA,IAAe4rB,EAIjB,OAHAD,EAAajD,EAAUE,UACvB8C,EAAQ1rB,OACR+F,IAKF,IAAIumB,EAAKtsB,EAAIgsB,IACTO,EAAKD,EA/EFjP,EAAWjH,OAAOzS,EAAQ,GAgFjC,GAAkB,IAAd4oB,EAAGppB,QAAgB6lB,EAAWuD,GAMhC,OALAZ,EAAajD,EAAUE,UACvB8C,EAAQa,EACRxmB,IACAA,SACAA,IAKF,GAAkB,IAAdumB,EAAGnpB,QAAgB6lB,EAAWsD,GAKhC,OAJAX,EAAajD,EAAUE,UACvB8C,EAAQY,EACRvmB,SACAA,IAKF,GAAIijB,EAAWhpB,GAIb,OAHA2rB,EAAajD,EAAUE,UACvB8C,EAAQ1rB,OACR+F,IAKF,GAAIwiB,EAAMiE,WAAWxsB,GAArB,CAIE,GAHA2rB,EAAajD,EAAUG,OAGb,MAAN7oB,EACF0rB,GAAS1rB,EACT+F,IAEKwiB,EAAMkE,QAAQzsB,KAEjB2rB,EAAajD,EAAUE,eAGtB,CACH,KAAOL,EAAMkE,QAAQzsB,IACnB0rB,GAAS1rB,EACT+F,IAEEwiB,EAAMmE,cAAc1sB,EAAGgsB,OACzBN,GAAS1rB,EACT+F,KAGJ,KAAOwiB,EAAMkE,QAAQzsB,IACnB0rB,GAAS1rB,EACT+F,IAKF,GADAumB,EAAKN,IACK,MAANhsB,GAAmB,MAANA,EACf,GAAIuoB,EAAMkE,QAAQH,IAAc,MAAPA,GAAqB,MAAPA,EAAY,CAUjD,GATAZ,GAAS1rB,EACT+F,IAEU,MAAN/F,GAAmB,MAANA,IACf0rB,GAAS1rB,EACT+F,MAIGwiB,EAAMkE,QAAQzsB,GACjB,MAAM2sB,GAAkB,wBAA0B3sB,EAAI,KAGxD,KAAOuoB,EAAMkE,QAAQzsB,IACnB0rB,GAAS1rB,EACT+F,IAGF,GAAIwiB,EAAMmE,cAAc1sB,EAAGgsB,KACzB,MAAMW,GAAkB,wBAA0B3sB,EAAI,UAGrD,GAAW,MAAPssB,EAEP,MADAvmB,IACM4mB,GAAkB,wBAA0B3sB,EAAI,SAxD5D,CAgEA,IAAIuoB,EAAMqE,QAAQ5sB,EAAG+rB,IAAeC,KAApC,CAkBA,IADAL,EAAajD,EAAUK,QACV,KAAN/oB,GACL0rB,GAAS1rB,EACT+F,IAEF,MAAM4mB,GAAkB,yBAA2BjB,EAAQ,KArBzD,KAAOnD,EAAMqE,QAAQ5sB,EAAG+rB,IAAeC,MAAkBzD,EAAMkE,QAAQzsB,IACrE0rB,GAAS1rB,EACT+F,IAIA4lB,EADEN,EAAiBtqB,eAAe2qB,GACrBhD,EAAUE,UAGVF,EAAUI,aApHzB6C,EAAajD,EAAUE,UAsI3B,SAASiE,IACP,KACET,IAEe,OAAVV,KAOT,SAASoB,IACPlB,IAOF,SAASmB,IACPnB,IAsGF,SAASnD,IA1WP9kB,EAAQ,EACR3D,EAAIqd,EAAWjH,OAAO,GACtBwV,EAAgB,EAChBC,EAAoB,KA2WpBO,IAEA,IAAIxO,EA0BN,WACE,IAAIA,EAEAoP,EADAC,KASJ,IANc,KAAVvB,GAA0B,OAAVA,GAA4B,MAAVA,KACpC9N,EAAOsP,KACFhQ,QAAUA,GAIA,OAAVwO,GAA4B,MAAVA,GACD,IAAlBuB,EAAO9pB,QAAgBya,IACzBoP,EAAqB,MAAVtB,EACXuB,EAAO/pB,MACL0a,KAAMA,EACNoP,QAASA,KAIbZ,IACc,OAAVV,GAA4B,MAAVA,GAA2B,KAAVA,KACrC9N,EAAOsP,KACFhQ,QAAUA,EAEf8P,EAAqB,MAAVtB,EACXuB,EAAO/pB,MACL0a,KAAMA,EACNoP,QAASA,KAKf,OAAIC,EAAO9pB,OAAS,EACX,IAAIykB,EAAUqF,IAGhBrP,KACHA,EAAO,IAAIkK,OAAanjB,IACnBuY,QAAUA,GAGVU,GApEEuP,GAIX,GAAc,KAAVzB,EACF,MAAIC,IAAejD,EAAUE,UAIrBwE,GAAY,uBAAyB1B,GAGrCiB,GAAkB,oBAAsBjB,EAAQ,KAI1D,OAAO9N,EAgET,SAASsP,IACP,IAAIhtB,EAAMqd,EAAMpZ,EAAOkpB,EAEnBzP,EAsDN,WAGE,IAFA,IAAIA,EAiCN,WAGE,IAFA,IAAIA,EAAO0P,IAEM,OAAV5B,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,KAAM,MAAOtK,EAAM0P,MAG7C,OAAO1P,EAzCI2P,GAEM,MAAV7B,GAAe,CAGpB,IAAItmB,EAAOymB,EACXA,EAAoBD,EACpBiB,IAEA,IAAIW,EAAY5P,EACZ6P,EAAWP,IAEf,GAAc,MAAVxB,EAAe,MAAMiB,GAAkB,iDAE3Cd,EAAoB,KACpBgB,IAEA,IAAIa,EAAYR,IAEhBtP,EAAO,IAAIiK,EAAgB2F,EAAWC,EAAUC,GAGhD7B,EAAoBzmB,EAGtB,OAAOwY,EAhFI+P,GAEX,GAAc,MAAVjC,EAAe,CACjB,GAAIlqB,EAAKosB,aAAahQ,GAKpB,OAHA1d,EAAO0d,EAAK1d,KACZ2sB,IACA1oB,EAAQ+oB,IACD,IAAIvF,EAAe,IAAIW,EAAWpoB,GAAOiE,GAE7C,GAAI3C,EAAKqsB,eAAejQ,GAI3B,OAFAiP,IACA1oB,EAAQ+oB,IACD,IAAIvF,EAAe/J,EAAKhd,OAAQgd,EAAKja,MAAOQ,GAEhD,GAAI3C,EAAKssB,eAAelQ,IAASpc,EAAKosB,aAAahQ,EAAKpL,MAE3D6a,GAAQ,EACR9P,KAEArd,EAAO0d,EAAK1d,KACZ0d,EAAKL,KAAKrZ,QAAQ,SAAUue,EAAK9e,GAC3BnC,EAAKosB,aAAanL,GACpBlF,EAAK5Z,GAAS8e,EAAIviB,KAGlBmtB,GAAQ,IAIRA,GAGF,OAFAR,IACA1oB,EAAQ+oB,IACD,IAAInF,EAAuB7nB,EAAMqd,EAAMpZ,GAIlD,MAAMwoB,GAAkB,mDAG1B,OAAO/O,EA+DT,SAAS0P,IAGP,IAFA,IAAI1P,EAAOmQ,IAEM,QAAVrC,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,MAAO,OAAQtK,EAAMmQ,MAG/C,OAAOnQ,EAQT,SAASmQ,IAGP,IAFA,IAAInQ,EAAOoQ,IAEM,QAAVtC,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,MAAO,OAAQtK,EAAMoQ,MAG/C,OAAOpQ,EAQT,SAASoQ,IAGP,IAFA,IAAIpQ,EAAOqQ,IAEM,MAAVvC,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,IAAK,SAAUtK,EAAMqQ,MAG/C,OAAOrQ,EAQT,SAASqQ,IAGP,IAFA,IAAIrQ,EAAOsQ,IAEM,OAAVxC,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,KAAM,UAAWtK,EAAMsQ,MAGjD,OAAOtQ,EAQT,SAASsQ,IAGP,IAFA,IAAItQ,EAAOuQ,KAEM,MAAVzC,GACLmB,IACAjP,EAAO,IAAIsK,EAAa,IAAK,UAAWtK,EAAMuQ,OAGhD,OAAOvQ,EAQT,SAASuQ,KACP,IAAIvQ,EAAMzO,EAAWjP,EAAMsS,EAAI4b,EAY/B,IAVAxQ,EAAOyQ,KAEPlf,GACEyb,KAAM,QACNC,KAAM,UACNC,IAAK,UACLC,IAAK,SACLC,KAAM,YACNC,KAAM,YAED9b,EAAUpO,eAAe2qB,IAE9BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPmB,IACAuB,GAAUxQ,EAAMyQ,MAChBzQ,EAAO,IAAIsK,EAAahoB,EAAMsS,EAAI4b,GAGpC,OAAOxQ,EAQT,SAASyQ,KACP,IAAIzQ,EAAMzO,EAAWjP,EAAMsS,EAAI4b,EAU/B,IARAxQ,EAAO0Q,KAEPnf,GACE+b,KAAO,YACPC,KAAO,kBACPC,MAAQ,iBAGHjc,EAAUpO,eAAe2qB,IAE9BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPmB,IACAuB,GAAUxQ,EAAM0Q,MAChB1Q,EAAO,IAAIsK,EAAahoB,EAAMsS,EAAI4b,GAGpC,OAAOxQ,EAQT,SAAS0Q,KACP,IAAI1Q,EAAMzO,EAAWjP,EAAMsS,EAAI4b,EAS/B,IAPAxQ,EAAO2Q,KAEPpf,GACEgB,GAAO,KACPmb,GAAO,MAGFnc,EAAUpO,eAAe2qB,IAE9BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPmB,IAEa,OAAT3sB,GAA2B,KAAVwrB,EAEnB9N,EAAO,IAAIsK,EAAa,IAAK,YAAatK,EAAM,IAAI0K,EAAW,QAAQ,IAIvE8F,GAAUxQ,EAAM2Q,MAChB3Q,EAAO,IAAIsK,EAAahoB,EAAMsS,EAAI4b,IAItC,OAAOxQ,EAQT,SAAS2Q,KACP,IAAI3Q,EAAMwQ,KAWV,GAPExQ,EAFY,MAAV8N,EAEK,IAAI5D,EAAa,GAIjB0G,KAGK,MAAV9C,GAAkBG,IAAsBD,EAAgB,CAK1D,IAHAwC,EAAOlrB,KAAK0a,GAGK,MAAV8N,GAAiB0C,EAAOjrB,OAAS,GACtC0pB,IAEc,MAAVnB,GAA2B,MAAVA,GAA2B,MAAVA,GAA2B,KAAVA,EAErD0C,EAAOlrB,KAAK,IAAIolB,EAAW,QAI3B8F,EAAOlrB,KAAKsrB,MAMd5Q,EAFoB,IAAlBwQ,EAAOjrB,OAEF,IAAIklB,EAAU+F,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAI3C,IAAI/F,EAAU+F,EAAO,GAAIA,EAAO,IAI3C,OAAOxQ,EAQT,SAAS4Q,KACP,IAAI5Q,EAAMzO,EAAWjP,EAAMsS,EAAI4b,EAQ/B,IANAxQ,EAAO6Q,KAEPtf,GACEua,IAAK,MACLC,IAAK,YAEAxa,EAAUpO,eAAe2qB,IAE9BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPmB,IACAuB,GAAUxQ,EAAM6Q,MAChB7Q,EAAO,IAAIsK,EAAahoB,EAAMsS,EAAI4b,GAGpC,OAAOxQ,EAQT,SAAS6Q,KACP,IAAI7Q,EAAM3C,EAAM9L,EAAWjP,EAAMsS,EAcjC,IAXAyI,EADA2C,EAAO8Q,KAGPvf,GACEya,IAAK,WACLC,KAAM,cACNC,IAAK,SACLC,KAAM,YACNC,IAAK,MACLha,IAAO,OAIHb,EAAUpO,eAAe2qB,IAG3BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPmB,IAEA5R,EAAOyT,KACP9Q,EAAO,IAAIsK,EAAahoB,EAAMsS,GAAKoL,EAAM3C,IAO7C,OAAO2C,EAQT,SAAS8Q,KACP,IAAI9Q,EAAM3C,EAKV,IAFAA,EADA2C,EAAO+Q,KAIAhD,IAAejD,EAAUI,QACf,OAAV4C,GAAkBlqB,EAAKotB,eAAehR,MACtC+N,IAAejD,EAAUG,QACrBrnB,EAAKotB,eAAe3T,IACnBzZ,EAAKqtB,eAAe5T,IAAqB,MAAZA,EAAK6T,KAC7B,MAAVpD,GAMHzQ,EAAO0T,KACP/Q,EAAO,IAAIsK,EAAa,IAAK,YAAatK,EAAM3C,IAAO,GAO3D,OAAO2C,EAUT,SAAS+Q,KACP,IAAI/Q,EAAM3C,EAMV,IAHAA,EADA2C,EAAOmR,KAOQ,MAAVrD,GAAiBlqB,EAAKotB,eAAe3T,IAH9B,CAUR,GAJAgR,IACAY,IAGGlB,IAAejD,EAAUG,OAsBvB,CAEHqD,IACA,MAlBA,GAJAD,IACAY,IAGGlB,IAAejD,EAAUI,QAAoB,MAAV4C,EAQjC,CAEHQ,IACAA,IACA,MATAA,IA5zBRJ,EAAYnhB,MA8zBJsQ,EAAO8T,KACPnR,EAAO,IAAIsK,EAAa,IAAK,UAAWtK,EAAM3C,IAoBtD,OAAO2C,EAQT,SAASmR,KACP,IAAI7uB,EAAMkuB,EAAQ5b,EA4BdoL,EAAM1d,EAAMsS,EAAI4b,EA3BhBjf,GACFwa,IAAK,aACLD,IAAK,YACLS,IAAK,SACLxa,IAAO,OAGT,OAAIR,EAAUpO,eAAe2qB,IAC3BlZ,EAAKrD,EAAUuc,GACfxrB,EAAOwrB,EAEPmB,IACAuB,GAAUW,MAEH,IAAI7G,EAAahoB,EAAMsS,EAAI4b,KAepCxQ,EAmBF,WACE,IAAIA,EAAMzO,EAAWjP,EAAMsS,EAS3B,IAPAoL,EAiDF,WACE,IA6CU1d,EA6HAmK,EA1KN+jB,KAEJ,GAAIzC,IAAejD,EAAUI,QAAUN,EAAYznB,eAAe2qB,GAAQ,CACxE,IAAIsD,EAAaxG,EAAYkD,GAK7B,GAHAU,IAGc,MAAVV,EAAe,CAMjB,GALA0C,KAEAtB,IACAV,IAEc,MAAVV,EAIF,IAHA0C,EAAOlrB,KAAKgqB,KAGK,MAAVxB,GACLU,IACAgC,EAAOlrB,KAAKgqB,KAIhB,GAAc,MAAVxB,EACF,MAAMiB,GAAkB,0BAE1BI,IACAX,IAKF,OAAO,IAAI4C,EAAWZ,GAGxB,OAWIzC,IAAejD,EAAUI,QACxB6C,IAAejD,EAAUE,WAAa8C,KAASL,GAClDnrB,EAAOwrB,EAEPU,IAaO6C,GAXH1D,EAAUxqB,eAAeb,GACpB,IAAI4nB,EAAayD,EAAUrrB,KAEU,IAArCurB,EAAkBliB,QAAQrJ,GAC1B,IAAI4nB,EAAaN,EAAQtnB,IAGzB,IAAIooB,EAAWpoB,KAgHZ,MAAVwrB,GACFrhB,EAAM6kB,KAMCD,GAHA,IAAInH,EAAazd,KA4C5B,WACE,IAAIlJ,EAAOitB,EAAQhP,EAAM+P,EAEzB,GAAc,MAAVzD,EAAe,CAKjB,GAHAoB,IACAV,IAEc,MAAVV,EAAe,CAEjB,IAAIxS,EAAMkW,KAEV,GAAc,MAAV1D,EAAe,CAMjB,IAJAtM,EAAO,EACPgP,GAAUlV,GAGO,MAAVwS,GACLU,IAEAgC,EAAOhP,GAAQgQ,KACfhQ,IAGF,GAAc,MAAVsM,EACF,MAAMiB,GAAkB,4BAE1BI,IACAX,IAGA+C,EAAOf,EAAO,GAAGiB,MAAMlsB,OACvB,IAAK,IAAIuc,EAAI,EAAGA,EAAIN,EAAMM,IACxB,GAAI0O,EAAO1O,GAAG2P,MAAMlsB,SAAWgsB,EAC7B,MAAM/B,GAAY,+BACRgB,EAAO1O,GAAG2P,MAAMlsB,OAAS,QAAUgsB,EAAO,KAIxDhuB,EAAQ,IAAIumB,EAAU0G,OAEnB,CAEH,GAAc,MAAV1C,EACF,MAAMiB,GAAkB,4BAE1BI,IACAX,IAEAjrB,EAAQ+X,QAKV6T,IACAX,IACAjrB,EAAQ,IAAIumB,MAGd,OAAOuH,GAAe9tB,GAGxB,OA2BF,WACE,GAAc,MAAVuqB,EAAe,CACjB,IAAI1Z,EAEAsd,KACJ,GAGE,GAFAlD,IAEc,MAAVV,EAAe,CAEjB,GAAc,MAAVA,EACF1Z,EAAMkd,SAEH,CAAA,GAAIvD,IAAejD,EAAUI,OAKhC,MAAM6D,GAAkB,2CAJxB3a,EAAM0Z,EACNU,IAOF,GAAc,MAAVV,EACF,MAAMiB,GAAkB,qCAE1BP,IAGAkD,EAAWtd,GAAOkb,WAGL,MAAVxB,GAEP,GAAc,MAAVA,EACF,MAAMiB,GAAkB,oDAE1BP,IAEA,IAAIxO,EAAO,IAAIqK,EAAWqH,GAK1B,OAFA1R,EAAOqR,GAAerR,GAKxB,OAWI+N,IAAejD,EAAUG,QAE3B0G,EAAY7D,EACZU,IAEO,IAAItE,EAAaN,EAAQ+H,EAAW9tB,EAAOoB,UAWtD,WACE,IAAI+a,EAGJ,GAAc,MAAV8N,EAAe,CAOjB,GALAoB,IACAV,IAEAxO,EAAOsP,IAEO,MAAVxB,EACF,MAAMiB,GAAkB,0BAO1B,OALAI,IACAX,IAGAxO,EAAOqR,GADPrR,EAAO,IAAIuK,EAAgBvK,IAK7B,OAQF,WACE,MAEQ+O,GAFM,KAAVjB,EAEsB,+BACL,MAAVA,EACe,kEAEA,kBAfnB8D,GA9BAC,GAXT,IACMF,EAlFGG,GAnGAC,GA1OAC,GAEPzgB,GACEib,IAAK,YACLI,IAAM,aAGDrb,EAAUpO,eAAe2qB,IAE9BlZ,EAAKrD,EADLjP,EAAOwrB,GAGPU,IAIAxO,EAAOqR,GADPrR,EAAO,IAAIsK,EAAahoB,EAAMsS,GAFpBoL,KAMZ,OAAOA,EAxCAiS,IAEO,MAAVnE,GAA2B,OAAVA,KAEnBlZ,EAAe,OADftS,EAAOwrB,GACe,MAAQ,SAE9BmB,IACAuB,GAAUxQ,EAAMmR,MAChBnR,EAAO,IAAIsK,EAAahoB,EAAMsS,EAAI4b,IAG7BxQ,GAiJT,SAASqR,GAAgBrR,EAAMkS,GAG7B,IAFA,IAAI1B,IAEc,MAAV1C,GAA2B,MAAVA,GAA2B,MAAVA,GACpCoE,IAAmC,IAA1BA,EAAMvmB,QAAQmiB,KAG3B,GAFA0C,KAEc,MAAV1C,EAAe,CACjB,IAAIlqB,EAAKosB,aAAahQ,KAASpc,EAAKqsB,eAAejQ,GA2BjD,OAAOA,EAtBP,GAHAkP,IACAV,IAEc,MAAVV,EAIF,IAHA0C,EAAOlrB,KAAKgqB,KAGK,MAAVxB,GACLU,IACAgC,EAAOlrB,KAAKgqB,KAIhB,GAAc,MAAVxB,EACF,MAAMiB,GAAkB,0BAE1BI,IACAX,IAEAxO,EAAO,IAAIwK,EAAaxK,EAAMwQ,QAS7B,GAAc,MAAV1C,EAAe,CAKtB,GAHAoB,IACAV,IAEc,MAAVV,EAIF,IAHA0C,EAAOlrB,KAAKgqB,KAGK,MAAVxB,GACLU,IACAgC,EAAOlrB,KAAKgqB,KAIhB,GAAc,MAAVxB,EACF,MAAMiB,GAAkB,0BAE1BI,IACAX,IAEAxO,EAAO,IAAI6J,EAAa7J,EAAM,IAAIoK,EAAUoG,QAEzC,CAIH,GAFAhC,IAEIT,IAAejD,EAAUI,OAC3B,MAAM6D,GAAkB,oCAE1ByB,EAAOlrB,KAAK,IAAI4kB,EAAa4D,IAC7BU,IAGAxO,EAAO,IAAI6J,EAAa7J,EAAM,IAAIoK,EAAUoG,GAD1B,IAKtB,OAAOxQ,EA+BT,SAASsR,KAGP,IAFA,IAAI7kB,EAAM,GAEG,KAANrK,GAAkB,MAANA,GACP,OAANA,IAGFqK,GAAOrK,EACP+F,KAGFsE,GAAOrK,EACP+F,IAIF,GADAqmB,IACc,MAAVV,EACF,MAAMiB,GAAkB,4BAI1B,OAFAP,IAEO3jB,KAAK8f,MAAM,IAAMle,EAAM,KA8EhC,SAAS+kB,KAIP,IAHA,IAAIhB,GAAUlB,KACV3pB,EAAM,EAEO,MAAVmoB,GACLU,IAGAgC,EAAO7qB,GAAO2pB,IACd3pB,IAGF,OAAO,IAAImkB,EAAU0G,GA0IvB,SAAS2B,KACP,OAAOpsB,EAAQ+nB,EAAMvoB,OAAS,EAShC,SAASwpB,GAAmBnW,GAC1B,IAAIxW,EAAI+vB,KACJC,EAAQ,IAAI7mB,YAAYqN,EAAU,UAAYxW,EAAI,KAGtD,OAFAgwB,EAAY,KAAIhwB,EAETgwB,EAST,SAAS5C,GAAa5W,GACpB,IAAIxW,EAAI+vB,KACJC,EAAQ,IAAI7mB,YAAYqN,EAAU,UAAYxW,EAAI,KAGtD,OAFAgwB,EAAY,KAAIhwB,EAETgwB,EAGT,OA7sCAzH,EAAMqE,QAAU,SAAkB5sB,EAAGiwB,EAAOC,GAC1C,OAAO3H,EAAM4H,oBAAoBnwB,IAC1BuoB,EAAM6H,kBAAkBpwB,EAAGkwB,IAC3B3H,EAAM6H,kBAAkBH,EAAOjwB,IAQxCuoB,EAAM4H,oBAAsB,SAA8BnwB,GACxD,MAAO,sDAAsDyG,KAAKzG,IAkBpEuoB,EAAM6H,kBAAoB,SAA4BC,EAAMC,GAC1D,MAAO,aAAa7pB,KAAK4pB,IACrB,oBAAoB5pB,KAAK6pB,IACzB,2KAA2K7pB,KAAK6pB,IAStL/H,EAAM8D,aAAe,SAAuBrsB,EAAGuwB,GAE7C,MAAa,MAANvwB,GAAmB,OAANA,GAAqB,OAANA,GAAcuwB,EAAe,GAUlEhI,EAAMmE,cAAgB,SAAwB1sB,EAAGkwB,GAC/C,MAAa,MAANlwB,GAAuB,MAAVkwB,GAA2B,MAAVA,GAA2B,MAAVA,GAQxD3H,EAAMiE,WAAa,SAAqBxsB,GACtC,OAASA,GAAK,KAAOA,GAAK,KAAc,MAANA,GAQpCuoB,EAAMkE,QAAU,SAAkBzsB,GAChC,OAAQA,GAAK,KAAOA,GAAK,KAooCpBuoB,IAUH,SAAUppB,EAAQD,EAASQ,GAEjC,IAAIqD,EAAarD,EAAoB,IAOrCR,EAAQ6e,UAAY,SAAU+H,GAC5B,OAAIA,GAAOA,EAAI0K,aACN,IAAIztB,EACP+iB,EAAIniB,MAAQ,EACZmiB,EAAIphB,IAAM,OACEC,IAAZmhB,EAAI3a,IAAoB2a,EAAI3a,IAAM,OAAIxG,GAGrCmhB,IAMH,SAAU3mB,EAAQD,EAASQ,GAEjC,aAGA,IAAIyX,EAAWzX,EAAoB,IASnCP,EAAOD,QAAU,SAASuxB,EAAatvB,EAAOC,GACxC+V,EAAShW,KACXA,EAAQA,EAAMyQ,WAGhB,IAAK,IAAIhS,EAAI,EAAGkG,EAAK3E,EAAMgC,OAAQvD,EAAIkG,EAAIlG,IAAK,CAC9C,IAAIuE,EAAQhD,EAAMvB,GAEduC,MAAMc,QAAQkB,GAChBssB,EAAYtsB,EAAO/C,GAGnBA,EAAS+C,MAQT,SAAUhF,EAAQD,EAASQ,GAEjC,aAGA,IAAIuS,EAASvS,EAAoB,GAAGuS,OA6EpC/S,EAAQgB,KAAO,SACfhB,EAAQD,QA5ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAI8Z,EAAe/Z,EAAKhC,EAAoB,KACxCkQ,EAAelO,EAAKhC,EAAoB,KACxCgxB,EAAehvB,EAAKhC,EAAoB,MACxCkC,EAAeF,EAAKhC,EAAoB,IAExCoX,EAAcpV,EAAKhC,EAAoB,KACvCqX,EAAcrV,EAAKhC,EAAoB,IAiCvCmQ,EAASlO,EAAM,SAAUsQ,GAG3B0e,iCAAkC,SAAUpvB,EAAGyJ,GAK7C,OAAO4E,EAASrO,EAAGmvB,EAAI1lB,KAGzB8M,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAGyQ,GAAc,IAGzC5D,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO8L,EAAYvV,EAAGyJ,EAAGyQ,GAAc,IAGzCxD,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAGyQ,GAAc,GAAO7J,WAGxDgf,sBAAuB,SAAUrvB,EAAGyJ,GAClC,OAAO4E,EAASrO,EAAGmvB,EAAI1lB,MAExByQ,EAAalD,aAIhB,OAFA1I,EAAOpN,OAASG,EAAG,kCAEZiN,IASH,SAAU1Q,EAAQD,EAASQ,GAEjC,aAYA,SAAS6nB,EAAe/U,EAAIzL,EAAOrC,EAAKyG,GACtC,KAAM5L,gBAAgBgoB,GACpB,MAAM,IAAIpe,YAAY,oDAGxB5J,KAAKiT,GAAKA,EACVjT,KAAKwH,MAAQA,EACbxH,KAAKmF,IAAMA,EACXnF,KAAK4L,IAAMA,EAEX5L,KAAKiX,QAAU,yCAA2ChE,EACtD,KAAOzL,EAAQ,cACfrC,GAAeC,MAAPwG,EAAqB,IAAMA,EAAO,IAAM,aAEpD5L,KAAKkX,OAAQ,IAAKxS,OAASwS,MAG7B8Q,EAAezmB,UAAY,IAAImD,MAC/BsjB,EAAezmB,UAAUsR,YAAcnO,MACvCsjB,EAAezmB,UAAUZ,KAAO,iBAChCqnB,EAAezmB,UAAU+vB,kBAAmB,EAE5C1xB,EAAOD,QAAUqoB,GAKX,SAAUpoB,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAC3BoD,EAAiBpD,EAAoB,IAErCqC,EAASsS,EAAKtS,OACdZ,EAAQkT,EAAKlT,MACbP,EAASyT,EAAKzT,OACdiC,EAASwR,EAAKxR,OAEdI,EAAUd,MAAMc,QAChBW,EAAWf,EAAOe,SAClBC,EAAYhB,EAAOgB,UACnByQ,EAAWvS,EAAOuS,SAElB5Q,EAAgBvC,EAAMuC,cA+1B1BxE,EAAQgB,KAAO,cACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA/1BR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIU,EAASX,EAAKhC,EAAoB,KAMtC,SAASuT,EAAY7Q,EAAMF,GACzB,KAAM3C,gBAAgB0T,GACpB,MAAM,IAAI9J,YAAY,oDACxB,GAAIjH,IAAaoS,EAASpS,GACxB,MAAM,IAAI+B,MAAM,qBAAuB/B,GAEzC,GAAIV,EAAK2V,SAAS/U,GAEE,gBAAdA,EAAKZ,MAEPjC,KAAKqU,MAAQhT,EAAO+Q,MAAMvP,EAAKwR,OAC/BrU,KAAKuU,MAAQlT,EAAO+Q,MAAMvP,EAAK0R,OAC/BvU,KAAKyU,UAAY9R,GAAYE,EAAK4R,YAIlCzU,KAAKqU,MAAQxR,EAAK6gB,UAClB1jB,KAAKuU,MAAQ1R,EAAKY,OAClBzD,KAAKyU,UAAY9R,GAAYE,EAAK4R,gBAGjC,GAAI5R,GAAQa,EAAQb,EAAKA,OAASa,EAAQb,EAAKY,MAElDzD,KAAKqU,MAAQxR,EAAKA,KAClB7C,KAAKuU,MAAQ1R,EAAKY,KAClBzD,KAAKyU,UAAY9R,GAAYE,EAAKF,cAE/B,GAAIe,EAAQb,GAEf7C,KAAKqU,MAmyBT,SAASkd,EAAW1uB,GAClB,IAAK,IAAIxC,EAAI,EAAGkG,EAAK1D,EAAKe,OAAQvD,EAAIkG,EAAIlG,IAAK,CAC7C,IAAIyE,EAAOjC,EAAKxC,GACZqD,EAAQoB,GACVjC,EAAKxC,GAAKkxB,EAAWzsB,GAEdA,IAA0B,IAAlBA,EAAK8S,WACpB/U,EAAKxC,GAAKkxB,EAAWzsB,EAAKuN,YAI9B,OAAOxP,EA9yBQ0uB,CAAW1uB,GAExB7C,KAAKuU,MAAQ3S,EAAM6B,KAAKzD,KAAKqU,OAE7BzS,EAAMiC,SAAS7D,KAAKqU,MAAOrU,KAAKuU,OAEhCvU,KAAKyU,UAAY9R,MAEd,CAAA,GAAIE,EAEP,MAAM,IAAI0B,UAAU,6BAA+BuQ,EAAKyb,MAAMtuB,KAAKY,GAAQ,KAI3E7C,KAAKqU,SACLrU,KAAKuU,OAAS,GACdvU,KAAKyU,UAAY9R,GAIrB+Q,EAAYnS,UAAY,IAAIuB,EAK5B4Q,EAAYnS,UAAUU,KAAO,cAC7ByR,EAAYnS,UAAU0jB,eAAgB,EAWtCvR,EAAYnS,UAAUwB,QAAU,WAC9B,MAAO,SAYT2Q,EAAYnS,UAAUoB,SAAW,WAC/B,OAAO3C,KAAKyU,WASdf,EAAYnS,UAAU+hB,OAAS,SAAUzgB,EAAMF,GAC7C,OAAO,IAAI+Q,EAAY7Q,EAAMF,IAiB/B+Q,EAAYnS,UAAU4f,OAAS,SAAU/c,EAAO6c,EAAaxc,GAC3D,OAAQ8E,UAAU3F,QAChB,KAAK,EACH,OAqFN,SAAevB,EAAQ+B,GACrB,IAAKnC,EAAKwf,QAAQrd,GAChB,MAAM,IAAIG,UAAU,iBAItB,GADeH,EAAMid,WAGnB,OAAOhf,EAAOnB,IAAIkD,EAAMe,OAIxB,IAAI1B,EAAOW,EAAMX,OACjB,GAAIA,EAAKG,QAAUvB,EAAOkS,MAAM3Q,OAC9B,MAAM,IAAIL,EAAeE,EAAKG,OAAQvB,EAAOkS,MAAM3Q,QAMrD,IAFA,IAAIuB,EAAMf,EAAMe,MACZyG,EAAMxH,EAAMwH,MACPvL,EAAI,EAAGkG,EAAKlE,EAAOkS,MAAM3Q,OAAQvD,EAAIkG,EAAIlG,IAChD8D,EAAcgB,EAAI9E,GAAIgC,EAAOkS,MAAMlU,IACnC8D,EAAcyH,EAAIvL,GAAIgC,EAAOkS,MAAMlU,IAKrC,OAAO,IAAIqT,EAef,SAAS8d,EAAe3uB,EAAMuB,EAAOiC,EAAMtC,GACzC,IAAI2X,EAAQ3X,IAAQsC,EAAO,EACvBsb,EAAQvd,EAAM2c,UAAUhd,GAE5B,OAAI2X,EACKiG,EAAM5f,IAAI,SAAU1B,GAEzB,OADA8D,EAAc9D,EAAGwC,EAAKe,QACff,EAAKxC,KACXgS,UAGIsP,EAAM5f,IAAI,SAAU1B,GACzB8D,EAAc9D,EAAGwC,EAAKe,QACtB,IAAIM,EAAQrB,EAAKxC,GACjB,OAAOmxB,EAActtB,EAAOE,EAAOiC,EAAMtC,EAAM,KAC9CsO,UA9BoBmf,CAAcnvB,EAAOgS,MAAOjQ,EAAOX,EAAKG,OAAQ,GAAIvB,EAAOoS,WAhHzEgd,CAAKzxB,KAAMoE,GAGpB,KAAK,EACL,KAAK,EACH,OAyJN,SAAe/B,EAAQ+B,EAAOstB,EAAWjtB,GACvC,IAAKL,IAA2B,IAAlBA,EAAMqd,QAClB,MAAM,IAAIld,UAAU,iBAItB,IAIIotB,EAJAC,EAAQxtB,EAAMX,OACd4d,EAAWjd,EAAMid,WAYrB,GARIpf,EAAK2V,SAAS8Z,IAChBC,EAAQD,EAAUjuB,OAClBiuB,EAAYA,EAAUrf,WAGtBsf,EAAQ/vB,EAAM6B,KAAKiuB,GAGjBrQ,EAAU,CAIZ,GAAqB,IAAjBsQ,EAAM/tB,OACR,MAAM,IAAIW,UAAU,mBAGtBlC,EAAO+Q,IAAIhP,EAAMe,MAAOusB,EAAWjtB,OAEhC,CAIH,GAAImtB,EAAMhuB,OAASvB,EAAOkS,MAAM3Q,OAC9B,MAAM,IAAIL,EAAequB,EAAMhuB,OAAQvB,EAAOkS,MAAM3Q,OAAQ,KAG9D,GAAI+tB,EAAM/tB,OAASguB,EAAMhuB,OAAQ,CAI/B,IAFA,IAAIvD,EAAI,EACJqG,EAAQ,EACQ,IAAbkrB,EAAMvxB,IAAyB,IAAbsxB,EAAMtxB,IAC7BA,IAEF,KAAoB,IAAbuxB,EAAMvxB,IACXqG,IACArG,IAIFqxB,EAAY9vB,EAAM6E,UAAUirB,EAAWE,EAAMhuB,OAAQ8C,EAAOirB,GAI9D,IAAKtwB,EAAOyR,UAAU8e,EAAOD,GAC3B,MAAM,IAAIpuB,EAAequB,EAAOD,EAAO,KAIzC,IAAIluB,EAAOW,EAAMwH,MAAM7J,IAAI,SAAU1B,GACnC,OAAOA,EAAI,IAEbwxB,EAAKxvB,EAAQoB,EAAMgB,GAGnB,IAAI4B,EAAOurB,EAAMhuB,QAkBrB,SAASkuB,EAAejvB,EAAMuB,EAAOstB,EAAWrrB,EAAMtC,GACpD,IAAI2X,EAAQ3X,IAAQsC,EAAO,EACvBsb,EAAQvd,EAAM2c,UAAUhd,GAExB2X,EACFiG,EAAMhd,QAAQ,SAAUotB,EAAWC,GACjC7tB,EAAc4tB,GACdlvB,EAAKkvB,GAAaL,EAAUM,EAAS,MAIvCrQ,EAAMhd,QAAQ,SAAUotB,EAAWC,GACjC7tB,EAAc4tB,GACdD,EAAcjvB,EAAKkvB,GAAY3tB,EAAOstB,EAAUM,EAAS,IAAK3rB,EAAMtC,EAAM,KA7B5E+tB,CAAezvB,EAAOgS,MAAOjQ,EAAOstB,EAAWrrB,EADrC,GAIZ,OAAOhE,EA/NI4vB,CAAKjyB,KAAMoE,EAAO6c,EAAaxc,GAExC,QACE,MAAM,IAAImF,YAAY,+BAU5B8J,EAAYnS,UAAUL,IAAM,SAAUkD,GACpC,IAAKV,EAAQU,GACX,MAAM,IAAIG,UAAU,kBACtB,GAAIH,EAAMR,QAAU5D,KAAKuU,MAAM3Q,OAC7B,MAAM,IAAIL,EAAea,EAAMR,OAAQ5D,KAAKuU,MAAM3Q,QAGpD,IAAK,IAAI5B,EAAI,EAAGA,EAAIoC,EAAMR,OAAQ5B,IAChCmC,EAAcC,EAAMpC,GAAIhC,KAAKuU,MAAMvS,IAGrC,IADA,IAAIa,EAAO7C,KAAKqU,MACPhU,EAAI,EAAGkG,EAAKnC,EAAMR,OAAQvD,EAAIkG,EAAIlG,IAAK,CAC9C,IAAI6xB,EAAU9tB,EAAM/D,GACpB8D,EAAc+tB,EAASrvB,EAAKe,QAC5Bf,EAAOA,EAAKqvB,GAGd,OAAOrvB,GAaT6Q,EAAYnS,UAAU6R,IAAM,SAAUhP,EAAOQ,EAAOH,GAClD,IAAKf,EAAQU,GACX,MAAM,IAAIG,UAAU,kBACtB,GAAIH,EAAMR,OAAS5D,KAAKuU,MAAM3Q,OAC5B,MAAM,IAAIL,EAAea,EAAMR,OAAQ5D,KAAKuU,MAAM3Q,OAAQ,KAE5D,IAAIvD,EAAGkG,EAAI2rB,EAMXL,EAAK7xB,KAHMoE,EAAMrC,IAAI,SAAU1B,GAC7B,OAAOA,EAAI,IAEIoE,GAGjB,IAAI5B,EAAO7C,KAAKqU,MAChB,IAAKhU,EAAI,EAAGkG,EAAKnC,EAAMR,OAAS,EAAGvD,EAAIkG,EAAIlG,IACzC6xB,EAAU9tB,EAAM/D,GAChB8D,EAAc+tB,EAASrvB,EAAKe,QAC5Bf,EAAOA,EAAKqvB,GAQd,OAJAA,EAAU9tB,EAAMA,EAAMR,OAAS,GAC/BO,EAAc+tB,EAASrvB,EAAKe,QAC5Bf,EAAKqvB,GAAWttB,EAET5E,MAqMT0T,EAAYnS,UAAUiD,OAAS,SAAUf,EAAMgB,EAAc0tB,GAE3D,IAAKzuB,EAAQD,GACX,MAAM,IAAIc,UAAU,kBAGtB,IAAI/D,EAAI2xB,EAAOnyB,KAAKoS,QAAUpS,KAE9B,OAAO6E,EAAQrE,EAAGiD,EAAMgB,IAG1B,IAAII,EAAU,SAAUxC,EAAQoB,EAAMgB,GAEpC,GAAoB,IAAhBhB,EAAKG,OAAc,CAIrB,IAFA,IAAI6c,EAAIpe,EAAOgS,MAER3Q,EAAQ+c,IACbA,EAAIA,EAAE,GAER,OAAOA,EAMT,OAHApe,EAAOkS,MAAQ9Q,EAAKyC,MAAM,GAC1B7D,EAAOgS,MAAQzS,EAAM4C,OAAOnC,EAAOgS,MAAOhS,EAAOkS,MAAO9P,GAEjDpC,GAkCT,SAASwvB,EAAKxvB,EAAQoB,EAAMgB,GAK1B,IAJA,IAAI2tB,EAAU/vB,EAAOkS,MAAMrO,MAAM,GAC7BmsB,GAAU,EAGPD,EAAQxuB,OAASH,EAAKG,QAC3BwuB,EAAQzuB,KAAK,GACb0uB,GAAU,EAIZ,IAAK,IAAIhyB,EAAI,EAAGkG,EAAK9C,EAAKG,OAAQvD,EAAIkG,EAAIlG,IACpCoD,EAAKpD,GAAK+xB,EAAQ/xB,KACpB+xB,EAAQ/xB,GAAKoD,EAAKpD,GAClBgyB,GAAU,GAIVA,GAEFxtB,EAAQxC,EAAQ+vB,EAAS3tB,GAqY7B,OA1aAiP,EAAYnS,UAAU8D,QAAU,SAAU5B,EAAM0uB,GAC9C,IAAI3xB,EAAI2xB,EAAOnyB,KAAKoS,QAAUpS,KAI9B,OAFAQ,EAAE6T,MAAQzS,EAAMyD,QAAQ7E,EAAE6T,MAAO5Q,GACjCjD,EAAE+T,MAAQ9Q,EAAKyC,MAAM,GACd1F,GAyCTkT,EAAYnS,UAAU6Q,MAAQ,WAM5B,OALQ,IAAIsB,GACV7Q,KAAMxB,EAAO+Q,MAAMpS,KAAKqU,OACxB5Q,KAAMpC,EAAO+Q,MAAMpS,KAAKuU,OACxB5R,SAAU3C,KAAKyU,aAUnBf,EAAYnS,UAAUkC,KAAO,WAC3B,OAAOzD,KAAKuU,MAAMrO,MAAM,IAa1BwN,EAAYnS,UAAUQ,IAAM,SAAUF,GAEpC,IAAIywB,EAAKtyB,KACLuyB,EAAU,SAAU3tB,EAAOR,GAC7B,OAAIV,EAAQkB,GACHA,EAAM7C,IAAI,SAAUmC,EAAO7D,GAChC,OAAOkyB,EAAQruB,EAAOE,EAAMqG,OAAOpK,MAI9BwB,EAAS+C,EAAOR,EAAOkuB,IAIlC,OAAO,IAAI5e,GACT7Q,KAAM0vB,EAAQvyB,KAAKqU,UACnB5Q,KAAMpC,EAAO+Q,MAAMpS,KAAKuU,OACxB5R,SAAU3C,KAAKyU,aAWnBf,EAAYnS,UAAUoD,QAAU,SAAU9C,GAExC,IAAIywB,EAAKtyB,KACLuyB,EAAU,SAAU3tB,EAAOR,GACzBV,EAAQkB,GACVA,EAAMD,QAAQ,SAAUT,EAAO7D,GAC7BkyB,EAAQruB,EAAOE,EAAMqG,OAAOpK,MAI9BwB,EAAS+C,EAAOR,EAAOkuB,IAG3BC,EAAQvyB,KAAKqU,WAQfX,EAAYnS,UAAUmiB,QAAU,WAC9B,OAAOriB,EAAO+Q,MAAMpS,KAAKqU,QAQ3BX,EAAYnS,UAAU8Q,QAAU,WAC9B,OAAOrS,KAAKqU,OAYdX,EAAYnS,UAAUkB,OAAS,SAAUsF,GACvC,OAAOvF,EAAOC,OAAOzC,KAAKqU,MAAOtM,IAQnC2L,EAAYnS,UAAUwJ,SAAW,WAC/B,OAAOvI,EAAOC,OAAOzC,KAAKqU,QAQ5BX,EAAYnS,UAAUqiB,OAAS,WAC7B,OACEC,OAAQ,cACRhhB,KAAM7C,KAAKqU,MACX5Q,KAAMzD,KAAKuU,MACX5R,SAAU3C,KAAKyU,YAYnBf,EAAYnS,UAAUixB,SAAW,SAAStS,GAExC,GAAIA,GAKF,GAHIje,EAAKkQ,YAAY+N,KACnBA,EAAIA,EAAE8G,aAEH3iB,EAAS6b,KAAO5b,EAAU4b,GAC7B,MAAM,IAAI3b,UAAW,kDAKvB2b,EAAI,EAiBN,IAdA,IAAIuS,EAASvS,EAAI,EAAIA,EAAI,EACrBwS,EAAOxS,EAAI,GAAKA,EAAI,EAGpBL,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAGrBpT,EAAI+D,KAAKC,IAAI0a,EAAO6S,EAAM5S,EAAW2S,GAGrC5vB,KAGKxC,EAAI,EAAGA,EAAIc,EAAGd,IACrBwC,EAAKxC,GAAKL,KAAKqU,MAAMhU,EAAIqyB,GAAMryB,EAAIoyB,GAIrC,OAAO,IAAI/e,GACT7Q,KAAMA,EACNY,MAAOtC,GACPwB,SAAU3C,KAAKyU,aAenBf,EAAY8e,SAAW,SAAU/uB,EAAMmB,EAAOsb,EAAGzb,EAAc9B,GAC7D,IAAKe,EAAQD,GACX,MAAM,IAAIc,UAAU,kCACtB,GAAoB,IAAhBd,EAAKG,OACP,MAAM,IAAIc,MAAM,4CAiBlB,GAdAjB,EAAOA,EAAK1B,IAAI,SAAUL,GAOxB,GALIO,EAAKkQ,YAAYzQ,KAEnBA,EAAIA,EAAEslB,aAGH3iB,EAAS3C,KAAO4C,EAAU5C,IAAMA,EAAI,EACvC,MAAM,IAAIgD,MAAM,yCAElB,OAAOhD,IAILwe,GAKF,GAHIje,EAAKkQ,YAAY+N,KACnBA,EAAIA,EAAE8G,aAEH3iB,EAAS6b,KAAO5b,EAAU4b,GAC7B,MAAM,IAAI3b,UAAW,kDAKvB2b,EAAI,EAGFzb,GAAgBsQ,EAASpS,KAE3B8B,EAAerC,EAAMuS,QAAQlQ,EAAc9B,IAG7C,IAWIuQ,EAXAuf,EAASvS,EAAI,EAAIA,EAAI,EACrBwS,EAAOxS,EAAI,GAAKA,EAAI,EAGpBL,EAAOpc,EAAK,GACZqc,EAAUrc,EAAK,GAGftC,EAAI+D,KAAKC,IAAI0a,EAAO6S,EAAM5S,EAAW2S,GAMzC,GAAI/uB,EAAQkB,GAAQ,CAElB,GAAIA,EAAMhB,SAAWzC,EAEnB,MAAM,IAAIuD,MAAM,8BAGlBwO,EAAS,SAAU7S,GAEjB,OAAOuE,EAAMvE,SAGZ,GAAI4B,EAAK2V,SAAShT,GAAQ,CAE7B,IAAI+tB,EAAK/tB,EAAMnB,OAEf,GAAkB,IAAdkvB,EAAG/uB,QAAgB+uB,EAAG,KAAOxxB,EAE/B,MAAM,IAAIuD,MAAM,yBAGlBwO,EAAS,SAAU7S,GAEjB,OAAOuE,EAAM1D,KAAKb,UAKpB6S,EAAS,WAEP,OAAOtO,GAKNH,IAEHA,EAAexC,EAAKkQ,YAAYe,EAAO,IAAM,IAAIjR,EAAKiiB,UAAU,GAAK,GAIvE,IAAIrhB,KAGJ,GAAIY,EAAKG,OAAS,EAAG,CAEnBf,EAAOjB,EAAM4C,OAAO3B,EAAMY,EAAMgB,GAEhC,IAAK,IAAI/D,EAAI,EAAGA,EAAIS,EAAGT,IACrBmC,EAAKnC,EAAIgyB,GAAMhyB,EAAI+xB,GAAUvf,EAAOxS,GAKxC,OAAO,IAAIgT,GACT7Q,KAAMA,EACNY,MAAOoc,EAAMC,MAYjBpM,EAAYqQ,SAAW,SAAUC,GAC/B,OAAO,IAAItQ,EAAYsQ,IAYzBtQ,EAAYnS,UAAUqxB,SAAW,SAAUvyB,EAAG6T,GAE5C,KAAK7P,EAAShE,IAAOiE,EAAUjE,IAAOgE,EAAS6P,IAAO5P,EAAU4P,IAC9D,MAAM,IAAIxP,MAAM,uCAGlB,GAA0B,IAAtB1E,KAAKuU,MAAM3Q,OACb,MAAM,IAAIc,MAAM,4CASlB,OANAP,EAAc9D,EAAGL,KAAKuU,MAAM,IAC5BpQ,EAAc+P,EAAGlU,KAAKuU,MAAM,IAG5Bb,EAAYmf,UAAUxyB,EAAG6T,EAAGlU,KAAKqU,OAE1BrU,MAST0T,EAAYmf,UAAY,SAAUxyB,EAAG6T,EAAGrR,GAEtC,IAAIiwB,EAAKjwB,EAAKxC,GACdwC,EAAKxC,GAAKwC,EAAKqR,GACfrR,EAAKqR,GAAK4e,GAyBZ7wB,EAAKa,OAAOiwB,SAASC,MAAQtf,EAC7BzR,EAAKa,OAAOiwB,SAAkB,QAAIrf,EAG3BA,GAMT/T,EAAQqT,MAAO,GAKT,SAAUpT,EAAQD,EAASQ,GAEjC,aAyIAR,EAAQgB,KAAO,QACfhB,EAAQD,QAvIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCmV,EAAcnT,EAAKhC,EAAoB,IAEvCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCiX,EAAQjX,EAAoB,GA8C5B6Q,EAAQ5O,EAAM,SAEhBwW,WAAY,SAAU5W,EAAGyJ,GAEvB,OAAU,OAANzJ,EAA2B,OAANyJ,EACf,OAANA,EAA2B,OAANzJ,OACfoD,IAANpD,OAAgCoD,IAANqG,OACpBrG,IAANqG,OAAgCrG,IAANpD,EAEvBsT,EAAYtT,EAAGyJ,IAGxBwQ,6BAA8B,SAASja,EAAGyJ,GACxC,OAAOya,EAAYlkB,EAAGyJ,EAAG6J,IAG3BwG,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGsT,GAAa,IAGxC6F,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAG6J,GAAa,IAGxC4F,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAG6J,IAG3BoC,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOuF,EAAM3O,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGrCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOuF,EAAM3O,EAAOL,GAAIyJ,IAG1B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOuF,EAAMhP,EAAGK,EAAOoJ,KAGzB6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAG6J,GAAa,IAGxCiD,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG6J,GAAa,IAGxCkD,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGsT,GAAa,IAGxCmD,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGsT,GAAa,IAGxCoD,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG6J,GAAa,GAAOjD,WAGvDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGsT,GAAa,GAAMjD,aAQxD,OAJArB,EAAM9N,OACJG,EAAG,oBAAsB+T,EAAMxH,UAAiB,MAAI,sBAG/CoB,IASH,SAAUpR,EAAQD,EAASQ,GAEjC,aAsFAR,EAAQgB,KAAO,SACfhB,EAAQD,QApFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA4CpC,IAAI6wB,EAAU7wB,EAAM,WAClB8wB,IAAO,SAAUlxB,GACf,IAAImxB,SAAWnxB,EAEf,MAAU,WAANmxB,EAEQ,OAANnxB,EAA6B,OAC7BY,MAAMc,QAAQ1B,GAAe,QAC7BA,aAAauQ,KAAgB,OAC7BvQ,aAAawQ,OAAgB,SAC7BxQ,aAAasQ,QAAgB,UAC7BtQ,aAAasJ,OAAgB,SAC7BtJ,aAAa0H,OAAgB,SAG7BzH,EAAKkQ,YAAYnQ,GAAW,YAC5BC,EAAKmxB,UAAUpxB,GAAa,UAC5BC,EAAKoxB,WAAWrxB,GAAY,WAC5BC,EAAK2V,SAAS5V,GAAc,SAC5BC,EAAKiQ,OAAOlQ,GAAgB,OAC5BC,EAAKwf,QAAQzf,GAAe,QAC5BC,EAAKkhB,QAAQnhB,GAAe,QAC5BC,EAAKqxB,QAAQtxB,GAAe,QAC5BC,EAAKsxB,OAAOvxB,GAAgB,OAEzB,SAGC,aAANmxB,EAAyB,WAEtBA,KAMX,OAFAF,EAAQ/vB,WAAQkC,EAET6tB,IASH,SAAUrzB,EAAQD,EAASQ,GAEjC,aAGA,IAAIiX,EAAQjX,EAAoB,GAC5B4R,EAAS5R,EAAoB,GAAG4R,OAChCvQ,EAAiBrB,EAAoB,GAAGqB,eACxCyb,EAAkB9c,EAAoB,IAAI8c,gBAmL9Ctd,EAAQgB,KAAO,aACfhB,EAAQ2T,KAAO,kBACf3T,EAAQ0d,MAAO,EACf1d,EAAQD,QApLR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAIC,EAAOnb,EAAKhC,EAAoB,KAOpC,SAASqzB,EAAiB7yB,GACxB,QAAOsB,EAAKoiB,MAAOpiB,EAAKoiB,KAAKmP,gBAAgB7yB,GAU/C,SAASooB,EAAWpoB,GAClB,KAAMX,gBAAgB+oB,GACpB,MAAM,IAAInf,YAAY,oDAIxB,GAAoB,iBAATjJ,EAAoB,MAAM,IAAI4D,UAAU,wCAEnDvE,KAAKW,KAAOA,EAmJd,OAhJAooB,EAAWxnB,UAAY,IAAI+b,EAE3ByL,EAAWxnB,UAAUU,KAAO,aAE5B8mB,EAAWxnB,UAAU8sB,cAAe,EAepCtF,EAAWxnB,UAAUsc,SAAW,SAAUR,EAAMc,GAC9C,IAAIxd,EAAOX,KAAKW,KAEhB,GAAIa,EAAe2c,EAAUxd,GAG3B,OAAO,SAAU6c,EAAOQ,EAAMyV,GAC5B,OAAOzV,EAAKrd,IAGX,GAAIA,KAAQ0c,EACf,OAAO,SAAUG,EAAOQ,EAAMyV,GAC5B,OACIxW,EADGtc,KAAQ6c,EACKA,EACAH,EADO1c,IAK7B,IAAIuR,EAASshB,EAAgB7yB,GAE7B,OAAO,SAAU6c,EAAOQ,EAAMyV,GAC5B,OAAO9yB,KAAQ6c,EACXP,EAAgBO,EAAO7c,GACvBuR,EACE,IAAIjQ,EAAKoiB,KAAK,KAAM1jB,GA4BhC,SAAgBA,GACd,MAAM,IAAI+D,MAAM,oBAAsB/D,GA5B5B+yB,CAAM/yB,KASlBooB,EAAWxnB,UAAUoD,QAAU,SAAU9C,KAUzCknB,EAAWxnB,UAAUQ,IAAM,SAAUF,GACnC,OAAO7B,KAAKoS,SAed2W,EAAWxnB,UAAU6Q,MAAQ,WAC3B,OAAO,IAAI2W,EAAW/oB,KAAKW,OAS7BooB,EAAWxnB,UAAUwd,UAAY,SAAShX,GACxC,OAAO/H,KAAKW,MASdooB,EAAWxnB,UAAUyd,OAAS,SAASjX,GACxC,IAAIpH,EAAOoR,EAAO/R,KAAKW,MAEpB,MAAY,QAARA,GAA0B,SAARA,EAChB,0CAA4CA,EAAO,UAE3C,KAARA,EACA,mDAAqDA,EAAO,UAEpD,YAARA,EACA,kDAAoDA,EAAO,UAEnD,OAARA,EACA,6CAA+CA,EAAO,UAE9C,QAARA,EACA,8CAAgDA,EAAO,UAE/C,aAARA,EACA,mDAAqDA,EAAO,UAG9D,6BAA+BA,EAAO,WAS5CooB,EAAWxnB,UAAU2d,OAAS,SAASnX,GACrC,IAAImK,GAAS,OACmB,IAApBmL,EAAKrd,KAAKW,OAA0B6yB,EAAgBxzB,KAAKW,QACnEuR,GAAS,GAEX,IAAI+L,EAAS7G,EAAMnF,SAASjS,KAAKW,KAAMuR,GACvC,MAAkB,OAAd+L,EAAO,GAEFA,EAGF,IAAMA,GAGR8K,IAWH,SAAUnpB,EAAQD,EAASQ,GAEjC,aAGA,IAAIyX,EAAWzX,EAAoB,IAOnCP,EAAOD,QAAU,SAAuBqC,GACtC,OAAOY,MAAMc,QAAQ1B,IAAM4V,EAAS5V,KAMhC,SAAUpC,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA4ElCR,EAAQgB,KAAO,OACfhB,EAAQD,QA3ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAyBpC,IAAIuxB,EAAOvxB,EAAM,QACfkB,OAAUswB,EAEV3P,QAAW,SAAUjiB,GACjB,OAAOA,EAAE2xB,QAGbzP,UAAa,SAAUliB,GACrB,OAAKA,EAAE6xB,cAAgB3xB,EAAO6kB,YACrB/kB,EAAE2xB,OAIFC,EAAY5xB,EAAEglB,aAIzB5C,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAG2xB,GAAM,IAG1BtP,KAAQ,SAAUriB,GAEhB,OAAOA,EAAE+N,IAAI,OAWjB,SAAS6jB,EAAY5xB,GACnB,OAAIA,GAAK,GAAKE,EAAO6kB,YACZ7hB,KAAKyuB,KAAK3xB,GAGV,IAAIC,EAAKgiB,QAAQjiB,EAAG,GAAG2xB,OAMlC,OAFAA,EAAKzwB,OAASE,EAAG,sBAEVuwB,IASH,SAAU/zB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAC9BmD,EAASnD,EAAoB,GAmDjCR,EAAQgB,KAAO,YACfhB,EAAQD,QAlDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA8BpC,IAAIkC,EAAYlC,EAAM,aACpBkB,OAAUA,EAAOgB,UAEjB4f,UAAa,SAAUliB,GACrB,OAAOA,EAAE8xB,SAGX3P,SAAY,SAAUniB,GACpB,OAAe,IAARA,EAAEtB,GAAWkH,SAAS5F,EAAEb,IAGjCijB,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGsC,MAItB,OAAOA,IASH,SAAU1E,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IA+IzCR,EAAQgB,KAAO,UACfhB,EAAQD,QA9IR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCkgB,EAAcle,EAAKhC,EAAoB,KACvCmgB,EAAcne,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAqCvCskB,EAAUriB,EAAM,WAElBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,IAAMyJ,EAAI,EAAKzJ,EAAIyJ,EAAI,GAAK,GAGrC+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAQzJ,IAAMyJ,GAAKD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,SACtC,EACC1J,EAAIyJ,EAAI,GAAK,GAGtBgK,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAQzJ,EAAE0T,GAAGjK,IAAM4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,SACzC,IAAIzJ,EAAKiiB,UAAU,GACnB,IAAIjiB,EAAKiiB,UAAUliB,EAAE+xB,IAAItoB,KAGjCkK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAO,IAAIxJ,EAAKkiB,SAASniB,EAAEyiB,QAAQhZ,KAGrCoK,mBAAoB,WAClB,MAAM,IAAItR,UAAU,wDAGtBuR,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAO+f,EAAQziB,EAAE4C,MAAO6G,EAAE7G,QAG5BqX,6BAA8B,SAASja,EAAGyJ,GACxC,OAAO6U,EAAYte,EAAGyJ,EAAGgZ,IAG3B3I,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGyiB,GAAS,IAGpCtJ,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAGgZ,GAAS,IAGpCvJ,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAGgZ,IAG3B/M,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOgZ,EAAQpiB,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGvCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOgZ,EAAQpiB,EAAOL,GAAIyJ,IAG5B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOgZ,EAAQziB,EAAGK,EAAOoJ,KAG3B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAGgZ,GAAS,IAGpClM,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAGgZ,GAAS,IAGpCjM,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGyiB,GAAS,IAGpChM,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGyiB,GAAS,IAGpC/L,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAGgZ,GAAS,GAAOpS,WAGnDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGyiB,GAAS,GAAMpS,aAMpD,OAFAoS,EAAQvhB,WAAQkC,EAETqf,IASH,SAAU7kB,EAAQD,EAASQ,GAEjC,aAaA,SAASqD,EAAWY,EAAOe,EAAKyG,GAC9B,KAAM5L,gBAAgBwD,GACpB,MAAM,IAAIoG,YAAY,oDAGxB5J,KAAKoE,MAAQA,EACTmF,UAAU3F,OAAS,GACrB5D,KAAKmF,IAAM,EACXnF,KAAK4L,IAAMzG,IAGXnF,KAAKmF,IAAMA,EACXnF,KAAK4L,IAAMA,QAGIxG,IAAbpF,KAAKmF,KAAqBnF,KAAKoE,MAAQpE,KAAKmF,IAC9CnF,KAAKiX,QAAU,uBAAyBjX,KAAKoE,MAAQ,MAAQpE,KAAKmF,IAAM,SAEpDC,IAAbpF,KAAK4L,KAAqB5L,KAAKoE,OAASpE,KAAK4L,IACpD5L,KAAKiX,QAAU,uBAAyBjX,KAAKoE,MAAQ,OAASpE,KAAK4L,IAAM,GAAK,IAG9E5L,KAAKiX,QAAU,uBAAyBjX,KAAKoE,MAAQ,IAGvDpE,KAAKkX,OAAQ,IAAKxS,OAASwS,MAG7B1T,EAAWjC,UAAY,IAAI6T,WAC3B5R,EAAWjC,UAAUsR,YAAcuC,WACnC5R,EAAWjC,UAAUZ,KAAO,aAC5B6C,EAAWjC,UAAU0vB,cAAe,EAEpCrxB,EAAOD,QAAU6D,GAKX,SAAU5D,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GACrBA,EAAoB,GAgDjCR,EAAQgB,KAAO,YACfhB,EAAQD,QA/CR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA6BpC,IAAI4xB,EAAY5xB,EAAM,aACpB6xB,0CAA2C,WACzC,OAAO,GAGTC,0BAA2B,WACzB,OAAO,GAGT9P,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGgyB,MAItB,OAAOA,IASH,SAAUp0B,EAAQD,EAASQ,GAEjC,aAqBA,IAAI4vB,IAEA3H,kBACAI,4BAGAF,iBACE6L,iBAAiB,EACjBC,kBAAkB,EAClBC,aAAa,KAMfC,mBACEC,cAAe,OACfC,sBAKFC,oBACEF,cAAe,OACfC,sBAIFE,oBACEH,cAAe,OACfC,sBAIFG,sBACEJ,cAAe,OACfC,sBAIFI,uBACEL,cAAe,OACfC,sBAIFK,uBACEN,cAAe,OACfC,sBAIFM,sBACEP,cAAe,OACfC,oBAEFO,wBACER,cAAe,OACfC,oBAEFQ,wBACET,cAAe,OACfC,oBAEFS,uBACEV,cAAe,OACfC,oBAEFU,0BACEX,cAAe,OACfC,oBAEFW,yBACEZ,cAAe,OACfC,sBAIFY,0BACEb,cAAe,OACfC,oBAEFa,gCACEd,cAAe,OACfC,oBAEFc,8BACEf,cAAe,OACfC,sBAIFe,mBACEhB,cAAe,OACfC,sBAIF1L,eAGA0M,oBACEjB,cAAe,OACfC,iBAAkB,mBAAoB,0BAExCiB,yBACElB,cAAe,OACfC,sBAIFkB,yBACEnB,cAAe,OACfC,iBACE,wBACA,sBACA,uBACA,uBAGJmB,uBACEpB,cAAe,OACfC,mBACAL,iBAAiB,EACjBC,kBAAkB,EAClBC,aAAa,GAKfuB,4BACErB,cAAe,OACfC,iBACE,wBACA,sBACA,2BACA,0BAGJqB,0BACEtB,cAAe,OACfC,oBAEFsB,oBACEvB,cAAe,OACfC,sBAIFuB,0BACExB,cAAe,SAEjByB,2BACEzB,cAAe,SAEjB0B,uBACE1B,cAAe,SAEjB2B,oBACE3B,cAAe,WAIjB4B,oBACE5B,cAAe,QACfC,mBACAJ,kBAAkB,GAKpBgC,uBACE7B,cAAe,QACfC,sBAIF6B,0BACE9B,cAAe,UAIjB+B,0BACE/B,cAAe,UAcrB,SAASgC,EAAeC,EAAOC,GAC7B,IAAIpY,EAAOmY,EACS,SAAhBC,IAEFpY,EAAOmY,EAAMpX,cAGf,IADA,IAAI3X,EAAa4W,EAAKc,gBACb9e,EAAI,EAAGA,EAAI0vB,EAAWnsB,OAAQvD,IACrC,GAAIoH,KAAcsoB,EAAW1vB,GAC3B,OAAOA,EAGX,OAAO,KAmFTT,EAAOD,QAAQowB,WAAaA,EAC5BnwB,EAAOD,QAAQ42B,cAAgBA,EAC/B32B,EAAOD,QAAQ+2B,iBAxEf,SAA2BF,EAAOC,GAChC,IAAIpY,EAAOmY,EACS,SAAhBC,IAEFpY,EAAOmY,EAAMpX,cAEf,IAAI3X,EAAa4W,EAAKc,gBAClB/a,EAAQmyB,EAAclY,EAAMoY,GAChC,GAAc,OAAVryB,EAEF,OAAO,KAET,IAAI9C,EAAWyuB,EAAW3rB,GAAOqD,GAEjC,GAAInG,EAASE,eAAe,iBAAkB,CAC5C,GAA+B,SAA3BF,EAASizB,cACX,MAAO,OAET,GAA+B,UAA3BjzB,EAASizB,cACX,MAAO,QAGT,MAAM7vB,MAAM,IAAO+C,EAAa,oCAClBnG,EAASizB,cAAgB,MAIzC,OAAO,MA8CT30B,EAAOD,QAAQg3B,kBAlCf,SAA4BC,EAAOC,EAAOJ,GACxC,IAAInvB,EAAIsvB,EACJrvB,EAAIsvB,EACY,SAAhBJ,IAEEnvB,EAAIsvB,EAAMxX,aACV7X,EAAIsvB,EAAMzX,cAEhB,IAAI0X,EAAcxvB,EAAE6X,gBAChB4X,EAAcxvB,EAAE4X,gBAChB/a,EAAQmyB,EAAcjvB,EAAGmvB,GAC7B,GAAc,OAAVryB,EAEF,OAAO,KAET,IAAI9C,EAAWyuB,EAAW3rB,GAAO0yB,GAEjC,GAAIx1B,EAASE,eAAe,oBACpBF,EAASkzB,2BAA2B5xB,MAAQ,CAClD,IAAK,IAAIvC,EAAI,EAAGA,EAAIiB,EAASkzB,gBAAgB5wB,OAAQvD,IACnD,GAAIiB,EAASkzB,gBAAgBn0B,KAAO02B,EAClC,OAAO,EAGX,OAAO,EAIT,OAAO,OAWH,SAAUn3B,EAAQD,EAASQ,GAEjC,aAGA,IAAIsC,EAAStC,EAAoB,GAAGsC,OAChCu0B,EAAc72B,EAAoB,GAAG4R,OAwJzCpS,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QAxJR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAChCmmB,EAAUnkB,EAAKhC,EAAoB,KAcvC,SAASooB,EAAa3jB,GACpB,KAAM5E,gBAAgBuoB,GACpB,MAAM,IAAI3e,YAAY,oDAGxB,GAAyB,IAArBL,UAAU3F,OAEZ,MAAM,IAAIgG,YAAY,kKAGxB5J,KAAK4E,MAAQA,EAyHf,OAtHA2jB,EAAahnB,UAAY,IAAI+b,EAE7BiL,EAAahnB,UAAUU,KAAO,eAE9BsmB,EAAahnB,UAAU8tB,gBAAiB,EAexC9G,EAAahnB,UAAUsc,SAAW,SAAUR,EAAMc,GAChD,IAAIvZ,EAAQ5E,KAAK4E,MAEjB,OAAO,WACL,OAAOA,IAQX2jB,EAAahnB,UAAUoD,QAAU,SAAU9C,KAU3C0mB,EAAahnB,UAAUQ,IAAM,SAAUF,GACrC,OAAO7B,KAAKoS,SAOdmW,EAAahnB,UAAU6Q,MAAQ,WAC7B,OAAO,IAAImW,EAAavoB,KAAK4E,QAQ/B2jB,EAAahnB,UAAUwd,UAAY,SAAUhX,GAC3C,OAAOtF,EAAQzC,KAAK4E,MAAOmD,IAQ7BwgB,EAAahnB,UAAUyd,OAAS,SAAUjX,GACxC,IAAInD,EAAQ5E,KAAK+e,UAAUhX,GAE3B,OAAQue,EAAQtmB,KAAK4E,QACpB,IAAK,SACL,IAAK,YACL,IAAK,WACL,MAAO,6BAA+BA,EAAQ,UAC7C,IAAK,SACN,MAAO,6BAA+BA,EAAQ,UAC7C,IAAK,UACN,MAAO,8BAAgCA,EAAQ,UAC9C,IAAK,OACN,MAAO,kCAAoCA,EAAQ,UAClD,IAAK,YACN,MAAO,gCAAkCA,EAAQ,UAEhD,QACE,MAAO,6BAA+BA,EAAQ,YASpD2jB,EAAahnB,UAAU2d,OAAS,SAAUnX,GACxC,IAAInD,EAAQ5E,KAAK+e,UAAUhX,GAE3B,OAAQue,EAAQtmB,KAAK4E,QACnB,IAAK,SACH,MAAO,YAAcoyB,EAAYpyB,GAAS,IAE5C,IAAK,SACL,IAAK,YACH,IAAIR,EAAQQ,EAAM+E,cAAcK,QAAQ,KACxC,OAAe,IAAX5F,EACKQ,EAAM2R,UAAU,EAAGnS,GAAS,aAC/BQ,EAAM2R,UAAUnS,EAAQ,GAAK,IAE5BQ,EAET,IAAK,WACH,OAAO5E,KAAK4E,MAAMqyB,UAEpB,QACE,OAAOryB,IAIN2jB,IAUH,SAAU3oB,EAAQD,EAASQ,GAEjC,aAGA,IAAIiX,EAAQjX,EAAoB,GAC5B4B,EAAM5B,EAAoB,GAAG4B,IAC7BgQ,EAAS5R,EAAoB,GAAG4R,OAChC4K,EAAexc,EAAoB,IAAIwc,aACvCM,EAAkB9c,EAAoB,IAAI8c,gBAC1CrN,EAAYzP,EAAoB,IAklBpCR,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QAllBR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAYpC,SAASwoB,EAAa4G,EAAItc,EAAI+K,EAAMkZ,GAClC,KAAMl3B,gBAAgB2oB,GACpB,MAAM,IAAI/e,YAAY,oDAIxB,GAAkB,iBAAP2lB,EACT,MAAM,IAAIhrB,UAAU,sCAEtB,GAAkB,iBAAP0O,EACT,MAAM,IAAI1O,UAAU,sCAEtB,IAAK3B,MAAMc,QAAQsa,KAAUA,EAAKmZ,MAAMl1B,EAAKyb,QAC3C,MAAM,IAAInZ,UAAU,wDAGtBvE,KAAKk3B,UAAyB,IAAbA,EACjBl3B,KAAKuvB,GAAKA,EACVvvB,KAAKiT,GAAKA,EACVjT,KAAKge,KAAOA,MA2Hd,SAASoZ,EAA8B33B,EAAMg3B,EAAaS,EAAUlZ,EAAM5G,GAExE,IAAIigB,EAAaznB,EAAU2mB,cAAc92B,EAAMg3B,GAC3ClC,EAAgB3kB,EAAU8mB,iBAAiBj3B,EAAMg3B,GAErD,GAAqB,QAAhBA,GAA4BzY,EAAKpa,OAAS,GAAgC,qBAAzBnE,EAAK0f,iBAAqE,0BAAzB1f,EAAK0f,gBAa1G,OAZanB,EAAKjc,IAAI,SAAUmhB,GAC9B,OAAQA,EAAI9D,aAAand,MACvB,IAAK,YACL,IAAK,eACL,IAAK,aACL,IAAK,kBACH,OAAO,EAET,QACE,OAAO,KAMf,IAAI8W,OAAS3T,EACb,OAAQ4Y,EAAKpa,QACX,KAAK,EACHmV,KACA,MAEF,KAAK,EAEH,IAAIue,EAAoB1nB,EAAU2mB,cAAcvY,EAAK,GAAIyY,GAGzD,GAAIrf,GAAgC,OAAtBkgB,EAA6B,CACzC,IAAIC,EAWJ,GAToB,SAAhBd,GACFc,EAAoBvZ,EAAK,GAAGmB,gBAC5BqY,EAAiB/3B,EAAK0f,kBAItBoY,EAAoBvZ,EAAK,GAAGoB,aAAaD,gBACzCqY,EAAiB/3B,EAAK2f,aAAaD,kBAEoC,IAArEvP,EAAUmgB,WAAWsH,GAAYG,GAAgBrD,gBAA2B,CAC9Epb,IAAU,GACV,MAGF,IAA+E,IAA3EnJ,EAAUmgB,WAAWuH,GAAmBC,GAAmBlD,YAAuB,CACpFtb,IAAU,GACV,OAIJ,GAA0B,OAAtBue,EAA4B,CAE9Bve,IAAU,GACV,MAGF,GAAIue,GAAqBD,EAAY,CAEnCte,IAAU,GACV,MAIFA,IAAU,GACV,MAEF,KAAK,EACH,IAAI0e,EAyBAC,EAvBAC,EAAgB/nB,EAAU2mB,cAAcvY,EAAK,GAAIyY,GAEjDmB,EAAehoB,EAAU+mB,kBAAkBl3B,EAAMue,EAAK,GAAIyY,GAK5DgB,EAHoB,OAAlBE,IAKMA,IAAkBN,GAAkC,UAAlB9C,IAA+BqD,GAOlED,EAAgBN,GASzB,IAyBMG,EACAK,EACAC,EA3BFC,EAAgBnoB,EAAU2mB,cAAcvY,EAAK,GAAIyY,GAEjDuB,EAAepoB,EAAU+mB,kBAAkBl3B,EAAMue,EAAK,GAAIyY,GAK5DiB,EAHoB,OAAlBK,IAKMA,IAAkBV,GAAkC,SAAlB9C,IAA8ByD,GAOjED,EAAgBV,GAQrBjgB,IAIkB,SAAhBqf,GACFe,EAAiB/3B,EAAK0f,gBACtB0Y,EAAgBp4B,EAAKue,KAAK,GAAGmB,gBAC7B2Y,EAAgBr4B,EAAKue,KAAK,GAAGmB,kBAI7BqY,EAAiB/3B,EAAK2f,aAAaD,gBACnC0Y,EAAgBp4B,EAAKue,KAAK,GAAGoB,aAAaD,gBAC1C2Y,EAAgBr4B,EAAKue,KAAK,GAAGoB,aAAaD,iBAGtB,OAAlBwY,KACuE,IAArE/nB,EAAUmgB,WAAWsH,GAAYG,GAAgBrD,kBACnDsD,GAAY,IAGyD,IAAnE7nB,EAAUmgB,WAAW4H,GAAeE,GAAexD,cACrDoD,GAAY,IAIM,OAAlBM,KACwE,IAAtEnoB,EAAUmgB,WAAWsH,GAAYG,GAAgBpD,mBACnDsD,GAAY,IAGyD,IAAnE9nB,EAAUmgB,WAAWgI,GAAeD,GAAezD,cACrDqD,GAAY,KAKlB3e,GAAU0e,EAAWC,GACrB,MAEF,QACgC,qBAAzBj4B,EAAK0f,iBAAqE,0BAAzB1f,EAAK0f,kBACrDpG,EAASiF,EAAKjc,IAAI,SAAUmhB,GAC9B,IAAI+U,EAAgBroB,EAAU2mB,cAAcrT,EAAKuT,GAC7CyB,EAAetoB,EAAU+mB,kBAAkBl3B,EAAMyjB,EAAKuT,GACtD0B,EAAmBvoB,EAAU8mB,iBAAiBxT,EAAKuT,GACvD,OAAsB,OAAlBwB,IAGQZ,IAAeY,GAAmB1D,IAAkB4D,IAAsBD,GAE3ED,EAAgBZ,MAwBnC,OAXKrZ,EAAKpa,QAAU,GAAgC,0BAAzBnE,EAAK0f,iBAAgD1f,EAAKy3B,UAA6B,SAAhBT,GAAyC,SAAbS,IAC5Hne,EAASiF,EAAKjc,IAAI,SAAUmhB,EAAK9e,GAC/B,IAAIg0B,EAA6C,oBAAxBlV,EAAI/D,gBAC7B,SAAIpG,EAAO3U,KAAUg0B,MAQlBrf,EA4OT,OA1iBA4P,EAAapnB,UAAY,IAAI+b,EAE7BqL,EAAapnB,UAAUU,KAAO,eAE9B0mB,EAAapnB,UAAU+tB,gBAAiB,EAexC3G,EAAapnB,UAAUsc,SAAW,SAAUR,EAAMc,GAEhD,GAAuB,iBAAZne,KAAKiT,KAAoB0J,EAAaU,EAAMrd,KAAKiT,IAC1D,MAAKoK,EAAKrd,KAAKiT,IAIP,IAAIvO,MAAM,0BAA4B1E,KAAKiT,GAAK,KAHhD,IAAIvO,MAAM,YAAc1E,KAAKiT,GAAK,yCAO5C,IAAIA,EAAKgK,EAAgBI,EAAMrd,KAAKiT,IAChColB,EAAWt2B,EAAI/B,KAAKge,KAAM,SAAUkF,GACtC,OAAOA,EAAIrF,SAASR,EAAMc,KAG5B,GAAwB,IAApBka,EAASz0B,OAAc,CACzB,IAAI00B,EAAWD,EAAS,GACxB,OAAO,SAA0B7a,EAAOQ,EAAMyV,GAC5C,OAAOxgB,EAAGqlB,EAAS9a,EAAOQ,EAAMyV,KAG/B,GAAwB,IAApB4E,EAASz0B,OAAc,CAC1B00B,EAAWD,EAAS,GAAxB,IACIE,EAAWF,EAAS,GACxB,OAAO,SAA0B7a,EAAOQ,EAAMyV,GAC5C,OAAOxgB,EAAGqlB,EAAS9a,EAAOQ,EAAMyV,GAAU8E,EAAS/a,EAAOQ,EAAMyV,KAIlE,OAAO,SAA0BjW,EAAOQ,EAAMyV,GAC5C,OAAOxgB,EAAGsQ,MAAM,KAAMxhB,EAAIs2B,EAAU,SAAUG,GAC5C,OAAOA,EAAQhb,EAAOQ,EAAMyV,QAUpC9K,EAAapnB,UAAUoD,QAAU,SAAU9C,GACzC,IAAK,IAAIxB,EAAI,EAAGA,EAAIL,KAAKge,KAAKpa,OAAQvD,IACpCwB,EAAS7B,KAAKge,KAAK3d,GAAI,QAAUA,EAAI,IAAKL,OAU9C2oB,EAAapnB,UAAUQ,IAAM,SAAUF,GAErC,IADA,IAAImc,KACK3d,EAAI,EAAGA,EAAIL,KAAKge,KAAKpa,OAAQvD,IACpC2d,EAAK3d,GAAKL,KAAKoe,QAAQvc,EAAS7B,KAAKge,KAAK3d,GAAI,QAAUA,EAAI,IAAKL,OAEnE,OAAO,IAAI2oB,EAAa3oB,KAAKuvB,GAAIvvB,KAAKiT,GAAI+K,EAAMhe,KAAKk3B,WAOvDvO,EAAapnB,UAAU6Q,MAAQ,WAC7B,OAAO,IAAIuW,EAAa3oB,KAAKuvB,GAAIvvB,KAAKiT,GAAIjT,KAAKge,KAAK9X,MAAM,GAAIlG,KAAKk3B,WAQrEvO,EAAapnB,UAAUk3B,QAAU,WAC/B,OAA4B,IAArBz4B,KAAKge,KAAKpa,QAQnB+kB,EAAapnB,UAAUm3B,SAAW,WAChC,OAA4B,IAArB14B,KAAKge,KAAKpa,QA8NnB+kB,EAAapnB,UAAUwd,UAAY,SAAUhX,GAC3C,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvES,EAAYnvB,GAAWA,EAAQmvB,SAAYnvB,EAAQmvB,SAAW,OAC9DlZ,EAAOhe,KAAKge,KACZ2a,EAASvB,EAA8Bp3B,KAAMy2B,EAAaS,EAAUlZ,GAAM,GAE9E,GAAoB,IAAhBA,EAAKpa,OAAc,CACrB,IAAIg1B,EAAQhpB,EAAU8mB,iBAAiB12B,KAAMy2B,GAEzCoC,EAAU7a,EAAK,GAAGjT,SAAShD,GAK/B,OAJI4wB,EAAO,KACTE,EAAU,IAAMA,EAAU,KAGd,UAAVD,EACK54B,KAAKuvB,GAAKsJ,EAGVA,EAAU74B,KAAKuvB,GAKnB,GAAmB,GAAfvR,EAAKpa,OAAa,CAC3B,IAAIk1B,EAAM9a,EAAK,GAAGjT,SAAShD,GACvBgxB,EAAM/a,EAAK,GAAGjT,SAAShD,GAQ3B,OAPI4wB,EAAO,KACTG,EAAM,IAAMA,EAAM,KAEhBH,EAAO,KACTI,EAAM,IAAMA,EAAM,KAGhB/4B,KAAKk3B,UAAsC,0BAAzBl3B,KAAKmf,iBAA6D,QAAZ+X,EACnE4B,EAAM,IAAMC,EAGdD,EAAM,IAAM94B,KAAKuvB,GAAK,IAAMwJ,EAC9B,GAAK/a,EAAKpa,OAAS,IAAiC,qBAAzB5D,KAAKmf,iBAAqE,0BAAzBnf,KAAKmf,iBAA+C,CACrI,IAAI6Z,EAAkBhb,EAAKjc,IAAI,SAAUmhB,EAAK9e,GAM5C,OALA8e,EAAMA,EAAInY,SAAShD,GACf4wB,EAAOv0B,KACT8e,EAAM,IAAMA,EAAM,KAGbA,IAGT,OAAIljB,KAAKk3B,UAAsC,0BAAzBl3B,KAAKmf,iBAA8D,SAAb+X,EACnE8B,EAAgB7xB,KAAK,KAGvB6xB,EAAgB7xB,KAAK,IAAMnH,KAAKuvB,GAAK,KAG5C,OAAOvvB,KAAKiT,GAAK,IAAMjT,KAAKge,KAAK7W,KAAK,MAAQ,KASlDwhB,EAAapnB,UAAUyd,OAAS,SAAUjX,GACxC,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvES,EAAYnvB,GAAWA,EAAQmvB,SAAYnvB,EAAQmvB,SAAW,OAC9DlZ,EAAOhe,KAAKge,KACZ2a,EAASvB,EAA8Bp3B,KAAMy2B,EAAaS,EAAUlZ,GAAM,GAE9E,GAAoB,IAAhBA,EAAKpa,OAAc,CACrB,IAAIg1B,EAAQhpB,EAAU8mB,iBAAiB12B,KAAMy2B,GAEzCoC,EAAU7a,EAAK,GAAGgB,OAAOjX,GAK7B,OAJI4wB,EAAO,KACTE,EAAU,iEAAmEA,EAAU,kEAG3E,UAAVD,EACK,gFAAkF7mB,EAAO/R,KAAKuvB,IAAM,UAAYsJ,EAGhH,iFAAmF9mB,EAAO/R,KAAKuvB,IAAM,UAAYsJ,EAM1H,GAAmB,GAAf7a,EAAKpa,OAAa,CACtB,IAAIk1B,EAAM9a,EAAK,GAAGgB,OAAOjX,GACrBgxB,EAAM/a,EAAK,GAAGgB,OAAOjX,GAQ5B,OAPO4wB,EAAO,KACTG,EAAM,iEAAmEA,EAAM,kEAE7EH,EAAO,KACTI,EAAM,iEAAmEA,EAAM,kEAGhF/4B,KAAKk3B,UAAsC,0BAAzBl3B,KAAKmf,iBAA6D,QAAZ+X,EACnE4B,EAAM,yFAA2FC,EAGnGD,EAAM,kFAAoF/mB,EAAO/R,KAAKuvB,IAAM,UAAYwJ,EAE5H,GAAK/a,EAAKpa,OAAS,IAAiC,qBAAzB5D,KAAKmf,iBAAqE,0BAAzBnf,KAAKmf,iBAA+C,CAChI,IAAI6Z,EAAkBhb,EAAKjc,IAAI,SAAUmhB,EAAK9e,GAM5C,OALA8e,EAAMA,EAAIlE,OAAOjX,GACb4wB,EAAOv0B,KACT8e,EAAM,iEAAmEA,EAAM,kEAG1EA,IAGT,OAAIljB,KAAKk3B,UAAsC,0BAAzBl3B,KAAKmf,iBAA8D,SAAb+X,EACnE8B,EAAgB7xB,KAAK,0FAGvB6xB,EAAgB7xB,KAAK,kFAAoF4K,EAAO/R,KAAKuvB,IAAM,WAGlI,MAAO,+BAAiCxd,EAAO/R,KAAKiT,IAAM,wEAA0E+lB,EAAgB7xB,KAAK,yCAA2C,kEASxMwhB,EAAapnB,UAAU2d,OAAS,SAAUnX,GACxC,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvES,EAAYnvB,GAAWA,EAAQmvB,SAAYnvB,EAAQmvB,SAAW,OAC9DlZ,EAAOhe,KAAKge,KACZ2a,EAASvB,EAA8Bp3B,KAAMy2B,EAAaS,EAAUlZ,GAAM,GAC1EuR,EAAKnY,EAAMxH,UAAU5P,KAAKiT,IAG9B,GAFAsc,OAAmB,IAAPA,EAAqBvvB,KAAKuvB,GAAKA,EAEvB,IAAhBvR,EAAKpa,OAAc,CACrB,IAAIg1B,EAAQhpB,EAAU8mB,iBAAiB12B,KAAMy2B,GAEzCoC,EAAU7a,EAAK,GAAG9a,MAAM6E,GAK5B,OAJI4wB,EAAO,KACTE,EAAU,UAAYA,EAAU,YAGpB,UAAVD,EACKrJ,EAAKsJ,EAGLA,EAAUtJ,EAKd,GAAoB,IAAhBvR,EAAKpa,OAAc,CAC5B,IAAIk1B,EAAM9a,EAAK,GACXib,EAASH,EAAI51B,MAAM6E,GACnB4wB,EAAO,KACTM,EAAS,UAAYA,EAAS,YAGhC,IAOIpB,EANAqB,EADMlb,EAAK,GACE9a,MAAM6E,GAcvB,OAbI4wB,EAAO,KACTO,EAAS,UAAYA,EAAS,YAM9BrB,EADkB,SAAhBpB,EACcqC,EAAI3Z,gBAIJ2Z,EAAI1Z,aAAaD,gBAE3Bnf,KAAKmf,iBACX,IAAK,sBAEH,OAAOoQ,EAAK,IAAM0J,EAAS,KAAYC,EAAS,IAClD,IAAK,mBAGH,OAFAD,EAAS,IAAMA,EAAS,IACxBC,EAAS,IAAMA,EAAS,IAChBrB,GACN,IAAK,kBACL,IAAK,sBACHoB,EAAS,UAAYA,EAAS,WAEpC,IAAK,wBACH,GAAIj5B,KAAKk3B,UAA0B,SAAbA,EACpB,OAAO+B,EAAS,IAAMC,EAG5B,OAAOD,EAAS1J,EAAK2J,EAChB,GAAKlb,EAAKpa,OAAS,IAAiC,qBAAzB5D,KAAKmf,iBAAqE,0BAAzBnf,KAAKmf,iBAA+C,CACrI,IAAIga,EAAenb,EAAKjc,IAAI,SAAUmhB,EAAK9e,GAKzC,OAJA8e,EAAMA,EAAIhgB,MAAM6E,GACZ4wB,EAAOv0B,KACT8e,EAAM,UAAYA,EAAM,YAEnBA,IAGT,MAA8B,0BAAzBljB,KAAKmf,iBAAgDnf,KAAKk3B,SACtDiC,EAAahyB,KAAK,KAGpBgyB,EAAahyB,KAAKooB,GAKzB,MAAO,YAAcvvB,KAAKiT,GAAK,WACzB+K,EAAKjc,IAAI,SAAUmhB,GACnB,OAAOA,EAAIhgB,MAAM6E,KAChBZ,KAAK,KAAO,YAQvBwhB,EAAapnB,UAAU4d,cAAgB,WACrC,OAAOnf,KAAKiC,KAAO,IAAMjC,KAAKiT,IAGzB0V,IAUH,SAAU/oB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GACrBA,EAAoB,GAiEjCR,EAAQgB,KAAO,SACfhB,EAAQD,QAhER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAkCpC,IAAIskB,EAAStkB,EAAM,UACjBkB,OAAU,SAAUtB,GAClB,OAAa,IAANA,GAGTkiB,UAAa,SAAUliB,GACrB,OAAOA,EAAE0kB,UAGXzC,QAAW,SAAUjiB,GACnB,OAAgB,IAATA,EAAEkjB,IAAqB,IAATljB,EAAEmjB,IAGzBhB,SAAY,SAAUniB,GACpB,OAAe,IAARA,EAAEtB,GAAmB,IAARsB,EAAEb,GAGxBkjB,KAAQ,SAAUriB,GAChB,OAAO0kB,EAAO1kB,EAAE4C,QAGlBwf,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG0kB,MAItB,OAAOA,IASH,SAAU9mB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GACrBA,EAAoB,GA2DjCR,EAAQgB,KAAO,aACfhB,EAAQD,QA1DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAgCpC,IAAIg3B,EAAah3B,EAAM,cACrBkB,OAAU,SAAUtB,GAClB,OAAOA,EAAI,GAGbkiB,UAAa,SAAUliB,GACrB,OAAQA,EAAEq3B,UAAYr3B,EAAE0kB,WAAa1kB,EAAEiG,SAGzCkc,SAAY,SAAUniB,GACpB,OAAOA,EAAEN,EAAI,GAAKM,EAAEb,EAAI,GAG1BkjB,KAAQ,SAAUriB,GAChB,OAAOo3B,EAAWp3B,EAAE4C,QAGtBwf,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGo3B,MAItB,OAAOA,IASH,SAAUx5B,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GACrBA,EAAoB,GAyDjCR,EAAQgB,KAAO,aACfhB,EAAQD,QAxDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA8BpC,IAAIyxB,EAAazxB,EAAM,cACrBkB,OAAU,SAAUtB,GAClB,OAAOA,EAAI,GAGbkiB,UAAa,SAAUliB,GACrB,OAAOA,EAAEq3B,UAAYr3B,EAAE0kB,WAAa1kB,EAAEiG,SAGxCkc,SAAY,SAAUniB,GACpB,OAAOA,EAAEN,EAAI,GAGf2iB,KAAQ,SAAUriB,GAChB,OAAO6xB,EAAW7xB,EAAE4C,QAGtBwf,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG6xB,MAItB,OAAOA,IASH,SAAUj0B,EAAQD,EAASQ,GAEjC,aASAP,EAAOD,QAAU,SAAmBqC,GAClC,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAUqW,WAAY,IAM5C,SAAUhY,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IA4KzCR,EAAQgB,KAAO,cACfhB,EAAQD,QA3KR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aAmKxB,OA/IkB,SAAUnQ,EAAGC,EAAG1F,GAEhC,IAAI+X,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACT3F,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACThF,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAIId,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAIjC,IAoBI9T,EAAG6T,EAAGgM,EAAGD,EApBT9F,EAAUP,GAAWwB,UAAehW,EACpCgV,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRqO,EAAKrI,UAAe/U,EACpBqd,EAAKtI,UAAe/U,EAEpBsd,KACAC,KAMJ,IAAKzO,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5BmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAIgY,EAAO1H,EAAI,EAEf,IAAKgM,EAAIlG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAID,EAAIC,IAE1C7f,EAAIyZ,EAAOoG,GAEX9F,EAAOzW,KAAKtD,GAEZqiB,EAAGriB,GAAKub,EAEJ4G,IACFA,EAAGniB,GAAKuZ,EAAQsG,IAGpB,IAAKA,EAAI5E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAID,EAAIC,IAItCwC,EAFJriB,EAAIgb,EAAO6E,MAEGtE,GAEZxB,EAAOzW,KAAKtD,GAGdsiB,EAAGtiB,GAAKub,EAEJ6G,IACFA,EAAGpiB,GAAK+a,EAAQ8E,IAGpB,GAAI/F,EAIF,IAFA+F,EAAI7F,EAAKnG,GAEFgM,EAAI9F,EAAOxW,QAAQ,CAIxB,IAAI01B,EAAM5W,EAFVriB,EAAI+Z,EAAO8F,IAGPqZ,EAAM5W,EAAGtiB,GAEb,GAAIi5B,IAAQ1d,GAAQ2d,IAAQ3d,EAAM,CAEhC,IAGI4d,EAAK9kB,EAHA4kB,IAAQ1d,EAAO4G,EAAGniB,GAAKia,EACvBif,IAAQ3d,EAAO6G,EAAGpiB,GAAKia,GAI3B5E,EAAG8jB,EAAIlf,GAQVF,EAAOlP,OAAOgV,EAAG,IANjB/F,EAAQxW,KAAK61B,GAEbtZ,OAcV,OAHA7F,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIyB,EAAQzB,EAAoB,GAC5BmE,EAAYnE,EAAoB,GAAGmE,UA2IvC3E,EAAQgB,KAAO,MACfhB,EAAQD,QA1IR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAgClC0mB,EAAMzkB,EAAM,OACdE,GAAI,WACF,MAA0B,WAAlBJ,EAAOG,OAAuBA,UAGxCG,OAAU,SAAUC,GAClB,OAAOJ,EAAOI,IAGhBg3B,qBAAsB,SAAU5Z,GAC9B,OAAO6Z,EAAK7Z,EAAMA,EAAwB,WAAlB3d,EAAOG,OAAsB,eAAY+C,IAGnEu0B,6BAA8B,SAAU9Z,EAAMpd,GAC5C,OAAOi3B,EAAK7Z,EAAMA,EAAMpd,IAG1Bm3B,yCAA0C,SAAU/Z,EAAM+P,GACxD,OAAO8J,EAAK7Z,EAAM+P,EAAwB,WAAlB1tB,EAAOG,OAAsB,eAAY+C,IAGnEy0B,iDAAkD,SAAUha,EAAM+P,EAAMntB,GACtE,OAAOi3B,EAAK7Z,EAAM+P,EAAMntB,IAG1BG,MAAU,SAAUa,GAClB,OAAOq2B,EAAWr2B,IAGpBs2B,gBAAkB,SAAUt2B,EAAMhB,GAChC,OAAOq3B,EAAWr2B,EAAMhB,IAG1BK,OAAU,SAAUW,GAClB,OAAOq2B,EAAWr2B,EAAK4O,UAAW5O,EAAKV,YAGzCi3B,iBAAkB,SAAUv2B,EAAMhB,GAChC,OAAOq3B,EAAWr2B,EAAK4O,UAAW5P,MAMtC,OAFAokB,EAAI3jB,WAAQkC,EAELyhB,EAEP,SAASiT,EAAYr2B,EAAMhB,GACzB,OAAQgB,EAAKG,QACX,KAAK,EAAG,OAAOnB,EAASJ,EAAOI,MAC/B,KAAK,EAAG,OAAOi3B,EAAKj2B,EAAK,GAAIA,EAAK,GAAIhB,GACtC,KAAK,EAAG,OAAOi3B,EAAKj2B,EAAK,GAAIA,EAAK,GAAIhB,GACtC,QAAS,MAAM,IAAIiC,MAAM,0CAY7B,SAASg1B,EAAM7Z,EAAM+P,EAAMntB,GAEzB,IAAIw3B,EAAOh4B,EAAKkQ,YAAY0N,IAAS5d,EAAKkQ,YAAYyd,GAC5C3tB,EAAKiiB,UACL,KAKV,GAHIjiB,EAAKkQ,YAAY0N,KAAOA,EAAOA,EAAKmH,YACpC/kB,EAAKkQ,YAAYyd,KAAOA,EAAOA,EAAK5I,aAEnC1iB,EAAUub,IAASA,EAAO,EAC7B,MAAM,IAAInb,MAAM,wDAElB,IAAKJ,EAAUsrB,IAASA,EAAO,EAC7B,MAAM,IAAIlrB,MAAM,wDAGlB,IAAIw1B,EAAMD,EAAM,IAAIh4B,EAAKiiB,UAAU,GAAK,EACpCzf,EAAew1B,EAAM,IAAIA,EAAI,GAAK,EAClCx2B,GAAQoc,EAAM+P,GAGlB,GAAIntB,EAIF,OAFQR,EAAKa,OAAOC,QAAQN,GAEnB+vB,SAAS/uB,EAAMy2B,EAAK,EAAGz1B,GAQlC,IAJA,IAAI4X,EAAMza,EAAM4C,UAAWf,EAAMgB,GAE7B01B,EAAUta,EAAO+P,EAAO/P,EAAO+P,EAE1BlvB,EAAI,EAAGA,EAAIy5B,EAASz5B,IAC3B2b,EAAI3b,GAAGA,GAAKw5B,EAEd,OAAO7d,KAUL,SAAUzc,EAAQD,EAASQ,GAEjC,aA+HAR,EAAQgB,KAAO,kBACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA9HR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KASpC,SAASyoB,EAAgBwR,GACvB,KAAMp6B,gBAAgB4oB,GACpB,MAAM,IAAIhf,YAAY,oDAIxB,IAAK3H,EAAKyb,OAAO0c,GACf,MAAM,IAAI71B,UAAU,yCAGtBvE,KAAKo6B,QAAUA,EAqGjB,OAlGAxR,EAAgBrnB,UAAY,IAAI+b,EAEhCsL,EAAgBrnB,UAAUU,KAAO,kBAEjC2mB,EAAgBrnB,UAAU62B,mBAAoB,EAe9CxP,EAAgBrnB,UAAUsc,SAAW,SAAUR,EAAMc,GACnD,OAAOne,KAAKo6B,QAAQvc,SAASR,EAAMc,IAQrCyK,EAAgBrnB,UAAU6d,WAAa,WACrC,OAAOpf,KAAKo6B,QAAQhb,cAOtBwJ,EAAgBrnB,UAAUoD,QAAU,SAAU9C,GAC5CA,EAAS7B,KAAKo6B,QAAS,UAAWp6B,OASpC4oB,EAAgBrnB,UAAUQ,IAAM,SAAUF,GAExC,OAAO,IAAI+mB,EADG/mB,EAAS7B,KAAKo6B,QAAS,UAAWp6B,QAQlD4oB,EAAgBrnB,UAAU6Q,MAAQ,WAChC,OAAO,IAAIwW,EAAgB5oB,KAAKo6B,UASlCxR,EAAgBrnB,UAAUwd,UAAY,SAAShX,GAC7C,OAAMA,GAAaA,IAAYA,EAAQ0uB,aAAiB1uB,GAAmC,SAAxBA,EAAQ0uB,YAClE,IAAMz2B,KAAKo6B,QAAQrvB,SAAShD,GAAW,IAEzC/H,KAAKo6B,QAAQrvB,SAAShD,IAS/B6gB,EAAgBrnB,UAAUyd,OAAS,SAASjX,GAC1C,OAAMA,GAAaA,IAAYA,EAAQ0uB,aAAiB1uB,GAAmC,SAAxBA,EAAQ0uB,YAClE,iEAAmEz2B,KAAKo6B,QAAQpb,OAAOjX,GAAW,iEAEpG/H,KAAKo6B,QAAQpb,OAAOjX,IAS7B6gB,EAAgBrnB,UAAU2d,OAAS,SAASnX,GAC1C,OAAMA,GAAaA,IAAYA,EAAQ0uB,aAAiB1uB,GAAmC,SAAxBA,EAAQ0uB,YAClE,UAAYz2B,KAAKo6B,QAAQl3B,MAAM6E,GAAW,WAE5C/H,KAAKo6B,QAAQl3B,MAAM6E,IAGrB6gB,IAUH,SAAUhpB,EAAQD,EAASQ,GAEjC,aAGA,IAAIiX,EAAQjX,EAAoB,GAC5B4R,EAAS5R,EAAoB,GAAG4R,OAChCvQ,EAAiBrB,EAAoB,GAAGqB,eACxCO,EAAM5B,EAAoB,GAAG4B,IAC7Bob,EAAqBhd,EAAoB,IAAIgd,mBAC7CF,EAAkB9c,EAAoB,IAAI8c,gBAyZ9Ctd,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,kBACf3T,EAAQ0d,MAAO,EACf1d,EAAQD,QA1ZR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAIC,EAAOnb,EAAKhC,EAAoB,KAChC4oB,EAAa5mB,EAAKhC,EAAoB,KAU1C,SAAS0oB,EAAa5V,EAAI+K,GACxB,KAAMhe,gBAAgB6oB,GACpB,MAAM,IAAIjf,YAAY,oDAQxB,GALkB,iBAAPqJ,IACTA,EAAK,IAAI8V,EAAW9V,KAIjBhR,EAAKyb,OAAOzK,GAAK,MAAM,IAAI1O,UAAU,mCAC1C,IAAK3B,MAAMc,QAAQsa,KAAUA,EAAKmZ,MAAMl1B,EAAKyb,QAC3C,MAAM,IAAInZ,UAAU,wDAGtBvE,KAAKiT,GAAKA,EACVjT,KAAKge,KAAOA,MAGZld,OAAOC,eAAef,KAAM,QAC1BkB,IAAK,WACH,OAAOlB,KAAKiT,GAAGtS,MAAQ,IACvB05B,KAAKr6B,MACPoT,IAAK,WACH,MAAM,IAAI1O,MAAM,kDAKpB,IAAI41B,EAAa,WACf,MAAM,IAAI51B,MAAM,gFAElB5D,OAAOC,eAAef,KAAM,UAAYkB,IAAKo5B,EAAYlnB,IAAKknB,IAGhEzR,EAAatnB,UAAY,IAAI+b,EAE7BuL,EAAatnB,UAAUU,KAAO,eAE9B4mB,EAAatnB,UAAUgtB,gBAAiB,EAexC1F,EAAatnB,UAAUsc,SAAW,SAAUR,EAAMc,GAChD,KAAMne,gBAAgB6oB,GACpB,MAAM,IAAItkB,UAAU,yBAItB,IAAI8zB,EAAWt2B,EAAI/B,KAAKge,KAAM,SAAUkF,GACtC,OAAOA,EAAIrF,SAASR,EAAMc,KAK5B,GAAIlc,EAAKosB,aAAaruB,KAAKiT,IAAK,CAE9B,IAAItS,EAAOX,KAAKiT,GAAGtS,KACfsS,EAAKtS,KAAQ0c,EAAOJ,EAAgBI,EAAM1c,QAAQyE,EAGtD,GAF2B,mBAAP6N,GAAqC,GAAdA,EAAGsnB,QAEnC,CAGT,IAAIA,EAAUv6B,KAAKge,KACnB,OAAO,SAA0BR,EAAOQ,EAAMyV,GAC5C,OAAQ9yB,KAAQ6c,EAAQP,EAAgBO,EAAO7c,GAAQsS,GAAIsnB,EAASld,EAAMG,IAK5E,GAAwB,IAApB6a,EAASz0B,OAAc,CACzB,IAAI00B,EAAWD,EAAS,GACxB,OAAO,SAA0B7a,EAAOQ,EAAMyV,GAC5C,OAAQ9yB,KAAQ6c,EAAQP,EAAgBO,EAAO7c,GAAQsS,GAAIqlB,EAAS9a,EAAOQ,EAAMyV,KAGhF,GAAwB,IAApB4E,EAASz0B,OAAc,CAC1B00B,EAAWD,EAAS,GAAxB,IACIE,EAAWF,EAAS,GACxB,OAAO,SAA0B7a,EAAOQ,EAAMyV,GAC5C,OAAQ9yB,KAAQ6c,EAAQP,EAAgBO,EAAO7c,GAAQsS,GAAIqlB,EAAS9a,EAAOQ,EAAMyV,GAAU8E,EAAS/a,EAAOQ,EAAMyV,KAInH,OAAO,SAA0BjW,EAAOQ,EAAMyV,GAC5C,OAAQ9yB,KAAQ6c,EAAQP,EAAgBO,EAAO7c,GAAQsS,GAAIsQ,MAAM,KAAMxhB,EAAIs2B,EAAU,SAAUG,GAC7F,OAAOA,EAAQhb,EAAOQ,EAAMyV,OAMjC,GAAIxxB,EAAKqsB,eAAetuB,KAAKiT,KAC9BhR,EAAKu4B,YAAYx6B,KAAKiT,GAAG7O,QAAUpE,KAAKiT,GAAG7O,MAAMof,mBAAoB,CAGvE,IAAIiX,EAAaz6B,KAAKiT,GAAG5R,OAAOwc,SAASR,EAAMc,GAC3CxL,EAAO3S,KAAKiT,GAAG7O,MAAMqf,oBAGzB,OAFI8W,EAAUv6B,KAAKge,KAEZ,SAA2BR,EAAOQ,EAAMyV,GAC7C,IAAIpyB,EAASo5B,EAAWjd,EAAOQ,EAAMyV,GAIrC,OAHAtW,EAAmB9b,EAAQsR,GACftR,EAAOsR,IAAStR,EAAOsR,GAAM4nB,QAGrCl5B,EAAOsR,GAAM4nB,EAASld,EAAMG,GAC5Bnc,EAAOsR,GAAM4Q,MAAMliB,EAAQU,EAAIs2B,EAAU,SAAUG,GACjD,OAAOA,EAAQhb,EAAOQ,EAAMyV,OAMpC,IAAIiH,EAAS16B,KAAKiT,GAAG4K,SAASR,EAAMc,GAEpC,OAAO,SAA2BX,EAAOQ,EAAMyV,GAC7C,IAAIxgB,EAAKynB,EAAOld,EAAOQ,EAAMyV,GAG7B,OAFYxgB,GAAMA,EAAGsnB,QAGjBtnB,EAAGsnB,EAASld,EAAMG,GAClBvK,EAAGsQ,MAAMtQ,EAAIlR,EAAIs2B,EAAU,SAAUG,GACnC,OAAOA,EAAQhb,EAAOQ,EAAMyV,QAUxC5K,EAAatnB,UAAUoD,QAAU,SAAU9C,GACzC,IAAK,IAAIxB,EAAI,EAAGA,EAAIL,KAAKge,KAAKpa,OAAQvD,IACpCwB,EAAS7B,KAAKge,KAAK3d,GAAI,QAAUA,EAAI,IAAKL,OAU9C6oB,EAAatnB,UAAUQ,IAAM,SAAUF,GAGrC,IAFA,IAAIoR,EAAKjT,KAAKiT,GAAGlR,IAAIF,GACjBmc,KACK3d,EAAI,EAAGA,EAAIL,KAAKge,KAAKpa,OAAQvD,IACpC2d,EAAK3d,GAAKL,KAAKoe,QAAQvc,EAAS7B,KAAKge,KAAK3d,GAAI,QAAUA,EAAI,IAAKL,OAEnE,OAAO,IAAI6oB,EAAa5V,EAAI+K,IAO9B6K,EAAatnB,UAAU6Q,MAAQ,WAC7B,OAAO,IAAIyW,EAAa7oB,KAAKiT,GAAIjT,KAAKge,KAAK9X,MAAM,KAKnD,IAAIy0B,EAAe9R,EAAatnB,UAAUwJ,SAsE1C,SAAS6vB,EAAeC,EAAUxc,EAAMtW,GAStC,IARA,IAOI0B,EAPA2N,EAAQ,GAIR0jB,EAAQ,IAAItoB,OAAO,yDAA0D,MAE7EuoB,EAAW,EAE2B,QAAlCtxB,EAAQqxB,EAAME,KAAKH,KAKzB,GAHAzjB,GAASyjB,EAAStkB,UAAUwkB,EAAUtxB,EAAMrF,OAC5C22B,EAAWtxB,EAAMrF,MAEA,OAAbqF,EAAM,GACR2N,GAAS,IACT2jB,QAEG,CACHA,GAAYtxB,EAAM,GAAG7F,OACrB,IAAItC,EAAW+c,EAAK5U,EAAM,IAC1B,IAAKnI,EACH,MAAM,IAAI25B,eAAe,sBAAwBxxB,EAAM,GAAK,oBAE9D,QAAiBrE,IAAbqE,EAAM,GACR,cAAenI,GACb,IAAK,SACH8V,GAAS9V,EACT,MACF,IAAK,SACH,GAAIW,EAAKyb,OAAOpc,GACd8V,GAAS9V,EAAS4B,MAAM6E,OAErB,CAAA,IAAInF,MAAMc,QAAQpC,GAUrB,MAAM,IAAIiD,UAAU,aAAekF,EAAM,GAAK,+CAR9C2N,GAAS9V,EAASS,IAAI,SAAUmhB,EAAK9e,GACnC,GAAInC,EAAKyb,OAAOwF,GACd,OAAOA,EAAIhgB,MAAM6E,GAEnB,MAAM,IAAIxD,UAAU,aAAekF,EAAM,GAAK,IAAMrF,EAAQ,sBAC3D+C,KAAK,KAKV,MACF,QACE,MAAM,IAAI5C,UAAU,aAAekF,EAAM,GAAK,mDAG/C,CACH,IAAIxH,EAAKyb,OAAOpc,EAASmI,EAAM,KAAOnI,EAASmI,EAAM,KAInD,MAAM,IAAIlF,UAAU,aAAekF,EAAM,GAAK,IAAMA,EAAM,GAAK,oBAH/D2N,GAAS9V,EAASmI,EAAM,IAAIvG,MAAM6E,IAU1C,OAFAqP,GAASyjB,EAAS30B,MAAM60B,GApH1BlS,EAAatnB,UAAUwJ,SAAW,SAAUhD,GAC1C,IAAI8W,EACAle,EAAOX,KAAKiT,GAAGlI,SAAShD,GAM5B,OALIA,GAAuC,iBAApBA,EAAQ+W,SAAyBtd,EAAeuG,EAAQ+W,QAASne,KAEtFke,EAAe9W,EAAQ+W,QAAQne,GAAMX,KAAM+H,SAGjB,IAAjB8W,EACFA,EAIF8b,EAAap6B,KAAKP,KAAM+H,IAQjC8gB,EAAatnB,UAAUwd,UAAY,SAAUhX,GAC3C,IAAIiW,EAAOhe,KAAKge,KAAKjc,IAAI,SAAUmhB,GACjC,OAAOA,EAAInY,SAAShD,KAQtB,OALS9F,EAAKi5B,yBAAyBl7B,KAAKiT,IACrC,IAAMjT,KAAKiT,GAAGlI,SAAShD,GAAW,IACnC/H,KAAKiT,GAAGlI,SAAShD,IAGX,IAAMiW,EAAK7W,KAAK,MAAQ,KAQtC0hB,EAAatnB,UAAUyd,OAAS,SAAUjX,GACxC,IAAIiW,EAAOhe,KAAKge,KAAKjc,IAAI,SAAUmhB,GACjC,OAAOA,EAAIlE,OAAOjX,KAIpB,MAAO,+BAAiCgK,EAAO/R,KAAKiT,IAAM,wEAA0E+K,EAAK7W,KAAK,yCAA2C,kEA8E3L,IAAIg0B,EAAYtS,EAAatnB,UAAU2B,MA+EvC,OAlEA2lB,EAAatnB,UAAU2B,MAAQ,SAAU6E,GACvC,IAAIkX,EAMJ,OALIlX,GAAuC,iBAApBA,EAAQ+W,SAAyBtd,EAAeuG,EAAQ+W,QAAS9e,KAAKW,QAE3Fse,EAAYlX,EAAQ+W,QAAQ9e,KAAKW,MAAMX,KAAM+H,SAGtB,IAAdkX,EACFA,EAIFkc,EAAU56B,KAAKP,KAAM+H,IAQ9B8gB,EAAatnB,UAAU2d,OAAS,SAAUnX,GACxC,IAIIqzB,EAOAC,EAXArd,EAAOhe,KAAKge,KAAKjc,IAAI,SAAUmhB,GACjC,OAAOA,EAAIhgB,MAAM6E,KAWnB,QANIsV,EAAKrd,KAAKW,OAA4C,mBAA1B0c,EAAKrd,KAAKW,MAAMuC,OAA2D,iBAA1Bma,EAAKrd,KAAKW,MAAMuC,OAAyD,iBAA1Bma,EAAKrd,KAAKW,MAAMuC,QAE9Ik4B,EAAiB/d,EAAKrd,KAAKW,MAAMuC,cAIpBk4B,GACb,IAAK,WACHC,EAAcD,EAAep7B,KAAM+H,GACnC,MACF,IAAK,SACHszB,EAAcT,EAAeQ,EAAgBp7B,KAAM+H,GACnD,MACF,IAAK,SACH,cAAeqzB,EAAepd,EAAKpa,SACjC,IAAK,WACHy3B,EAAcD,EAAepd,EAAKpa,QAAQ5D,KAAM+H,GAChD,MACF,IAAK,SACHszB,EAAcT,EAAeQ,EAAepd,EAAKpa,QAAS5D,KAAM+H,IAKxE,YAA2B,IAAhBszB,EACFA,EAGFT,EAAexjB,EAAMxF,gBAAiB5R,KAAM+H,IAOrD8gB,EAAatnB,UAAU4d,cAAgB,WACrC,OAAOnf,KAAKiC,KAAO,IAAMjC,KAAKW,MAGzBkoB,IAWH,SAAUjpB,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MAC/B9N,EAAYnE,EAAoB,GAAGmE,UACnC1C,EAAQzB,EAAoB,GAC5BqD,EAAarD,EAAoB,IACjCoD,EAAiBpD,EAAoB,IAqHzC,SAASm7B,EAAQh0B,EAAGC,EAAGg0B,EAAWx3B,GAChC,GAAIA,EAAMw3B,EAAW,CAEnB,GAAIj0B,EAAE1D,QAAU2D,EAAE3D,OAChB,MAAM,IAAIL,EAAe+D,EAAE1D,OAAQ2D,EAAE3D,QAIvC,IADA,IAAInD,KACKJ,EAAI,EAAGA,EAAIiH,EAAE1D,OAAQvD,IAC5BI,EAAEJ,GAAKi7B,EAAQh0B,EAAEjH,GAAIkH,EAAElH,GAAIk7B,EAAWx3B,EAAM,GAE9C,OAAOtD,EAIP,OAAO6G,EAAEmD,OAAOlD,GAIpB5H,EAAQgB,KAAO,SACfhB,EAAQD,QAvIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IA+BlCsK,EAASrI,EAAM,UAEjBo5B,yCAA0C,SAAUxd,GAClD,IAAI3d,EAGAo7B,EAFAz3B,EAAMga,EAAKpa,OACXG,GAAO,EAEP23B,GAAW,EACXC,KAEJ,IAAKt7B,EAAI,EAAGA,EAAI2D,EAAK3D,IAAK,CACxB,IAAI6iB,EAAMlF,EAAK3d,GAOf,GAJI4B,EAAK2V,SAASsL,KAChBwY,GAAW,GAGTz5B,EAAKoC,SAAS6e,IAAQjhB,EAAKkQ,YAAY+Q,GAAM,CAC/C,GAAI7iB,IAAM2D,EAAM,EACd,MAAM,IAAIU,MAAM,gDAOlB,GAHA+2B,EAAU13B,EACVA,EAAMmf,EAAI7Q,WAEL/N,EAAUP,GACb,MAAM,IAAIQ,UAAU,yCAGtB,GAAIR,EAAM,GAAM1D,EAAI,GAAK0D,EAAM03B,EAE7B,MAAM,IAAIj4B,EAAWO,EAAK03B,EAAU,OAGnC,CAEH,IAAIj7B,EAAI4R,EAAM8Q,GAAK7Q,UACf5O,EAAO7B,EAAM6B,KAAKjD,GAMtB,GALAm7B,EAASt7B,GAAKG,EACdi7B,EAAU13B,EACVA,EAAMN,EAAKG,OAAS,EAGhBvD,EAAI,GAAK0D,GAAO03B,EAClB,MAAM,IAAIl4B,EAAek4B,EAAU,EAAG13B,EAAM,IAKlD,GAAuB,GAAnB43B,EAAS/3B,OACX,MAAM,IAAIgG,YAAY,gCAIxB,IADA,IAAIyS,EAAMsf,EAAS11B,QACZ01B,EAAS/3B,QACdyY,EAAMif,EAAQjf,EAAKsf,EAAS11B,QAASlC,EAAK,GAG5C,OAAO23B,EAAWr5B,EAAOga,GAAOA,GAGlCuf,YAAa,SAAU5d,GACrB,OAAOA,EAAK7W,KAAK,OAMrB,OAFAsD,EAAOvH,WAAQkC,EAERqF,IAsCH,SAAU7K,EAAQD,EAASQ,GAEjC,aAGA,IAAI07B,EAAe17B,EAAoB,IAQvCP,EAAOD,QAAU,SAA8BiC,GAC7C,IAAK,IAAIvB,EAAI,EAAGA,EAAIuB,EAAMgC,OAAQvD,IAChC,GAAIw7B,EAAaj6B,EAAMvB,IACrB,OAAO,EAGX,OAAO,IAMH,SAAUT,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MAC/B3P,EAAStC,EAAoB,GAAGsC,OA6KpC9C,EAAQgB,KAAO,YACfhB,EAAQD,QA5KR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAE5BkC,EAASF,EAAKhC,EAAoB,IAElCuT,EAAczR,EAAKyR,YACnB+D,EAAexV,EAAKwV,aAwBpB5H,EAAYzN,EAAM,aAEpBQ,MAAS,SAAUZ,GAEjB,OAAO6N,EAAUxN,EAAOL,IAAIqQ,WAG9BvP,OAAU,SAAUd,GAElB,IAGIvB,EAHAgD,EAAOzB,EAAEyB,OAMb,OAAQA,EAAKG,QACX,KAAK,EAEHnD,EAAIuB,EAAEoQ,QACN,MAEF,KAAK,EAEH,IAAIyN,EAAOpc,EAAK,GACZqc,EAAUrc,EAAK,GAGnB,GAAgB,IAAZqc,EAEF,MAAM,IAAI1K,WAAW,uDAAyD3S,EAAOgB,GAAQ,KAI/F,OAAQzB,EAAEe,WACR,IAAK,QACHtC,EAAIq7B,EAAgB95B,EAAG6d,EAAMC,GAC7B,MACF,IAAK,SACHrf,EAAIs7B,EAAiB/5B,EAAG6d,EAAMC,GAGlC,MAEF,QAEE,MAAM,IAAI1K,WAAW,qDAAuD3S,EAAOzC,KAAKuU,OAAS,KAErG,OAAO9T,GAITyyB,IAAO,SAAUlxB,GACf,OAAOoQ,EAAMpQ,MAIb85B,EAAkB,SAAUt7B,EAAGqf,EAAMC,GAOvC,IALA,IAGIkc,EAHAn5B,EAAOrC,EAAE6T,MAET4nB,KAGK/nB,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhC8nB,EAAgBC,EAAW/nB,MAE3B,IAAK,IAAI7T,EAAI,EAAGA,EAAIwf,EAAMxf,IAExB27B,EAAc37B,GAAK+R,EAAMvP,EAAKxC,GAAG6T,IAIrC,OAAO,IAAIR,GACT7Q,KAAMo5B,EACNx4B,MAAOqc,EAASD,GAChBld,SAAUnC,EAAEiU,aAIZsnB,EAAmB,SAAUv7B,EAAGqf,EAAMC,GAWxC,IATA,IAYIre,EAAGnB,EAAG4T,EAZN8G,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KAERE,EAAUa,UAAc5V,EACxBgV,KACAC,KAEAE,KACKvY,EAAI,EAAGA,EAAI6d,EAAM7d,IACxBuY,EAAEvY,GAAK,EAIT,IAAKP,EAAI,EAAGnB,EAAI8D,EAAMR,OAAQnC,EAAInB,EAAGmB,IAEnC8Y,EAAEnW,EAAM3C,MAKV,IAFA,IAAI+X,EAAM,EAEDnZ,EAAI,EAAGA,EAAIwf,EAAMxf,IAExBga,EAAK1W,KAAK6V,GAEVA,GAAOe,EAAEla,GAETka,EAAEla,GAAKga,EAAKha,GAKd,IAFAga,EAAK1W,KAAK6V,GAELtF,EAAI,EAAGA,EAAI4L,EAAS5L,IAEvB,IAAK,IAAI8L,EAAK/E,EAAI/G,GAAI+L,EAAKhF,EAAI/G,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE1D,IAAIgc,EAAI3hB,EAAEnW,EAAM8b,MAEhB9F,EAAO8hB,GAAKhoB,EAER8G,IACFb,EAAQ+hB,GAAK9pB,EAAM4I,EAAOkF,KAIhC,OAAO,IAAIzI,GACTuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOqc,EAASD,GAChBld,SAAUnC,EAAEiU,aAMhB,OAFA5E,EAAU3M,OAASE,EAAG,4BAA8BgU,EAAMxH,UAAqB,WAExEC,IASH,SAAUjQ,EAAQD,EAASQ,GAEjC,aAGA,IAAIg8B,EAAUh8B,EAAoB,KAC9BoD,EAAiBpD,EAAoB,IA8JzCR,EAAQgB,KAAO,cACfhB,EAAQD,QA7JR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aAqJxB,OAjIkB,SAAUnQ,EAAGC,EAAG1F,GAEhC,IAAI+X,EAAUtS,EAAEuS,QACZvF,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZ5E,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAIId,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAwBjC,IApBA,IAAIgG,EAAUP,GAAWwB,UAAehW,EACpCgV,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRnS,EAAImY,UAAe/U,EAEnBmV,KAEA6hB,KAGKloB,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhCmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAIgY,EAAO1H,EAAI,EAMf,GAJAioB,EAAQ70B,EAAG4M,EAAGqG,EAAGvY,EAAGo6B,EAAGxgB,EAAMnb,EAAGiU,GAEhCynB,EAAQ50B,EAAG2M,EAAGqG,EAAGvY,EAAGo6B,EAAGxgB,EAAMnb,EAAGiU,GAE5B1S,EAIF,IAFA,IAAIke,EAAI7F,EAAKnG,GAENgM,EAAI9F,EAAOxW,QAAQ,CAExB,IAAIvD,EAAI+Z,EAAO8F,GAEf,GAAIkc,EAAE/7B,KAAOub,EAAM,CAEjB,IAAI6E,EAAIze,EAAE3B,GAELqV,EAAG+K,EAAGnG,GAQTF,EAAOlP,OAAOgV,EAAG,IANjB/F,EAAQxW,KAAK8c,GAEbP,UASF9F,EAAOlP,OAAOgV,EAAG,QAQrB,IAFA,IAAIze,EAAI4Y,EAAKnG,GAENzS,EAAI2Y,EAAOxW,QAIZw4B,EAFIhiB,EAAO3Y,MAEFma,EAEXxB,EAAOlP,OAAOzJ,EAAG,GAIjBA,IASR,OAHA4Y,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAyDlCR,EAAQgB,KAAO,YACfhB,EAAQD,QAxDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgK,EAAQjK,EAAKhC,EAAoB,MACjCiX,EAAQjX,EAAoB,GAwB5B2P,EAAY1N,EAAM,aACpBkB,OAAU,SAAUnC,GAClB,GAAIA,EAAI,EACN,MAAM,IAAIuD,MAAM,8BAGlB,OAAO0H,EAAMjL,EAAI,IAGnB+iB,UAAa,SAAU/iB,GACrB,GAAIA,EAAE0yB,aACJ,MAAM,IAAInvB,MAAM,8BAGlB,OAAO0H,EAAMjL,EAAEse,KAAK,KAGtB2E,iBAAkB,SAAUjjB,GAC1B,OAAOQ,EAAQR,EAAG2O,MAQtB,OAJAA,EAAU5M,OACRE,EAAG,4BAA8BgU,EAAMxH,UAAqB,WAGvDE,IASH,SAAUlQ,EAAQD,EAASQ,GAEjC,aAGA,IAAImE,EAAYnE,EAAoB,GAAGmE,UAmFvC,SAAS+3B,EAAkBl7B,GACzB,OAAOA,EAAEmD,aAAenD,EAAEm7B,IAAI,GAGhC38B,EAAQgB,KAAO,eACfhB,EAAQD,QAtFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAwBpC,IAAIm6B,EAAen6B,EAAM,gBACvBoT,iBAAkB,SAAUrU,EAAG+e,GAC7B,IAAItU,EAAKmN,EAAQ1Y,EAEjB,IAAKiE,EAAUnD,IAAMA,EAAI,EACvB,MAAM,IAAIoD,UAAU,4DAEtB,IAAKD,EAAU4b,IAAMA,EAAI,EACvB,MAAM,IAAI3b,UAAU,4DAEtB,GAAI2b,EAAI/e,EACN,MAAM,IAAIoD,UAAU,qCAKtB,IAFAqH,EAAM1G,KAAK0G,IAAIsU,EAAG/e,EAAI+e,GACtBnH,EAAS,EACJ1Y,EAAI,EAAGA,GAAKc,EAAIyK,EAAKvL,IACxB0Y,EAASA,GAAUnN,EAAMvL,GAAKA,EAGhC,OAAO0Y,GAGTtD,uBAAwB,SAAUtU,EAAG+e,GACnC,IAAItU,EAAKmN,EAAQ1Y,EAAGkG,EAChB2zB,EAAM,IAAIj4B,EAAKiiB,UAAU,GAE7B,IAAKmY,EAAkBl7B,KAAOk7B,EAAkBnc,GAC9C,MAAM,IAAI3b,UAAU,4DAEtB,GAAI2b,EAAEkG,GAAGjlB,GACP,MAAM,IAAIoD,UAAU,kDAMtB,IAHAqH,EAAMzK,EAAEqf,MAAMN,GACVA,EAAE0G,GAAGhb,KAAMA,EAAMsU,GACrBnH,EAASmhB,EACJ75B,EAAI65B,EAAK3zB,EAAKpF,EAAEqf,MAAM5U,GAAMvL,EAAEsmB,IAAIpgB,GAAKlG,EAAIA,EAAEof,KAAK,GACrD1G,EAASA,EAAO4H,MAAM/U,EAAI6T,KAAKpf,IAAIm8B,UAAUn8B,GAG/C,OAAO0Y,KAQX,OAFAwjB,EAAar5B,OAASG,EAAG,mCAElBk5B,IAkBH,SAAU38B,EAAQD,GAOxBC,EAAOD,QAAU,SAAqBqC,GACpC,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAU4Q,cAAe,IAM/C,SAAUvS,EAAQD,EAASQ,GAEjC,aAGA,IAII4U,EAJO5U,EAAoB,IAEbqC,OAEIuS,SAiQtBpV,EAAQgB,KAAO,SACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QAjQR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAqBpC,SAASU,IACP,KAAM9C,gBAAgB8C,GACpB,MAAM,IAAI8G,YAAY,oDAqO1B,OA9NA9G,EAAOvB,UAAUU,KAAO,SACxBa,EAAOvB,UAAUqW,UAAW,EAS5B9U,EAAOC,QAAU,SAAUN,GAEzB,IAAKsS,EAAStS,GACZ,MAAM,IAAI8B,UAAU,iCAItB,IAAIsO,EAAc/P,EAAOiwB,SAAStwB,GAClC,IAAKoQ,EACH,MAAM,IAAIjJ,YAAY,sCAAwCnH,GAIhE,OAAOoQ,GAIT/P,EAAOiwB,YAUPjwB,EAAOvB,UAAUwB,QAAU,WAEzB,MAAM,IAAI2B,MAAM,gDAWlB5B,EAAOvB,UAAUoB,SAAW,WAE1B,MAAM,IAAI+B,MAAM,iDAQlB5B,EAAOvB,UAAU+hB,OAAS,SAAUzgB,EAAMF,GACxC,MAAM,IAAI+B,MAAM,+CAgBlB5B,EAAOvB,UAAU4f,OAAS,SAAU/c,EAAO6c,EAAaxc,GAEtD,MAAM,IAAIC,MAAM,+CAQlB5B,EAAOvB,UAAUL,IAAM,SAAUkD,GAE/B,MAAM,IAAIM,MAAM,4CAYlB5B,EAAOvB,UAAU6R,IAAM,SAAUhP,EAAOQ,EAAOH,GAE7C,MAAM,IAAIC,MAAM,4CAelB5B,EAAOvB,UAAUiD,OAAS,SAAUf,EAAMgB,GAExC,MAAM,IAAIC,MAAM,+CAYlB5B,EAAOvB,UAAU8D,QAAU,SAAU5B,EAAMgB,GAEzC,MAAM,IAAIC,MAAM,gDAOlB5B,EAAOvB,UAAU6Q,MAAQ,WAEvB,MAAM,IAAI1N,MAAM,8CAOlB5B,EAAOvB,UAAUkC,KAAO,WAEtB,MAAM,IAAIiB,MAAM,6CAalB5B,EAAOvB,UAAUQ,IAAM,SAAUF,EAAUC,GAEzC,MAAM,IAAI4C,MAAM,4CASlB5B,EAAOvB,UAAUoD,QAAU,SAAU9C,GAEnC,MAAM,IAAI6C,MAAM,gDAOlB5B,EAAOvB,UAAUmiB,QAAU,WAEzB,MAAM,IAAIhf,MAAM,gDAOlB5B,EAAOvB,UAAU8Q,QAAU,WAEzB,MAAM,IAAI3N,MAAM,gDAWlB5B,EAAOvB,UAAUkB,OAAS,SAAUsF,GAElC,MAAM,IAAIrD,MAAM,+CAOlB5B,EAAOvB,UAAUwJ,SAAW,WAE1B,MAAM,IAAIrG,MAAM,iDAIX5B,IAUH,SAAUlD,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAuLzCR,EAAQgB,KAAO,cACfhB,EAAQD,QAtLR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aA8KxB,OA1JkB,SAAUnQ,EAAGC,EAAG1F,GAEhC,IAAI+X,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACT3F,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACThF,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAIId,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAIjC,IAoBI9T,EAAG6T,EAAGgM,EAAGF,EAAIC,EApBb9F,EAAUP,GAAWwB,UAAehW,EACpCgV,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRqO,EAAK5I,GAAWwB,UAAehW,EAC/Bqd,EAAK7I,GAAWwB,UAAehW,EAE/Bsd,KACAC,KAMJ,IAAKzO,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5BmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAIgY,EAAO1H,EAAI,EAEf,IAAK8L,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAEnD7f,EAAIyZ,EAAOoG,GAEX9F,EAAOzW,KAAKtD,GAEZqiB,EAAGriB,GAAKub,EAEJ4G,IACFA,EAAGniB,GAAKuZ,EAAQsG,IAGpB,IAAKF,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAInD,GAAIwC,EAFJriB,EAAIgb,EAAO6E,MAEGtE,GAEZ,GAAI4G,EAAI,CAEN,IAAI/B,EAAI/L,EAAG8N,EAAGniB,GAAI+a,EAAQ8E,IAErBxK,EAAG+K,EAAGnG,GAMToI,EAAGriB,GAAK,KAJRmiB,EAAGniB,GAAKogB,QAUZrG,EAAOzW,KAAKtD,GAEZsiB,EAAGtiB,GAAKub,EAEJ6G,IACFA,EAAGpiB,GAAK+a,EAAQ8E,IAItB,GAAIsC,GAAMC,EAIR,IAFAvC,EAAI7F,EAAKnG,GAEFgM,EAAI9F,EAAOxW,QAIZ8e,EAFJriB,EAAI+Z,EAAO8F,MAEGtE,GAEZzB,EAAQ+F,GAAKsC,EAAGniB,GAEhB6f,KAEOyC,EAAGtiB,KAAOub,GAEjBzB,EAAQ+F,GAAKuC,EAAGpiB,GAEhB6f,KAIA9F,EAAOlP,OAAOgV,EAAG,GASzB,OAHA7F,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA+ElCR,EAAQgB,KAAO,SACfhB,EAAQD,QA9ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GA0BpC,IAAIkB,EAASlB,EAAM,UACjBE,GAAI,WACF,OAAO,GAGTgB,OAAU,SAAUtB,GAClB,OAAOA,GAGTQ,OAAU,SAAUR,GAClB,IAAIy6B,EAAMnxB,OAAOtJ,GACjB,GAAIiG,MAAMw0B,GACR,MAAM,IAAI7yB,YAAY,WAAa5H,EAAI,wBAEzC,OAAOy6B,GAGTvY,UAAa,SAAUliB,GACrB,OAAOA,EAAEglB,YAGX7C,SAAY,SAAUniB,GACpB,OAAOA,EAAEqQ,WAGXgS,KAAQ,SAAUriB,GAChB,MAAM,IAAI0C,MAAM,iDAGlBunB,KAAQ,SAAUjqB,GAChB,OAAO,GAGT06B,sBAAuB,SAAUC,EAAMC,GACrC,OAAOD,EAAK3V,SAAS4V,IAGvBxY,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGsB,MAUtB,OANAA,EAAOJ,OACLC,EAAG,IACHC,EAAG,4BACHC,EAAG,sDAGEC,IASH,SAAU1D,EAAQD,EAASQ,GAEjC,aAGA,IAAI4B,EAAM5B,EAAoB,GAAG4B,IAC7BgQ,EAAS5R,EAAoB,GAAG4R,OA+PpCpS,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA/PR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAChC08B,EAAQ16B,EAAKhC,EAAoB,KAEjCuD,EAAUd,MAAMc,QAiBpB,SAAS+kB,EAAU3E,EAAYgZ,GAC7B,KAAM98B,gBAAgByoB,GACpB,MAAM,IAAI7e,YAAY,oDAOxB,GAJA5J,KAAK8jB,WAAaA,EAClB9jB,KAAK88B,YAAcA,IAAe,GAG7Bp5B,EAAQogB,KAAgBA,EAAWqT,MAAMl1B,EAAKyb,QACjD,MAAM,IAAInZ,UAAU,8DAEtB,GAAIvE,KAAK88B,cAAgB98B,KAAKwjB,mBAC5B,MAAM,IAAI9e,MAAM,qDAIlB,IAAI41B,EAAa,WACf,MAAM,IAAI51B,MAAM,0EAElB5D,OAAOC,eAAef,KAAM,UAAYkB,IAAKo5B,EAAYlnB,IAAKknB,IAyMhE,SAASyC,EAAY1mB,EAAOC,EAAK0mB,GAC/B,OAAO,IAAIH,EACP56B,EAAKkQ,YAAYkE,GAASA,EAAM2Q,WAAa3Q,EAC7CpU,EAAKkQ,YAAYmE,GAASA,EAAI0Q,WAAe1Q,EAC7CrU,EAAKkQ,YAAY6qB,GAASA,EAAKhW,WAAcgW,GAInD,OA9MAvU,EAAUlnB,UAAY,IAAI+b,EAE1BmL,EAAUlnB,UAAUU,KAAO,YAE3BwmB,EAAUlnB,UAAUi5B,aAAc,EAelC/R,EAAUlnB,UAAUsc,SAAW,SAAUR,EAAMc,GAQ7C,IAAI8e,EAAiBl7B,EAAI/B,KAAK8jB,WAAY,SAAUnC,EAAOthB,GACzD,GAAI4B,EAAKi7B,YAAYvb,GAAQ,CAC3B,GAAIA,EAAMwb,WAAY,EAEhBC,EAAgBt8B,OAAOwiB,OAAOnF,IACf,KAAI,EAEvB,IAAIkf,EAAY1b,EAAMtL,MAAMwH,SAASR,EAAM+f,GACvCE,EAAU3b,EAAMrL,IAAIuH,SAASR,EAAM+f,GACnCG,EAAW5b,EAAMqb,KACfrb,EAAMqb,KAAKnf,SAASR,EAAM+f,GAC1B,WAAc,OAAO,GAE3B,OAAO,SAAuB5f,EAAOQ,EAAMyV,GACzC,IAAIhwB,EAAO4Z,EAAK5Z,KAAKgwB,GAASphB,UAC1BmrB,EAAY18B,OAAOwiB,OAAOtF,GAG9B,OAFAwf,EAAe,IAAI/5B,EAAKpD,GAEjB08B,EACLM,EAAU7f,EAAOggB,EAAW/J,GAC5B6J,EAAQ9f,EAAOggB,EAAW/J,GAC1B8J,EAAS/f,EAAOggB,EAAW/J,KAY/B,OANI4J,EAAY1b,EAAMtL,MAAMwH,SAASR,EAAMc,GACvCmf,EAAU3b,EAAMrL,IAAIuH,SAASR,EAAMc,GACnCof,EAAW5b,EAAMqb,KACfrb,EAAMqb,KAAKnf,SAASR,EAAMc,GAC1B,WAAc,OAAO,GAEpB,SAAuBX,EAAOQ,EAAMyV,GACzC,OAAOsJ,EACLM,EAAU7f,EAAOQ,EAAMyV,GACvB6J,EAAQ9f,EAAOQ,EAAMyV,GACrB8J,EAAS/f,EAAOQ,EAAMyV,KAKzB,GAAIxxB,EAAKosB,aAAa1M,IAAyB,QAAfA,EAAMhhB,KAAgB,CAEzD,IAAIy8B,GAAAA,EAAgBt8B,OAAOwiB,OAAOnF,IACf,KAAI,EAEvB,IAAIsf,EAAY9b,EAAM9D,SAASR,EAAM+f,GAErC,OAAO,SAAuB5f,EAAOQ,EAAMyV,GACzC,IAAIhwB,EAAO4Z,EAAK5Z,KAAKgwB,GAASphB,UAC1BmrB,EAAY18B,OAAOwiB,OAAOtF,GAG9B,OAFAwf,EAAe,IAAI/5B,EAAKpD,GAEjBo9B,EAAUjgB,EAAOggB,EAAW/J,IAMrC,OADIgK,EAAY9b,EAAM9D,SAASR,EAAMc,GAC9B,SAAuBX,EAAOQ,EAAMyV,GACzC,OAAOgK,EAAUjgB,EAAOQ,EAAMyV,MAKpC,OAAO,SAAwBjW,EAAOQ,EAAMyV,GAC1C,IAAI3P,EAAa/hB,EAAIk7B,EAAgB,SAAUS,GAC7C,OAAOA,EAAclgB,EAAOQ,EAAMyV,KAEpC,OAAOpW,EAAKjZ,MAAMmf,MAAMlG,EAAMyG,KAQlC2E,EAAUlnB,UAAUoD,QAAU,SAAU9C,GACtC,IAAK,IAAIxB,EAAI,EAAGA,EAAIL,KAAK8jB,WAAWlgB,OAAQvD,IAC1CwB,EAAS7B,KAAK8jB,WAAWzjB,GAAI,cAAgBA,EAAI,IAAKL,OAU1DyoB,EAAUlnB,UAAUQ,IAAM,SAAUF,GAElC,IADA,IAAIiiB,KACKzjB,EAAI,EAAGA,EAAIL,KAAK8jB,WAAWlgB,OAAQvD,IAC1CyjB,EAAWzjB,GAAKL,KAAKoe,QAAQvc,EAAS7B,KAAK8jB,WAAWzjB,GAAI,cAAgBA,EAAI,IAAKL,OAGrF,OAAO,IAAIyoB,EAAU3E,IAOvB2E,EAAUlnB,UAAU6Q,MAAQ,WAC1B,OAAO,IAAIqW,EAAUzoB,KAAK8jB,WAAW5d,MAAM,KAO7CuiB,EAAUlnB,UAAUiiB,iBAAmB,WACrC,OAAkC,IAA3BxjB,KAAK8jB,WAAWlgB,QACnB3B,EAAKotB,eAAervB,KAAK8jB,WAAW,KACA,iBAA7B9jB,KAAK8jB,WAAW,GAAGlf,OAQhC6jB,EAAUlnB,UAAUkiB,kBAAoB,WACtC,OAAOzjB,KAAKwjB,mBAAqBxjB,KAAK8jB,WAAW,GAAGlf,MAAQ,MAQ9D6jB,EAAUlnB,UAAUwd,UAAY,SAAUhX,GAExC,OAAO/H,KAAK88B,YACL,IAAM98B,KAAKyjB,oBACX,IAAMzjB,KAAK8jB,WAAW3c,KAAK,MAAQ,KAQ5CshB,EAAUlnB,UAAUyd,OAAS,SAAUjX,GAGxC,IADA,IAAI+b,KACKzjB,EAAE,EAAGA,EAAEL,KAAK8jB,WAAWlgB,OAAQvD,IACtCyjB,EAAWzjB,GAAKL,KAAK8jB,WAAWzjB,GAAG2e,SAErC,OAAIhf,KAAK88B,YACA,sGAA6G/qB,EAAO/R,KAAKyjB,qBAAuB,UAEhJ,kEAAoEK,EAAW3c,KAAK,yCAA2C,mEAQvIshB,EAAUlnB,UAAU2d,OAAS,SAAUnX,GACrC,IAAI+b,EAAa9jB,KAAK8jB,WAAW/hB,IAAI,SAAU4f,GAC7C,OAAOA,EAAMze,MAAM6E,KAGrB,OAAO/H,KAAK88B,YACL,IAAM98B,KAAKyjB,oBACX,KAAOK,EAAW3c,KAAK,KAAO,KAYhCshB,IAUH,SAAU7oB,EAAQD,GAkCxBA,EAAQD,QAhCR,SAAkBuC,EAAMC,EAAQC,EAAMC,GASpC,OAAO,SAAiC0b,EAAYT,EAAMG,GAExD,IAAIS,EAASH,EAAWhX,OAAO,SAAUuX,GACvC,OAAOpc,EAAKosB,aAAahQ,MACnBA,EAAK1d,QAAQ0c,MACbgB,EAAK1d,QAAQ6c,KAClB,GAEH,IAAKS,EACH,MAAM,IAAIvZ,MAAM,qDAAuDoZ,EAAa,KAItF,IAAInd,EAAOsd,EAAOtd,KACdg9B,EAAW78B,OAAOwiB,OAAO9F,GACzB9H,EAAKoI,EAAWL,UACpB,OAAO,SAA0Bzb,GAE/B,OADA27B,EAASh9B,GAAQqB,EACV0T,EAAG6H,KAAKogB,OAUf,SAAU/9B,EAAQD,EAASQ,GAEjC,aAGA,IAAIy9B,EAAYz9B,EAAoB,GAAGsD,KACnCmU,EAAWzX,EAAoB,IAC/BqD,EAAarD,EAAoB,IAiCrC,SAAS09B,EAAQC,EAAK/5B,EAAKlC,GACzB,IAAIxB,EAAG09B,EAAKC,EAAKC,EAEjB,GAAGl6B,GAAK,EAAE,CACR,GAAKnB,MAAMc,QAAQo6B,EAAI,IAMlB,CAGH,IAFAG,EAsBN,SAAiBH,GACf,IAEIz9B,EAAG6T,EAFHgqB,EAAIJ,EAAIl6B,OACRu6B,EAAIL,EAAI,GAAGl6B,OAEXm6B,KACJ,IAAK7pB,EAAE,EAAGA,EAAEiqB,EAAGjqB,IAAK,CAClB,IAAIkqB,KACJ,IAAK/9B,EAAE,EAAGA,EAAE69B,EAAG79B,IACb+9B,EAAIz6B,KAAKm6B,EAAIz9B,GAAG6T,IAElB6pB,EAAIp6B,KAAKy6B,GAEX,OAAOL,EAlCIM,CAAQP,GACfC,KACI19B,EAAE,EAAGA,EAAE49B,EAAKr6B,OAAQvD,IACtB09B,EAAI19B,GAAKw9B,EAAQI,EAAK59B,GAAI0D,EAAI,EAAGlC,GAEnC,OAAOk8B,EAVP,IADAC,EAAMF,EAAI,GACNz9B,EAAE,EAAGA,EAAEy9B,EAAIl6B,OAAQvD,IACrB29B,EAAMn8B,EAASm8B,EAAKF,EAAIz9B,IAE1B,OAAO29B,EAWT,IADAD,KACI19B,EAAE,EAAGA,EAAEy9B,EAAIl6B,OAAQvD,IACrB09B,EAAI19B,GAAKw9B,EAAQC,EAAIz9B,GAAI0D,EAAI,EAAGlC,GAElC,OAAOk8B,EA7CXn+B,EAAOD,QAAU,SAASm+B,EAAK/5B,EAAKlC,GAClC,IAAI4B,EAAOb,MAAMc,QAAQo6B,GAAOF,EAAUE,GAAOA,EAAIr6B,OACrD,GAAIM,EAAM,GAAMA,GAAON,EAAKG,OAE1B,MAAM,IAAIJ,EAAWO,EAAKN,EAAKG,QAGjC,OAAIgU,EAASkmB,GACJA,EAAIxa,OAAOua,EAAQC,EAAIzrB,UAAWtO,EAAKlC,IAEvCg8B,EAAQC,EAAK/5B,EAAKlC,KA+DvB,SAAUjC,EAAQD,EAASQ,GAEjC,aA8pBAR,EAAQ0d,MAAO,EACf1d,EAAQgB,KAAO,WACfhB,EAAQD,QA5pBR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAI2L,EAAQ7mB,EAAKhC,EAAoB,KACjC6Q,EAAQ7O,EAAKhC,EAAoB,KACjCooB,EAAepmB,EAAKhC,EAAoB,KACxC0oB,EAAe1mB,EAAKhC,EAAoB,KACxCwoB,EAAexmB,EAAKhC,EAAoB,KACxCyoB,EAAkBzmB,EAAKhC,EAAoB,KAC3C4oB,EAAa5mB,EAAKhC,EAAoB,KAEtCm+B,GADOn8B,EAAKhC,EAAoB,KACbgC,EAAKhC,EAAoB,OAC5Co+B,EAAep8B,EAAKhC,EAAoB,MACxCq+B,EAAUr8B,EAAKhC,EAAoB,MAEnC2U,EAAO3S,EAAKhC,EAAoB,MAChCs+B,EAAgB3pB,EAAK2pB,cACrBC,EAAgB5pB,EAAK4pB,cACrBj5B,EAAUqP,EAAKrP,QACfk5B,EAAa7pB,EAAK6pB,WAClBC,EAAa9pB,EAAK8pB,WAClBC,EAAyB/pB,EAAK+pB,uBA6D9BC,EAAW18B,EAAM,YACnBI,OAAU,SAAUob,GAClB,OAAOkhB,EAAS9V,EAAMpL,GAAOkhB,EAASC,WAGxCC,iBAAkB,SAAUphB,EAAMJ,GAChC,OAAOshB,EAAS9V,EAAMpL,GAAOkhB,EAASC,MAAOvhB,IAG/CyhB,gBAAiB,SAAUrhB,EAAMmhB,GAC/B,OAAOD,EAAS9V,EAAMpL,GAAOmhB,OAG/BG,wBAAyB,SAAUthB,EAAMmhB,EAAOvhB,GAC9C,OAAOshB,EAAS9V,EAAMpL,GAAOmhB,EAAOvhB,IAGtC2hB,eAAgB,SAAUvhB,EAAMJ,GAC9B,OAAOshB,EAASlhB,EAAMkhB,EAASC,MAAOvhB,IAGxCF,KAAQ,SAAUM,GAChB,OAAOkhB,EAASlhB,EAAMkhB,EAASC,WAGjCK,cAAe,SAAUxhB,EAAMmhB,GAC7B,OAAOD,EAASlhB,EAAMmhB,OAGxBM,sBAAuB,SAAUzhB,EAAMmhB,EAAOvhB,GAC5CuhB,EA+IJ,SAAqBA,GAGnB,IADA,IAAIO,KACIj/B,EAAE,EAAGA,EAAE0+B,EAAMn7B,OAAQvD,IAAK,CAChC,IACIk/B,EADAC,EAAOT,EAAM1+B,GAEbo/B,SAAkBD,EACtB,OAAQC,GACN,IAAK,SACH,IAAIC,EAAKF,EAAKt1B,MAAM,MACpB,GAAkB,IAAdw1B,EAAG97B,OACL,MAAMgG,YAAY,yBAA2B41B,GAE/CA,GAAQl/B,EAAGo/B,EAAG,GAAIvf,EAAGuf,EAAG,IAE1B,IAAK,SAYH,GAXAH,GACEj/B,EAAGq/B,EAAa3W,EAAMwW,EAAKl/B,IAC3B6f,EAAGwf,EAAa3W,EAAMwW,EAAKrf,KAE1Bqf,EAAK/L,UACN8L,EAAQK,SAAWJ,EAAK/L,SAEvB+L,EAAKI,WACNL,EAAQK,SAAW5W,EAAMwW,EAAKI,WAG5BlB,EAAca,EAAQj/B,GAAI,CAC5B,IAAIu/B,EAAWhB,EAAuBU,EAAQj/B,GAC1Cw/B,EAyBL,IAAI/W,EAAW,KAAOgX,KAxBrBR,EAAQS,YACRT,EAAQS,SAAS1/B,EAAIu/B,GAAUN,EAAQj/B,EAAE8R,QAAS0tB,IAGlDr6B,EAAQ85B,EAAQS,SAAS1/B,GACzBq+B,EAAWY,EAAQS,SAAS1/B,GAC5Bi/B,EAAQS,SAAS7f,EAAI0f,GAAUN,EAAQpf,EAAG2f,IAE5C,MACF,IAAK,WACHP,EAAUC,EACV,MACF,QACE,MAAMj7B,UAAU,6BAA+Bk7B,GAInDH,EAAQ37B,KAAK47B,GAEf,OAAOD,EAhMGW,CAAYlB,GAOpB,IALA,IACI1iB,EACA6jB,KAEAp1B,GAHAuR,EAAMsjB,EADNtjB,EAAMmiB,EAAQ5gB,EAAMJ,KAIVzS,UAAU0rB,YAAa,SAC9ByJ,EAAQp1B,IAAM,CACnBo1B,EAAQp1B,IAAO,EACfi1B,EAAW,EACX,IAAK,IAAI1/B,EAAE,EAAGA,EAAE0+B,EAAMn7B,OAAQvD,IACJ,mBAAb0+B,EAAM1+B,GACfgc,EAAM0iB,EAAM1+B,GAAGgc,IAGf5W,EAAQ4W,GACRA,EAAM8jB,EAAU9jB,EAAK0iB,EAAM1+B,KAE7Bu+B,EAAWviB,GAEbvR,EAAMuR,EAAItR,UAAU0rB,YAAa,QAGnC,OAAOpa,KAMX,SAASsjB,EAAathB,GACpB,OAAOA,EAAKG,UAAU,SAASH,EAAM/K,EAAMiL,GACzC,OAAOtc,EAAKm2B,kBAAkB/Z,GACxBA,EAAK+b,QACL/b,IAPVygB,EAASP,aAAeA,EACxBO,EAASN,QAAUA,EAWnB,IAAI4B,GACF/wB,MAAM,EACNC,OAAO,EACPnJ,GAAG,EACH9F,GAAG,EACH2H,UAAU,EACVq4B,KAAK,EACLv3B,MAAM,EACNw3B,OAAO,EACPC,QAAQ,EACR5Y,KAAK,EACL9Y,KAAK,EACLb,IAAI,EACJwyB,SAAS,EACTC,OAAO,EACPhyB,KAAK,GAePqwB,EAASC,OACPR,GAQEj+B,EAAG,SAAU6f,EAAE,MAGf7f,EAAG,OAAQ6f,EAAE,UACb7f,EAAG,SAAU6f,EAAG,aAChB7f,EAAG,KAAM6f,EAAG,aACZ7f,EAAG,UAAW6f,EAAE,aAChB7f,EAAG,OAAQ6f,EAAE,YAGb7f,EAAG,gBAAiB6f,EAAG,kBAGvB7f,EAAG,MAAO6f,EAAG,QACb7f,EAAG,WAAY6f,EAAG,aAClB7f,EAAG,cAAe6f,EAAG,cAGrB7f,EAAG,MAAO6f,EAAG,QACb7f,EAAG,OAAQ6f,EAAG,MACd7f,EAAG,aAAc6f,EAAG,cACpB7f,EAAG,gBAAiB6f,EAAG,eAGvB7f,EAAG,sBAAuB6f,EAAE,0BAE9Bme,GAEEh+B,EAAG,UAAW6f,EAAG,YAGjB7f,EAAG,MAAO6f,EAAG,MAAOsT,SAAW/iB,KAASgwB,aAAY,MACpDpgC,EAAG,MAAO6f,EAAG,MAAOsT,SAAWpjB,UAAcqwB,aAAY,MAIzDpgC,EAAG,QAAS6f,EAAE,SACd7f,EAAG,YAAa6f,EAAE,SAClB7f,EAAG,WAAY6f,EAAE,YACjB7f,EAAG,QAAS6f,EAAE,SAEd7f,EAAG,YAAa6f,EAAE,cAClB7f,EAAG,YAAa6f,EAAE,YAIlB7f,EAAG,MAAO6f,EAAG,MAwEjB,IAAI4f,EAAW,EAWXI,EAAY/9B,EAAM,aACpB+8B,eAAgB,SAAU9gB,EAAMmhB,GAK9B,IAAInjB,EAAMgC,EAKV,GAAIhC,aAAesM,GAAgBtM,aAAewM,GAChD,GAAIxM,EAAI2B,KACN,IAAI,IAAI3d,EAAE,EAAGA,EAAEgc,EAAI2B,KAAKpa,OAAQvD,IAC9Bgc,EAAI2B,KAAK3d,GAAK8/B,EAAU9jB,EAAI2B,KAAK3d,GAAIm/B,QAInCnjB,aAAeuM,GAClBvM,EAAI+d,UACL/d,EAAI+d,QAAU+F,EAAU9jB,EAAI+d,QAASoF,IAKzC,IAAImB,EAAOnB,EAAKrf,EACZygB,EAAUC,EAAWrB,EAAKl/B,EAAG+b,GAAK,GAStC,IALKukB,GAAWpB,EAAKQ,WACnBW,EAAOnB,EAAKQ,SAAS7f,EACrBygB,EAAUC,EAAWrB,EAAKQ,SAAS1/B,EAAG+b,GAAK,IAGzCukB,EAAS,CAIXvkB,EAAMskB,EAAKvuB,QAGX,IAAIqM,EAAa,SAASJ,GACxB,OAAGA,EAAKgQ,cAAgBuS,EAAQE,aAAat/B,eAAe6c,EAAK1d,MACxDigC,EAAQE,aAAaziB,EAAK1d,MAAMyR,QAGhCiM,EAAKtc,IAAI0c,IAIpBpC,EAAMoC,EAAWpC,GAMnB,OAAOA,KAmCX,SAAS0kB,EAAWC,EAAQC,GAC1B,IAAI5kB,GAAOykB,iBAGX,IAAKE,EAAOF,eAAiBG,EAAOH,aAClC,OAAOzkB,EAEJ,IAAK2kB,EAAOF,aACf,OAAOG,EAEJ,IAAKA,EAAOH,aACf,OAAOE,EAIT,IAAK,IAAIvuB,KAAOuuB,EAAOF,aAErB,GADAzkB,EAAIykB,aAAaruB,GAAOuuB,EAAOF,aAAaruB,GACxCwuB,EAAOH,aAAat/B,eAAeiR,KAChCyuB,EAAYF,EAAOF,aAAaruB,GAAMwuB,EAAOH,aAAaruB,IAC7D,OAAO,KAKb,IAAK,IAAIA,KAAOwuB,EAAOH,aACrBzkB,EAAIykB,aAAaruB,GAAOwuB,EAAOH,aAAaruB,GAG9C,OAAO4J,EAOT,SAAS8kB,EAAoBC,EAAOC,GAClC,IAMIC,EANAjlB,KAEJ,GAAqB,IAAjB+kB,EAAMx9B,QAAiC,IAAjBy9B,EAAMz9B,OAC9B,OAAOyY,EAIT,IAAK,IAAIklB,EAAK,EAAGA,EAAKH,EAAMx9B,OAAQ29B,IAClC,IAAK,IAAIC,EAAK,EAAGA,EAAKH,EAAMz9B,OAAQ49B,KAClCF,EAASP,EAAWK,EAAMG,GAAKF,EAAMG,MAEnCnlB,EAAI1Y,KAAK29B,GAIf,OAAOjlB,EAiCT,SAASwkB,EAAWrB,EAAMnhB,EAAMojB,GAM9B,IAAIplB,IAAQykB,kBAEZ,GAAItB,aAAgB7W,GAAgBtK,aAAgBsK,GAChD6W,aAAgB3W,GAAgBxK,aAAgBwK,EAAc,CAGhE,GAAI2W,aAAgB7W,GAClB,GAAI6W,EAAKjQ,KAAOlR,EAAKkR,IAAMiQ,EAAKvsB,KAAOoL,EAAKpL,GAC1C,cAGC,GAAIusB,aAAgB3W,GACnB2W,EAAK7+B,OAAS0d,EAAK1d,KACrB,SAKJ,IAAyB,IAArB0d,EAAKL,KAAKpa,QAAqC,IAArB47B,EAAKxhB,KAAKpa,SAAiB86B,EAAcrgB,KAASojB,EAc3E,CAAA,GAAIpjB,EAAKL,KAAKpa,QAAU,GAA0B,IAArB47B,EAAKxhB,KAAKpa,OAAc,CAGxD,IAAI89B,EApJV,SAAmBrjB,EAAMoV,GACvB,IACIkO,EAAOC,EADPvlB,KAEAwjB,EAAWhB,EAAuBxgB,GACtC,GAAIogB,EAAcpgB,EAAMoV,GACtB,IAAK,IAAIpzB,EAAE,EAAGA,EAAEge,EAAKL,KAAKpa,OAAQvD,KAChCuhC,EAAYvjB,EAAKL,KAAK9X,MAAM,IAClBgF,OAAO7K,EAAG,GACpBshC,EAA8B,IAArBC,EAAUh+B,OAAgBg+B,EAAU,GAAK/B,EAAS+B,GAC3DvlB,EAAI1Y,KAAKk8B,GAAUxhB,EAAKL,KAAK3d,GAAIshC,UAKnCA,EAA8B,KAD9BC,EAAYvjB,EAAKL,KAAK9X,MAAM,IACTtC,OAAgBg+B,EAAU,GAAK/B,EAAS+B,GAC3DvlB,EAAI1Y,KAAKk8B,GAAUxhB,EAAKL,KAAK,GAAI2jB,KAEnC,OAAOtlB,EAmIUwlB,CAAUxjB,EAAMmhB,EAAK/L,SAC9BqO,KACJ,IAAQzhC,EAAI,EAAGA,EAAIqhC,EAAO99B,OAAQvD,IAAK,CACrC,IAAI0hC,EAAWlB,EAAWrB,EAAMkC,EAAOrhC,IAAI,GAC3CyhC,EAAeA,EAAar3B,OAAOs3B,GAErC,OAAOD,EAEJ,GAAItC,EAAKxhB,KAAKpa,OAAS,EAC1B,MAAMc,MAAM,+CAAiD86B,EAAKz0B,YAIlE,SA3BA,IADA,IAAIi3B,KACK3hC,EAAI,EAAGA,EAAIm/B,EAAKxhB,KAAKpa,OAAQvD,IAAK,CACzC,IAAI4hC,EAAapB,EAAWrB,EAAKxhB,KAAK3d,GAAIge,EAAKL,KAAK3d,IACpD,GAA0B,IAAtB4hC,EAAWr+B,OAEb,SAGFo+B,EAAar+B,KAAKs+B,GAEpB5lB,EA7DN,SAA2B2lB,GACzB,GAA4B,IAAxBA,EAAap+B,OACf,OAAOo+B,EAMT,IAHA,IAAIE,EAAOF,EAAap8B,OAAOu7B,GAC3BgB,KACAC,KACI/hC,EAAI,EAAGA,EAAI6hC,EAAKt+B,OAAQvD,IAAK,CACnC,IAAIqB,EAAIwH,KAAKC,UAAU+4B,EAAK7hC,IACvB+hC,EAAO1gC,KACV0gC,EAAO1gC,IAAK,EACZygC,EAAWx+B,KAAKu+B,EAAK7hC,KAGzB,OAAO8hC,EA8CGE,CAAkBL,QAqBvB,GAAIxC,aAAgBzW,EAAY,CAKnC,GAAyB,IAArByW,EAAK7+B,KAAKiD,OACZ,MAAM,IAAIc,MAAM,oCAEnB,GAAI2Y,EAAK7b,eAAeg+B,EAAK7+B,MAAO,CACjC,IAAKy/B,EAAoBZ,EAAK7+B,MAC5B,MAAM,IAAI+D,MAAM,sBAAwB86B,EAAK7+B,KAAO,kCAItD,GAAG6+B,EAAK7+B,OAAS0d,EAAK1d,KACpB,cAGC,GAAqB,MAAjB6+B,EAAK7+B,KAAK,IAA2C,OAA7B6+B,EAAK7+B,KAAK4V,UAAU,EAAE,GAIrD8F,EAAI,GAAGykB,aAAatB,EAAK7+B,MAAQ0d,OAE9B,GAAqB,MAAjBmhB,EAAK7+B,KAAK,GAAY,CAE7B,GAAIsB,EAAKotB,eAAehR,GAKtB,SAJAhC,EAAI,GAAGykB,aAAatB,EAAK7+B,MAAQ0d,MAOhC,CAAA,GAAqB,MAAjBmhB,EAAK7+B,KAAK,GAWjB,MAAM,IAAI+D,MAAM,2BAA6B86B,EAAK7+B,MATlD,KAAG0d,aAAgBkK,GAKjB,SAJAlM,EAAI,GAAGykB,aAAatB,EAAK7+B,MAAQ0d,OAWlC,CAAA,KAAImhB,aAAgBjX,GAQvB,SANA,IAAIvX,EAAMwuB,EAAK56B,MAAOyZ,EAAKzZ,OACzB,SAWJ,OAAOyX,EAWT,SAAS6kB,EAAYz/B,EAAGy6B,GACtB,GAAGz6B,aAAa8mB,GAAgB2T,aAAa3T,GAC3C,IAAIvX,EAAMvP,EAAEmD,MAAOs3B,EAAEt3B,OACnB,OAAO,OAGN,GAAGnD,aAAasnB,GAAcmT,aAAanT,GAC9C,GAAGtnB,EAAEd,OAASu7B,EAAEv7B,KACd,OAAO,MAGN,CAAA,KAAGc,aAAaknB,GAAgBuT,aAAavT,GAC1ClnB,aAAaonB,GAAgBqT,aAAarT,GAuBhD,OAAO,EAtBP,GAAIpnB,aAAaknB,GACf,GAAIlnB,EAAE8tB,KAAO2M,EAAE3M,IAAM9tB,EAAEwR,KAAOipB,EAAEjpB,GAC9B,OAAO,OAGN,GAAIxR,aAAaonB,GAChBpnB,EAAEd,OAASu7B,EAAEv7B,KACf,OAAO,EAIX,GAAGc,EAAEuc,KAAKpa,SAAWs4B,EAAEle,KAAKpa,OAC1B,OAAO,EAGT,IAAI,IAAIvD,EAAE,EAAGA,EAAEoB,EAAEuc,KAAKpa,OAAQvD,IAC5B,IAAI6gC,EAAYz/B,EAAEuc,KAAK3d,GAAI67B,EAAEle,KAAK3d,IAChC,OAAO,EAQb,OAAO,EAGT,OAAOy+B,IAUH,SAAUl/B,EAAQD,EAASQ,GAEjC,aAoBAR,EAAQgB,KAAO,UACfhB,EAAQ2T,KAAO,SACf3T,EAAQD,QAnBR,WAcE,OALc,SAAUW,GAEtB,OAAQA,EAAI,KAaV,SAAUT,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAE3BqC,EAASsS,EAAKtS,OACdZ,EAAQkT,EAAKlT,MAEb8B,EAAUd,MAAMc,QA0JpB/D,EAAQD,QAxJR,SAAkBuC,GAEhB,IAAIyR,EAAczR,EAAKyR,YAmJvB,OAxIsB,SAAUlT,EAAG+G,EAAG4qB,GAEpC,IAAI1uB,EAAOjD,EAAEiD,OAEb,GAAoB,IAAhBA,EAAKG,OACP,MAAM,IAAIwR,WAAW,yCAA2C5S,EAAOC,OAAOgB,GAAQ,KAExF,IAMIZ,EAAMxC,EAAG2U,EANT6K,EAAOpc,EAAK,GAGhB,GAAIoc,IAFUpc,EAAK,GAGjB,MAAM,IAAI2R,WAAW,gCAAkC5S,EAAOC,OAAOgB,GAAQ,KAI/E,GAAIxB,EAAK2V,SAASrQ,GAAI,CAEpB,IAAI+6B,EAAQ/6B,EAAE9D,OAEd,GAAqB,IAAjB6+B,EAAM1+B,OAAc,CAEtB,GAAI0+B,EAAM,KAAOziB,EACf,MAAM,IAAIzK,WAAW,gEAMvB,IAJAvS,KAEAmS,EAAQzN,EAAE8M,MAELhU,EAAI,EAAGA,EAAIwf,EAAMxf,IAEpBwC,EAAKxC,IAAM2U,EAAM3U,IAGnB,OAAO,IAAIqT,GACT7Q,KAAMA,EACNY,MAAOoc,EAAM,GACbld,SAAU4E,EAAEkN,YAIhB,GAAqB,IAAjB6tB,EAAM1+B,OAAc,CAEtB,GAAI0+B,EAAM,KAAOziB,GAAqB,IAAbyiB,EAAM,GAC7B,MAAM,IAAIltB,WAAW,gEAEvB,GAAInT,EAAKgjB,cAAc1d,GAAI,CAEzB,GAAI4qB,EAAM,CAMR,IAJAtvB,KAEAmS,EAAQzN,EAAE8M,MAELhU,EAAI,EAAGA,EAAIwf,EAAMxf,IAEpBwC,EAAKxC,IAAM2U,EAAM3U,GAAG,IAGtB,OAAO,IAAIqT,GACT7Q,KAAMA,EACNY,MAAOoc,EAAM,GACbld,SAAU4E,EAAEkN,YAIhB,OAAOlN,EAIT,IADA1E,KACKxC,EAAI,EAAGA,EAAIwf,EAAMxf,IACpBwC,EAAKxC,IAAM,GAMb,IAJA,IAAI2a,EAASzT,EAAEsS,QACXzV,EAAQmD,EAAEwS,OACVkB,EAAM1T,EAAE0S,KAEHgG,EAAKhF,EAAI,GAAIiF,EAAIjF,EAAI,GAAIiF,EAAID,EAAIC,IAIxCrd,EAFAxC,EAAI+D,EAAM8b,IAEF,GAAKlF,EAAOkF,GAGtB,OAAO,IAAIxM,GACT7Q,KAAMA,EACNY,MAAOoc,EAAM,GACbld,SAAU4E,EAAEkN,YAIhB,MAAM,IAAIW,WAAW,gEAGvB,GAAI1R,EAAQ6D,GAAI,CAEd,IAAI+M,EAAQ1S,EAAM6B,KAAK8D,GAEvB,GAAqB,IAAjB+M,EAAM1Q,OAAc,CAEtB,GAAI0Q,EAAM,KAAOuL,EACf,MAAM,IAAIzK,WAAW,gEAIvB,IAFAvS,KAEKxC,EAAI,EAAGA,EAAIwf,EAAMxf,IAEpBwC,EAAKxC,IAAMkH,EAAElH,IAGf,OAAO,IAAIqT,GACT7Q,KAAMA,EACNY,MAAOoc,EAAM,KAGjB,GAAqB,IAAjBvL,EAAM1Q,OAAc,CAEtB,GAAI0Q,EAAM,KAAOuL,GAAqB,IAAbvL,EAAM,GAC7B,MAAM,IAAIc,WAAW,gEAIvB,IAFAvS,KAEKxC,EAAI,EAAGA,EAAIwf,EAAMxf,IAEpBwC,EAAKxC,IAAMkH,EAAElH,GAAG,IAGlB,OAAO,IAAIqT,GACT7Q,KAAMA,EACNY,MAAOoc,EAAM,KAIjB,MAAM,IAAIzK,WAAW,oEAWrB,SAAUxV,EAAQD,EAASQ,GAEjC,IAAIgQ,EAAShQ,EAAoB,IA2EjC,SAASoiC,EAA8BvgC,GAKrC,IAHA,IAAIsF,EAAItF,EAAEtB,EACNyf,EAAI7Y,EAAE,GAAK,GAENjH,EAAI,EAAGA,EAAIiH,EAAE1D,SAAUvD,EAAG,CAEjC,IADA,IAAIqB,EAAI4F,EAAEjH,GAAK,GACN0f,EAAI,EAAIre,EAAEkC,OAAQmc,KACzBre,EAAI,IAAMA,EAGZye,GAAKze,EAIP,IAAKwS,EAAIiM,EAAEvc,OAAS,EAAkB,KAAfuc,EAAEtJ,OAAO3C,KAAaA,GAE7C,IAAIsuB,EAAKxgC,EAAEmE,EACP2E,EAAMqV,EAAEja,MAAM,EAAGgO,EAAI,GAAK,GAC1BuuB,EAAO33B,EAAIlH,OACf,GAAI4+B,EAAK,EACP,KAAMA,EAAKC,EAET,IAAKD,GAAMC,EAAMD,IAAM13B,GAAO,UACrB03B,EAAKC,IACd33B,EAAMA,EAAI5E,MAAM,EAAGs8B,GAAM,IAAM13B,EAAI5E,MAAMs8B,IAK7C,IAAI78B,GAAO,GACX,IAAStF,EAAI,EAAGA,EAAIyK,EAAIlH,QAAU,CAChC,IAAK,IAAI8+B,EAAO/8B,EAAI/B,OAAQ8+B,IAAQ/8B,EAAI+8B,IAAS,IAEjD/8B,EAAI,IAAMmF,EAAI+L,OAAOxW,MAAQ,EAC7B,IAAK,IAAI6T,EAAI,EAAGA,EAAIvO,EAAI/B,SAAUsQ,EAC5BvO,EAAIuO,GAAK,IACO,MAAdvO,EAAIuO,EAAI,KACVvO,EAAIuO,EAAI,GAAK,GAGfvO,EAAIuO,EAAI,IAAMvO,EAAIuO,IAAM,EACxBvO,EAAIuO,IAAM,GAKhB,OAAOvO,EAAIg9B,UAjHb/iC,EAAOD,QAAU,SAAiBqC,EAAGyJ,EAAGm3B,GACtC,IAEIC,EAAOC,EAoBPC,EAASC,EAASC,EAtBlB/e,EAAYliB,EAAE6Q,YAGdqwB,IAAUlhC,EAAEN,EAAI,GAChByhC,IAAU13B,EAAE/J,EAAI,GACpB,GAAIwhC,EAAO,CACTL,EAAQN,EAA6BpyB,EAAOnO,IAC5C,IAAK,IAAI3B,EAAI,EAAGA,EAAIwiC,EAAMj/B,SAAUvD,EAClCwiC,EAAMxiC,IAAM,OAGdwiC,EAAQN,EAA6BvgC,GAEvC,GAAImhC,EAAO,CACTL,EAAQP,EAA6BpyB,EAAO1E,IAC5C,IAASpL,EAAI,EAAGA,EAAIyiC,EAAMl/B,SAAUvD,EAClCyiC,EAAMziC,IAAM,OAGdyiC,EAAQP,EAA6B92B,GAInCo3B,EAAMj/B,QAAUk/B,EAAMl/B,QACxBm/B,EAAUF,EACVG,EAAUF,EACVG,EAAUC,IAEVH,EAAUD,EACVE,EAAUH,EACVI,EAAUE,GAGZ,IAAIC,EAAWL,EAAQn/B,OACnBy/B,EAAUL,EAAQp/B,OAClB0/B,EAAkC,EAArBV,EAAKM,EAAOC,GACzBI,EAAS,IAAIrf,EAAuB,EAAbof,GACvBE,EAAW,IAAItf,EAAU,GACzBuf,EAAM,IAAIvf,EAAU,GAEpBwf,EAAWxf,EAAU/b,UAGzB,IAFA+b,EAAUhiB,QAAQiG,UAAW,MAEtBi7B,EAAW,GACZR,EAAKG,IAAUK,GAAWJ,IAAUK,KAAaC,IACnDC,EAASA,EAAO9jB,KAAK+jB,IAEvBA,EAAWA,EAAS7iB,MAAM8iB,GAE5B,KAAOJ,EAAU,GACXT,EAAKK,EAASD,IAAUK,KAAaC,IACvCC,EAASA,EAAO9jB,KAAK+jB,IAEvBA,EAAWA,EAAS7iB,MAAM8iB,GAQ5B,OALAvf,EAAUhiB,QAAQiG,UAAWu7B,IAEX,GAAdJ,IACFC,EAAO7hC,GAAK6hC,EAAO7hC,GAEd6hC,IAyDH,SAAU3jC,EAAQD,GAQxBC,EAAOD,QAAU,SAAiBqC,GAChC,GAAIA,EAAE4F,aAAe5F,EAAEsC,YACrB,MAAM,IAAII,MAAM,uCAGlB,IAAIwf,EAAYliB,EAAE6Q,YACd6wB,EAAWxf,EAAU/b,UAOzB,OANA+b,EAAUhiB,QAAQiG,UAAW,OAEzBnG,EAAIA,EAAEyd,KAAK,IAAIyE,EAAU,KAC3BxiB,GAAKM,EAAEN,GAAK,KAEdwiB,EAAUhiB,QAAQiG,UAAWu7B,IACtB1hC,IAMH,SAAUpC,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IA4JzCR,EAAQgB,KAAO,cACfhB,EAAQD,QA3JR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aAmJxB,OA/HkB,SAAUnQ,EAAGC,EAAG1F,GAEhC,IAAI+X,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACT3F,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACThF,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAAK2E,IAAYwB,EACf,MAAM,IAAI1W,MAAM,uDAGlB,IAIIyP,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAyBjC,IArBA,IAkBI+L,EAAGF,EAAIC,EAAI5f,EAlBX8Z,KACAC,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRnS,KAEAuY,KAMKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhCmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAIgY,EAAO1H,EAAI,EAEf,IAAK8L,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAInD3F,EAFAla,EAAIyZ,EAAOoG,IAEJtE,EAEP5Z,EAAE3B,GAAKuZ,EAAQsG,GAEf9F,EAAOzW,KAAKtD,GAGd,IAAK2f,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAI/C3F,EAFJla,EAAIgb,EAAO6E,MAEEtE,IAEX5Z,EAAE3B,GAAKqU,EAAG1S,EAAE3B,GAAI+a,EAAQ8E,KAM5B,IAFAA,EAAI7F,EAAKnG,GAEFgM,EAAI9F,EAAOxW,QAAQ,CAIxB,IAAI6c,EAAIze,EAFR3B,EAAI+Z,EAAO8F,IAINxK,EAAG+K,EAAGnG,GAQTF,EAAOlP,OAAOgV,EAAG,IANjB/F,EAAQxW,KAAK8c,GAEbP,MAYN,OAHA7F,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAImE,EAAYnE,EAAoB,GAAGmE,UAoIvC3E,EAAQgB,KAAO,kBACfhB,EAAQD,QAnIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIuhC,EAAMxhC,EAAKhC,EAAoB,KACnC,SAASyjC,EAAKt8B,EAAGC,GACf,OAAQo8B,EAAIr8B,EAAGC,GAmCjB,OAAOnF,EAAM,mBACXyhC,yBAA0B,SAAU7hC,EAAGke,GACrC,OAAO4jB,EAAiB9hC,EAAGke,EAAGyjB,IAGhCI,iCAAkC,SAAU/hC,EAAGke,EAAGuE,GAChD,GAAgB,QAAZA,EACF,OAAOqf,EAAiB9hC,EAAGke,EAAGyjB,GAE3B,GAAgB,SAAZlf,EACP,OAAOqf,EAAiB9hC,EAAGke,EAAG0jB,GAG9B,MAAM,IAAIl/B,MAAM,2CAIpBs/B,mCAAoCF,IAGtC,SAASA,EAAiB9hC,EAAGke,EAAGuE,GAC9B,IAAKngB,EAAU4b,IAAMA,EAAI,EACvB,MAAM,IAAIxb,MAAM,oCAGlB,GAAIzC,EAAK2V,SAAS5V,GAAI,CAEpB,GADWA,EAAEyB,OACJG,OAAS,EAChB,MAAM,IAAIc,MAAM,2CAElB,OAAOu/B,EAAYjiC,EAAEqQ,UAAW6N,EAAGuE,GAGrC,GAAI7hB,MAAMc,QAAQ1B,GAChB,OAAOiiC,EAAYjiC,EAAGke,EAAGuE,GAc7B,SAASwf,EAAYt+B,EAAKua,EAAGuE,GAC3B,GAAIvE,GAAKva,EAAI/B,OACX,MAAM,IAAIc,MAAM,mBAOlB,IAJA,IAAIw/B,EAAO,EACPtzB,EAAKjL,EAAI/B,OAAS,EAGfsgC,EAAOtzB,GAAI,CAMhB,IALA,IAAIuP,EAAI+jB,EACJ3pB,EAAI3J,EACJuzB,EAAQx+B,EAAIT,KAAKk/B,MAAMl/B,KAAKm/B,UAAYzzB,EAAKszB,EAAO,IAAMA,GAGvD/jB,EAAI5F,GAET,GAAIkK,EAAQ9e,EAAIwa,GAAIgkB,IAAU,EAAG,CAC/B,IAAI/F,EAAMz4B,EAAI4U,GACd5U,EAAI4U,GAAK5U,EAAIwa,GACbxa,EAAIwa,GAAKie,IACP7jB,QAEA4F,EAKFsE,EAAQ9e,EAAIwa,GAAIgkB,GAAS,KACzBhkB,EAIAD,GAAKC,EACPvP,EAAKuP,EAEL+jB,EAAO/jB,EAAI,EAIf,OAAOxa,EAAIua,MAUT,SAAUtgB,EAAQD,EAASQ,GAEjC,aAGA,IAAI6nB,EAAiB7nB,EAAoB,IACrC07B,EAAe17B,EAAoB,IACnCkE,EAAWlE,EAAoB,GAAGkE,SAqStC1E,EAAQgB,KAAO,eACfhB,EAAQD,QAlSR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAIhb,EAASF,EAAKhC,EAAoB,IAClCyB,EAAQzB,EAAoB,GAG5BmkC,EAAMniC,EAAKhC,EAAoB,MAyBnC,SAASokC,EAAa5jC,GACpB,IAAK6jC,EAAchjC,eAAeb,GAChC,MAAM,IAAI+D,MAAM,wBAA0B/D,GAE5C,IAGiB4jC,EAGXE,EAmHAC,EAsEAC,EAIAC,EAKAC,EAxMF7mB,EAAOpb,MAAMrB,UAAU2E,MAAM3F,KAAKgJ,UAAW,GAC7Cg7B,EAAeC,EAAc7jC,GAAM4iB,MAAMvjB,KAAMge,GAEnD,OAAiBumB,EAwNdA,EArNGE,GAEFJ,OAAQ,SAASS,EAAMC,EAAMC,GAC3B,IAAIvhC,EAAM0B,EAAKyG,EAEf,GAAIrC,UAAU3F,OAAS,EACrB,MAAM,IAAIokB,EAAe,SAAUze,UAAU3F,OAAQ,EAAG,GAyB1D,GAxBgC,IAArB2F,UAAU3F,OAEfi4B,EAAaiJ,GACfrhC,EAAOqhC,EAEPl5B,EAAMk5B,EAEsB,IAArBv7B,UAAU3F,OAEfi4B,EAAaiJ,IACfrhC,EAAOqhC,EACPl5B,EAAMm5B,IAEN5/B,EAAM2/B,EACNl5B,EAAMm5B,IAIRthC,EAAOqhC,EACP3/B,EAAM4/B,EACNn5B,EAAMo5B,QAIK5/B,IAARD,IAAsBd,EAASc,SAAkBC,IAARwG,IAAsBvH,EAASuH,GAC3E,MAAM,IAAIrH,UAAU,uCAKtB,QAFYa,IAARwG,IAAmBA,EAAM,QACjBxG,IAARD,IAAmBA,EAAM,QAChBC,IAAT3B,EAAoB,CACtB,IAAI4Y,EAAMwoB,EAAqBphC,EAAK4O,UAAWlN,EAAKyG,EAAK+4B,GACzD,OAAO1iC,EAAK2V,SAASnU,GAAQpB,EAAOga,GAAOA,EAE7C,OAAOsoB,EAAQx/B,EAAKyG,IAGtBq5B,UAAW7iC,GACT8iC,iBAAkB,SAAShiB,GAGzB,GAAI2Y,EAAa3Y,GAAM,CACrB,IAAIzf,EAAOyf,EACPtX,EAAM,EACNyQ,EAAMwoB,EAAqBphC,EAAK4O,UAL5B,EAK4CzG,EAAKg5B,GACzD,OAAO3iC,EAAK2V,SAASnU,GAAQpB,EAAOga,GAAOA,EAG3C,OAAOuoB,EATC,EAQJh5B,EAAMsX,IAIdiiB,yBAA0B,SAASL,EAAMC,GACvC,GAAIlJ,EAAaiJ,GAAO,CACtB,IAAIrhC,EAAOqhC,EACPl5B,EAAMm5B,EACN5/B,EAAM,EACNkX,EAAMwoB,EAAqBphC,EAAK4O,UAAWlN,EAAKyG,EAAKg5B,GACzD,OAAO3iC,EAAK2V,SAASnU,GAAQpB,EAAOga,GAAOA,EAK3C,OAAOuoB,EAFHz/B,EAAM2/B,EACNl5B,EAAMm5B,IAIdK,wBAAyB,SAAS3hC,EAAM0B,EAAKyG,GAC3C,IAAIyQ,EAAMwoB,EAAqBphC,EAAK4O,UAAWlN,EAAKyG,EAAKg5B,GACzD,OAAQnhC,IAA0B,IAAlBA,EAAKmU,SAAqBvV,EAAOga,GAAOA,KAI5DgpB,WAAYjjC,GACVQ,MAAS,SAAS0iC,GAChB,OAAOZ,EAAYY,IAErBC,wBAAyB,SAASD,EAAWP,GAC3C,IAAIzhC,EAAQkiC,EAEZ,GAAI5iC,MAAMc,QAAQqhC,GAChBS,EAAUT,MACL,CAAA,IAAI1gC,EAAS0gC,GAGlB,MAAM,IAAIxgC,UAAU,2CAFpBjB,EAASyhC,EAKX,OAAOL,EAAYY,EAAWhiC,EAAQkiC,IAExCC,wCAAyC,SAASH,EAAWP,EAAMC,GACjE,IAAI1hC,EAAQkiC,EAUZ,GARI5iC,MAAMc,QAAQqhC,IAChBS,EAAUT,EACVzhC,EAAS0hC,IAETQ,EAAUR,EACV1hC,EAASyhC,IAGNniC,MAAMc,QAAQ8hC,KAAanhC,EAASf,GACvC,MAAM,IAAIiB,UAAU,2CAGtB,OAAOmgC,EAAYY,EAAWhiC,EAAQkiC,OAKxCd,EAAc,SAASY,EAAWhiC,EAAQkiC,GAC5C,IAAIE,OAA4B,IAAXpiC,EAMrB,GAJIoiC,IACFpiC,EAAS,GAGPrB,EAAK2V,SAAS0tB,GAChBA,EAAYA,EAAUjzB,eACjB,IAAKzP,MAAMc,QAAQ4hC,GACxB,MAAM,IAAI/gC,UAAU,oDAGtB,GAAI3C,EAAM6B,KAAK6hC,GAAW1hC,OAAS,EACjC,MAAM,IAAIc,MAAM,0CAGlB,QAAuB,IAAZ8gC,EAAyB,CAClC,GAAIA,EAAQ5hC,QAAU0hC,EAAU1hC,OAC9B,MAAM,IAAIc,MAAM,kDAKlB,IAFA,IAAIihC,EAAe,EAEVtlC,EAAI,EAAG2D,EAAMwhC,EAAQ5hC,OAAQvD,EAAI2D,EAAK3D,IAAK,CAClD,IAAKgE,EAASmhC,EAAQnlC,KAAOmlC,EAAQnlC,GAAK,EACxC,MAAM,IAAIqE,MAAM,gDAGlBihC,GAAgBH,EAAQnlC,IAI5B,IAAIuD,EAAS0hC,EAAU1hC,OAEvB,GAAc,GAAVA,EACF,SACK,GAAIN,GAAUM,EACnB,OAAON,EAAS,EAAIgiC,EAAYA,EAAU,GAM5C,IAHA,IACIM,EADA7sB,KAGGA,EAAOnV,OAASN,GAAQ,CAC7B,QAAuB,IAAZkiC,EACTI,EAAON,EAAUpgC,KAAKk/B,MAAME,IAAQ1gC,QAEpC,CAAA,IAAIiiC,EAAUvB,IAAQqB,EAEtB,IAAStlC,EAAI,EAAG2D,EAAMshC,EAAU1hC,OAAQvD,EAAI2D,EAAK3D,IAG/C,IAFAwlC,GAAWL,EAAQnlC,IAEL,EAAG,CACfulC,EAAON,EAAUjlC,GACjB,QAKuB,GAAzB0Y,EAAO/O,QAAQ47B,IACjB7sB,EAAOpV,KAAKiiC,GAIhB,OAAOF,EAAS3sB,EAAO,GAAKA,GAK1B4rB,EAAU,SAASx/B,EAAKyG,GAC1B,OAAOzG,EAAMo/B,KAAkB34B,EAAMzG,IAGnCy/B,EAAa,SAASz/B,EAAKyG,GAC7B,OAAO1G,KAAKk/B,MAAMj/B,EAAMo/B,KAAkB34B,EAAMzG,KAI9C0/B,EAAuB,SAASphC,EAAM0B,EAAKyG,EAAKk6B,GAClD,IAAIjjC,KAGJ,IAFAY,EAAOA,EAAKyC,MAAM,IAETtC,OAAS,EAChB,IAAK,IAAIvD,EAAI,EAAGuD,EAASH,EAAKwC,QAAS5F,EAAIuD,EAAQvD,IACjDwC,EAAKc,KAAKkhC,EAAqBphC,EAAM0B,EAAKyG,EAAKk6B,SAGjD,IAASzlC,EAAI,EAAGuD,EAASH,EAAKwC,QAAS5F,EAAIuD,EAAQvD,IACjDwC,EAAKc,KAAKmiC,EAAS3gC,EAAKyG,IAI5B,OAAO/I,GAGF4hC,EAOX,IAAID,GAEFuB,QAAS,WACP,OAAOzB,GAOT0B,OAAQ,WACN,OAAO,WAKL,IAJA,IAAIC,EAAIC,EACJC,GAAU,EAGPA,EAAS,GAAKA,EAAS,GAC5BF,EAAK3B,IACL4B,EAAK5B,IACL6B,EAAS,EAAE,EAAIjhC,KAAK6K,KAAK,EAAI7K,KAAK2D,IAAIo9B,GAAK,IAAO/gC,KAAKkhC,IAAI,EAAIlhC,KAAKmhC,GAAKH,GAAM,GAEjF,OAAOC,KAOb,OAFA5B,EAAarhC,WAAQkC,EAEdm/B,IASH,SAAU3kC,EAAQD,EAASQ,GAEjC,IAAImmC,EAAUnmC,EAAoB,KAOlCR,EAAQ4mC,MAAQ,SAAUhzB,GAExB,IAAI+O,EAAU,IAAIgkB,EAQlB,OALA/yB,EAAIizB,GAAOlkB,EAAQkkB,GAAGnM,KAAK/X,GAC3B/O,EAAIkzB,IAAOnkB,EAAQmkB,IAAIpM,KAAK/X,GAC5B/O,EAAImzB,KAAOpkB,EAAQokB,KAAKrM,KAAK/X,GAC7B/O,EAAIozB,KAAOrkB,EAAQqkB,KAAKtM,KAAK/X,GAEtB/O,IAMH,SAAU3T,EAAQD,EAASQ,GAEjC,IAAI8jB,EAAU9jB,EAAoB,KAC9BsC,EAAStC,EAAoB,GAAGsC,OAChC4B,EAAWlE,EAAoB,GAAGkE,SA+LtC1E,EAAQgB,KAAO,UACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA/LR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GA0L3C,OArLA4G,EAAQ1iB,UAAUU,KAAO,UACzBgiB,EAAQ1iB,UAAU6xB,WAAY,EAQ9BnP,EAAQ1iB,UAAUqiB,OAAS,WACzB,OACEC,OAAQ,UACRqB,GAAIllB,KAAKklB,GACTC,GAAInlB,KAAKmlB,KASblB,EAAQ1iB,UAAUqlC,QAAU,WAC1B,OACEzmB,EAAGngB,KAAKwK,MACRqE,IAAK7O,KAAKkjB,QAade,EAAQ1iB,UAAUkB,OAAS,SAAUsF,GACnC,IACIod,EAAKnlB,KAAKmlB,GACVD,EAAKllB,KAAKklB,GACV2hB,EAAQpkC,EAAOzC,KAAKklB,GAAInd,GACxB++B,EAAQrkC,EAAOzC,KAAKmlB,GAAIpd,GAGxBI,EAAY9D,EAAS0D,GAAWA,EAAUA,EAAUA,EAAQI,UAAY,KAC5E,GAAkB,OAAdA,EAAoB,CACtB,IAAIuD,EAAUxG,KAAK6K,IAAI,IAAK5H,GACxBjD,KAAKsF,IAAI0a,EAAKC,GAAMzZ,IACtBwZ,EAAK,GAEHhgB,KAAKsF,IAAI2a,EAAKD,GAAMxZ,IACtByZ,EAAK,GAgCT,OA5BU,GAANA,EAEI0hB,EACS,GAAN3hB,EAEC,GAANC,EACI,KACU,GAAPA,EACH,KAEA2hB,EAAQ,IAIZ3hB,EAAK,GACI,GAAPA,EACI0hB,EAAQ,OAERA,EAAQ,MAAQC,EAAMvwB,UAAU,GAAK,IAGnC,GAAN4O,EACI0hB,EAAQ,OAERA,EAAQ,MAAQC,EAAQ,KAkBtC7iB,EAAQ8iB,UAAY,SAAU/oB,GAC5B,OAAQzU,UAAU3F,QAChB,KAAK,EACH,IAAIsf,EAAM3Z,UAAU,GACpB,GAAmB,iBAAR2Z,EACT,OAAOe,EAAQf,GAEjB,MAAM,IAAI3e,UAAU,kDAEtB,KAAK,EACH,IAAI4b,EAAI5W,UAAU,GACdsF,EAAMtF,UAAU,GACpB,GAAIlF,EAAS8b,GAAI,CAMf,GALIle,EAAKiQ,OAAOrD,IAAQA,EAAIm4B,QAAQ,WAElCn4B,EAAMA,EAAImY,SAAS,QAGjB3iB,EAASwK,GACX,OAAO,IAAIoV,GAAS9D,EAAGA,EAAGtR,IAAKA,IAGjC,MAAM,IAAItK,UAAU,0CAEpB,MAAM,IAAIA,UAAU,6BAGxB,QACE,MAAM,IAAIqF,YAAY,qDAK5Bqa,EAAQ1iB,UAAU8Q,QAAU4R,EAAQ1iB,UAAUwJ,SAU9CkZ,EAAQF,SAAW,SAAUC,GAC3B,OAAO,IAAIC,EAAQD,IAIrBC,EAAQ1Y,QAAUrJ,EAAOwJ,QAGzB2R,EAAKmpB,GAAG,SAAU,SAAU1gC,EAAMD,GAC5BC,EAAK4F,UAAY7F,EAAK6F,UACxBuY,EAAQ1Y,QAAUzF,EAAK4F,WAmB3BuY,EAAQQ,QAAU,SAAUnd,EAAGC,GAC7B,OAAID,EAAE4d,GAAK3d,EAAE2d,GAAa,EACtB5d,EAAE4d,GAAK3d,EAAE2d,IAAc,EAEvB5d,EAAE6d,GAAK5d,EAAE4d,GAAa,EACtB7d,EAAE6d,GAAK5d,EAAE4d,IAAc,EAEpB,GAGFlB,GAMTtkB,EAAQ0d,MAAO,GAKT,SAAUzd,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAqElCR,EAAQgB,KAAO,WACfhB,EAAQD,QApER,SAAkBuC,EAAMC,EAAQC,EAAMC,GA0BpC,IAAIoU,EAAWpU,EAAM,YACnBkB,OAAU,SAAUtB,GAClB,IAAK4F,SAAS5F,IAAMiG,MAAMjG,GACxB,MAAM,IAAI0C,MAAM1C,EAAI,wCAGtB,OAAO,IAAIC,EAAKkiB,SAASniB,IAG3BQ,OAAU,SAAUR,GAClB,OAAO,IAAIC,EAAKkiB,SAASniB,IAG3BwT,iBAAkB,SAAUyxB,EAAWC,GACrC,OAAO,IAAIjlC,EAAKkiB,SAAS8iB,EAAWC,IAGtCjb,KAAQ,SAAUjqB,GAChB,OAAO,IAAIC,EAAKkiB,SAAS,IAG3BD,UAAa,SAAUliB,GACrB,OAAO,IAAIC,EAAKkiB,SAASniB,EAAE+I,aAG7BoZ,SAAY,SAAUniB,GACpB,OAAOA,GAGTlB,OAAU,SAAUkB,GAClB,OAAO,IAAIC,EAAKkiB,SAASniB,IAG3BoiB,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGwU,MAItB,OAAOA,IASH,SAAU5W,EAAQD,EAASQ,GAEjC,aAGA,IAAImD,EAASnD,EAAoB,GAuTjCR,EAAQgB,KAAO,QACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QAvTR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA8BpC,SAASy6B,EAAMxmB,EAAOC,EAAK0mB,GACzB,KAAMh9B,gBAAgB68B,GACpB,MAAM,IAAIjzB,YAAY,oDAGxB,GAAa,MAATyM,EACF,GAAIpU,EAAKkQ,YAAYkE,GACnBA,EAAQA,EAAM2Q,gBACX,GAAqB,iBAAV3Q,EACd,MAAM,IAAI9R,UAAU,oCAExB,GAAW,MAAP+R,EACF,GAAIrU,EAAKkQ,YAAYmE,GACnBA,EAAMA,EAAI0Q,gBACP,GAAmB,iBAAR1Q,EACd,MAAM,IAAI/R,UAAU,kCAExB,GAAY,MAARy4B,EACF,GAAI/6B,EAAKkQ,YAAY6qB,GACnBA,EAAOA,EAAKhW,gBACT,GAAoB,iBAATgW,EACd,MAAM,IAAIz4B,UAAU,mCAGxBvE,KAAKqW,MAAkB,MAATA,EAAiBvM,WAAWuM,GAAS,EACnDrW,KAAKsW,IAAgB,MAAPA,EAAiBxM,WAAWwM,GAAS,EACnDtW,KAAKg9B,KAAiB,MAARA,EAAiBlzB,WAAWkzB,GAAS,EA0PrD,OApPAH,EAAMt7B,UAAUU,KAAO,QACvB46B,EAAMt7B,UAAU4hB,SAAU,EAW1B0Z,EAAM7T,MAAQ,SAAUle,GACtB,GAAmB,iBAARA,EACT,OAAO,KAGT,IACIq8B,EADOr8B,EAAIZ,MAAM,KACLnI,IAAI,SAAUmhB,GAC5B,OAAOpZ,WAAWoZ,KAMpB,GAHcikB,EAAKC,KAAK,SAAU3K,GAChC,OAAOx0B,MAAMw0B,KAGb,OAAO,KAGT,OAAQ0K,EAAKvjC,QACX,KAAK,EACH,OAAO,IAAIi5B,EAAMsK,EAAK,GAAIA,EAAK,IACjC,KAAK,EACH,OAAO,IAAItK,EAAMsK,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1C,QACE,OAAO,OAQbtK,EAAMt7B,UAAU6Q,MAAQ,WACtB,OAAO,IAAIyqB,EAAM78B,KAAKqW,MAAOrW,KAAKsW,IAAKtW,KAAKg9B,OAS9CH,EAAMt7B,UAAUkC,KAAO,WACrB,IAAIO,EAAM,EACNqS,EAAQrW,KAAKqW,MACb2mB,EAAOh9B,KAAKg9B,KAEZrxB,EADM3L,KAAKsW,IACED,EAYjB,OAVI/S,EAAOwE,KAAKk1B,IAAS15B,EAAOwE,KAAK6D,GACnC3H,EAAMkB,KAAKmiC,KAAK,EAASrK,GAEV,GAARrxB,IACP3H,EAAM,GAGJiE,MAAMjE,KACRA,EAAM,IAEAA,IAQV64B,EAAMt7B,UAAU4D,IAAM,WACpB,IAAI1B,EAAOzD,KAAKyD,OAAO,GAEvB,OAAIA,EAAO,EACLzD,KAAKg9B,KAAO,EAEPh9B,KAAKqW,MAILrW,KAAKqW,OAAS5S,EAAO,GAAKzD,KAAKg9B,UAIxC,GASJH,EAAMt7B,UAAUqK,IAAM,WACpB,IAAInI,EAAOzD,KAAKyD,OAAO,GAEvB,OAAIA,EAAO,EACLzD,KAAKg9B,KAAO,EAEPh9B,KAAKqW,OAAS5S,EAAO,GAAKzD,KAAKg9B,KAI/Bh9B,KAAKqW,WAId,GAYJwmB,EAAMt7B,UAAUoD,QAAU,SAAU9C,GAClC,IAAIG,EAAIhC,KAAKqW,MACT2mB,EAAOh9B,KAAKg9B,KACZ1mB,EAAMtW,KAAKsW,IACXjW,EAAI,EAER,GAAI28B,EAAO,EACT,KAAOh7B,EAAIsU,GACTzU,EAASG,GAAI3B,GAAIL,MACjBgC,GAAKg7B,EACL38B,SAGC,GAAI28B,EAAO,EACd,KAAOh7B,EAAIsU,GACTzU,EAASG,GAAI3B,GAAIL,MACjBgC,GAAKg7B,EACL38B,KAcNw8B,EAAMt7B,UAAUQ,IAAM,SAAUF,GAC9B,IAAID,KAIJ,OAHA5B,KAAK2E,QAAQ,SAAUC,EAAOR,EAAOmP,GACnC3R,EAAMwC,EAAM,IAAMvC,EAAS+C,EAAOR,EAAOmP,KAEpC3R,GAQTi7B,EAAMt7B,UAAUmiB,QAAU,WACxB,IAAI9hB,KAIJ,OAHA5B,KAAK2E,QAAQ,SAAUC,EAAOR,GAC5BxC,EAAMwC,EAAM,IAAMQ,IAEbhD,GAQTi7B,EAAMt7B,UAAU8Q,QAAU,WAExB,OAAOrS,KAAK0jB,WAadmZ,EAAMt7B,UAAUkB,OAAS,SAAUsF,GACjC,IAAI+C,EAAMxH,EAAOb,OAAOzC,KAAKqW,MAAOtO,GAMpC,OAJiB,GAAb/H,KAAKg9B,OACPlyB,GAAO,IAAMxH,EAAOb,OAAOzC,KAAKg9B,KAAMj1B,IAExC+C,GAAO,IAAMxH,EAAOb,OAAOzC,KAAKsW,IAAKvO,IASvC80B,EAAMt7B,UAAUwJ,SAAW,WACzB,OAAO/K,KAAKyC,UASdo6B,EAAMt7B,UAAUqiB,OAAS,WACvB,OACEC,OAAQ,QACRxN,MAAOrW,KAAKqW,MACZC,IAAKtW,KAAKsW,IACV0mB,KAAMh9B,KAAKg9B,OAWfH,EAAM9Y,SAAW,SAAUC,GACzB,OAAO,IAAI6Y,EAAM7Y,EAAK3N,MAAO2N,EAAK1N,IAAK0N,EAAKgZ,OAGvCH,IAUH,SAAUj9B,EAAQD,EAASQ,GAEjC,aAqEAR,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QApER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAOpC,SAASklC,EAAU3wB,GACjB,KAAM3W,gBAAgBsnC,GACpB,MAAM,IAAI19B,YAAY,oDAGxB5J,KAAK2W,QAAUA,MAmDjB,OA7CA2wB,EAAU/lC,UAAUU,KAAO,YAC3BqlC,EAAU/lC,UAAUgmC,aAAc,EAOlCD,EAAU/lC,UAAU8Q,QAAU,WAC5B,OAAOrS,KAAK2W,SAQd2wB,EAAU/lC,UAAUwJ,SAAW,WAC7B,MAAO,IAAM/K,KAAK2W,QAAQxP,KAAK,MAAQ,KASzCmgC,EAAU/lC,UAAUqiB,OAAS,WAC3B,OACEC,OAAQ,YACRlN,QAAS3W,KAAK2W,UAWlB2wB,EAAUvjB,SAAW,SAAUC,GAC7B,OAAO,IAAIsjB,EAAUtjB,EAAKrN,UAGrB2wB,IAUH,SAAU1nC,EAAQD,EAASQ,GAEjC,IAAIulB,EAAUvlB,EAAoB,IAAIulB,QA8CtC,SAASC,EAAQ3H,GACf,OAAOA,EAAK,GAAG7V,UAxCjBxI,EAAQwG,EAAIuf,EAAQ,SAAUxB,GAC5B,OAAO,IAAIA,EAAU,GAAGsjB,OACvB7hB,GAOHhmB,EAAQkP,IAAM6W,EAAQ,SAAUxB,GAC9B,OAAO,IAAIA,EAAU,GAAGzE,KAAK,IAAIyE,EAAU,GAAGyP,QAAQxX,IAAI,IACzDwJ,GAOHhmB,EAAQqO,GAAK0X,EAAQ,SAAUxB,GAC7B,OAAOA,EAAUujB,MAAM,IACtB9hB,GAOHhmB,EAAQ8O,IAAMiX,EAAQ,SAAUxB,GAC9B,OAAOvkB,EAAQqO,GAAGkW,GAAWvD,MAAM,IAClCgF,IAiBG,SAAU/lB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA6DlCR,EAAQgB,KAAO,MACfhB,EAAQD,QA5DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA4BpC,IAAIslC,EAAMtlC,EAAM,OACdkB,OAAU,SAAUtB,GAClB,OAAQA,EAAI,EAAKkD,KAAKk/B,MAAMpiC,GAAKkD,KAAKmiC,KAAKrlC,IAG7CiiB,QAAW,SAAUjiB,GACnB,OAAO,IAAIC,EAAKgiB,QACXjiB,EAAEkjB,GAAK,EAAKhgB,KAAKk/B,MAAMpiC,EAAEkjB,IAAMhgB,KAAKmiC,KAAKrlC,EAAEkjB,IAC3CljB,EAAEmjB,GAAK,EAAKjgB,KAAKk/B,MAAMpiC,EAAEmjB,IAAMjgB,KAAKmiC,KAAKrlC,EAAEmjB,MAIlDjB,UAAa,SAAUliB,GACrB,OAAOA,EAAE6xB,aAAe7xB,EAAEqlC,OAASrlC,EAAEoiC,SAGvCjgB,SAAY,SAAUniB,GACpB,OAAOA,EAAEN,EAAI,EAAIM,EAAEqlC,OAASrlC,EAAEoiC,SAGhChgB,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAG0lC,GAAK,MAM3B,OAFAA,EAAIxkC,OAASE,EAAG,8CAETskC,IASH,SAAU9nC,EAAQD,EAASQ,GAEjC,aAGA,IAAImE,EAAYnE,EAAoB,GAAGmE,UACnC8D,EAAUjI,EAAoB,GAAGiI,QACjCzG,EAAUxB,EAAoB,GAE9BwnC,EAAS,0DA6JbhoC,EAAQgB,KAAO,QACfhB,EAAQD,QA5JR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCmV,EAAcnT,EAAKhC,EAAoB,IACvCwH,EAAQxF,EAAKhC,EAAoB,KAEjCoX,EAAcpV,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqX,EAAcrV,EAAKhC,EAAoB,IAiCvC0H,EAAQzF,EAAM,SAEhBkB,OAAU4B,KAAK2C,MAEf2N,iBAAkB,SAAUxT,EAAGb,GAC7B,IAAKmD,EAAUnD,GAAO,MAAM,IAAIoD,UAAUojC,GAC1C,GAAIxmC,EAAI,GAAKA,EAAI,GAAK,MAAM,IAAIuD,MAAM,oEAEtC,OAwGGoF,WAAW1B,EAxGApG,EAAGb,KAGnB8iB,QAAW,SAAUjiB,GACnB,OAAOA,EAAE6F,SAGX+/B,kBAAmB,SAAU5lC,EAAGb,GAC9B,GAAIA,EAAI,EAAI,MAAM,IAAIoD,UAAUojC,GAEhC,OAAO3lC,EAAE6F,MAAM1G,IAGjB0mC,qBAAsB,SAAU7lC,EAAGb,GACjC,IAAKA,EAAEmD,YAAc,MAAM,IAAIC,UAAUojC,GAEzC,IAAIG,EAAK3mC,EAAE6lB,WACX,OAAOhlB,EAAE6F,MAAMigC,IAGjBC,oBAAqB,SAAU/lC,EAAGb,GAChC,IAAKA,EAAEmD,YAAc,MAAM,IAAIC,UAAUojC,GAEzC,OAAO,IAAI1lC,EAAKiiB,UAAUliB,GAAGgmC,gBAAgB7mC,EAAE6lB,aAGjD9C,UAAa,SAAUliB,GACrB,OAAOA,EAAEgmC,gBAAgB,IAG3BvyB,uBAAwB,SAAUzT,EAAGb,GACnC,IAAKA,EAAEmD,YAAc,MAAM,IAAIC,UAAUojC,GAEzC,OAAO3lC,EAAEgmC,gBAAgB7mC,EAAE6lB,aAG7B7C,SAAY,SAAUniB,GACpB,OAAOA,EAAE6F,SAGXogC,mBAAoB,SAAUjmC,EAAGb,GAC/B,GAAIA,EAAI,EAAI,MAAM,IAAIoD,UAAUojC,GAChC,OAAO3lC,EAAE6F,MAAM1G,IAGjBijB,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAG6F,GAAO,IAG3BqgC,mCAAoC,SAAUlmC,EAAGyJ,GAC/C,OAAO8L,EAAYvV,EAAGyJ,EAAG5D,GAAO,IAGlCsgC,kCAAmC,SAAUnmC,EAAGyJ,GAC9C,OAAO+L,EAAYxV,EAAGyJ,EAAG5D,GAAO,IAGlCugC,6CAA8C,SAAUpmC,EAAGyJ,GAEzD,OAAI6J,EAAYtT,EAAG,GAEV2F,EAAM8D,EAAEhI,OAAQgI,EAAE1I,WAEpBojB,EAAY1a,EAAGzJ,EAAG6F,GAAO,IAGlCwgC,4CAA6C,SAAUrmC,EAAGyJ,GAExD,OAAI6J,EAAYtT,EAAG,GAEV2F,EAAM8D,EAAEhI,OAAQgI,EAAE1I,WAEpByU,EAAY/L,EAAGzJ,EAAG6F,GAAO,IAGlCygC,4BAA6B,SAAUtmC,EAAGyJ,GAExC,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG5D,GAAO,GAAOwK,WAGjDk2B,sCAAuC,SAAUvmC,EAAGyJ,GAElD,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAG6F,GAAO,GAAMwK,aASlD,OALAxK,EAAM3E,OACJE,EAAG,yCACHC,OAAG+B,GAGEyC,IAqBH,SAAUjI,EAAQD,EAASQ,GAEjC,aAGA,IAAIqC,EAASrC,EAAoB,GAiHjCR,EAAQgB,KAAO,SACfhB,EAAQD,QAhHR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAqGpC,IAAIK,EAASL,EAAM,UACjB8wB,IAAO1wB,EAAOC,OACd+lC,kCAAmChmC,EAAOC,SAK5C,OAFAA,EAAOS,WAAQkC,EAER3C,IASH,SAAU7C,EAAQD,EAASQ,GAmTjCR,EAAQgB,KAAO,OACfhB,EAAQ2T,KAAO,aACf3T,EAAQD,QAnTR,SAAkB+oC,EAAcvmC,EAAQC,EAAMC,GAC5C,IAAIsmC,KA6SJ,OAzSAA,EAAKC,UAAYxoC,EAAoB,KACrCuoC,EAAc,QAAIvoC,EAAoB,KACtCuoC,EAAKE,QAAUzoC,EAAoB,KACnCuoC,EAAKG,WAAa1oC,EAAoB,KACtCuoC,EAAKlyB,SAAWrW,EAAoB,KACpCuoC,EAAKtkC,MAAQjE,EAAoB,KACjCuoC,EAAKrmC,OAASlC,EAAoB,KAClCuoC,EAAKplC,OAASnD,EAAoB,KAClCuoC,EAAKI,OAAS3oC,EAAoB,KAClCuoC,EAAKK,UAAY5oC,EAAoB,KACrCuoC,EAAKlmC,OAASrC,EAAoB,KAClCuoC,EAAK/L,KAAOx8B,EAAoB,KAGhCuoC,EAAKviC,EAAIhG,EAAoB,IAC7BuoC,EAAKM,EAAI7oC,EAAoB,IAC7BuoC,EAAY,MAAIvoC,EAAoB,KACpCuoC,EAAKroC,EAAIF,EAAoB,KAC7BuoC,EAAK,EAAA,GAAcvoC,EAAoB,KACvCuoC,EAAKrI,IAAMlgC,EAAoB,KAC/BuoC,EAAK5/B,KAAO3I,EAAoB,KAChCuoC,EAAKpI,MAAQngC,EAAoB,KACjCuoC,EAAKnI,OAASpgC,EAAoB,KAClCuoC,EAAK/gB,IAAMxnB,EAAoB,KAC/BuoC,EAAW,KAAIvoC,EAAoB,KACnCuoC,EAAK16B,GAAK7N,EAAoB,IAC9BuoC,EAAKrC,GAAKlmC,EAAoB,IAC9BuoC,EAAK75B,IAAM1O,EAAoB,KAC/BuoC,EAAKlI,QAAUrgC,EAAoB,KACnCuoC,EAAKjI,MAAQtgC,EAAoB,KACjCuoC,EAAKj6B,IAAMtO,EAAoB,KAC/BuoC,EAAW,KAAIvoC,EAAoB,KACnCuoC,EAAKO,QAAU9oC,EAAoB,KAInCuoC,EAAKQ,cAAgBC,YAAa,2BAA4BC,UAAW,iBACzEV,EAAKW,qBAAuBF,YAAa,oCAAqCC,UAAW,wBACzFV,EAAKY,gBAAkBH,YAAa,kBAAmBC,UAAW,mBAClEV,EAAKa,uBAAyBJ,YAAa,0BAA2BC,UAAW,0BAEjFV,EAAKc,kBAAoBL,YAAa,0CAA2CC,UAAW,qBAC5FV,EAAKe,kBAAoBN,YAAa,0CAA2CC,UAAW,qBAC5FV,EAAKgB,iBAAmBP,YAAa,qCAAsCC,UAAW,oBACtFV,EAAKiB,SAAWR,YAAa,qBAAuBC,UAAW,YAC/DV,EAAKkB,kBAAoBT,YAAa,oBAAqBC,UAAW,qBACtEV,EAAKmB,cAAgBV,YAAa,gBAAiBC,UAAW,iBAC9DV,EAAKoB,oBAAsBX,YAAa,sBAAuBC,UAAW,uBAC1EV,EAAKqB,2BAA6BZ,YAAa,8BAA+BC,UAAW,8BAEzFV,EAAKsB,qBAAuBb,YAAa,wBAAyBC,UAAW,wBAC7EV,EAAKuB,iBAAmBd,YAAa,mBAAoBC,UAAW,oBACpEV,EAAKwB,UAAYf,YAAa,wBAAyBC,UAAW,aAElEV,EAAKyB,YAAchB,YAAa,cAAeC,UAAW,eAC1DV,EAAK0B,yBAA2BjB,YAAa,4BAA6BC,UAAW,4BACrFV,EAAK2B,cAAgBlB,YAAa,gBAAiBC,UAAW,iBAC9DV,EAAK4B,eAAiBnB,YAAa,0BAA2BC,UAAW,kBACzEV,EAAK6B,eAAiBpB,YAAa,0BAA2BC,UAAW,kBACzEV,EAAK8B,eAAiBrB,YAAa,iBAAkBC,UAAW,kBAChEV,EAAK+B,YAActB,YAAa,cAAeC,UAAW,eAC1DV,EAAKgC,cAAgBvB,YAAa,gBAAiBC,UAAW,iBAC9DV,EAAKiC,aAAexB,YAAa,eAAgBC,UAAW,gBAC5DV,EAAKkC,sBAAwBzB,YAAa,yBAA0BC,UAAW,yBAC/EV,EAAKmC,SAAW1B,YAAa,mBAAoBC,UAAW,YAC5DV,EAAKoC,qBAAuB3B,YAAa,wBAAyBC,UAAW,wBAC7EV,EAAKqC,iBAAmB5B,YAAa,oBAAqBC,UAAW,oBACrEV,EAAKsC,cAAgB7B,YAAa,gBAAiBC,UAAW,iBAE9DV,EAAKuC,YAAc9B,YAAa,uBAAwBC,UAAW,eACnEV,EAAKwC,UAAY/B,YAAa,oBAAsBC,UAAW,aAC/DV,EAAKyC,WAAahC,YAAa,qBAAsBC,UAAW,cAChEV,EAAK0C,SAAWjC,YAAa,mBAAoBC,UAAW,YAC5DV,EAAK2C,gBAAkBlC,YAAa,2BAA4BC,UAAW,mBAC3EV,EAAK4C,WAAanC,YAAa,qDAAsDC,UAAW,cAChGV,EAAK6C,aAAepC,YAAa,eAAgBC,UAAW,gBAC5DV,EAAK8C,qBAAuBrC,YAAa,wBAAyBC,UAAW,wBAC7EV,EAAK+C,aAAetC,YAAa,+DAAgEC,UAAW,gBAC5GV,EAAKgD,eAAiBvC,YAAa,qDAAsDC,UAAW,kBACpGV,EAAKiD,iBAAmBxC,YAAa,4BAA6BC,UAAW,oBAC7EV,EAAKkD,iBAAmBzC,YAAa,4BAA6BC,UAAW,oBAC7EV,EAAKmD,kBAAoB1C,YAAa,iCAAkCC,UAAW,qBAGnFV,EAAKoD,WAAa3C,YAAa,sBAAuBC,UAAW,cACjEV,EAAKqD,cAAgB5C,YAAa,mCAAoCC,UAAW,iBACjFV,EAAKsD,SAAW7C,YAAa,iFAAkFC,UAAW,YAE1HV,EAAKuD,cAAgB9C,YAAa,gBAAiBC,UAAW,iBAC9DV,EAAKwD,YAAc/C,YAAa,cAAeC,UAAW,eAC1DV,EAAKyD,YAAchD,YAAa,cAAeC,UAAW,eAC1DV,EAAK0D,cAAgBjD,YAAa,gBAAiBC,UAAW,iBAC9DV,EAAK2D,mBAAqBlD,YAAa,qBAAsBC,UAAW,sBAGxEV,EAAK4D,WAAansC,EAAoB,KACtCuoC,EAAK6D,OAASpsC,EAAoB,KAClCuoC,EAAK8D,IAAMrsC,EAAoB,KAC/BuoC,EAAK+D,QAAUtsC,EAAoB,KACnCuoC,EAAK5J,SAAW3+B,EAAoB,KACpCuoC,EAAKgE,YAAcvsC,EAAoB,KACvCuoC,EAAKiE,IAAMxsC,EAAoB,KAC/BuoC,EAAKkE,OAASzsC,EAAoB,KAClCuoC,EAAKmE,GAAK1sC,EAAoB,KAG9BuoC,EAAKl+B,IAAMrK,EAAoB,KAC/BuoC,EAAKh4B,IAAMvQ,EAAoB,KAC/BuoC,EAAKoE,KAAO3sC,EAAoB,KAChCuoC,EAAKrB,KAAOlnC,EAAoB,KAChCuoC,EAAKqE,KAAO5sC,EAAoB,KAChCuoC,EAAKp4B,OAASnQ,EAAoB,KAClCuoC,EAAKl4B,UAAYrQ,EAAoB,KACrCuoC,EAAKn4B,YAAcpQ,EAAoB,KACvCuoC,EAAK14B,OAAS7P,EAAoB,KAClCuoC,EAAKlB,IAAMrnC,EAAoB,KAC/BuoC,EAAKhB,IAAMvnC,EAAoB,KAC/BuoC,EAAKtE,MAAQjkC,EAAoB,KACjCuoC,EAAKsE,IAAM7sC,EAAoB,KAC/BuoC,EAAKuE,MAAQ9sC,EAAoB,KACjCuoC,EAAKwE,IAAM/sC,EAAoB,KAC/BuoC,EAAK7/B,IAAM1I,EAAoB,KAC/BuoC,EAAKyE,MAAQhtC,EAAoB,KACjCuoC,EAAKj4B,IAAMtQ,EAAoB,KAC/BuoC,EAAKr4B,SAAWlQ,EAAoB,KACpCuoC,EAAK0E,KAAOjtC,EAAoB,KAChCuoC,EAAK2E,QAAUltC,EAAoB,KACnCuoC,EAAK34B,IAAM5P,EAAoB,KAC/BuoC,EAAK7gC,MAAQ1H,EAAoB,KACjCuoC,EAAK5gC,KAAO3H,EAAoB,KAChCuoC,EAAK/U,KAAOxzB,EAAoB,KAChCuoC,EAAK4E,OAASntC,EAAoB,KAClCuoC,EAAK/3B,SAAWxQ,EAAoB,KACpCuoC,EAAKx4B,WAAa/P,EAAoB,KACtCuoC,EAAKz4B,UAAY9P,EAAoB,KACrCuoC,EAAK6E,KAAOptC,EAAoB,KAGhCuoC,EAAKp3B,OAASnR,EAAoB,KAClCuoC,EAAKv4B,OAAShQ,EAAoB,KAClCuoC,EAAKl3B,MAAQrR,EAAoB,KACjCuoC,EAAKn3B,OAASpR,EAAoB,KAClCuoC,EAAK73B,UAAY1Q,EAAoB,KACrCuoC,EAAK53B,gBAAkB3Q,EAAoB,KAC3CuoC,EAAK33B,cAAgB5Q,EAAoB,KAGzCuoC,EAAK8E,YAAcrtC,EAAoB,KACvCuoC,EAAK+E,QAAUttC,EAAoB,KACnCuoC,EAAKgF,YAAcvtC,EAAoB,KACvCuoC,EAAKiF,WAAaxtC,EAAoB,KAGtCuoC,EAAa,OAAKvoC,EAAoB,KACtCuoC,EAAa,OAAKvoC,EAAoB,KACtCuoC,EAAY,MAAKvoC,EAAoB,KAGrCuoC,EAAKxlB,IAAM/iB,EAAoB,KAC/BuoC,EAAKkF,KAAOztC,EAAoB,KAChCuoC,EAAKxjB,GAAK/kB,EAAoB,KAC9BuoC,EAAKvjB,GAAKhlB,EAAoB,KAG9BuoC,EAAW,KAAKvoC,EAAoB,KACpCuoC,EAAKmF,KAAQ1tC,EAAoB,KAGjCuoC,EAAKoF,SAAW3tC,EAAoB,KACpCuoC,EAAKqF,UAAY5tC,EAAoB,KAGrCuoC,EAAU,IAAIvoC,EAAoB,KAClCuoC,EAAU,IAAIvoC,EAAoB,KAClCuoC,EAAS,GAAIvoC,EAAoB,KACjCuoC,EAAU,IAAIvoC,EAAoB,KAGlCuoC,EAAa,OAAIvoC,EAAoB,KACrCuoC,EAAKsF,MAAQ7tC,EAAoB,KACjCuoC,EAAKuF,IAAM9tC,EAAoB,KAC/BuoC,EAAKwF,KAAO/tC,EAAoB,KAChCuoC,EAAK3+B,IAAM5J,EAAoB,KAC/BuoC,EAAK7hB,IAAM1mB,EAAoB,KAC/BuoC,EAAK5hC,OAAU3G,EAAoB,KACnCuoC,EAAKjjC,QAAUtF,EAAoB,KACnCuoC,EAAK/jC,QAAWxE,EAAoB,KACpCuoC,EAAKvX,IAAMhxB,EAAoB,KAC/BuoC,EAAKyF,KAAOhuC,EAAoB,KAChCuoC,EAAK3mC,IAAO5B,EAAoB,KAChCuoC,EAAK0F,KAAOjuC,EAAoB,KAChCuoC,EAAK2F,gBAAmBluC,EAAoB,KAC5CuoC,EAAK/mB,MAAQxhB,EAAoB,KACjCuoC,EAAKlkC,OAASrE,EAAoB,KAClCuoC,EAAKrjC,QAAUlF,EAAoB,KACnCuoC,EAAKjlC,KAAOtD,EAAoB,KAChCuoC,EAAKljB,KAAQrlB,EAAoB,KACjCuoC,EAAKtiC,QAAUjG,EAAoB,KACnCuoC,EAAKvnB,OAAShhB,EAAoB,KAClCuoC,EAAK4F,MAAQnuC,EAAoB,KACjCuoC,EAAK74B,UAAY1P,EAAoB,KACrCuoC,EAAK/gC,MAAQxH,EAAoB,KAGjCuoC,EAAKnM,aAAep8B,EAAoB,KAExCuoC,EAAK54B,UAAY3P,EAAoB,KACrCuoC,EAAKt8B,MAAQjM,EAAoB,KACjCuoC,EAAK6F,aAAepuC,EAAoB,KACxCuoC,EAAK8F,YAAcruC,EAAoB,KACvCuoC,EAAK+F,aAAetuC,EAAoB,KACxCuoC,EAAKrD,WAAallC,EAAoB,KACtCuoC,EAAKrE,OAASlkC,EAAoB,KAClCuoC,EAAKzD,UAAY9kC,EAAoB,KAGrCuoC,EAAKjkB,QAAUtkB,EAAoB,KACnCuoC,EAAK/jB,eAAiBxkB,EAAoB,KAC1CuoC,EAAK51B,UAAY3S,EAAoB,KACrCuoC,EAAY,MAAIvoC,EAAoB,KACpCuoC,EAAKv3B,OAAShR,EAAoB,KAClCuoC,EAAKr3B,SAAWlR,EAAoB,KACpCuoC,EAAKx3B,QAAU/Q,EAAoB,KACnCuoC,EAAKt3B,UAAYjR,EAAoB,KACrCuoC,EAAKz3B,QAAU9Q,EAAoB,KAGnCuoC,EAAKgG,aAAevuC,EAAoB,KACxCuoC,EAAKiG,cAAgBxuC,EAAoB,KACzCuoC,EAAKkG,YAAczuC,EAAoB,KACvCuoC,EAAKmG,aAAe1uC,EAAoB,KACxCuoC,EAAKoG,YAAc3uC,EAAoB,KACvCuoC,EAAKqG,gBAAkB5uC,EAAoB,KAC3CuoC,EAAKsG,YAAc7uC,EAAoB,KACvCuoC,EAAKuG,QAAU9uC,EAAoB,KACnCuoC,EAAKwG,iBAAmB/uC,EAAoB,KAC5CuoC,EAAKyG,SAAWhvC,EAAoB,KAGpCuoC,EAAK0G,IAAMjvC,EAAoB,KAG/BuoC,EAAK2G,IAAMlvC,EAAoB,KAC/BuoC,EAAK98B,IAAMzL,EAAoB,KAC/BuoC,EAAK4G,KAAOnvC,EAAoB,KAChCuoC,EAAK6G,OAASpvC,EAAoB,KAClCuoC,EAAKvjC,IAAMhF,EAAoB,KAC/BuoC,EAAK8G,KAAOrvC,EAAoB,KAChCuoC,EAAK+G,KAAOtvC,EAAoB,KAChCuoC,EAAKgH,YAAcvvC,EAAoB,KACvCuoC,EAAKiH,IAAMxvC,EAAoB,KAC/BuoC,EAAKlvB,IAAMrZ,EAAoB,KAC/BuoC,EAAU,IAAIvoC,EAAoB,KAGlCuoC,EAAKjB,KAAOtnC,EAAoB,KAChCuoC,EAAKkH,MAAQzvC,EAAoB,KACjCuoC,EAAKmH,KAAO1vC,EAAoB,KAChCuoC,EAAKoH,MAAQ3vC,EAAoB,KACjCuoC,EAAKqH,KAAO5vC,EAAoB,KAChCuoC,EAAKsH,MAAQ7vC,EAAoB,KACjCuoC,EAAKuH,KAAO9vC,EAAoB,KAChCuoC,EAAKwH,MAAQ/vC,EAAoB,KACjCuoC,EAAKyH,KAAOhwC,EAAoB,KAChCuoC,EAAK0H,MAAQjwC,EAAoB,KACjCuoC,EAAK2H,KAAOlwC,EAAoB,KAChCuoC,EAAK4H,MAAQnwC,EAAoB,KACjCuoC,EAAK6H,MAAQpwC,EAAoB,KACjCuoC,EAAKtC,IAAMjmC,EAAoB,KAC/BuoC,EAAK8H,KAAOrwC,EAAoB,KAChCuoC,EAAK+H,IAAMtwC,EAAoB,KAC/BuoC,EAAKgI,KAAOvwC,EAAoB,KAChCuoC,EAAKiI,IAAMxwC,EAAoB,KAC/BuoC,EAAKkI,KAAOzwC,EAAoB,KAChCuoC,EAAKmI,IAAM1wC,EAAoB,KAC/BuoC,EAAKoI,KAAO3wC,EAAoB,KAChCuoC,EAAKqI,IAAM5wC,EAAoB,KAC/BuoC,EAAKsI,KAAO7wC,EAAoB,KAChCuoC,EAAKuI,IAAM9wC,EAAoB,KAC/BuoC,EAAKwI,KAAO/wC,EAAoB,KAGhCuoC,EAAK93B,GAAKzQ,EAAoB,KAG9BuoC,EAAKt2B,MAAQjS,EAAoB,KACjCuoC,EAAKjmC,OAAStC,EAAoB,KAClCuoC,EAAKzgC,MAAQ9H,EAAoB,KACjCuoC,EAAKpkC,UAAYnE,EAAoB,KACrCuoC,EAAK7U,WAAa1zB,EAAoB,KACtCuoC,EAAK1U,UAAY7zB,EAAoB,KACrCuoC,EAAKtP,WAAaj5B,EAAoB,KACtCuoC,EAAKyI,QAAUhxC,EAAoB,KACnCuoC,EAAKhiB,OAASvmB,EAAoB,KAElCuoC,EAAa,OAAKvoC,EAAoB,KAE/BuoC,IAUH,SAAU9oC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,IACRywC,SAAY,YACZ16B,QACE,KAEFyyB,YAAe,oFACfC,UACE,IACA,QACA,SACA,UAEFiI,SAAY,SAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,YACZ16B,QACE,MAEFyyB,YAAe,gJACfC,UACE,KACA,aAEFiI,SAAY,SAMR,SAAUzxC,EAAQD,EAASQ,GAEjC,aAkDAR,EAAQD,QA/CR,SAAiBuC,EAAMC,EAAQC,EAAMC,GAYnC,OAAO,SAAkBwC,EAAO0sC,GAC9B,GAAkB,cAAdA,EACF,OAAO,IAAIrvC,EAAKiiB,UAAUtf,GAEvB,GAAkB,aAAd0sC,EACP,OAAO,IAAIrvC,EAAKkiB,SAASvf,GAIzB,GAAqB,iBAAVA,EACT,OAAOA,EAGP,GAAc,aAAVA,EACF,OAAOoD,EAAAA,EAGT,GAAc,QAAVpD,EACF,OAAO+iB,IAIT,IAAK,oDAAoDzgB,KAAKtC,GAC5D,MAAM,IAAIF,MAAM,0BAA4BE,EAAQ,KAItD,OAAOkF,WAAWlF,EAAMyE,QAAQ,aAAc,SAAUI,EAAO9B,GAC7D,OAAO8B,EAAM8M,UAAU5O,EAAM/D,cAYjC,SAAUhE,EAAQD,EAASQ,GAEjC,aAGA,IAAI8c,EAAkB9c,EAAoB,IAAI8c,gBAkL9Ctd,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QAlLR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAEhCoxC,GADYpvC,EAAKhC,EAAoB,KAC5BgC,EAAKhC,EAAoB,OAWtC,SAAS+nB,EAAa7mB,EAAQ+C,GAC5B,KAAMpE,gBAAgBkoB,GACpB,MAAM,IAAIte,YAAY,oDAGxB,IAAK3H,EAAKyb,OAAOrc,GACf,MAAM,IAAIkD,UAAU,wCAEtB,IAAKtC,EAAKu4B,YAAYp2B,GACpB,MAAM,IAAIG,UAAU,4CAGtBvE,KAAKqB,OAASA,GAAU,KACxBrB,KAAKoE,MAAQA,EAGbtD,OAAOC,eAAef,KAAM,QAC1BkB,IAAK,WACH,OAAIlB,KAAKoE,MACCpE,KAAKoE,MAAMof,mBACbxjB,KAAKoE,MAAMqf,oBACX,GAGCzjB,KAAKqB,OAAOV,MAAQ,IAE7B05B,KAAKr6B,MACPoT,IAAK,WACH,MAAM,IAAI1O,MAAM,kDAuHtB,SAAS8sC,EAAgBnzB,GAEvB,QACIpc,EAAKqsB,eAAejQ,IACpBpc,EAAKwvC,YAAYpzB,IACjBpc,EAAKotB,eAAehR,IACpBpc,EAAKssB,eAAelQ,IACpBpc,EAAKyvC,aAAarzB,IAClBpc,EAAKm2B,kBAAkB/Z,IACvBpc,EAAKosB,aAAahQ,IAGxB,OA9HA6J,EAAa3mB,UAAY,IAAI+b,EAE7B4K,EAAa3mB,UAAUU,KAAO,eAE9BimB,EAAa3mB,UAAU+sB,gBAAiB,EAexCpG,EAAa3mB,UAAUsc,SAAW,SAAUR,EAAMc,GAChD,IAAIsc,EAAaz6B,KAAKqB,OAAOwc,SAASR,EAAMc,GACxCwzB,EAAY3xC,KAAKoE,MAAMyZ,SAASR,EAAMc,GAE1C,GAAIne,KAAKoE,MAAMof,mBAAoB,CACjC,IAAI7Q,EAAO3S,KAAKoE,MAAMqf,oBACtB,OAAO,SAA0BjG,EAAOQ,EAAMyV,GAC5C,OAAOxW,EAAgBwd,EAAWjd,EAAOQ,EAAMyV,GAAU9gB,IAI3D,OAAO,SAA2B6K,EAAOQ,EAAMyV,GAC7C,IAAIpyB,EAASo5B,EAAWjd,EAAOQ,EAAMyV,GACjCrvB,EAAQutC,EAAUn0B,EAAOQ,EAAM3c,GACnC,OAAOkwC,EAAOlwC,EAAQ+C,KAS5B8jB,EAAa3mB,UAAUoD,QAAU,SAAU9C,GACzCA,EAAS7B,KAAKqB,OAAQ,SAAUrB,MAChC6B,EAAS7B,KAAKoE,MAAO,QAASpE,OAShCkoB,EAAa3mB,UAAUQ,IAAM,SAAUF,GACrC,OAAO,IAAIqmB,EACPloB,KAAKoe,QAAQvc,EAAS7B,KAAKqB,OAAQ,SAAUrB,OAC7CA,KAAKoe,QAAQvc,EAAS7B,KAAKoE,MAAO,QAASpE,SAQjDkoB,EAAa3mB,UAAU6Q,MAAQ,WAC7B,OAAO,IAAI8V,EAAaloB,KAAKqB,OAAQrB,KAAKoE,QAQ5C8jB,EAAa3mB,UAAUwd,UAAY,SAAUhX,GAC3C,IAAI1G,EAASrB,KAAKqB,OAAO0J,SAAShD,GAKlC,OAJIypC,EAAgBxxC,KAAKqB,UACvBA,EAAS,IAAMA,EAAS,KAGnBA,EAASrB,KAAKoE,MAAM2G,SAAShD,IAQtCmgB,EAAa3mB,UAAUyd,OAAS,SAAUjX,GACxC,IAAI1G,EAASrB,KAAKqB,OAAO2d,OAAOjX,GAKhC,OAJIypC,EAAgBxxC,KAAKqB,UACvBA,EAAS,iEAAmEA,EAAS,kEAGhFA,EAASrB,KAAKoE,MAAM4a,OAAOjX,IAQpCmgB,EAAa3mB,UAAU2d,OAAS,SAAUnX,GACxC,IAAI1G,EAASrB,KAAKqB,OAAO6B,MAAM6E,GAK/B,OAJIypC,EAAgBxxC,KAAKqB,UACvBA,EAAS,UAAYA,EAAS,YAGzBA,EAASrB,KAAKoE,MAAMlB,MAAM6E,IAmB5BmgB,IAUH,SAAUtoB,EAAQD,EAASQ,GAEjC,aAIAP,EAAOD,SACL2W,KAAK,IAMD,SAAU1W,EAAQD,EAASQ,GAEjC,aAGA,IAAIyxC,EAAiBzxC,EAAoB,IAAIqe,UACzCvB,EAAkB9c,EAAoB,IAAI8c,gBA6C9Ctd,EAAQD,QA3CR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI+e,EAAShf,EAAKhC,EAAoB,KAatC,OAAO,SAAgBkB,EAAQ+C,GAC7B,IACE,GAAIxB,MAAMc,QAAQrC,GAChB,OAAO8f,EAAO9f,EAAQ+C,GAEnB,GAAI/C,GAAmC,mBAAlBA,EAAO8f,OAC/B,OAAO9f,EAAO8f,OAAO/c,GAElB,GAAsB,iBAAX/C,EAEd,OAAO8f,EAAO9f,EAAQ+C,GAEnB,GAAsB,iBAAX/C,EAAqB,CACnC,IAAK+C,EAAMof,mBACT,MAAM,IAAIjf,UAAU,mDAGtB,OAAO0Y,EAAgB5b,EAAQ+C,EAAMqf,qBAGrC,MAAM,IAAIlf,UAAU,kDAGxB,MAAOgiB,GACL,MAAMqrB,EAAerrB,OAUrB,SAAU3mB,EAAQD,EAASQ,GAEjC,aAGA,IAAI4B,EAAM5B,EAAoB,GAAG4B,IA+JjCpC,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA/JR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAQpC,SAASgoB,EAAU2H,GACjB,KAAM9vB,gBAAgBmoB,GACpB,MAAM,IAAIve,YAAY,oDAMxB,GAHA5J,KAAK8vB,MAAQA,OAGRltB,MAAMc,QAAQ1D,KAAK8vB,SAAW9vB,KAAK8vB,MAAMqH,MAAMl1B,EAAKyb,QACvD,MAAM,IAAInZ,UAAU,mCAItB,IAAI+1B,EAAa,WACf,MAAM,IAAI51B,MAAM,4EAElB5D,OAAOC,eAAef,KAAM,SAAWkB,IAAKo5B,EAAYlnB,IAAKknB,IAiI/D,OA9HAnS,EAAU5mB,UAAY,IAAI+b,EAE1B6K,EAAU5mB,UAAUU,KAAO,YAE3BkmB,EAAU5mB,UAAUkwC,aAAc,EAelCtpB,EAAU5mB,UAAUsc,SAAW,SAAUR,EAAMc,GAC7C,IAAI0zB,EAAY9vC,EAAI/B,KAAK8vB,MAAO,SAAUgiB,GACxC,OAAOA,EAAKj0B,SAASR,EAAMc,KAI7B,GADyC,UAAzBd,EAAKnb,SAASG,OAChB,CACZ,IAAIA,EAASgb,EAAKhb,OAClB,OAAO,SAAwBmb,EAAOQ,EAAMyV,GAC1C,OAAOpxB,EAAON,EAAI8vC,EAAW,SAAUE,GACrC,OAAOA,EAASv0B,EAAOQ,EAAMyV,OAKjC,OAAO,SAAwBjW,EAAOQ,EAAMyV,GAC1C,OAAO1xB,EAAI8vC,EAAW,SAAUE,GAC9B,OAAOA,EAASv0B,EAAOQ,EAAMyV,OAUrCtL,EAAU5mB,UAAUoD,QAAU,SAAU9C,GACtC,IAAK,IAAIxB,EAAI,EAAGA,EAAIL,KAAK8vB,MAAMlsB,OAAQvD,IAErCwB,EADW7B,KAAK8vB,MAAMzvB,GACP,SAAWA,EAAI,IAAKL,OAUvCmoB,EAAU5mB,UAAUQ,IAAM,SAAUF,GAElC,IADA,IAAIiuB,KACKzvB,EAAI,EAAGA,EAAIL,KAAK8vB,MAAMlsB,OAAQvD,IACrCyvB,EAAMzvB,GAAKL,KAAKoe,QAAQvc,EAAS7B,KAAK8vB,MAAMzvB,GAAI,SAAWA,EAAI,IAAKL,OAEtE,OAAO,IAAImoB,EAAU2H,IAOvB3H,EAAU5mB,UAAU6Q,MAAQ,WAC1B,OAAO,IAAI+V,EAAUnoB,KAAK8vB,MAAM5pB,MAAM,KASxCiiB,EAAU5mB,UAAUwd,UAAY,SAAShX,GAIvC,MAAO,IAHK/H,KAAK8vB,MAAM/tB,IAAI,SAAUsc,GACnC,OAAOA,EAAKtT,SAAShD,KAEJZ,KAAK,MAAQ,KASlCghB,EAAU5mB,UAAUyd,OAAS,SAASjX,GAIpC,MAAO,kEAHK/H,KAAK8vB,MAAM/tB,IAAI,SAAUsc,GACnC,OAAOA,EAAKW,OAAOjX,KAE4DZ,KAAK,yCAA2C,mEAQnIghB,EAAU5mB,UAAU2d,OAAS,SAASnX,GACpC,IAAIrG,EAAI,mBAgBR,OAdA1B,KAAK8vB,MAAMnrB,QAAQ,SAAS0Z,GACtBA,EAAKyR,MACPpuB,GAAK2c,EAAKyR,MAAM/tB,IAAI,SAASiwC,GAC3B,OAAOA,EAAU9uC,MAAM6E,KACtBZ,KAAK,KAGRzF,GAAK2c,EAAKnb,MAAM6E,GAIlBrG,GAAK,SAEPA,GAAK,kBAIAymB,IAUH,SAAUvoB,EAAQD,EAASQ,GAEjC,aAGA,IAAI8c,EAAkB9c,EAAoB,IAAI8c,gBAC1CC,EAAkB/c,EAAoB,IAAI+c,gBAmR9Cvd,EAAQgB,KAAO,iBACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QAnRR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAChCwI,EAASxG,EAAKhC,EAAoB,MAClCoxC,EAASpvC,EAAKhC,EAAoB,MAElCyP,EAAYzP,EAAoB,IA4BpC,SAASioB,EAAe/mB,EAAQ+C,EAAOQ,GACrC,KAAM5E,gBAAgBooB,GACpB,MAAM,IAAIxe,YAAY,oDAQxB,GALA5J,KAAKqB,OAASA,EACdrB,KAAKoE,MAAQQ,EAAQR,EAAQ,KAC7BpE,KAAK4E,MAAQA,GAAgBR,GAGxBnC,EAAKosB,aAAahtB,KAAYY,EAAKqsB,eAAejtB,GACrD,MAAM,IAAIkD,UAAU,mDAEtB,GAAItC,EAAKosB,aAAahtB,IAA2B,QAAhBA,EAAOV,KACtC,MAAM,IAAI+D,MAAM,iCAElB,GAAI1E,KAAKoE,QAAUnC,EAAKu4B,YAAYx6B,KAAKoE,OACvC,MAAM,IAAIG,UAAU,iCAEtB,IAAKtC,EAAKyb,OAAO1d,KAAK4E,OACpB,MAAM,IAAIL,UAAU,4BAItBzD,OAAOC,eAAef,KAAM,QAC1BkB,IAAK,WACH,OAAIlB,KAAKoE,MACCpE,KAAKoE,MAAMof,mBACbxjB,KAAKoE,MAAMqf,oBACX,GAGCzjB,KAAKqB,OAAOV,MAAQ,IAE7B05B,KAAKr6B,MACPoT,IAAK,WACH,MAAM,IAAI1O,MAAM,kDA8ItB,SAAS8sC,EAAgBnzB,EAAMoY,GACxBA,IACHA,EAAc,QAGhB,IAAIY,EAAaznB,EAAU2mB,cAAclY,EAAMoY,GAC3Cwb,EAAiBriC,EAAU2mB,cAAclY,EAAKzZ,MAAO6xB,GACzD,MAAwB,QAAhBA,GACkB,OAAnBwb,GAA6BA,GAAkB5a,EAmDxD,OApMAjP,EAAe7mB,UAAY,IAAI+b,EAE/B8K,EAAe7mB,UAAUU,KAAO,iBAEhCmmB,EAAe7mB,UAAU2wC,kBAAmB,EAe5C9pB,EAAe7mB,UAAUsc,SAAW,SAAUR,EAAMc,GAClD,IACIsc,EAAaz6B,KAAKqB,OAAOwc,SAASR,EAAMc,GACxCwzB,EAAY3xC,KAAKoE,MAAQpE,KAAKoE,MAAMyZ,SAASR,EAAMc,GAAY,KAC/Dg0B,EAAYnyC,KAAK4E,MAAMiZ,SAASR,EAAMc,GACtCxd,EAAOX,KAAKqB,OAAOV,KAEvB,GAAKX,KAAKoE,MAUL,CAAA,GAAIpE,KAAKoE,MAAMof,mBAAoB,CAEtC,IAAI7Q,EAAO3S,KAAKoE,MAAMqf,oBAEtB,OAAO,SAA6BjG,EAAOQ,EAAMyV,GAC/C,IAAIpyB,EAASo5B,EAAWjd,EAAOQ,EAAMyV,GACjC7uB,EAAQutC,EAAU30B,EAAOQ,EAAMyV,GACnC,OAAOvW,EAAgB7b,EAAQsR,EAAM/N,IAGpC,GAAI3C,EAAKosB,aAAaruB,KAAKqB,QAE9B,OAAO,SAA4Bmc,EAAOQ,EAAMyV,GAC9C,IAAI2e,EAAc3X,EAAWjd,EAAOQ,EAAMyV,GACtC7uB,EAAQutC,EAAU30B,EAAOQ,EAAMyV,GAC/BrvB,EAAQutC,EAAUn0B,EAAOQ,EAAMo0B,GAEnC,OADAl1B,EAAgBM,EAAO7c,EAAMgI,EAAOypC,EAAahuC,EAAOQ,IACjDA,GAST,IAAIytC,EAAmBryC,KAAKqB,OAAOA,OAAOwc,SAASR,EAAMc,GAEzD,GAAIne,KAAKqB,OAAO+C,MAAMof,mBAAoB,CACxC,IAAI8uB,EAAatyC,KAAKqB,OAAO+C,MAAMqf,oBAEnC,OAAO,SAA4BjG,EAAOQ,EAAMyV,GAC9C,IAAIlV,EAAS8zB,EAAiB70B,EAAOQ,EAAMyV,GACvC2e,EAAcn1B,EAAgBsB,EAAQ+zB,GACtCluC,EAAQutC,EAAUn0B,EAAOQ,EAAMo0B,GAC/BxtC,EAAQutC,EAAU30B,EAAOQ,EAAMyV,GAEnC,OADAvW,EAAgBqB,EAAQ+zB,EAAY3pC,EAAOypC,EAAahuC,EAAOQ,IACxDA,GAKT,IAAI2tC,EAAkBvyC,KAAKqB,OAAO+C,MAAMyZ,SAASR,EAAMc,GAEvD,OAAO,SAA4BX,EAAOQ,EAAMyV,GAC9C,IAAIlV,EAAS8zB,EAAiB70B,EAAOQ,EAAMyV,GACvC+e,EAAcD,EAAgB/0B,EAAOQ,EAAMO,GAC3C6zB,EAAcb,EAAOhzB,EAAQi0B,GAC7BpuC,EAAQutC,EAAUn0B,EAAOQ,EAAMo0B,GAC/BxtC,EAAQutC,EAAU30B,EAAOQ,EAAMyV,GAInC,OAFA9qB,EAAO4V,EAAQi0B,EAAa7pC,EAAOypC,EAAahuC,EAAOQ,IAEhDA,GA7DX,IAAK3C,EAAKosB,aAAaruB,KAAKqB,QAC1B,MAAM,IAAIkD,UAAU,iCAGtB,OAAO,SAA6BiZ,EAAOQ,EAAMyV,GAC/C,OAAOvW,EAAgBM,EAAO7c,EAAMwxC,EAAU30B,EAAOQ,EAAMyV,MAkEjErL,EAAe7mB,UAAUoD,QAAU,SAAU9C,GAC3CA,EAAS7B,KAAKqB,OAAQ,SAAUrB,MAC5BA,KAAKoE,OACPvC,EAAS7B,KAAKoE,MAAO,QAASpE,MAEhC6B,EAAS7B,KAAK4E,MAAO,QAAS5E,OAShCooB,EAAe7mB,UAAUQ,IAAM,SAAUF,GAOvC,OAAO,IAAIumB,EANEpoB,KAAKoe,QAAQvc,EAAS7B,KAAKqB,OAAQ,SAAUrB,OAC9CA,KAAKoE,MACXpE,KAAKoe,QAAQvc,EAAS7B,KAAKoE,MAAO,QAASpE,OAC3C,KACMA,KAAKoe,QAAQvc,EAAS7B,KAAK4E,MAAO,QAAS5E,SASzDooB,EAAe7mB,UAAU6Q,MAAQ,WAC/B,OAAO,IAAIgW,EAAepoB,KAAKqB,OAAQrB,KAAKoE,MAAOpE,KAAK4E,QAyB1DwjB,EAAe7mB,UAAUwd,UAAY,SAAShX,GAC5C,IAAI1G,EAASrB,KAAKqB,OAAO0J,SAAShD,GAC9B3D,EAAQpE,KAAKoE,MAAQpE,KAAKoE,MAAM2G,SAAShD,GAAW,GACpDnD,EAAQ5E,KAAK4E,MAAMmG,SAAShD,GAKhC,OAJIypC,EAAgBxxC,KAAM+H,GAAWA,EAAQ0uB,eAC3C7xB,EAAQ,IAAMA,EAAQ,KAGjBvD,EAAS+C,EAAQ,MAAQQ,GAQlCwjB,EAAe7mB,UAAUyd,OAAS,SAASjX,GACzC,IAAI1G,EAASrB,KAAKqB,OAAO2d,OAAOjX,GAC5B3D,EAAQpE,KAAKoE,MAAQpE,KAAKoE,MAAM4a,OAAOjX,GAAW,GAClDnD,EAAQ5E,KAAK4E,MAAMoa,OAAOjX,GAK9B,OAJIypC,EAAgBxxC,KAAM+H,GAAWA,EAAQ0uB,eAC3C7xB,EAAQ,iEAAmEA,EAAQ,kEAG9EvD,EAAS+C,EAAQ,uHAAyHQ,GAQnJwjB,EAAe7mB,UAAU2d,OAAS,SAASnX,GACzC,IAAI1G,EAASrB,KAAKqB,OAAO6B,MAAM6E,GAC3B3D,EAAQpE,KAAKoE,MAAQpE,KAAKoE,MAAMlB,MAAM6E,GAAW,GACjDnD,EAAQ5E,KAAK4E,MAAM1B,MAAM6E,GAK7B,OAJIypC,EAAgBxxC,KAAM+H,GAAWA,EAAQ0uB,eAC3C7xB,EAAQ,UAAYA,EAAQ,YAGvBvD,EAAS+C,EAAQ,KAAOQ,GAG1BwjB,IAUH,SAAUxoB,EAAQD,EAASQ,GAEjC,aAGA,IAAIwE,EAAUxE,EAAoB,GAAGwE,QACjC5C,EAAM5B,EAAoB,GAAG4B,IA+JjCpC,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA/JR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAChCmnC,EAAYnlC,EAAKhC,EAAoB,KAWzC,SAASkoB,EAAUqF,GACjB,KAAM1tB,gBAAgBqoB,GACpB,MAAM,IAAIze,YAAY,oDAIxB,IAAKhH,MAAMc,QAAQgqB,GAAS,MAAM,IAAIhpB,MAAM,kBAC5C1E,KAAK0tB,OAASA,EAAO3rB,IAAI,SAAU0wC,GACjC,IAAIp0B,EAAOo0B,GAASA,EAAMp0B,KACtBoP,GAAUglB,QAA2BrtC,IAAlBqtC,EAAMhlB,SAAwBglB,EAAMhlB,QAE3D,IAAKxrB,EAAKyb,OAAOW,GAAO,MAAM,IAAI9Z,UAAU,kCAC5C,GAAuB,kBAAZkpB,EAAuB,MAAM,IAAIlpB,UAAU,wCAEtD,OACE8Z,KAAMA,EACNoP,QAASA,KA6Hf,OAxHApF,EAAU9mB,UAAY,IAAI+b,EAE1B+K,EAAU9mB,UAAUU,KAAO,YAE3BomB,EAAU9mB,UAAUmxC,aAAc,EAelCrqB,EAAU9mB,UAAUsc,SAAW,SAAUR,EAAMc,GAC7C,IAAIw0B,EAAa5wC,EAAI/B,KAAK0tB,OAAQ,SAAU+kB,GAC1C,OACEl1B,KAAMk1B,EAAMp0B,KAAKR,SAASR,EAAMc,GAChCsP,QAASglB,EAAMhlB,WAInB,OAAO,SAAyBjQ,EAAOQ,EAAMyV,GAC3C,IAAImf,KASJ,OAPAjuC,EAAQguC,EAAY,SAAuBF,GACzC,IAAI15B,EAAS05B,EAAMl1B,KAAKC,EAAOQ,EAAMyV,GACjCgf,EAAMhlB,SACRmlB,EAAQjvC,KAAKoV,KAIV,IAAIuuB,EAAUsL,KAQzBvqB,EAAU9mB,UAAUoD,QAAU,SAAU9C,GACtC,IAAK,IAAIxB,EAAI,EAAGA,EAAIL,KAAK0tB,OAAO9pB,OAAQvD,IACtCwB,EAAS7B,KAAK0tB,OAAOrtB,GAAGge,KAAM,UAAYhe,EAAI,SAAUL,OAU5DqoB,EAAU9mB,UAAUQ,IAAM,SAAUF,GAElC,IADA,IAAI6rB,KACKrtB,EAAI,EAAGA,EAAIL,KAAK0tB,OAAO9pB,OAAQvD,IAAK,CAC3C,IAAIoyC,EAAQzyC,KAAK0tB,OAAOrtB,GACpBge,EAAOre,KAAKoe,QAAQvc,EAAS4wC,EAAMp0B,KAAM,UAAYhe,EAAI,SAAUL,OACvE0tB,EAAOrtB,IACLge,KAAMA,EACNoP,QAASglB,EAAMhlB,SAGnB,OAAO,IAAIpF,EAAUqF,IAOvBrF,EAAU9mB,UAAU6Q,MAAQ,WAQ1B,OAAO,IAAIiW,EAPEroB,KAAK0tB,OAAO3rB,IAAI,SAAU0wC,GACrC,OACEp0B,KAAMo0B,EAAMp0B,KACZoP,QAASglB,EAAMhlB,aAarBpF,EAAU9mB,UAAUwd,UAAY,SAAUhX,GACxC,OAAO/H,KAAK0tB,OAAO3rB,IAAI,SAAU8wC,GAC/B,OAAOA,EAAMx0B,KAAKtT,SAAShD,IAAY8qC,EAAMplB,QAAU,GAAK,OAC3DtmB,KAAK,OASVkhB,EAAU9mB,UAAUyd,OAAS,SAAUjX,GACrC,OAAO/H,KAAK0tB,OAAO3rB,IAAI,SAAU8wC,GAC/B,OAAOA,EAAMx0B,KAAKW,OAAOjX,IAAY8qC,EAAMplB,QAAU,GAAK,2CACzDtmB,KAAK,+CAQVkhB,EAAU9mB,UAAU2d,OAAS,SAAUnX,GACrC,OAAO/H,KAAK0tB,OAAO3rB,IAAI,SAAU8wC,GAC/B,OAAOA,EAAMx0B,KAAKnb,MAAM6E,IAAY8qC,EAAMplB,QAAU,GAAK,OACxDtmB,KAAK,aAGHkhB,IAUH,SAAUzoB,EAAQD,EAASQ,GAEjC,aAGA,IAAIyP,EAAYzP,EAAoB,IA2NpCR,EAAQgB,KAAO,kBACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA3NR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAChC2yC,EAAa3wC,EAAKhC,EAAoB,KAY1C,SAASmoB,EAAgB2F,EAAWC,EAAUC,GAC5C,KAAMnuB,gBAAgBsoB,GACpB,MAAM,IAAI1e,YAAY,oDAExB,IAAK3H,EAAKyb,OAAOuQ,GAAY,MAAM,IAAI1pB,UAAU,sCACjD,IAAKtC,EAAKyb,OAAOwQ,GAAY,MAAM,IAAI3pB,UAAU,qCACjD,IAAKtC,EAAKyb,OAAOyQ,GAAY,MAAM,IAAI5pB,UAAU,sCAEjDvE,KAAKiuB,UAAYA,EACjBjuB,KAAKkuB,SAAWA,EAChBluB,KAAKmuB,UAAYA,EA8LnB,OA3LA7F,EAAgB/mB,UAAY,IAAI+b,EAEhCgL,EAAgB/mB,UAAUU,KAAO,kBAEjCqmB,EAAgB/mB,UAAUwxC,mBAAoB,EAe9CzqB,EAAgB/mB,UAAUsc,SAAW,SAAUR,EAAMc,GACnD,IAAI60B,EAAgBhzC,KAAKiuB,UAAUpQ,SAASR,EAAMc,GAC9C80B,EAAejzC,KAAKkuB,SAASrQ,SAASR,EAAMc,GAC5C+0B,EAAgBlzC,KAAKmuB,UAAUtQ,SAASR,EAAMc,GAElD,OAAO,SAA6BX,EAAOQ,EAAMyV,GAC/C,OAsIJ,SAAwBxF,GACtB,GAAyB,iBAAdA,GACiB,kBAAdA,GACc,iBAAdA,EACZ,QAAOA,EAGT,GAAIA,EAAW,CACb,GAAIhsB,EAAKkQ,YAAY8b,GACnB,OAAOA,EAAUvH,SAGnB,GAAIzkB,EAAKmxB,UAAUnF,GACjB,SAAQA,EAAU/I,KAAM+I,EAAU9I,IAGpC,GAAIljB,EAAKiQ,OAAO+b,GACd,QAAOA,EAAUrpB,MAIrB,GAAIqpB,MAAAA,EACF,OAAO,EAGT,MAAM,IAAI1pB,UAAU,kCAAoCuuC,EAAW7kB,GAAa,KA/JvEklB,CAAcH,EAAcx1B,EAAOQ,EAAMyV,IAC1Cwf,EAAaz1B,EAAOQ,EAAMyV,GAC1Byf,EAAc11B,EAAOQ,EAAMyV,KAQrCnL,EAAgB/mB,UAAUoD,QAAU,SAAU9C,GAC5CA,EAAS7B,KAAKiuB,UAAW,YAAajuB,MACtC6B,EAAS7B,KAAKkuB,SAAU,WAAYluB,MACpC6B,EAAS7B,KAAKmuB,UAAW,YAAanuB,OASxCsoB,EAAgB/mB,UAAUQ,IAAM,SAAUF,GACxC,OAAO,IAAIymB,EACPtoB,KAAKoe,QAAQvc,EAAS7B,KAAKiuB,UAAW,YAAajuB,OACnDA,KAAKoe,QAAQvc,EAAS7B,KAAKkuB,SAAU,WAAYluB,OACjDA,KAAKoe,QAAQvc,EAAS7B,KAAKmuB,UAAW,YAAanuB,SAQzDsoB,EAAgB/mB,UAAU6Q,MAAQ,WAChC,OAAO,IAAIkW,EAAgBtoB,KAAKiuB,UAAWjuB,KAAKkuB,SAAUluB,KAAKmuB,YAQjE7F,EAAgB/mB,UAAUwd,UAAY,SAAUhX,GAC9C,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvEY,EAAaznB,EAAU2mB,cAAcv2B,KAAMy2B,GAM3CxI,EAAYjuB,KAAKiuB,UAAUljB,SAAShD,GACpCqrC,EAAsBxjC,EAAU2mB,cAAcv2B,KAAKiuB,UAAWwI,IAC7C,QAAhBA,GAC2B,iBAAxBz2B,KAAKiuB,UAAUhsB,MACU,OAAxBmxC,GAAkCA,GAAuB/b,KAChEpJ,EAAY,IAAMA,EAAY,KAGhC,IAAIC,EAAWluB,KAAKkuB,SAASnjB,SAAShD,GAClCsrC,EAAiBzjC,EAAU2mB,cAAcv2B,KAAKkuB,SAAUuI,IACvC,QAAhBA,GAC0B,iBAAvBz2B,KAAKkuB,SAASjsB,MACM,OAAnBoxC,GAA6BA,GAAkBhc,KACtDnJ,EAAW,IAAMA,EAAW,KAG9B,IAAIC,EAAYnuB,KAAKmuB,UAAUpjB,SAAShD,GACpCurC,EAAkB1jC,EAAU2mB,cAAcv2B,KAAKmuB,UAAWsI,GAM9D,OALqB,QAAhBA,GAC2B,iBAAxBz2B,KAAKmuB,UAAUlsB,MACM,OAApBqxC,GAA8BA,GAAmBjc,KACxDlJ,EAAY,IAAMA,EAAY,KAEzBF,EAAY,MAAQC,EAAW,MAAQC,GAQhD7F,EAAgB/mB,UAAUyd,OAAS,SAAUjX,GAC3C,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvEY,EAAaznB,EAAU2mB,cAAcv2B,KAAMy2B,GAM3CxI,EAAYjuB,KAAKiuB,UAAUjP,OAAOjX,GAClCqrC,EAAsBxjC,EAAU2mB,cAAcv2B,KAAKiuB,UAAWwI,IAC7C,QAAhBA,GAC2B,iBAAxBz2B,KAAKiuB,UAAUhsB,MACU,OAAxBmxC,GAAkCA,GAAuB/b,KAChEpJ,EAAY,iEAAmEA,EAAY,kEAG7F,IAAIC,EAAWluB,KAAKkuB,SAASlP,OAAOjX,GAChCsrC,EAAiBzjC,EAAU2mB,cAAcv2B,KAAKkuB,SAAUuI,IACvC,QAAhBA,GAC0B,iBAAvBz2B,KAAKkuB,SAASjsB,MACM,OAAnBoxC,GAA6BA,GAAkBhc,KACtDnJ,EAAW,iEAAmEA,EAAW,kEAG3F,IAAIC,EAAYnuB,KAAKmuB,UAAUnP,OAAOjX,GAClCurC,EAAkB1jC,EAAU2mB,cAAcv2B,KAAKmuB,UAAWsI,GAM9D,OALqB,QAAhBA,GAC2B,iBAAxBz2B,KAAKmuB,UAAUlsB,MACM,OAApBqxC,GAA8BA,GAAmBjc,KACxDlJ,EAAY,iEAAmEA,EAAY,kEAEtFF,EAAY,iEAAmEC,EAAW,iEAAmEC,GAQtK7F,EAAgB/mB,UAAU2d,OAAS,SAAUnX,GAC3C,MAAO,mBACD/H,KAAKkuB,SAAShrB,MAAM6E,GAAW,4BAC/B/H,KAAKiuB,UAAU/qB,MAAM6E,GACrB,SAAW/H,KAAKmuB,UAAUjrB,MAAM6E,GAChC,6CAoCDugB,IAUH,SAAU1oB,EAAQD,EAASQ,GAEjC,aAGA,IAAIid,EAAWjd,EAAoB,KAC/B4R,EAAS5R,EAAoB,GAAG4R,OAChCpN,EAAUxE,EAAoB,GAAGwE,QACjCwC,EAAOhH,EAAoB,GAAGgH,KAC9BiQ,EAAQjX,EAAoB,GAC5ByP,EAAYzP,EAAoB,IAChC+c,EAAkB/c,EAAoB,IAAI+c,gBAsL9Cvd,EAAQgB,KAAO,yBACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QAtLR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAcpC,SAASqoB,EAAuB7nB,EAAMkuB,EAAQjR,GAC5C,KAAM5d,gBAAgBwoB,GACpB,MAAM,IAAI5e,YAAY,oDAIxB,GAAoB,iBAATjJ,EAAmB,MAAM,IAAI4D,UAAU,wCAClD,IAAK3B,MAAMc,QAAQmrB,GAAU,MAAM,IAAItqB,UAAU,uEACjD,IAAKtC,EAAKyb,OAAOE,GAAO,MAAM,IAAIrZ,UAAU,sCAC5C,GAAI5D,KAAQyc,EAAU,MAAM,IAAI1Y,MAAM,2BAA6B/D,EAAO,2BAE1EX,KAAKW,KAAOA,EACZX,KAAK6uB,OAASA,EAAO9sB,IAAI,SAAU8wC,GACjC,OAAOA,GAASA,EAAMlyC,MAAQkyC,IAEhC7yC,KAAKuwB,MAAQ1B,EAAO9sB,IAAI,SAAU8wC,GAChC,OAAOA,GAASA,EAAM5wC,MAAQ,QAEhCjC,KAAK4d,KAAOA,EAyFd,SAAS4zB,EAAgBnzB,EAAMoY,GAC7B,IAAIY,EAAaznB,EAAU2mB,cAAclY,EAAMoY,GAC3Cwb,EAAiBriC,EAAU2mB,cAAclY,EAAKT,KAAM6Y,GAExD,MAAwB,QAAhBA,GACkB,OAAnBwb,GAA6BA,GAAkB5a,EAmDxD,OA9IA7O,EAAuBjnB,UAAY,IAAI+b,EAEvCkL,EAAuBjnB,UAAUU,KAAO,yBAExCumB,EAAuBjnB,UAAU25B,0BAA2B,EAe5D1S,EAAuBjnB,UAAUsc,SAAW,SAAUR,EAAMc,GAC1D,IAAIif,EAAgBt8B,OAAOwiB,OAAOnF,GAClCxZ,EAAQ3E,KAAK6uB,OAAQ,SAAUgkB,GAC7BzV,EAAcyV,IAAS,IAIzB,IAAIU,EAAWvzC,KAAK4d,KAAKC,SAASR,EAAM+f,GACpCz8B,EAAOX,KAAKW,KACZkuB,EAAS7uB,KAAK6uB,OACd9I,EAAY5e,EAAKnH,KAAKuwB,MAAO,KAC7B7Z,EAAS/V,EAAO,IAAMwG,EAAKnH,KAAK6uB,OAAQ,MAAQ,IAEpD,OAAO,SAAoCrR,EAAOQ,EAAMyV,GACtD,IAAIza,KACJA,EAAW+M,GAAa,WAGtB,IAFA,IAAIyX,EAAY18B,OAAOwiB,OAAOtF,GAErB3d,EAAI,EAAGA,EAAIwuB,EAAOjrB,OAAQvD,IACjCm9B,EAAU3O,EAAOxuB,IAAMkJ,UAAUlJ,GAGnC,OAAOkzC,EAAS/1B,EAAOggB,EAAW/J,IAEpC,IAAIxgB,EAAK7Q,EAAMzB,EAAMqY,GAKrB,OAJA/F,EAAGyD,OAASA,EAEZwG,EAAgBM,EAAO7c,EAAMsS,GAEtBA,IAQXuV,EAAuBjnB,UAAUoD,QAAU,SAAU9C,GACnDA,EAAS7B,KAAK4d,KAAM,OAAQ5d,OAS9BwoB,EAAuBjnB,UAAUQ,IAAM,SAAUF,GAC/C,IAAI+b,EAAO5d,KAAKoe,QAAQvc,EAAS7B,KAAK4d,KAAM,OAAQ5d,OAEpD,OAAO,IAAIwoB,EAAuBxoB,KAAKW,KAAMX,KAAK6uB,OAAO3oB,MAAM,GAAI0X,IAOrE4K,EAAuBjnB,UAAU6Q,MAAQ,WACvC,OAAO,IAAIoW,EAAuBxoB,KAAKW,KAAMX,KAAK6uB,OAAO3oB,MAAM,GAAIlG,KAAK4d,OAsB1E4K,EAAuBjnB,UAAUwd,UAAY,SAAUhX,GACrD,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvE7Y,EAAO5d,KAAK4d,KAAK7S,SAAShD,GAI9B,OAHIypC,EAAgBxxC,KAAMy2B,KACxB7Y,EAAO,IAAMA,EAAO,KAEf5d,KAAKW,KAAO,IAAMX,KAAK6uB,OAAO1nB,KAAK,MAAQ,OAASyW,GAQ5D4K,EAAuBjnB,UAAUyd,OAAS,SAAUjX,GAGtD,IAFG,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OAC1E5H,KACKxuB,EAAE,EAAGA,EAAEL,KAAK6uB,OAAOjrB,OAAQvD,IAClCwuB,EAAOlrB,KAAK,4CAA8CoO,EAAO/R,KAAK6uB,OAAOxuB,IAAM,WAElF,IAAIud,EAAO5d,KAAK4d,KAAKoB,OAAOjX,GAI5B,OAHIypC,EAAgBxxC,KAAMy2B,KACxB7Y,EAAO,iEAAmEA,EAAO,kEAE5E,+BAAiC7L,EAAO/R,KAAKW,MAAQ,wEAA+EkuB,EAAO1nB,KAAK,yCAA2C,qLAAuLyW,GAQ3X4K,EAAuBjnB,UAAU2d,OAAS,SAAUnX,GAClD,IAAI0uB,EAAe1uB,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,OACvE7Y,EAAO5d,KAAK4d,KAAK1a,MAAM6E,GAK3B,OAJIypC,EAAgBxxC,KAAMy2B,KACxB7Y,EAAO,UAAYA,EAAO,YAGrB,YAAc5d,KAAKW,KACpB,WAAaX,KAAK6uB,OAAO9sB,IAAIqV,EAAMnF,UAAU9K,KAAK,KAAO,aAAeyW,GAGzE4K,IASH,SAAU5oB,EAAQD,EAASQ,GAEjC,aAGA,IAAIgJ,EAAYhJ,EAAoB,GAAGgJ,UACnC4I,EAAS5R,EAAoB,GAAG4R,OAChCyK,EAAiBrc,EAAoB,IAAIqc,eACzChb,EAAiBrB,EAAoB,GAAGqB,eA0K5C7B,EAAQgB,KAAO,aACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA1KR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAQpC,SAASuoB,EAAWqH,GAClB,KAAM/vB,gBAAgB0oB,GACpB,MAAM,IAAI9e,YAAY,oDAMxB,GAHA5J,KAAK+vB,WAAaA,MAGdA,IAC0B,iBAAfA,IAA6BjvB,OAAOwkB,KAAKyK,GAAYoH,MAAM,SAAU1kB,GAC5E,OAAOxQ,EAAKyb,OAAOqS,EAAWtd,OAElC,MAAM,IAAIlO,UAAU,oCAgJ1B,OA3IAmkB,EAAWnnB,UAAY,IAAI+b,EAE3BoL,EAAWnnB,UAAUU,KAAO,aAE5BymB,EAAWnnB,UAAUmwC,cAAe,EAepChpB,EAAWnnB,UAAUsc,SAAW,SAAUR,EAAMc,GAC9C,IAAIq1B,KAEJ,IAAK,IAAI/gC,KAAOzS,KAAK+vB,WACnB,GAAIvuB,EAAexB,KAAK+vB,WAAYtd,GAAM,CAGxC,IAAIghC,EAAiBtqC,EAAUsJ,GAC3BihC,EAAYxqC,KAAK8f,MAAMyqB,GAC3B,IAAKj3B,EAAexc,KAAK+vB,WAAY2jB,GACnC,MAAM,IAAIhvC,MAAM,0BAA4BgvC,EAAY,KAG1DF,EAAYE,GAAY1zC,KAAK+vB,WAAWtd,GAAKoL,SAASR,EAAMc,GAIhE,OAAO,SAAyBX,EAAOQ,EAAMyV,GAC3C,IAAIlgB,KAEJ,IAAK,IAAId,KAAO+gC,EACVhyC,EAAegyC,EAAa/gC,KAC9Bc,EAAId,GAAO+gC,EAAY/gC,GAAK+K,EAAOQ,EAAMyV,IAI7C,OAAOlgB,IAQXmV,EAAWnnB,UAAUoD,QAAU,SAAU9C,GACvC,IAAK,IAAI4Q,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,IACjC5Q,EAAS7B,KAAK+vB,WAAWtd,GAAM,cAAgBtJ,EAAUsJ,GAAO,IAAKzS,OAW3E0oB,EAAWnnB,UAAUQ,IAAM,SAAUF,GACnC,IAAIkuB,KACJ,IAAK,IAAItd,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,KACjCsd,EAAWtd,GAAOzS,KAAKoe,QAAQvc,EAAS7B,KAAK+vB,WAAWtd,GACpD,cAAgBtJ,EAAUsJ,GAAO,IAAKzS,QAG9C,OAAO,IAAI0oB,EAAWqH,IAOxBrH,EAAWnnB,UAAU6Q,MAAQ,WAC3B,IAAI2d,KACJ,IAAK,IAAItd,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,KACjCsd,EAAWtd,GAAOzS,KAAK+vB,WAAWtd,IAGtC,OAAO,IAAIiW,EAAWqH,IASxBrH,EAAWnnB,UAAUwd,UAAY,SAAShX,GACxC,IAAI4O,KACJ,IAAK,IAAIlE,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,IACjCkE,EAAQhT,KAAKwF,EAAUsJ,GAAO,KAAOzS,KAAK+vB,WAAWtd,GAAK1H,SAAShD,IAGvE,MAAO,IAAM4O,EAAQxP,KAAK,MAAQ,KASpCuhB,EAAWnnB,UAAUyd,OAAS,SAASjX,GACrC,IAAI4O,KACJ,IAAK,IAAIlE,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,IACjCkE,EAAQhT,KAAK,2CAA6CoO,EAAOU,GAAO,8HAAqIzS,KAAK+vB,WAAWtd,GAAKuM,OAAOjX,IAG7O,MAAO,iEAAmE4O,EAAQxP,KAAK,yCAA2C,kEAQpIuhB,EAAWnnB,UAAU2d,OAAS,SAASnX,GACrC,IAAI4O,KACJ,IAAK,IAAIlE,KAAOzS,KAAK+vB,WACf/vB,KAAK+vB,WAAWvuB,eAAeiR,IACjCkE,EAAQhT,KAAK,YAAc8O,EAAM,QAAUzS,KAAK+vB,WAAWtd,GAAKvP,MAAM6E,GAAW,QAGrF,MAAO,8BAAgC4O,EAAQxP,KAAK,MAAQ,0BAGvDuhB,IAUH,SAAU9oB,EAAQD,EAASQ,GAEjC,aAGA,IAAIyP,EAAYzP,EAAoB,IA8PpCR,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,kBACf3T,EAAQD,QA9PR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIkb,EAAOnb,EAAKhC,EAAoB,KAUpC,SAAS2oB,EAAUzS,EAAOC,EAAK0mB,GAC7B,KAAMh9B,gBAAgB8oB,GACpB,MAAM,IAAIlf,YAAY,oDAIxB,IAAK3H,EAAKyb,OAAOrH,GAAQ,MAAM,IAAI9R,UAAU,iBAC7C,IAAKtC,EAAKyb,OAAOpH,GAAM,MAAM,IAAI/R,UAAU,iBAC3C,GAAIy4B,IAAS/6B,EAAKyb,OAAOsf,GAAO,MAAM,IAAIz4B,UAAU,iBACpD,GAAIgF,UAAU3F,OAAS,EAAG,MAAM,IAAIc,MAAM,sBAE1C1E,KAAKqW,MAAQA,EACbrW,KAAKsW,IAAMA,EACXtW,KAAKg9B,KAAOA,GAAQ,KAuGtB,SAAS5F,EAA8B/Y,EAAMoY,GAC3C,IAAIY,EAAaznB,EAAU2mB,cAAclY,EAAMoY,GAC3CkC,KAEAgb,EAAkB/jC,EAAU2mB,cAAclY,EAAKhI,MAAOogB,GAI1D,GAHAkC,EAAOtiB,MAA8B,OAApBs9B,GAA8BA,GAAmBtc,GAC5C,QAAhBZ,EAEFpY,EAAK2e,KAAM,CACb,IAAI4W,EAAiBhkC,EAAU2mB,cAAclY,EAAK2e,KAAMvG,GACxDkC,EAAOqE,KAA4B,OAAnB4W,GAA6BA,GAAkBvc,GACzC,QAAhBZ,EAGR,IAAIod,EAAgBjkC,EAAU2mB,cAAclY,EAAK/H,IAAKmgB,GAItD,OAHAkC,EAAOriB,IAA0B,OAAlBu9B,GAA4BA,GAAiBxc,GACtC,QAAhBZ,EAECkC,EAwGT,OA9NA7P,EAAUvnB,UAAY,IAAI+b,EAE1BwL,EAAUvnB,UAAUU,KAAO,YAE3B6mB,EAAUvnB,UAAU27B,aAAc,EAOlCpU,EAAUvnB,UAAU47B,SAAW,WAM7B,OAJiBn9B,KAAK8G,OAAO,SAAUuX,GACrC,OAAOpc,EAAKosB,aAAahQ,IAAwB,QAAdA,EAAK1d,OAGxBiD,OAAS,GAgB7BklB,EAAUvnB,UAAUsc,SAAW,SAAUR,EAAMc,GAC7C,IAAIwD,EAAQtE,EAAKsE,MACb0b,EAAYr9B,KAAKqW,MAAMwH,SAASR,EAAMc,GACtCmf,EAAUt9B,KAAKsW,IAAIuH,SAASR,EAAMc,GAEtC,GAAIne,KAAKg9B,KAAM,CACb,IAAIO,EAAWv9B,KAAKg9B,KAAKnf,SAASR,EAAMc,GAExC,OAAO,SAAuBX,EAAOQ,EAAMyV,GACzC,OAAO9R,EACL0b,EAAU7f,EAAOQ,EAAMyV,GACvB6J,EAAQ9f,EAAOQ,EAAMyV,GACrB8J,EAAS/f,EAAOQ,EAAMyV,KAK1B,OAAO,SAAuBjW,EAAOQ,EAAMyV,GACzC,OAAO9R,EACL0b,EAAU7f,EAAOQ,EAAMyV,GACvB6J,EAAQ9f,EAAOQ,EAAMyV,MAU7B3K,EAAUvnB,UAAUoD,QAAU,SAAU9C,GACtCA,EAAS7B,KAAKqW,MAAO,QAASrW,MAC9B6B,EAAS7B,KAAKsW,IAAK,MAAOtW,MACtBA,KAAKg9B,MACPn7B,EAAS7B,KAAKg9B,KAAM,OAAQh9B,OAUhC8oB,EAAUvnB,UAAUQ,IAAM,SAAUF,GAClC,OAAO,IAAIinB,EACP9oB,KAAKoe,QAAQvc,EAAS7B,KAAKqW,MAAO,QAASrW,OAC3CA,KAAKoe,QAAQvc,EAAS7B,KAAKsW,IAAK,MAAOtW,OACvCA,KAAKg9B,MAAQh9B,KAAKoe,QAAQvc,EAAS7B,KAAKg9B,KAAM,OAAQh9B,SAQ5D8oB,EAAUvnB,UAAU6Q,MAAQ,WAC1B,OAAO,IAAI0W,EAAU9oB,KAAKqW,MAAOrW,KAAKsW,IAAKtW,KAAKg9B,MAAQh9B,KAAKg9B,OAoC/DlU,EAAUvnB,UAAUwd,UAAY,SAAUhX,GACxC,IAII+C,EAHA6tB,EAASvB,EAA8Bp3B,KADxB+H,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,QAMvEpgB,EAAQrW,KAAKqW,MAAMtL,SAAShD,GAMhC,GALI4wB,EAAOtiB,QACTA,EAAQ,IAAMA,EAAQ,KAExBvL,EAAMuL,EAEFrW,KAAKg9B,KAAM,CACb,IAAIA,EAAOh9B,KAAKg9B,KAAKjyB,SAAShD,GAC1B4wB,EAAOqE,OACTA,EAAO,IAAMA,EAAO,KAEtBlyB,GAAO,IAAMkyB,EAGf,IAAI1mB,EAAMtW,KAAKsW,IAAIvL,SAAShD,GAM5B,OALI4wB,EAAOriB,MACTA,EAAM,IAAMA,EAAM,KAEpBxL,GAAO,IAAMwL,GAUfwS,EAAUvnB,UAAUyd,OAAS,SAAUjX,GACrC,IAII+C,EAHA6tB,EAASvB,EAA8Bp3B,KADxB+H,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,QAMvEpgB,EAAQrW,KAAKqW,MAAM2I,OAAOjX,GAM9B,GALI4wB,EAAOtiB,QACTA,EAAQ,iEAAmEA,EAAQ,kEAErFvL,EAAMuL,EAEFrW,KAAKg9B,KAAM,CACb,IAAIA,EAAOh9B,KAAKg9B,KAAKhe,OAAOjX,GACxB4wB,EAAOqE,OACTA,EAAO,iEAAmEA,EAAO,kEAEnFlyB,GAAO,2DAA6DkyB,EAGtE,IAAI1mB,EAAMtW,KAAKsW,IAAI0I,OAAOjX,GAM1B,OALI4wB,EAAOriB,MACTA,EAAM,iEAAmEA,EAAM,kEAEjFxL,GAAO,2DAA6DwL,GAUtEwS,EAAUvnB,UAAU2d,OAAS,SAAUnX,GACrC,IACI4wB,EAASvB,EAA8Bp3B,KADxB+H,GAAWA,EAAQ0uB,YAAe1uB,EAAQ0uB,YAAc,QAGvE3rB,EAAM9K,KAAKqW,MAAMnT,MAAM6E,GAK3B,GAJI4wB,EAAOtiB,QACTvL,EAAM,UAAYA,EAAM,YAGtB9K,KAAKg9B,KAAM,CACb,IAAIA,EAAOh9B,KAAKg9B,KAAK95B,MAAM6E,GACvB4wB,EAAOqE,OACTA,EAAO,UAAYA,EAAO,YAE5BlyB,GAAO,IAAMkyB,EAGf,IAAI1mB,EAAMtW,KAAKsW,IAAIpT,MAAM6E,GAMzB,OALI4wB,EAAOriB,MACTA,EAAM,UAAYA,EAAM,YAE1BxL,GAAO,IAAMwL,GAKRwS,IAUH,SAAUlpB,EAAQD,EAASQ,GAEjC,aAmDAR,EAAQgB,KAAO,QACfhB,EAAQD,QAjDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI4mB,EAAQ7mB,EAAKhC,EAAoB,KAyCrC,OAAOiC,EAAM,SACX0xC,0BAA2B9qB,EAC3B+qB,kCAAmC/qB,MAUjC,SAAUppB,EAAQD,EAASQ,GAEjC,aAwDAR,EAAQgB,KAAO,SACfhB,EAAQD,QAtDR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAI22B,EAAS7xC,EAAKhC,EAAoB,MA6CtC,OAAOiC,EAAM,UACXE,GAAI,WACF,OAAO,IAAI0xC,EAAO32B,OAOxB1d,EAAQ0d,MAAO,GAKT,SAAUzd,EAAQD,EAASQ,GAEjC,aAGA,IAAIuS,EAASvS,EAAoB,GAAGuS,OAChCuhC,EAAU9zC,EAAoB,IA6JlCR,EAAQgB,KAAO,SACfhB,EAAQ2T,KAAO,aACf3T,EAAQD,QA7JR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAI62B,EAAS/xC,EAAKhC,EAAoB,KAkDtC,SAAS6zC,IACP,KAAMh0C,gBAAgBg0C,GACpB,MAAM,IAAIpqC,YACN,oDAEN5J,KAAKwd,SAgGP,OA1FAw2B,EAAOzyC,UAAUU,KAAO,SACxB+xC,EAAOzyC,UAAU4yC,UAAW,EAU5BH,EAAOzyC,UAAUynB,MAAQ,SAAUpL,GACjC,MAAM,IAAIlZ,MAAM,wDAUlBsvC,EAAOzyC,UAAUkc,QAAU,SAAUG,GACnC,MAAM,IAAIlZ,MAAM,4DASlBsvC,EAAOzyC,UAAUgc,KAAO,SAAUK,GAEhC,OAAOs2B,EAAOt2B,GACTH,UACAF,KAAKvd,KAAKwd,QASjBw2B,EAAOzyC,UAAUL,IAAM,SAAUP,GAE/B,OAAOA,KAAQX,KAAKwd,MACdy2B,EAAQh3B,gBAAgBjd,KAAKwd,MAAO7c,QACpCyE,GAOR4uC,EAAOzyC,UAAU6yC,OAAS,WACxB,OAAO1hC,KAAW1S,KAAKwd,QAQzBw2B,EAAOzyC,UAAU6R,IAAM,SAAUzS,EAAMiE,GAErC,OAAOqvC,EAAQ/2B,gBAAgBld,KAAKwd,MAAO7c,EAAMiE,IAOnDovC,EAAOzyC,UAAU8yC,OAAS,SAAU1zC,UAE3BX,KAAKwd,MAAM7c,IAMpBqzC,EAAOzyC,UAAU+yC,MAAQ,WACvB,IAAK,IAAI3zC,KAAQX,KAAKwd,MAChBxd,KAAKwd,MAAMhc,eAAeb,WACrBX,KAAKwd,MAAM7c,IAKjBqzC,GAMTr0C,EAAQ0d,MAAO,GAKT,SAAUzd,EAAQD,EAASQ,GAEjC,aAGA,IAAI+wB,EAAc/wB,EAAoB,IAClCyF,EAASzF,EAAoB,IAC7Bo0C,EAAsBp0C,EAAoB,IAyG9CR,EAAQgB,KAAO,MACfhB,EAAQD,QAxGR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI+O,EAAShP,EAAKhC,EAAoB,KAClCq0C,EAAsBryC,EAAKhC,EAAoB,KAiC/CyL,EAAMxJ,EAAM,OAEdgiB,iBAAkBqwB,EAGlBC,qCAAsC,SAAU9yC,EAAOmC,GACrD,OAAO6B,EAAOhE,EAAOmC,EAAIsO,UAAWsiC,IAItCC,MAAO,SAAU52B,GACf,GAAIu2B,EAAoBv2B,GACtB,MAAM,IAAIzZ,UAAU,0CAGtB,OAAOkwC,EAAKz2B,MAMhB,OAFApS,EAAI1I,MAAQ,8BAEL0I,EASP,SAAS+oC,EAAS3yC,EAAGyJ,GACnB,IACE,OAAO0F,EAAOnP,EAAGyJ,GAAKzJ,EAAIyJ,EAE5B,MAAO8a,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO9a,IAU1C,SAASgpC,EAAK7yC,GACZ,IAAIgK,OAAMxG,EAaV,GAXA8rB,EAAYtvB,EAAO,SAAUgD,GAC3B,UACcQ,IAARwG,GAAqBuF,EAAOvM,EAAOgH,MACrCA,EAAMhH,GAGV,MAAO2hB,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO3hB,WAI9BQ,IAARwG,EACF,MAAM,IAAIlH,MAAM,0CAGlB,OAAOkH,KAWL,SAAUhM,EAAQD,EAASQ,GAEjC,aAGA,IAAIsD,EAAOtD,EAAoB,GAAGsD,KAC9BytB,EAAc/wB,EAAoB,IAClCyF,EAASzF,EAAoB,IAC7Bo0C,EAAsBp0C,EAAoB,IAsG9CR,EAAQgB,KAAO,OACfhB,EAAQD,QArGR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIsO,EAAMvO,EAAKhC,EAAoB,KAC/BmQ,EAASnO,EAAKhC,EAAoB,KAClCq0C,EAAsBryC,EAAKhC,EAAoB,KA6B/CmvC,EAAOltC,EAAM,QAEfgiB,iBAAkBywB,EAGlBH,qCAwBF,SAAmB9yC,EAAOmC,GACxB,IACE,IAAIyV,EAAM5T,EAAOhE,EAAOmC,EAAK2M,GACzBhP,EAAIkB,MAAMc,QAAQ9B,GAAS6B,EAAK7B,GAASA,EAAM6B,OACnD,OAAO6M,EAAOkJ,EAAK9X,EAAEqC,IAEvB,MAAOwiB,GACL,MAAMiuB,EAAoBjuB,EAAK,UA5BjCquB,MAAO,SAAU52B,GACf,GAAIu2B,EAAoBv2B,GACtB,MAAM,IAAIzZ,UAAU,2CAGtB,OAAOswC,EAAM72B,MAMjB,OAFAsxB,EAAKpsC,WAAQkC,EAENkqC,EA2BP,SAASuF,EAAMjzC,GACb,IAAI4X,EAAM,EACNijB,EAAM,EAYV,GAVAvL,EAAYtvB,EAAO,SAAUgD,GAC3B,IACE4U,EAAM9I,EAAI8I,EAAK5U,GACf63B,IAEF,MAAOlW,GACL,MAAMiuB,EAAoBjuB,EAAK,OAAQ3hB,MAI/B,IAAR63B,EACF,MAAM,IAAI/3B,MAAM,2CAGlB,OAAO4L,EAAOkJ,EAAKijB,MAUjB,SAAU78B,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IA2M/BR,EAAQgB,KAAO,MACfhB,EAAQD,QA1MR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAAeF,EAAKhC,EAAoB,IACxC+b,EAAe/Z,EAAKhC,EAAoB,KACxCkX,EAAelV,EAAKhC,EAAoB,KACxCkQ,EAAelO,EAAKhC,EAAoB,KACxC+P,EAAe/N,EAAKhC,EAAoB,KACxC8tC,EAAe9rC,EAAKhC,EAAoB,MACxC0mB,EAAe1kB,EAAKhC,EAAoB,KAsBxCgxB,EAAM/uB,EAAM,OACdgiB,iBAAkB,SAAUpiB,GAC1B,IAAIyB,EAAOxB,EAAK2V,SAAS5V,GAAKA,EAAEyB,OAASqR,EAAKlT,MAAM6B,KAAKzB,GACzD,OAAQyB,EAAKG,QACX,KAAK,EAEH,GAAe,GAAXH,EAAK,GACP,OAAIxB,EAAK2V,SAAS5V,GACTK,GACL6Z,EAAa,EAAGla,EAAEqQ,UAAU,OAK5B6J,EAAa,EAAGla,EAAE,KAKtB,MAAM,IAAIoT,WAAW,gCACTN,EAAKtS,OAAOC,OAAOgB,GAAQ,KAG3C,KAAK,EAEH,IAAIoc,EAAOpc,EAAK,GACZmsB,EAAOnsB,EAAK,GAChB,GAAIoc,GAAQ+P,EACV,OAAI3tB,EAAK2V,SAAS5V,GACTK,EACHyyC,EAAK9yC,EAAEqQ,UAAWwN,EAAM+P,GACxB5tB,EAAEe,WAKC+xC,EAAK9yC,EAAG6d,EAAM+P,GAIvB,MAAM,IAAIxa,WAAW,gCACTN,EAAKtS,OAAOC,OAAOgB,GAAQ,KAG3C,QAEE,MAAM,IAAI2R,WAAW,yCACTN,EAAKtS,OAAOC,OAAOgB,GAAQ,OAI7CyvB,IAAO,SAAUlxB,GAEf,OAAOka,EAAa,EAAGla,MAY3B,SAAS8yC,EAAMhX,EAAKje,EAAM+P,GACxB,IAAIzP,EAAGze,EAAGkS,EAAGhP,EAAOmwC,EAEpB,GAAY,GAARl1B,EAAW,CAGb,GAAa,IADbjb,EAAQk5B,EAAI,GAAG,IAEb,MAAMp5B,MAAM,iDAEd,QACEwX,EAAa,EAAGtX,KAGf,GAAY,GAARib,EAAW,CAElB,IAAInf,EAAIutC,EAAInQ,GACZ,GAAS,GAALp9B,EACF,MAAMgE,MAAM,iDAEd,QAEIwX,EAAa4hB,EAAI,GAAG,GAAIp9B,GACxBwb,EAAahM,EAAW4tB,EAAI,GAAG,IAAKp9B,KAGpCwb,EAAahM,EAAW4tB,EAAI,GAAG,IAAKp9B,GACpCwb,EAAa4hB,EAAI,GAAG,GAAIp9B,KAY5B,IAAIs0C,EAAIlX,EAAIrzB,SACZ,IAAK0V,EAAI,EAAGA,EAAIN,EAAMM,IACpB60B,EAAE70B,GAAK60B,EAAE70B,GAAG1V,SAQd,IAHA,IAAIwqC,EAAIpuB,EAAIhH,GAAMxN,UAGT5R,EAAI,EAAGA,EAAImvB,EAAMnvB,IAAK,CAI7B,IADA0f,EAAI1f,EACG0f,EAAIN,GAAmB,GAAXm1B,EAAE70B,GAAG1f,IACtB0f,IAEF,GAAIA,GAAKN,GAAmB,GAAXm1B,EAAE70B,GAAG1f,GAEpB,MAAMiE,MAAM,iDAEVyb,GAAK1f,IACPs0C,EAAOC,EAAEv0C,GAAIu0C,EAAEv0C,GAAKu0C,EAAE70B,GAAI60B,EAAE70B,GAAK40B,EACjCA,EAAOE,EAAEx0C,GAAIw0C,EAAEx0C,GAAKw0C,EAAE90B,GAAI80B,EAAE90B,GAAK40B,GAInC,IAAIG,EAAKF,EAAEv0C,GACP00C,EAAKF,EAAEx0C,GACX,IAAK0f,EAAI,EAAGA,EAAIN,EAAMM,IAAK,CACzB,IAAIi1B,EAAKJ,EAAE70B,GACPk1B,EAAKJ,EAAE90B,GACX,GAAGA,GAAK1f,GAEN,GAAa,GAAT20C,EAAG30C,GAAS,CAKd,IAJAmT,EAAIsI,EAAahM,EAAWklC,EAAG30C,IAAKy0C,EAAGz0C,IAIlCiB,EAAIjB,EAAGiB,EAAIkuB,EAAMluB,IACpB0zC,EAAG1zC,GAAK2V,EAAU+9B,EAAG1zC,GAAI2O,EAASuD,EAAGshC,EAAGxzC,KAE1C,IAAKA,EAAI,EAAGA,EAAIkuB,EAAMluB,IACpB2zC,EAAG3zC,GAAK2V,EAAUg+B,EAAG3zC,GAAK2O,EAASuD,EAAGuhC,EAAGzzC,UAI1C,CAIH,IADAkS,EAAIshC,EAAGz0C,GACFiB,EAAIjB,EAAGiB,EAAIkuB,EAAMluB,IACpB0zC,EAAG1zC,GAAKwa,EAAak5B,EAAG1zC,GAAIkS,GAE9B,IAAKlS,EAAI,EAAGA,EAAIkuB,EAAMluB,IACpB2zC,EAAG3zC,GAAKwa,EAAam5B,EAAG3zC,GAAIkS,KAKpC,OAAOqhC,EAMX,OAFA9jB,EAAIjuB,OAASE,EAAG,kCAET+tB,IASH,SAAUvxB,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAC3BkB,EAASyT,EAAKzT,OACdmB,EAASsS,EAAKtS,OAiKlB7C,EAAQgB,KAAO,MACfhB,EAAQD,QAhKR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCuQ,EAAMvO,EAAKhC,EAAoB,KAC/BwQ,EAAWxO,EAAKhC,EAAoB,KACpCkQ,EAAWlO,EAAKhC,EAAoB,KACpC+P,EAAa/N,EAAKhC,EAAoB,KA2BtC8tC,EAAM7rC,EAAM,OACd8wB,IAAO,SAAUlxB,GACf,OAAOX,EAAO+Q,MAAMpQ,IAGtBoiB,iBAAkB,SAAcpiB,GAC9B,IAAIyB,EAaJ,QAXEA,EADExB,EAAK2V,SAAS5V,GACTA,EAAEyB,OAEFb,MAAMc,QAAQ1B,IACrBA,EAAIK,EAAOL,IACFyB,WAOEG,QACX,KAAK,EAEH,OAAOvC,EAAO+Q,MAAMpQ,GAEtB,KAAK,EAEH,GAAe,GAAXyB,EAAK,GACP,OAAOpC,EAAO+Q,MAAMpQ,EAAEqQ,UAAU,IAGhC,MAAM,IAAI+C,WAAW,gCACT5S,EAAOC,OAAOgB,GAAQ,KAGtC,KAAK,EAEH,IAAIoc,EAAOpc,EAAK,GACZmsB,EAAOnsB,EAAK,GAChB,GAAIoc,GAAQ+P,EACV,OA2BV,SAAevtB,EAAQwd,EAAM+P,GAC3B,GAAY,GAAR/P,EAEF,OAAOxe,EAAO+Q,MAAM/P,EAAO,GAAG,IAE3B,GAAY,GAARwd,EAGP,OAAOlP,EACHN,EAAShO,EAAO,GAAG,GAAIA,EAAO,GAAG,IACjCgO,EAAShO,EAAO,GAAG,GAAIA,EAAO,GAAG,KAsCrC,IAjCA,IAAIizC,EAAa,SAAUjzC,GACzB,IAAIhC,EAAG6T,EAKH1G,EAAK,IAAI5K,MAAMP,EAAOuB,QACtB4V,EAAM,EACV,IAAKnZ,EAAI,EAAGA,EAAIgC,EAAOuB,OAAQvD,IAC7BmZ,EAAM9I,EAAI8I,EAAKnX,EAAOhC,GAAGA,IAG3B,IAAKA,EAAI,EAAGA,EAAIgC,EAAOuB,OAAQvD,IAAK,CAIlC,IAHAmN,EAAGnN,GAAK,IAAIuC,MAAMP,EAAOuB,QACzB4J,EAAGnN,GAAGA,GAAK6P,EAAWsJ,GAEjBtF,EAAI,EAAGA,EAAI7T,EAAG6T,IACjB1G,EAAGnN,GAAG6T,GAAK,EAGb,IAAKA,EAAI7T,EAAI,EAAG6T,EAAI7R,EAAOuB,OAAQsQ,IACjC1G,EAAGnN,GAAG6T,GAAK7R,EAAOhC,GAAG6T,GAGnB7T,EAAE,EAAIgC,EAAOuB,SACf4V,EAAM7I,EAAS6I,EAAKnX,EAAOhC,EAAI,GAAGA,EAAI,KAI1C,OAAOmN,GAGL+nC,EAAKlzC,EACAhC,EAAI,EAAGA,EAAIwf,EAAO,EAAGxf,IAC5Bk1C,EAAKllC,EAASilC,EAAWC,GAAKlzC,GAGhC,OAAIwd,EAAO,GAAK,EACP3P,EAAWqlC,EAAG,GAAG,IAEjBA,EAAG,GAAG,GAlFFC,CAAKxzC,EAAEoQ,QAAQC,UAAWwN,GAGjC,MAAM,IAAIzK,WAAW,gCACT5S,EAAOC,OAAOgB,GAAQ,KAGtC,QAEE,MAAM,IAAI2R,WAAW,yCACT5S,EAAOC,OAAOgB,GAAQ,SAO1C,OAFAwqC,EAAI/qC,OAASE,EAAG,kCAET6qC,IA8EH,SAAUruC,EAAQD,EAASQ,GAEjC,aAGA,IAAI+wB,EAAc/wB,EAAoB,IAClCyF,EAASzF,EAAoB,IAC7Bo0C,EAAsBp0C,EAAoB,IAwG9CR,EAAQgB,KAAO,MACfhB,EAAQD,QAvGR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI8O,EAAU/O,EAAKhC,EAAoB,KACnCq0C,EAAsBryC,EAAKhC,EAAoB,KAiC/CgF,EAAM/C,EAAM,OAEdgiB,iBAAkBqxB,EAGlBf,qCAAsC,SAAU9yC,EAAOmC,GACrD,OAAO6B,EAAOhE,EAAOmC,EAAIsO,UAAWqjC,IAItCd,MAAO,SAAU52B,GACf,GAAIu2B,EAAoBv2B,GACtB,MAAM,IAAIzZ,UAAU,0CAGtB,OAAOkxC,EAAKz3B,MAMhB,OAFA7Y,EAAIjC,MAAQ,8BAELiC,EASP,SAASuwC,EAAU1zC,EAAGyJ,GACpB,IACE,OAAOyF,EAAQlP,EAAGyJ,GAAKzJ,EAAIyJ,EAE7B,MAAO8a,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO9a,IAU1C,SAASgqC,EAAK7zC,GACZ,IAAIuD,OAAMC,EAaV,GAXA8rB,EAAYtvB,EAAO,SAAUgD,GAC3B,UACcQ,IAARD,GAAqB+L,EAAQtM,EAAOO,MACtCA,EAAMP,GAGV,MAAO2hB,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO3hB,WAI9BQ,IAARD,EACF,MAAM,IAAIT,MAAM,0CAGlB,OAAOS,KAUL,SAAUvF,EAAQD,EAASQ,GAEjC,aAsRAR,EAAQgB,KAAO,QACfhB,EAAQD,QApRR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCw1C,EAAO,IAAI1zC,EAAKiiB,UAAU,GAC1B0xB,EAAM,IAAI3zC,EAAKiiB,UAAU,GA6CzBvC,EAAQvf,EAAM,SAIhBI,OAAUqzC,EACVC,kBAAmBD,EAEnBrgC,iBAAmB,SAAUa,EAAOC,GAClC,OAAOy/B,EAAKC,EAAS3/B,EAAOC,EAAK,KAEnC2/B,yBAA0B,SAAU5/B,EAAOC,EAAK0mB,GAC9C,OAAO+Y,EAAKC,EAAS3/B,EAAOC,EAAK0mB,KAEnCkZ,0BAA2B,SAAU7/B,EAAOC,EAAK6/B,GAC/C,OACMJ,EADCI,EACIC,EAAU//B,EAAOC,EAAK,GACtB0/B,EAAS3/B,EAAOC,EAAK,KAElC+/B,kCAAmC,SAAUhgC,EAAOC,EAAK0mB,EAAMmZ,GAC7D,OACMJ,EADCI,EACIC,EAAU//B,EAAOC,EAAK0mB,GACtBgZ,EAAS3/B,EAAOC,EAAK0mB,KAGlCvnB,uBAAyB,SAAUY,EAAOC,GACxC,OAAOy/B,EAAKO,EAAYjgC,EAAOC,EAAKs/B,KAEtCW,kCAAmC,SAAUlgC,EAAOC,EAAK0mB,GACvD,OAAO+Y,EAAKO,EAAYjgC,EAAOC,EAAK0mB,KAEtCwZ,gCAAiC,SAAUngC,EAAOC,EAAK6/B,GACrD,OACMJ,EADCI,EACIM,EAAapgC,EAAOC,EAAKs/B,GACzBU,EAAYjgC,EAAOC,EAAKs/B,KAErCc,2CAA4C,SAAUrgC,EAAOC,EAAK0mB,EAAMmZ,GACtE,OACMJ,EADCI,EACIM,EAAapgC,EAAOC,EAAK0mB,GACzBsZ,EAAYjgC,EAAOC,EAAK0mB,OAOvC,OAFArb,EAAMze,WAAQkC,EAEPuc,EAEP,SAASo0B,EAAKpwC,GACZ,MAAyB,UAAlBzD,EAAOG,OAAqBsD,EAAMtD,EAAOsD,GAGlD,SAASkwC,EAAW/qC,EAAKqrC,GACvB,IAAIh2B,EAwIN,SAAiBrV,GACf,IAGIq8B,EAHOr8B,EAAIZ,MAAM,KAGLnI,IAAI,SAAUmhB,GAE5B,OAAO5X,OAAO4X,KAMhB,GAHcikB,EAAKC,KAAK,SAAU3K,GAChC,OAAOx0B,MAAMw0B,KAGb,OAAO,KAGT,OAAQ0K,EAAKvjC,QACX,KAAK,EACH,OACEyS,MAAO8wB,EAAK,GACZ7wB,IAAK6wB,EAAK,GACVnK,KAAM,GAGV,KAAK,EACH,OACE3mB,MAAO8wB,EAAK,GACZ7wB,IAAK6wB,EAAK,GACVnK,KAAMmK,EAAK,IAGf,QACE,OAAO,MAxKH+M,CAAOppC,GACf,IAAKqV,EACH,MAAM,IAAIvW,YAAY,WAAakB,EAAM,uBAI3C,MAAsB,cAAlB5I,EAAOoB,OAEFyyC,GADFI,EAAaM,EAAeH,GAE7B,IAAIr0C,EAAKiiB,UAAU/D,EAAE9J,OACrB,IAAIpU,EAAKiiB,UAAU/D,EAAE7J,KACrB,IAAIrU,EAAKiiB,UAAU/D,EAAE6c,QAIlB+Y,GADFI,EAAaC,EAAYJ,GACf71B,EAAE9J,MAAO8J,EAAE7J,IAAK6J,EAAE6c,OAYrC,SAASgZ,EAAU3/B,EAAOC,EAAK0mB,GAC7B,IAAIp7B,KACAI,EAAIqU,EACR,GAAI2mB,EAAO,EACT,KAAOh7B,EAAIsU,GACT1U,EAAM+B,KAAK3B,GACXA,GAAKg7B,OAGJ,GAAIA,EAAO,EACd,KAAOh7B,EAAIsU,GACT1U,EAAM+B,KAAK3B,GACXA,GAAKg7B,EAIT,OAAOp7B,EAWT,SAASw0C,EAAW//B,EAAOC,EAAK0mB,GAC9B,IAAIp7B,KACAI,EAAIqU,EACR,GAAI2mB,EAAO,EACT,KAAOh7B,GAAKsU,GACV1U,EAAM+B,KAAK3B,GACXA,GAAKg7B,OAGJ,GAAIA,EAAO,EACd,KAAOh7B,GAAKsU,GACV1U,EAAM+B,KAAK3B,GACXA,GAAKg7B,EAIT,OAAOp7B,EAWT,SAAS00C,EAAajgC,EAAOC,EAAK0mB,GAChC,IAAIp7B,KACAI,EAAIqU,EACR,GAAI2mB,EAAK5W,GAAGuvB,GACV,KAAO3zC,EAAE4kB,GAAGtQ,IACV1U,EAAM+B,KAAK3B,GACXA,EAAIA,EAAEyd,KAAKud,QAGV,GAAIA,EAAKpW,GAAG+uB,GACf,KAAO3zC,EAAEokB,GAAG9P,IACV1U,EAAM+B,KAAK3B,GACXA,EAAIA,EAAEyd,KAAKud,GAIf,OAAOp7B,EAWT,SAAS60C,EAAcpgC,EAAOC,EAAK0mB,GACjC,IAAIp7B,KACAI,EAAIqU,EACR,GAAI2mB,EAAK5W,GAAGuvB,GACV,KAAO3zC,EAAE2kB,IAAIrQ,IACX1U,EAAM+B,KAAK3B,GACXA,EAAIA,EAAEyd,KAAKud,QAGV,GAAIA,EAAKpW,GAAG+uB,GACf,KAAO3zC,EAAEs6B,IAAIhmB,IACX1U,EAAM+B,KAAK3B,GACXA,EAAIA,EAAEyd,KAAKud,GAIf,OAAOp7B,KAwDL,SAAUhC,EAAQD,EAASQ,GAEjC,aAGaA,EAAoB,GAAGmJ,OA2QpC3J,EAAQ0d,MAAO,EACf1d,EAAQgB,KAAO,mBACfhB,EAAQ2T,KAAO,mBACf3T,EAAQD,QA5QR,SAAiBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC1C,IAAIvI,EAAO3S,EAAKhC,EAAoB,MAEhCs+B,GADYt8B,EAAKhC,EAAoB,KACrB2U,EAAK2pB,eACrBC,EAAgB5pB,EAAK4pB,cACrBiY,EAAc7hC,EAAK6hC,YACnB9X,EAAyB/pB,EAAK+pB,uBAC9BtW,EAAelL,EAAKS,WAAWO,KAAKkK,aACpCI,EAAetL,EAAKS,WAAWO,KAAKsK,aACpCE,EAAexL,EAAKS,WAAWO,KAAKwK,aAOxC,SAAS+tB,EAAMC,EAAQ74B,GACrB,IACE,OAAO84B,EAAUz5B,EAAKw5B,GAAQtzB,MAAM,KAAMvF,IAE5C,MAAO+4B,GAQL,OANA/4B,EAAOA,EAAKjc,IAAI,SAASC,GACvB,OAAIC,EAAKoxB,WAAWrxB,GACXA,EAAEqQ,UAEJrQ,IAEF80C,EAAUz5B,EAAKw5B,GAAQtzB,MAAM,KAAMvF,KAI9C,IAAIg5B,EAAU50C,GACZ+hB,SAgEF,SAAyBvQ,GACvB,IAAIzS,EACA81C,EAAKrjC,EAAElS,EAAEkS,EAAEzS,EAQf,OANEA,EADE81C,EAAK,EACH,IAAItuB,EAAa,IAAK,cAAe,IAAIJ,GAAc0uB,KAGvD,IAAI1uB,EAAa0uB,GAGX,IAARrjC,EAAElT,EACGS,EAEF,IAAIwnB,EAAa,IAAK,UAAWxnB,EAAG,IAAIonB,EAAa3U,EAAElT,MA5E9D4C,OAAU,SAASnC,GACjB,OAAIA,EAAI,EACC+1C,EAAe,IAAI3uB,GAAcpnB,IAEnC,IAAIonB,EAAapnB,IAE1B+iB,UAAa,SAAS/iB,GACpB,OAAIA,EAAI,EACC+1C,EAAe,IAAI3uB,EAAapnB,EAAEg2C,UAAUpsC,WAAY,WAE1D,IAAIwd,EAAapnB,EAAE4J,WAAY,WAExCkZ,QAAW,SAASviB,GAClB,KAAM,2CAKV,SAAS01C,EAAej2C,GACtB,GAAIyG,SAASzG,GAAI,CACf,IAAIyS,EAAIyJ,EAAK7G,SAASrV,GACtB,GAAIyS,EAAEvB,YAAclR,EAClB,OAAOyS,EAGX,OAAOzS,EAKT,IAAI21C,EAAY10C,GACdI,OAAU,SAASd,GACjB,MAAsB,cAAlBQ,EAAOoB,OACF+Z,EAAKsrB,UAAUjnC,GAEG,aAAlBQ,EAAOoB,OACP+Z,EAAK7G,SAAS9U,GAGd01C,EAAettC,WAAWpI,KAIrCyiB,SAAY,SAASziB,GAAK,OAAOA,GAEjCwiB,UAAa,SAASxiB,GAAK,OAAOA,GAElC4B,OAAU,SAAS5B,GACjB,OAAO01C,EAAe11C,IAGxBuiB,QAAW,SAASviB,GAClB,OAAa,IAATA,EAAEyjB,GACGzjB,EAEF01C,EAAe11C,EAAEwjB,OAI5B,SAASgyB,EAAe/1C,GACtB,OAAO,IAAIwnB,EAAa,IAAK,cAAexnB,IA6B9C,SAASk2C,EAAOpkC,EAAI+K,EAAM6hB,GACxB,OAAO7hB,EAAKpY,OAAO,SAAS0B,EAAGC,GAC7B,GAAKtF,EAAKyb,OAAOpW,IAAOrF,EAAKyb,OAAOnW,GAQ1BtF,EAAKyb,OAAOpW,GAGZrF,EAAKyb,OAAOnW,KACpBA,EAAIyvC,EAAQzvC,IAHZD,EAAI0vC,EAAQ1vC,OAT0B,CACtC,IACE,OAAOsvC,EAAM3jC,GAAK3L,EAAEC,IAEtB,MAAO+vC,IACPhwC,EAAI0vC,EAAQ1vC,GACZC,EAAIyvC,EAAQzvC,GASd,OAAOs4B,GAAUv4B,EAAGC,MAKxB,SAASgwC,EAAal5B,GACpB,OAAOA,EAAKpc,MACV,IAAK,aACH,OAAOoc,EACT,IAAK,eACH,MAA0B,iBAAfA,EAAKzZ,MACPkyC,EAAUz4B,EAAKzZ,OAEjByZ,EACT,IAAK,eACH,GAAIhB,EAAKgB,EAAK1d,OAAS0c,EAAKgB,EAAK1d,MAAM45B,QACrC,OAAOlc,EAKT,IAA8C,KADpB,MAAO,YACXrU,QAAQqU,EAAK1d,MAAc,CAI/C,KAHIqd,EAAOK,EAAKL,KAAKjc,IAAIw1C,IAGfnQ,KAAKnlC,EAAKyb,QAClB,IACE,OAAOk5B,EAAMv4B,EAAK1d,KAAMqd,GAE1B,MAAOw5B,IAOT,OAHAx5B,EAAOA,EAAKjc,IAAI,SAASmhB,GACvB,OAAOjhB,EAAKyb,OAAOwF,GAAOA,EAAM8zB,EAAQ9zB,KAEnC,IAAI2F,EAAaxK,EAAK1d,KAAMqd,GAMvC,IAAK,eACH,IACIA,EACA3B,EAFApJ,EAAKoL,EAAKpL,GAAGlI,WAGb80B,EAAWhB,EAAuBxgB,GACtC,GAAIA,EAAKoa,UACPza,GAAQu5B,EAAal5B,EAAKL,KAAK,KAK7B3B,EAJGpa,EAAKyb,OAAOM,EAAK,IAId6hB,EAAS7hB,GAHT44B,EAAM3jC,EAAI+K,QAMf,GAAI0gB,EAAcrgB,GAIrB,GAFAL,GADAA,EAAO24B,EAAYt4B,IACPtc,IAAIw1C,GAEZ9Y,EAAcxrB,GAAK,CAIrB,IAFA,IAAIwkC,KAAaC,KAERr3C,EAAE,EAAGA,EAAI2d,EAAKpa,OAAQvD,IACxB4B,EAAKyb,OAAOM,EAAK3d,IAIpBq3C,EAAK/zC,KAAKqa,EAAK3d,IAHfo3C,EAAO9zC,KAAKqa,EAAK3d,IAOjBo3C,EAAO7zC,OAAS,GAClByY,EAAMg7B,EAAOpkC,EAAIwkC,EAAQ5X,GACzB6X,EAAK/wC,QAAQ0V,GACbA,EAAMg7B,EAAOpkC,EAAIykC,EAAM7X,IAIvBxjB,EAAMg7B,EAAOpkC,EAAI+K,EAAM6hB,QAKzBxjB,EAAMg7B,EAAOpkC,EAAI+K,EAAM6hB,QAMzBxjB,EAAMg7B,EAAOpkC,EADb+K,EAAOK,EAAKL,KAAKjc,IAAIw1C,GACE1X,GAEzB,OAAOxjB,EACT,IAAK,kBAEH,OAAOk7B,EAAal5B,EAAK+b,SAC3B,IAAK,eAEL,IAAK,YAEL,IAAK,iBAEL,IAAK,YAEL,IAAK,yBAEL,IAAK,YAEL,IAAK,aAEL,IAAK,YAEL,IAAK,aAEL,IAAK,kBAEL,QACE,KAAM,gDAAgD/b,EAAKpc,MAIjE,OA3PA,SAA0B2b,GACxB,IAAIvB,EAAMk7B,EAAa35B,GACvB,OAAO3b,EAAKyb,OAAOrB,GAAOA,EAAM26B,EAAQ36B,MAoQtC,SAAUzc,EAAQD,EAASQ,GAEjC,aA6JAR,EAAQD,QA1JR,SAAiBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC1C,IAAIwL,EAAexL,EAAKS,WAAWO,KAAKwK,aACpCF,EAAetL,EAAKS,WAAWO,KAAKsK,aACpCI,EAAa1L,EAAKS,WAAWO,KAAK0K,WAMlC2X,GACFhwB,KAAO,EACPL,UAAY,GAEVsnC,GACFjnC,KAAO,EACPL,UAAY,GAed,SAASquB,EAAcrgB,EAAMoV,GAC3B,IAAKxxB,EAAKqtB,eAAejR,GACvB,OAAO,EAET,IAAI1d,EAAO0d,EAAKpL,GAAGlI,WACnB,OAAI0oB,GAAWA,EAAQjyB,eAAeb,IAAS8yB,EAAQ9yB,GAAMa,eAAe,eACnEiyB,EAAQ9yB,GAAMg3C,YAEhBA,EAAYh3C,KAAS,EAqB9B,SAASg2C,EAAYt4B,GACnB,IAAIkR,EACAqoB,KACAC,EAAe,SAASx5B,GAC1B,IAAK,IAAIhe,EAAI,EAAGA,EAAIge,EAAKL,KAAKpa,OAAQvD,IAAK,CACzC,IAAI6D,EAAQma,EAAKL,KAAK3d,GAClB4B,EAAKqtB,eAAeprB,IAAUqrB,IAAOrrB,EAAMqrB,GAC7CsoB,EAAa3zC,GAGb0zC,EAASj0C,KAAKO,KAKpB,OAAIw6B,EAAcrgB,IAChBkR,EAAKlR,EAAKkR,GACVsoB,EAAax5B,GACNu5B,GAGAv5B,EAAKL,KA8ChB,SAAS6gB,EAAuBxgB,GAC9B,OAAIpc,EAAKqtB,eAAejR,GACf,SAASL,GACd,IACE,OAAO,IAAI2K,EAAatK,EAAKkR,GAAIlR,EAAKpL,GAAI+K,GAC1C,MAAMuI,GAEN,OADAvd,QAAQynB,MAAMlK,QAMX,SAASvI,GACd,OAAO,IAAI6K,EAAa,IAAIE,EAAW1K,EAAK1d,MAAOqd,IAIzD,OACE6gB,uBAAwBA,EACxBJ,cA9HF,SAAuBpgB,EAAMoV,GAC3B,IAAKxxB,EAAKqtB,eAAejR,GACvB,OAAO,EAET,IAAI1d,EAAO0d,EAAKpL,GAAGlI,WACnB,OAAI0oB,GAAWA,EAAQjyB,eAAeb,IAAS8yB,EAAQ9yB,GAAMa,eAAe,eACnEiyB,EAAQ9yB,GAAM+/B,YAEhBA,EAAY//B,KAAS,GAuH5B+9B,cAAeA,EACfj5B,QAtGF,SAASA,EAAQ4Y,GACf,IAAKA,EAAKL,MAA6B,IAArBK,EAAKL,KAAKpa,OAC1B,OAAOya,EAETA,EAAKL,KAAO24B,EAAYt4B,GACxB,IAAK,IAAIhe,EAAE,EAAGA,EAAEge,EAAKL,KAAKpa,OAAQvD,IAChCoF,EAAQ4Y,EAAKL,KAAK3d,KAiGpBs2C,YAAaA,EACbhY,WA9DF,SAASA,EAAWtgB,GAClB,GAAKA,EAAKL,MAA6B,IAArBK,EAAKL,KAAKpa,OAA5B,CAKA,IAFA,IAAIi8B,EAAWhB,EAAuBxgB,GAClC/d,EAAI+d,EAAKL,KAAKpa,OACTvD,EAAI,EAAGA,EAAIC,EAAGD,IACrBs+B,EAAWtgB,EAAKL,KAAK3d,IAEvB,GAAIC,EAAI,GAAKo+B,EAAcrgB,GAAO,CAEhC,IADA,IAAIy5B,EAAUz5B,EAAKL,KAAK5S,MACjBiT,EAAKL,KAAKpa,OAAS,GACxBk0C,EAAUjY,GAAUxhB,EAAKL,KAAK5S,MAAO0sC,IAEvCz5B,EAAKL,KAAO85B,EAAQ95B,QAiDtB4gB,WA1CF,SAASA,EAAWvgB,GAClB,GAAKA,EAAKL,MAA6B,IAArBK,EAAKL,KAAKpa,OAA5B,CAKA,IAFA,IAAIi8B,EAAWhB,EAAuBxgB,GAClC/d,EAAI+d,EAAKL,KAAKpa,OACTvD,EAAI,EAAGA,EAAIC,EAAGD,IACrBu+B,EAAWvgB,EAAKL,KAAK3d,IAEvB,GAAIC,EAAI,GAAKo+B,EAAcrgB,GAAO,CAEhC,IADA,IAAIy5B,EAAUz5B,EAAKL,KAAK/X,QACjBoY,EAAKL,KAAKpa,OAAS,GACxBk0C,EAAUjY,GAAUiY,EAASz5B,EAAKL,KAAK/X,UAEzCoY,EAAKL,KAAO85B,EAAQ95B,UAiC1Bre,EAAQ0d,MAAO,GAIT,SAAUzd,EAAQD,EAASQ,GAEjC,aAoLAR,EAAQ0d,MAAO,EACf1d,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,mBACf3T,EAAQD,QApLR,SAAiBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC1C,IAAIrM,EAAQ7O,EAAKhC,EAAoB,KACjCumB,EAASvkB,EAAKhC,EAAoB,KAElCuQ,GADYvO,EAAKhC,EAAoB,KAC/BgC,EAAKhC,EAAoB,MAC/BwQ,EAAWxO,EAAKhC,EAAoB,KACpCkQ,EAAWlO,EAAKhC,EAAoB,KACpCmQ,EAASnO,EAAKhC,EAAoB,KAClC4P,EAAM5N,EAAKhC,EAAoB,KAE/BooB,EAAelL,EAAKS,WAAWO,KAAKkK,aACpCI,EAAetL,EAAKS,WAAWO,KAAKsK,aACpCE,EAAexL,EAAKS,WAAWO,KAAKwK,aACpCD,EAAkBvL,EAAKS,WAAWO,KAAKuK,gBAEvCmvB,EAAQ,IAAIxvB,EAAa,GACzByvB,EAAQ,IAAIzvB,EAAa,GA8J7B,OArIA,SAASgW,EAAalgB,GACpB,GAAIpc,EAAKqtB,eAAejR,IAASA,EAAKoa,UAAW,CAC/C,IAAIwf,EAAK1Z,EAAalgB,EAAKL,KAAK,IAEhC,GAAgB,MAAZK,EAAKkR,GACP,OAAO0oB,EAGT,GAAgB,MAAZ55B,EAAKkR,GAAY,CACnB,GAAIttB,EAAKqtB,eAAe2oB,GAAK,CAC3B,GAAIA,EAAGxf,WAAuB,MAAVwf,EAAG1oB,GACrB,OAAO0oB,EAAGj6B,KAAK,GACV,GAAIi6B,EAAGvf,YAAwB,aAAVuf,EAAGhlC,GAC7B,OAAO,IAAI0V,EAAa,IAAK,YAAasvB,EAAGj6B,KAAK,GAAIi6B,EAAGj6B,KAAK,KAGlE,OAAO,IAAI2K,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKglC,UAG1C,GAAIh2C,EAAKqtB,eAAejR,IAASA,EAAKqa,WAAY,CACjDuf,EAAK1Z,EAAalgB,EAAKL,KAAK,IAAhC,IACIk6B,EAAK3Z,EAAalgB,EAAKL,KAAK,IAEhC,GAAgB,MAAZK,EAAKkR,GAAY,CACjB,GAAIttB,EAAKotB,eAAe4oB,GAAK,CACzB,GAAIvxB,EAAOuxB,EAAGrzC,OACV,OAAOszC,EACJ,GAAIj2C,EAAKotB,eAAe6oB,GAC7B,OAAO,IAAI3vB,EAAa7X,EAAIunC,EAAGrzC,MAAOszC,EAAGtzC,QAG/C,OAAI3C,EAAKotB,eAAe6oB,IAAOxxB,EAAOwxB,EAAGtzC,OAC9BqzC,EAEPh2C,EAAKqtB,eAAe4oB,IAAOA,EAAGzf,WAAuB,MAAVyf,EAAG3oB,GACvC,IAAI5G,EAAa,IAAK,YAAasvB,EAAGC,EAAGl6B,KAAK,KAElD,IAAI2K,EAAatK,EAAKkR,GAAIlR,EAAKpL,GAAIilC,GAAMD,EAAGC,IAAOD,IACvD,GAAgB,MAAZ55B,EAAKkR,GAAY,CACxB,GAAIttB,EAAKotB,eAAe4oB,IAAOC,EAAI,CAC/B,GAAIj2C,EAAKotB,eAAe6oB,GACpB,OAAO,IAAI3vB,EAAa5X,EAASsnC,EAAGrzC,MAAOszC,EAAGtzC,QAC3C,GAAI8hB,EAAOuxB,EAAGrzC,OACjB,OAAO,IAAI+jB,EAAa,IAAK,cAAeuvB,IAIpD,GAAgB,aAAZ75B,EAAKpL,GACL,OAAIhR,EAAKotB,eAAe6oB,IAAOxxB,EAAOwxB,EAAGtzC,OAC9BqzC,EAEPh2C,EAAKqtB,eAAe4oB,IAAOA,EAAGzf,WAAuB,MAAVyf,EAAG3oB,GACvCgP,EAAa,IAAI5V,EAAa,IAAK,OAAQsvB,EAAIC,EAAGl6B,KAAK,MAE3D,IAAI2K,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKglC,EAAGC,QAE/C,CAAA,GAAgB,MAAZ75B,EAAKkR,GAAY,CACxB,GAAIttB,EAAKotB,eAAe4oB,GAAK,CACzB,GAAIvxB,EAAOuxB,EAAGrzC,OACV,OAAOmzC,EACJ,GAAI/mC,EAAMinC,EAAGrzC,MAAO,GACvB,OAAOszC,EACJ,GAAIj2C,EAAKotB,eAAe6oB,GAC3B,OAAO,IAAI3vB,EAAalY,EAAS4nC,EAAGrzC,MAAOszC,EAAGtzC,QAGtD,GAAI3C,EAAKotB,eAAe6oB,GAAK,CACzB,GAAIxxB,EAAOwxB,EAAGtzC,OACV,OAAOmzC,EACJ,GAAI/mC,EAAMknC,EAAGtzC,MAAO,GACvB,OAAOqzC,EACJ,GAAIh2C,EAAKqtB,eAAe2oB,IAAOA,EAAGvf,YAAcuf,EAAG1oB,KAAOlR,EAAKkR,GAAI,CACtE,IAAI4oB,EAAMF,EAAGj6B,KAAK,GAClB,GAAI/b,EAAKotB,eAAe8oB,GAAM,CAC1B,IAAIC,EAAU,IAAI7vB,EAAalY,EAAS8nC,EAAIvzC,MAAOszC,EAAGtzC,QACtD,OAAO,IAAI+jB,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKmlC,EAAQH,EAAGj6B,KAAK,MAGnE,OAAO,IAAI2K,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKilC,EAAID,IAEnD,OAAO,IAAItvB,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKglC,EAAIC,IAC5C,GAAgB,MAAZ75B,EAAKkR,GAAY,CACxB,GAAIttB,EAAKotB,eAAe4oB,GAAK,CACzB,GAAIvxB,EAAOuxB,EAAGrzC,OACV,OAAOmzC,EACJ,GAAI91C,EAAKotB,eAAe6oB,KACtBlnC,EAAMknC,EAAGtzC,MAAO,IAAMoM,EAAMknC,EAAGtzC,MAAO,IAAMoM,EAAMknC,EAAGtzC,MAAO,IACjE,OAAO,IAAI2jB,EAAajY,EAAO2nC,EAAGrzC,MAAOszC,EAAGtzC,QAGpD,OAAO,IAAI+jB,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKglC,EAAIC,IAC5C,GAAgB,MAAZ75B,EAAKkR,GAAY,CACxB,GAAIttB,EAAKotB,eAAe6oB,GAAK,CACzB,GAAIxxB,EAAOwxB,EAAGtzC,OACV,OAAOozC,EACJ,GAAIhnC,EAAMknC,EAAGtzC,MAAO,GACvB,OAAOqzC,EAEP,GAAIh2C,EAAKotB,eAAe4oB,GAEpB,OAAO,IAAI1vB,EAAaxY,EAAIkoC,EAAGrzC,MAAOszC,EAAGtzC,QACtC,GAAI3C,EAAKqtB,eAAe2oB,IAAOA,EAAGvf,YAAwB,MAAVuf,EAAG1oB,GAAY,CAClE,IAAI8oB,EAAMJ,EAAGj6B,KAAK,GAClB,GAAI/b,EAAKotB,eAAegpB,GACpB,OAAO,IAAI1vB,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAClCglC,EAAGj6B,KAAK,GACR,IAAIuK,EAAalY,EAASgoC,EAAIzzC,MAAOszC,EAAGtzC,WAM5D,OAAO,IAAI+jB,EAAatK,EAAKkR,GAAIlR,EAAKpL,IAAKglC,EAAIC,UAE9C,CAAA,GAAIj2C,EAAKm2B,kBAAkB/Z,GAAO,CACrC,IAAI5d,EAAI89B,EAAalgB,EAAK+b,SAC1B,OAAIn4B,EAAKm2B,kBAAkB33B,IAAMwB,EAAKosB,aAAa5tB,IAAMwB,EAAKotB,eAAe5uB,GAClEA,EAEJ,IAAImoB,EAAgBnoB,GACxB,GAAIwB,EAAKssB,eAAelQ,GAAO,CAChC,IAAIL,EAAOK,EAAKL,KACXjc,IAAIw8B,GACJx8B,IAAI,SAAUmhB,GACb,OAAOjhB,EAAKm2B,kBAAkBlV,GAAOA,EAAIkX,QAAUlX,IAEzD,OAAO,IAAI2F,EAAa0V,EAAalgB,EAAKpL,IAAK+K,IAIrD,OAAOK,KAcL,SAAUze,EAAQD,EAASQ,GAEjC,aAGA,IAAIkB,EAAQlB,EAAoB,GA8BhCR,EAAQgB,KAAO,QACfhB,EAAQD,QA7BR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAmBpC,IAAIgQ,EAAQhQ,EAAM,SAChB8wB,IAAO7xB,EAAO+Q,QAKhB,OAFAA,EAAMlP,WAAQkC,EAEPgN,IASH,SAAUxS,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IAoKzCR,EAAQgB,KAAO,UACfhB,EAAQD,QAnKR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCiX,EAAQjX,EAAoB,GA6C5B8Q,EAAU7O,EAAM,WAElBwW,WAAY,SAAU5W,EAAGyJ,GAEvB,OAAU,OAANzJ,EAA2B,OAANyJ,EACf,OAANA,EAA2B,OAANzJ,OACfoD,IAANpD,OAAgCoD,IAANqG,OACpBrG,IAANqG,OAAgCrG,IAANpD,EAEvBs2C,EAASt2C,EAAGyJ,IAGrBwQ,6BAA8B,SAASja,EAAGyJ,GACxC,OAAOya,EAAYlkB,EAAGyJ,EAAG6sC,IAG3Bx8B,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGs2C,GAAU,IAGrCn9B,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAG6sC,GAAU,IAGrCp9B,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAG6sC,IAG3B5gC,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAOwF,EAAQ5O,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGvCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAOwF,EAAQ5O,EAAOL,GAAIyJ,IAG5B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAOwF,EAAQjP,EAAGK,EAAOoJ,KAG3B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAG6sC,GAAU,IAGrC//B,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG6sC,GAAU,IAGrC9/B,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGs2C,GAAU,IAGrC7/B,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGs2C,GAAU,IAGrC5/B,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG6sC,GAAU,GAAOjmC,WAGpDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGs2C,GAAU,GAAMjmC,aAIjDimC,EAAWl2C,EAAM,YAEnBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,IAAMyJ,GAGf+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAQD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,UAGnC+J,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAQ4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,UAGtCiK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAQzJ,EAAE4T,OAAOnK,IAGnBoK,mBAAoB,SAAU7T,EAAGyJ,GAC/B,OAAQzJ,EAAE4T,OAAOnK,IAGnBqK,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAOuM,EAAQjP,EAAE4C,MAAO6G,EAAE7G,UAQ9B,OAJAqM,EAAQ/N,OACNG,EAAG,oBAAsB+T,EAAMxH,UAAmB,QAAI,sBAGjDqB,IASH,SAAUrR,EAAQD,EAASQ,GAEjC,aAGA,IAAImD,EAASnD,EAAoB,GAC7BwB,EAAUxB,EAAoB,GA+DlCR,EAAQgB,KAAO,OACfhB,EAAQD,QA9DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA+BpC,IAAI0F,EAAO1F,EAAM,QACfkB,OAAUA,EAAOwE,KAEjBmc,QAAW,SAAUjiB,GACnB,OAAOA,EAAE8F,QAGXoc,UAAa,SAAUliB,GACrB,OAAO,IAAIC,EAAKiiB,UAAUliB,EAAE+xB,IAAI,KAGlC5P,SAAY,SAAUniB,GACpB,OAAO,IAAIC,EAAKkiB,SAASniB,EAAEN,EAAG,IAGhC0iB,iBAAkB,SAAUpiB,GAE1B,OAAOL,EAAQK,EAAG8F,GAAM,IAG1Buc,KAAQ,SAASriB,GACf,OAAO8F,EAAK9F,EAAE4C,UAMlB,OAFAkD,EAAK5E,OAASE,EAAG,8CAEV0E,IAUH,SAAUlI,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAmDlCR,EAAQgB,KAAO,OACfhB,EAAQD,QAlDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA0BpC,IAAIwrC,EAAOxrC,EAAM,QACfkB,OAAU,SAAUtB,GAClB,OAAOA,GAGTkiB,UAAa,SAAUliB,GACrB,OAAOA,GAGTiiB,QAAW,SAAUjiB,GACnB,OAAOA,EAAEu2C,aAGXn0B,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG4rC,MAMtB,OAFAA,EAAK1qC,OAASE,EAAG,+BAEVwqC,IASH,SAAUhuC,EAAQD,EAASQ,GAEjC,aAGA,IAEIkB,EAFOlB,EAAoB,IAEbkB,OA6XlB1B,EAAQgB,KAAO,MACfhB,EAAQD,QA5XR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCqK,EAAMrI,EAAKhC,EAAoB,KAC/BkX,EAAYlV,EAAKhC,EAAoB,KACrC+b,EAAe/Z,EAAKhC,EAAoB,KACxCmX,EAAiBnV,EAAKhC,EAAoB,KAC1CwQ,EAAWxO,EAAKhC,EAAoB,KACpCgR,EAAShP,EAAKhC,EAAoB,KAClCmV,EAAcnT,EAAKhC,EAAoB,IACvC+P,EAAa/N,EAAKhC,EAAoB,KAEtCsX,EAAexV,EAAKwV,aACpB/D,EAAczR,EAAKyR,YACnB8kC,EAAMv2C,EAAKu2C,IA4BXhM,EAAMpqC,EAAM,OAEdsR,YAAe,SAAUlT,GACvB,OAAOi4C,EAAUj4C,IAGnBiX,aAAgB,SAAUjX,GACxB,OAAOk4C,EAAWl4C,IAGpBoC,MAAS,SAAU0E,GAEjB,IAAI9G,EAAI6B,EAAOiF,GAEX6Y,EAAIs4B,EAAUj4C,GAElB,OACEm4C,EAAGx4B,EAAEw4B,EAAEtmC,UACPumC,EAAGz4B,EAAEy4B,EAAEvmC,UACP5Q,EAAG0e,EAAE1e,MAKPg3C,EAAY,SAAUj4C,GAExB,IAaIH,EAAG6T,EAAGgM,EAbNL,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElBpT,EAAI+D,KAAKC,IAAI0a,EAAMC,GAEnBjd,EAAOxB,EAAO+Q,MAAM5R,EAAE6T,OAEtBwkC,KACAC,GAASj5B,EAAM1e,GAEf43C,KACAC,GAAS73C,EAAG2e,GAIZre,KACJ,IAAKpB,EAAI,EAAGA,EAAIwf,EAAMxf,IACpBoB,EAAEpB,GAAKA,EAET,IAAK6T,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5B,GAAIA,EAAI,EAEN,IAAK7T,EAAI,EAAGA,EAAIwf,EAAMxf,IAAK,CAEzB,IAAI8E,EAAMD,KAAKC,IAAI9E,EAAG6T,GAElBxS,EAAI,EAER,IAAKwe,EAAI,EAAGA,EAAI/a,EAAK+a,IAEnBxe,EAAI2V,EAAU3V,EAAG4V,EAAezU,EAAKxC,GAAG6f,GAAIrd,EAAKqd,GAAGhM,KAEtDrR,EAAKxC,GAAG6T,GAAKvD,EAAS9N,EAAKxC,GAAG6T,GAAIxS,GAItC,IAAIsM,EAAKkG,EACL+kC,EAAQ,EACRC,EAAM,EAEV,IAAK74C,EAAI6T,EAAG7T,EAAIwf,EAAMxf,IAAK,CAEzB,IAAIogB,EAAI5d,EAAKxC,GAAG6T,GAEZilC,EAAO3uC,EAAIiW,GAEXtP,EAAOgoC,EAAMF,KAEfjrC,EAAK3N,EAEL44C,EAAQE,EAERD,EAAMz4B,GAWV,GAPIvM,IAAMlG,IAERvM,EAAEyS,IAAMzS,EAAEuM,GAAKvM,EAAEuM,GAAMvM,EAAEyS,IAAI,GAE7BR,EAAYmf,UAAU3e,EAAGlG,EAAInL,IAG3BqR,EAAI2L,EAEN,IAAKxf,EAAI6T,EAAI,EAAG7T,EAAIwf,EAAMxf,IAAK,CAE7B,IAAI+4C,EAAMv2C,EAAKxC,GAAG6T,GACboB,EAAY8jC,EAAK,KAEpBv2C,EAAKxC,GAAG6T,GAAKgI,EAAarZ,EAAKxC,GAAG6T,GAAIglC,KAM9C,IAAKhlC,EAAI,EAAGA,EAAI4L,EAAS5L,IAEvB,IAAK7T,EAAI,EAAGA,EAAIwf,EAAMxf,IAEV,IAAN6T,IAEE7T,EAAIyf,IAENi5B,EAAM14C,OAGRw4C,EAAMx4C,OAGJA,EAAI6T,GAEF7T,EAAIyf,IAENi5B,EAAM14C,GAAG6T,GAAKrR,EAAKxC,GAAG6T,IAGpBA,EAAI2L,IAENg5B,EAAMx4C,GAAG6T,GAAK,IAKd7T,IAAM6T,GAcN7T,EAAIyf,IAENi5B,EAAM14C,GAAG6T,GAAK,GAGZA,EAAI2L,IAENg5B,EAAMx4C,GAAG6T,GAAKrR,EAAKxC,GAAG6T,MAnBlB7T,EAAIyf,IAENi5B,EAAM14C,GAAG6T,GAAKrR,EAAKxC,GAAG6T,IAGpBA,EAAI2L,IAENg5B,EAAMx4C,GAAG6T,GAAK,IAiBtB,IAAI5T,EAAK,IAAIoT,GACX7Q,KAAMg2C,EACNp1C,KAAMq1C,IAGJ1c,EAAK,IAAI1oB,GACX7Q,KAAMk2C,EACNt1C,KAAMu1C,IAGJK,KACJ,IAAKh5C,EAAI,EAAGc,EAAIM,EAAEmC,OAAQvD,EAAIc,EAAGd,IAC/Bg5C,EAAG53C,EAAEpB,IAAMA,EAEb,OACEs4C,EAAGr4C,EACHs4C,EAAGxc,EACH36B,EAAG43C,EACHtuC,SAAU,WACR,MAAO,MAAQ/K,KAAK24C,EAAE5tC,WAAa,QAAU/K,KAAK44C,EAAE7tC,WAAa,QAAU/K,KAAKyB,KAKlFi3C,EAAa,SAAUl4C,GAEzB,IAmBIH,EAAG6T,EAAGgM,EASkBle,EAAGyJ,EAEzB6tC,EACAC,EA/BF15B,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElBpT,EAAI+D,KAAKC,IAAI0a,EAAMC,GAEnB9E,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KAERu/B,KACAC,KACAC,KACAZ,GAASj5B,EAAM1e,GAEfw4C,KACAC,KACAC,KACAb,GAAS73C,EAAG2e,GAIZg6B,KACAC,KACJ,IAAK15C,EAAI,EAAGA,EAAIwf,EAAMxf,IACpBy5C,EAAMz5C,GAAKA,EACX05C,EAAM15C,GAAKA,EAeb,IAAK6T,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5B,IAAI8lC,EAAM,IAAIxB,EAEVtkC,EAAI2L,IAEN65B,EAAK/1C,KAAK61C,EAAQ51C,QAElB41C,EAAQ71C,KAAK,GACb81C,EAAO91C,KAAKuQ,IAGd2lC,EAAKl2C,KAAKg2C,EAAQ/1C,QAElB,IAAIoc,EAAK/E,EAAI/G,GACT+L,EAAKhF,EAAI/G,EAAI,GAEjB,IAAKgM,EAAIF,EAAIE,EAAID,EAAIC,IAEnB7f,EAAI+D,EAAM8b,GAEV85B,EAAI5mC,IAAI0mC,EAAMz5C,GAAI2a,EAAOkF,IAGvBhM,EAAI,GAEN8lC,EAAIr1C,QAAQ,EAAGuP,EAAI,EAAG,SAAUgM,EAAG+5B,GAEjCxiC,EAAayiC,YAAYh6B,EAAGs5B,EAASC,EAAQC,EAAM,SAAUr5C,EAAG85C,GAE1D95C,EAAI6f,GAEN85B,EAAII,WAAW/5C,EAAG6P,EAAWoH,EAAe6iC,EAAKF,SAMzD,IAAIjsC,EAAKkG,EACLglC,EAAMc,EAAI94C,IAAIgT,GACd+kC,EAAQzuC,EAAI0uC,GAEhBc,EAAIr1C,QAAQuP,EAAI,EAAG2L,EAAO,EAAG,SAAU7d,EAAGye,GAExC,IAAI04B,EAAO3uC,EAAIiW,GAEXtP,EAAOgoC,EAAMF,KAEfjrC,EAAKhM,EAELi3C,EAAQE,EAERD,EAAMz4B,KAINvM,IAAMlG,IAERyJ,EAAaob,UAAU3e,EAAGlG,EAAI8qC,EAAM,GAAIU,EAASC,EAAQC,GAEzDjiC,EAAaob,UAAU3e,EAAGlG,EAAIgrC,EAAM,GAAIW,EAASC,EAAQC,GAEzDG,EAAIK,KAAKnmC,EAAGlG,GA1EevC,EA4EZuC,EA1EbsrC,EAAKS,EAFiB/3C,EA4EZkS,GAzEVqlC,EAAKQ,EAAMtuC,GAEfquC,EAAMR,GAAM7tC,EACZquC,EAAMP,GAAMv3C,EAEZ+3C,EAAM/3C,GAAKu3C,EACXQ,EAAMtuC,GAAK6tC,GAsEXU,EAAIr1C,QAAQ,EAAGkb,EAAO,EAAG,SAAU7d,EAAGye,GAEhCze,GAAKkS,GAEPylC,EAAQh2C,KAAK8c,GACbm5B,EAAOj2C,KAAK3B,KAIZye,EAAIvE,EAAauE,EAAGy4B,GAEf5jC,EAAYmL,EAAG,KAElB+4B,EAAQ71C,KAAK8c,GACbg5B,EAAO91C,KAAK3B,OAUpB,OAJA63C,EAAKl2C,KAAKg2C,EAAQ/1C,QAClB81C,EAAK/1C,KAAK61C,EAAQ51C,SAIhB+0C,EAAG,IAAIlhC,GACLuD,OAAQw+B,EACRp1C,MAAOq1C,EACPx+B,IAAKy+B,EACLj2C,KAAMq1C,IAERF,EAAG,IAAInhC,GACLuD,OAAQ2+B,EACRv1C,MAAOw1C,EACP3+B,IAAK4+B,EACLp2C,KAAMu1C,IAERv3C,EAAGq4C,EACH/uC,SAAU,WACR,MAAO,MAAQ/K,KAAK24C,EAAE5tC,WAAa,QAAU/K,KAAK44C,EAAE7tC,WAAa,QAAU/K,KAAKyB,KAKtF,OAAO+qC,IASH,SAAU5sC,EAAQD,EAASQ,GAEjC,aAGA,IAIImE,EAJOnE,EAAoB,IAEbmD,OAEKgB,UAgEvB3E,EAAQgB,KAAO,MACfhB,EAAQD,QA/DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIk4C,EAASn4C,EAAKhC,EAAoB,MAClCo6C,EAAQp4C,EAAKhC,EAAoB,MAwDrC,OA7BUiC,EAAM,OAEdo4C,+BAAgC,SAAUlzC,EAAGmzC,EAAOC,GAElD,IAAKp2C,EAAUm2C,IAAUA,EAAQ,GAAKA,EAAQ,EAC5C,MAAM,IAAI/1C,MAAM,yFAElB,GAAIg2C,EAAY,GAAKA,EAAY,EAC/B,MAAM,IAAIh2C,MAAM,2DAGlB,IAAIhD,EAAI44C,EAAOG,EAAOnzC,GAAG,GAGrBsM,EAAI2mC,EAAMjzC,EAAG5F,EAAGg5C,GAGpB,OACE/B,EAAG/kC,EAAE+kC,EACLC,EAAGhlC,EAAEglC,EACLn3C,EAAGmS,EAAE+mC,KACLze,EAAGx6B,EAAEw6B,EACLnxB,SAAU,WACR,MAAO,MAAQ/K,KAAK24C,EAAE5tC,WAAa,QAAU/K,KAAK44C,EAAE7tC,WAAa,QAAU/K,KAAKyB,EAAEsJ,YAAc/K,KAAKk8B,EAAI,QAAUl8B,KAAKk8B,EAAEnxB,WAAa,IAAM,YAejJ,SAAUnL,EAAQD,EAASQ,GAEjC,aAkDAR,EAAQgB,KAAO,UACfhB,EAAQ2T,KAAO,SACf3T,EAAQD,QAjDR,WA4CE,OA7Bc,SAAUwU,EAAGgM,EAAG3F,EAAGqgC,EAAMp0C,EAAMq0C,EAAM3jC,GAEjD,IAAI4jC,EAAM,EAIV,IAFAvgC,EAAErD,GAAShD,EAEJ4mC,GAAO,GAAG,CAEf,IAAIr5C,EAAI8Y,EAAErD,EAAQ4jC,GAEdz6C,EAAIka,EAAEqgC,EAAOn5C,IACP,GAANpB,GAEFy6C,IAEAD,EAAK36B,KAAOze,IAIZ8Y,EAAEqgC,EAAOn5C,GAAK8Y,EAAE/T,EAAOnG,GAIvBka,EAAErD,KAFA4jC,GAEez6C,GAGrB,OAAO6f,KAaL,SAAUtgB,EAAQD,EAASQ,GAEjC,aAGA,IAAIqL,EAAcrL,EAAoB,GAAGqL,YACrC6J,EAAiBlV,EAAoB,IAuIzCR,EAAQgB,KAAO,WACfhB,EAAQD,QAtIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAElCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IAEvCiX,EAAQjX,EAAoB,GA6B5BkR,EAAWjP,EAAM,YAEnBmT,mBAAoB,SAAUvT,EAAGyJ,GAC/B,OAAOzJ,GAAKyJ,GAGd+J,iBAAkB,SAAUxT,EAAGyJ,GAC7B,OAAOzJ,GAAKyJ,GAAKD,EAAYxJ,EAAGyJ,EAAGvJ,EAAOwJ,UAG5C+J,uBAAwB,SAAUzT,EAAGyJ,GACnC,OAAOzJ,EAAEs6B,IAAI7wB,IAAM4J,EAAerT,EAAGyJ,EAAGvJ,EAAOwJ,UAGjDiK,qBAAsB,SAAU3T,EAAGyJ,GACjC,OAAyB,IAAlBzJ,EAAEyiB,QAAQhZ,IAGnBoK,mBAAoB,WAClB,MAAM,IAAItR,UAAU,wDAGtBuR,aAAc,SAAU9T,EAAGyJ,GACzB,IAAKzJ,EAAE+T,UAAUtK,GACf,MAAM,IAAI/G,MAAM,4CAElB,OAAO2M,EAASrP,EAAE4C,MAAO6G,EAAE7G,QAG7BqX,6BAA8B,SAASja,EAAGyJ,GACxC,OAAOya,EAAYlkB,EAAGyJ,EAAG4F,IAG3ByK,4BAA6B,SAAS9Z,EAAGyJ,GACvC,OAAO4U,EAAY5U,EAAGzJ,EAAGqP,GAAU,IAGrC8J,4BAA6B,SAASnZ,EAAGyJ,GACvC,OAAO4U,EAAYre,EAAGyJ,EAAG4F,GAAU,IAGrC6J,2BAA4B,SAASlZ,EAAGyJ,GACtC,OAAO+T,EAAYxd,EAAGyJ,EAAG4F,IAG3BqG,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAO4F,EAAShP,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGxCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAO4F,EAAShP,EAAOL,GAAIyJ,IAG7B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAO4F,EAASrP,EAAGK,EAAOoJ,KAG5B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO0a,EAAYnkB,EAAGyJ,EAAG4F,GAAU,IAGrCkH,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAG4F,GAAU,IAGrCmH,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGqP,GAAU,IAGrCoH,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGqP,GAAU,IAGrCqH,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAG4F,GAAU,GAAOgB,WAGpDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGqP,GAAU,GAAMgB,aAQrD,OAJAhB,EAASnO,OACPG,EAAG,oBAAsB+T,EAAMxH,UAAoB,SAAI,sBAGlDyB,IASH,SAAUzR,EAAQD,EAASQ,GAEjC,aAqBAR,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,SACf3T,EAAQD,QApBR,WAeE,OALgB,SAAU6a,EAAGrG,GAE3B,OAAOqG,EAAErG,GAAK,KAaZ,SAAUtU,EAAQD,EAASQ,GAEjC,aAuBAR,EAAQgB,KAAO,UACfhB,EAAQ2T,KAAO,SACf3T,EAAQD,QAtBR,SAAkBuC,EAAMC,EAAQC,GAE9B,IAAI44C,EAAU54C,EAAKhC,EAAoB,KAevC,OALc,SAAUoa,EAAGrG,GAEzBqG,EAAErG,GAAK6mC,EAAQxgC,EAAGrG,OAahB,SAAUtU,EAAQD,EAASQ,GAEjC,aA0LAR,EAAQgB,KAAO,SACfhB,EAAQD,QAxLR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClC+b,EAAe/Z,EAAKhC,EAAoB,KACxCmX,EAAiBnV,EAAKhC,EAAoB,KAC1CwQ,EAAWxO,EAAKhC,EAAoB,KACpCmV,EAAcnT,EAAKhC,EAAoB,IAEvC66C,EAAkB74C,EAAKhC,EAAoB,KAE3CuT,EAAczR,EAAKyR,YA0BnB64B,EAASnqC,EAAM,UAEjB64C,+BAAgC,SAAUz6C,EAAG+G,GAE3C,OAAO2zC,EAA2B16C,EAAG+G,IAGvC4zC,8BAA+B,SAAU36C,EAAG+G,GAE1C,OAAO6zC,EAA0B56C,EAAG+G,IAGtC8zC,wBAAyB,SAAU/zC,EAAGC,GAEpC,IAAI/G,EAAI6B,EAAOiF,GAIf,OAFQ8zC,EAA0B56C,EAAG+G,GAE5B8K,aAIT+oC,EAA4B,SAAU56C,EAAG+G,GAa3C,IATA,IAAIyN,GAFJzN,EAAIyzC,EAAgBx6C,EAAG+G,GAAG,IAEZ8M,MAEVwL,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElBvS,KAEAa,EAAOrC,EAAE6T,MAEJH,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhC,IAEIonC,EAFAC,EAAKvmC,EAAMd,GAAG,IAAM,EAIxB,GAAKoB,EAAYimC,EAAI,GAkBnBD,EAAK,MAlBkB,CAEvB,IAAIpC,EAAMr2C,EAAKqR,GAAGA,GAElB,GAAIoB,EAAY4jC,EAAK,GAEnB,MAAM,IAAIx0C,MAAM,2DAGlB42C,EAAKp/B,EAAaq/B,EAAIrC,GAEtB,IAAK,IAAI74C,EAAI6T,EAAI,EAAG7T,EAAIwf,EAAMxf,IAE5B2U,EAAM3U,IAAMsQ,EAASqE,EAAM3U,GAAG,IAAM,EAAGiX,EAAegkC,EAAIz4C,EAAKxC,GAAG6T,MAQtElS,EAAEkS,IAAMonC,GAGV,OAAO,IAAI5nC,GACT7Q,KAAMb,EACNyB,MAAOoc,EAAM,MAIbq7B,EAA6B,SAAU16C,EAAG+G,GAiB5C,IAbA,IASIlH,EAAG6f,EATHlL,GAFJzN,EAAIyzC,EAAgBx6C,EAAG+G,GAAG,IAEZ8M,MAEVwL,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElByG,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KAIRjY,KAEKkS,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhC,IAAIqnC,EAAKvmC,EAAMd,GAAG,IAAM,EAExB,GAAKoB,EAAYimC,EAAI,GA0CnBv5C,EAAEkS,IAAM,OA1Ce,CAEvB,IAAIglC,EAAM,EAENsC,KACAC,KAEAn7C,EAAI2a,EAAI/G,EAAI,GAEhB,IAAKgM,EAAIjF,EAAI/G,GAAIgM,EAAI5f,EAAG4f,KAEtB7f,EAAI+D,EAAM8b,MAEAhM,EAERglC,EAAMl+B,EAAOkF,GAEN7f,EAAI6T,IAEXsnC,EAAQ73C,KAAKqX,EAAOkF,IACpBu7B,EAAO93C,KAAKtD,IAIhB,GAAIiV,EAAY4jC,EAAK,GAEnB,MAAM,IAAIx0C,MAAM,2DAGlB,IAAI42C,EAAKp/B,EAAaq/B,EAAIrC,GAE1B,IAAKh5B,EAAI,EAAG5f,EAAIm7C,EAAO73C,OAAQsc,EAAI5f,EAAG4f,IAIpClL,EAFA3U,EAAIo7C,EAAOv7B,KAECvP,EAASqE,EAAM3U,GAAG,IAAM,EAAGiX,EAAegkC,EAAIE,EAAQt7B,MAGpEle,EAAEkS,IAAMonC,IAQZ,OAAO,IAAI5nC,GACT7Q,KAAMb,EACNyB,MAAOoc,EAAM,MAIjB,OAAO0sB,IASH,SAAU3sC,EAAQD,EAASQ,GAEjC,aA2LAR,EAAQgB,KAAO,SACfhB,EAAQD,QAzLR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClC+b,EAAe/Z,EAAKhC,EAAoB,KACxCmX,EAAiBnV,EAAKhC,EAAoB,KAC1CwQ,EAAWxO,EAAKhC,EAAoB,KACpCmV,EAAcnT,EAAKhC,EAAoB,IAEvC66C,EAAkB74C,EAAKhC,EAAoB,KAE3CuT,EAAczR,EAAKyR,YA0BnBk5B,EAASxqC,EAAM,UAEjB64C,+BAAgC,SAAUz6C,EAAG+G,GAE3C,OAAOm0C,EAA4Bl7C,EAAG+G,IAGxC4zC,8BAA+B,SAAU36C,EAAG+G,GAE1C,OAAOo0C,EAA2Bn7C,EAAG+G,IAGvC8zC,wBAAyB,SAAU/zC,EAAGC,GAEpC,IAAI/G,EAAI6B,EAAOiF,GAIf,OAFQq0C,EAA2Bn7C,EAAG+G,GAE7B8K,aAITspC,EAA6B,SAAUn7C,EAAG+G,GAa5C,IATA,IAAIyN,GAFJzN,EAAIyzC,EAAgBx6C,EAAG+G,GAAG,IAEZ8M,MAEVwL,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElBvS,KAEAa,EAAOrC,EAAE6T,MAEJH,EAAI4L,EAAU,EAAG5L,GAAK,EAAIA,IAAK,CAEtC,IAEIonC,EAFAC,EAAKvmC,EAAMd,GAAG,IAAM,EAIxB,GAAKoB,EAAYimC,EAAI,GAkBnBD,EAAK,MAlBkB,CAEvB,IAAIpC,EAAMr2C,EAAKqR,GAAGA,GAElB,GAAIoB,EAAY4jC,EAAK,GAEnB,MAAM,IAAIx0C,MAAM,2DAGlB42C,EAAKp/B,EAAaq/B,EAAIrC,GAEtB,IAAK,IAAI74C,EAAI6T,EAAI,EAAG7T,GAAK,EAAGA,IAE1B2U,EAAM3U,IAAMsQ,EAASqE,EAAM3U,GAAG,IAAM,EAAGiX,EAAegkC,EAAIz4C,EAAKxC,GAAG6T,MAQtElS,EAAEkS,IAAMonC,GAGV,OAAO,IAAI5nC,GACT7Q,KAAMb,EACNyB,MAAOoc,EAAM,MAIb67B,EAA8B,SAAUl7C,EAAG+G,GAiB7C,IAbA,IASIlH,EAAG6f,EATHlL,GAFJzN,EAAIyzC,EAAgBx6C,EAAG+G,GAAG,IAEZ8M,MAEVwL,EAAOrf,EAAE+T,MAAM,GACfuL,EAAUtf,EAAE+T,MAAM,GAElByG,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KAIRjY,KAEKkS,EAAI4L,EAAU,EAAG5L,GAAK,EAAIA,IAAK,CAEtC,IAAIqnC,EAAKvmC,EAAMd,GAAG,IAAM,EAExB,GAAKoB,EAAYimC,EAAI,GA2CnBv5C,EAAEkS,IAAM,OA3Ce,CAEvB,IAAIglC,EAAM,EAENsC,KACAC,KAEA7nC,EAAIqH,EAAI/G,GACR5T,EAAI2a,EAAI/G,EAAI,GAEhB,IAAKgM,EAAI5f,EAAI,EAAG4f,GAAKtM,EAAGsM,KAEtB7f,EAAI+D,EAAM8b,MAEAhM,EAERglC,EAAMl+B,EAAOkF,GAEN7f,EAAI6T,IAEXsnC,EAAQ73C,KAAKqX,EAAOkF,IACpBu7B,EAAO93C,KAAKtD,IAIhB,GAAIiV,EAAY4jC,EAAK,GAEnB,MAAM,IAAIx0C,MAAM,2DAGlB,IAAI42C,EAAKp/B,EAAaq/B,EAAIrC,GAE1B,IAAKh5B,EAAI,EAAG5f,EAAIm7C,EAAO73C,OAAQsc,EAAI5f,EAAG4f,IAIpClL,EAFA3U,EAAIo7C,EAAOv7B,KAECvP,EAASqE,EAAM3U,GAAG,GAAIiX,EAAegkC,EAAIE,EAAQt7B,MAG/Dle,EAAEkS,IAAMonC,IAQZ,OAAO,IAAI5nC,GACT7Q,KAAMb,EACNyB,MAAOoc,EAAM,MAIjB,OAAO+sB,IASH,SAAUhtC,EAAQD,EAASQ,GAEjC,aAgHAR,EAAQgB,KAAO,YACfhB,EAAQD,QA9GR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClC+b,EAAe/Z,EAAKhC,EAAoB,KACxCiX,EAAQjX,EAAoB,GAE5By7C,EAAcz5C,EAAKhC,EAAoB,KACvCkgB,EAAcle,EAAKhC,EAAoB,KACvC+lB,EAAc/jB,EAAKhC,EAAoB,KACvCoX,EAAcpV,EAAKhC,EAAoB,KACvCgmB,EAAchkB,EAAKhC,EAAoB,KACvCqf,EAAcrd,EAAKhC,EAAoB,IACvCqX,EAAcrV,EAAKhC,EAAoB,IA4BvCqQ,EAAYpO,EAAM,aAEpBwW,WAAYsD,EAEZD,6BAA8B,SAAUja,EAAGyJ,GACzC,OAAOya,EAAYlkB,EAAGyJ,EAAGyQ,GAAc,IAGzCJ,4BAA6B,SAAU9Z,EAAGyJ,GACxC,OAAOmwC,EAAYnwC,EAAGzJ,EAAGka,GAAc,IAGzCf,4BAA6B,SAAUnZ,EAAGyJ,GACxC,OAAO4U,EAAYre,EAAGyJ,EAAGyQ,GAAc,IAGzChB,2BAA4B,SAAUlZ,EAAGyJ,GACvC,OAAO+T,EAAYxd,EAAGyJ,EAAGyQ,IAG3BxE,eAAgB,SAAU1V,EAAGyJ,GAE3B,OAAO+E,EAAUnO,EAAOL,GAAIK,EAAOoJ,IAAI4G,WAGzCgG,gBAAiB,SAAUrW,EAAGyJ,GAE5B,OAAO+E,EAAUnO,EAAOL,GAAIyJ,IAG9B2M,gBAAiB,SAAUpW,EAAGyJ,GAE5B,OAAO+E,EAAUxO,EAAGK,EAAOoJ,KAG7B6M,oBAAqB,SAAUtW,EAAGyJ,GAChC,OAAO8L,EAAYvV,EAAGyJ,EAAGyQ,GAAc,IAGzC3D,mBAAoB,SAAUvW,EAAGyJ,GAC/B,OAAO+L,EAAYxV,EAAGyJ,EAAGyQ,GAAc,IAGzC1D,oBAAqB,SAAUxW,EAAGyJ,GAChC,OAAO0a,EAAY1a,EAAGzJ,EAAGka,GAAc,IAGzCzD,mBAAoB,SAAUzW,EAAGyJ,GAC/B,OAAO+L,EAAY/L,EAAGzJ,EAAGka,GAAc,IAGzCxD,aAAc,SAAU1W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOL,GAAIyJ,EAAGyQ,GAAc,GAAO7J,WAGxDsG,aAAc,SAAU3W,EAAGyJ,GAEzB,OAAO+L,EAAYnV,EAAOoJ,GAAIzJ,EAAGka,GAAc,GAAM7J,aAQzD,OAJA7B,EAAUtN,OACRG,EAAG,oBAAsB+T,EAAMxH,UAAqB,UAAI,sBAGnDY,IASH,SAAU5Q,EAAQD,EAASQ,GAEjC,aAGA,IAAIoD,EAAiBpD,EAAoB,IAiJzCR,EAAQgB,KAAO,cACfhB,EAAQD,QAhJR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIkT,EAAcnT,EAAKhC,EAAoB,IAEvCsX,EAAexV,EAAKwV,aAwIxB,OApHkB,SAAUnQ,EAAGC,EAAG1F,GAEhC,IAAI+X,EAAUtS,EAAEuS,QACZC,EAASxS,EAAEyS,OACXC,EAAO1S,EAAE2S,KACT3F,EAAQhN,EAAEiN,MACVC,EAAMlN,EAAEmN,UAER2G,EAAU7T,EAAEsS,QACZwB,EAAS9T,EAAEwS,OACXuB,EAAO/T,EAAE0S,KACThF,EAAQ1N,EAAEgN,MACVW,EAAM3N,EAAEkN,UAGZ,GAAIH,EAAM1Q,SAAWqR,EAAMrR,OACzB,MAAM,IAAIL,EAAe+Q,EAAM1Q,OAAQqR,EAAMrR,QAG/C,GAAI0Q,EAAM,KAAOW,EAAM,IAAMX,EAAM,KAAOW,EAAM,GAC9C,MAAM,IAAIG,WAAW,iCAAmCd,EAAQ,0BAA4BW,EAAQ,KAGtG,IAIId,EAJA0L,EAAOvL,EAAM,GACbwL,EAAUxL,EAAM,GAKhBoB,EAAKJ,EAELgF,EAAO,EAEP5F,EAAK7S,EAGU,iBAAR2S,GAAoBA,IAAQU,IAErCf,EAAKK,EAELkB,EAAKtT,EAAMwS,KAAKU,GAAcnB,EAAIA,IAElCmG,EAAOlY,EAAMuS,QAAQ,EAAGR,GAExBO,EAAKtS,EAAMwS,KAAK/S,GAAWsS,EAAIA,KAIjC,IAkBI9T,EAAG6T,EAAGgM,EAAGF,EAAIC,EAlBb9F,EAAUP,GAAWwB,UAAehW,EACpCgV,KACAC,KAEA5Z,EAAI,IAAIgX,GACVuD,OAAQb,EACR/V,MAAOgW,EACPa,IAAKZ,EACL5W,MAAOoc,EAAMC,GACbnd,SAAUwR,IAIRnS,EAAImY,UAAe/U,EAEnBmV,KAMJ,IAAKrG,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAE5BmG,EAAKnG,GAAKkG,EAAOxW,OAEjB,IAAIgY,EAAO1H,EAAI,EAEf,GAAIlS,EAEF,IAAKge,EAAK1E,EAAKpH,GAAI+L,EAAK3E,EAAKpH,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAInD3F,EAFAla,EAAIgb,EAAO6E,IAEJtE,EACP5Z,EAAE3B,GAAK+a,EAAQ8E,GAInB,IAAKF,EAAKhG,EAAK9F,GAAI+L,EAAKjG,EAAK9F,EAAI,GAAIgM,EAAIF,EAAIE,EAAID,EAAIC,IAInD,GAFA7f,EAAIyZ,EAAOoG,GAEPle,EAAG,CAEL,IAAI6gB,EAAKtI,EAAEla,KAAOub,EAAO5Z,EAAE3B,GAAKia,EAE5Bkf,EAAK9kB,EAAGkF,EAAQsG,GAAI2C,GAEnBnN,EAAG8jB,EAAIlf,KAEVF,EAAOzW,KAAKtD,GAEZ8Z,EAAQxW,KAAK61B,SAKfpf,EAAOzW,KAAKtD,GAQlB,OAHAga,EAAKyF,GAAW1F,EAAOxW,OAGhBnD,KAYL,SAAUb,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAkFlCR,EAAQgB,KAAO,MACfhB,EAAQD,QAjFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAI8Z,EAAe/Z,EAAKhC,EAAoB,KAoCxC0I,EAAMzG,EAAM,OACdkB,OAAU,SAAUtB,GAClB,OAAIA,GAAK,GAAKE,EAAO6kB,YACZ7hB,KAAK2D,IAAI7G,GAIT,IAAIC,EAAKgiB,QAAQjiB,EAAG,GAAG6G,OAIlCob,QAAW,SAAUjiB,GACnB,OAAOA,EAAE6G,OAGXqb,UAAa,SAAUliB,GACrB,OAAKA,EAAE6xB,cAAgB3xB,EAAO6kB,YACrB/kB,EAAE65C,KAIF,IAAI55C,EAAKgiB,QAAQjiB,EAAEglB,WAAY,GAAGne,OAI7Cub,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG6G,IAGpB+P,WAAY,SAAU5W,EAAG85C,GAEvB,OAAO5/B,EAAarT,EAAI7G,GAAI6G,EAAIizC,OASpC,OALAjzC,EAAI3F,OACFE,EAAG,gCACHC,EAAG,+CAGEwF,IASH,SAAUjJ,EAAQD,EAASQ,GAEjC,aAGA,IAAIiS,EAAQjS,EAAoB,GAAGiS,MAC/B3P,EAAStC,EAAoB,GAAGsC,OAmIpC9C,EAAQgB,KAAO,QACfhB,EAAQD,QAlIR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIC,EAASF,EAAKhC,EAAoB,IAClCuQ,EAAMvO,EAAKhC,EAAoB,KA6B/BmuC,EAAQlsC,EAAM,SAEhBQ,MAAS,SAAqBZ,GAE5B,OAAO+5C,EAAY15C,EAAOL,KAG5ByV,aAyCF,SAAsBjX,GAEpB,IAAIwa,EAASxa,EAAEqZ,QACXzV,EAAQ5D,EAAEuZ,OACVkB,EAAMza,EAAEyZ,KACRxW,EAAOjD,EAAE+T,MAETsL,EAAOpc,EAAK,GACZqc,EAAUrc,EAAK,GAEnB,GAAIoc,IAASC,EAAS,CAEpB,IAAItG,EAAM,EAEV,GAAIwB,EAAOpX,OAAS,EAElB,IAAK,IAAIsQ,EAAI,EAAGA,EAAI4L,EAAS5L,IAK3B,IAHA,IAAI8L,EAAK/E,EAAI/G,GACT+L,EAAKhF,EAAI/G,EAAI,GAERgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5B,IAAI7f,EAAI+D,EAAM8b,GAEd,GAAI7f,IAAM6T,EAAG,CAEXsF,EAAM9I,EAAI8I,EAAKwB,EAAOkF,IAEtB,MAEF,GAAI7f,EAAI6T,EAEN,MAMR,OAAOsF,EAET,MAAM,IAAIpE,WAAW,gCAAkC3S,EAAOgB,GAAQ,MAhFtEiQ,YAAeqoC,EAEf7oB,IAAO9gB,IAGT,SAAS2pC,EAAYv7C,GAEnB,IAAIiD,EAAOjD,EAAE+T,MACT1R,EAAOrC,EAAE6T,MAGb,OAAQ5Q,EAAKG,QACX,KAAK,EAEH,GAAgB,IAAZH,EAAK,GAEP,OAAO2O,EAAMvP,EAAK,IAEpB,MAAM,IAAIuS,WAAW,gCAAkC3S,EAAOgB,GAAQ,KACxE,KAAK,EAEH,IAAIoc,EAAOpc,EAAK,GAEhB,GAAIoc,IADOpc,EAAK,GACG,CAIjB,IAFA,IAAI+V,EAAM,EAEDnZ,EAAI,EAAGA,EAAIwf,EAAMxf,IACxBmZ,EAAM9I,EAAI8I,EAAK3W,EAAKxC,GAAGA,IAEzB,OAAOmZ,EAET,MAAM,IAAIpE,WAAW,gCAAkC3S,EAAOgB,GAAQ,KACxE,QAEE,MAAM,IAAI2R,WAAW,yCAA2C3S,EAAOgB,GAAQ,MAkDrF,OAFA6qC,EAAMprC,OAASE,EAAG,yCAEXkrC,IASH,SAAU1uC,EAAQD,EAASQ,GAEjC,aAoEAR,EAAQgB,KAAO,aACfhB,EAAQD,QAlER,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIsO,EAAMvO,EAAKhC,EAAoB,KAC/BwQ,EAAWxO,EAAKhC,EAAoB,KACpCkQ,EAAWlO,EAAKhC,EAAoB,KACpCmQ,EAASnO,EAAKhC,EAAoB,KAClC4P,EAAM5N,EAAKhC,EAAoB,KAC/B2P,EAAY3N,EAAKhC,EAAoB,KACrCo8B,EAAep6B,EAAKhC,EAAoB,KACxC0zB,EAAa1xB,EAAKhC,EAAoB,KACtCmE,EAAYnC,EAAKhC,EAAoB,KACrCgR,EAAShP,EAAKhC,EAAoB,KA0BlCwtC,EAAavrC,EAAM,cACrBw3B,yCAA0C,SAAUz4B,EAAG+e,GACrD,IAAK5b,EAAUnD,IAAM0yB,EAAW1yB,KAAOmD,EAAU4b,IAAM2T,EAAW3T,GAChE,MAAM,IAAI3b,UAAU,8DAEjB,GAAI4M,EAAO+O,EAAG/e,GACjB,MAAM,IAAIoD,UAAU,4DAMtB,IAFA,IAAIy3C,EAAalsC,EAAUoQ,GACvBnH,EAAS,EACL1Y,EAAI,EAAGA,GAAK6f,EAAG7f,IAAK,CAC1B,IAAI47C,EAAclsC,GAAK,EAAGY,EAASuP,EAAE7f,IACjC67C,EAAW3f,EAAarc,EAAE7f,GAC1B87C,EAASpsC,EAAI1P,EAAEc,GAEnB4X,EAASrI,EAAIqI,EAAQ1I,EAASA,EAAS6rC,EAAUC,GAASF,IAG5D,OAAO3rC,EAAOyI,EAAQijC,MAM1B,OAFArO,EAAWzqC,OAASG,EAAG,qCAEhBsqC,IASH,SAAU/tC,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAC9BmE,EAAYnE,EAAoB,GAAGmE,UAiLvC,IAAI83C,EAAI,UAEJ36C,GACF,kBACA,mBACC,kBACD,oBACC,kBACD,qBACA,sBACC,qBACD,sBACC,sBACD,uBACC,qBACD,sBACC,sBACD,uBAGF9B,EAAQgB,KAAO,QACfhB,EAAQD,QApMR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIiO,EAAWlO,EAAKhC,EAAoB,KACpC4P,EAAM5N,EAAKhC,EAAoB,KAyB/BiM,EAAQhK,EAAM,SAChBkB,OAAU,SAAUnC,GAClB,IAAIgyB,EAAGnxB,EAEP,GAAIsC,EAAUnD,GAAI,CAChB,GAAIA,GAAK,EACP,OAAOyG,SAASzG,GAAK6G,EAAAA,EAAW2f,IAGlC,GAAIxmB,EAAI,IACN,OAAO6G,EAAAA,EAKT,IAFA,IAAIpD,EAAQzD,EAAI,EACZkb,EAAMlb,EAAI,EACPyD,EAAQ,GACbyX,GAAOzX,EACPA,IAOF,OAJW,GAAPyX,IACFA,EAAM,GAGDA,EAGT,GAAIlb,EAAI,GACN,OAAO+D,KAAKmhC,IAAMnhC,KAAK6rC,IAAI7rC,KAAKmhC,GAAKllC,GAAKiL,EAAM,EAAEjL,IAGpD,GAAIA,GAAK,OACP,OAAO6G,EAAAA,EAGT,GAAI7G,EAAI,GAAM,CACZ,IAAIk7C,EAAOl7C,EAAEA,EACTm7C,EAASD,EAAKl7C,EACdo7C,EAAQD,EAAOn7C,EACfq7C,EAAQD,EAAMp7C,EAClB,OAAO+D,KAAKyuB,KAAK,EAAEzuB,KAAKmhC,GAAGllC,GAAK+D,KAAK6K,IAAK5O,EAAE+D,KAAK8jC,EAAI7nC,IAChD,EAAI,GAAG,GAAGA,GAAK,GAAG,IAAIk7C,GAAQ,KAAK,MAAMC,GAC1C,KAAK,QAAQC,GAAS,QAAQ,UAAUC,GACxC,SAAS,YAAYA,EAAMr7C,MAG/BA,EACFa,EAAIP,EAAE,GACN,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAEmC,SAAUvD,EAC9B2B,GAAKP,EAAEpB,IAAMc,EAAEd,GAIjB,OADA8yB,EAAIhyB,EAAIi7C,EAAI,GACLl3C,KAAKyuB,KAAK,EAAEzuB,KAAKmhC,IAAMnhC,KAAK6K,IAAIojB,EAAGhyB,EAAE,IAAO+D,KAAKsiC,KAAKrU,GAAKnxB,GAGpEiiB,QAAW,SAAU9iB,GACnB,IAAIgyB,EAAGnxB,EAEP,GAAY,GAARb,EAAEgkB,GACJ,OAAO/Y,EAAMjL,EAAE+jB,IAGjB/jB,EAAI,IAAIc,EAAKgiB,QAAQ9iB,EAAE+jB,GAAK,EAAG/jB,EAAEgkB,IACjCnjB,EAAI,IAAIC,EAAKgiB,QAAQxiB,EAAE,GAAI,GAC3B,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAEmC,SAAUvD,EAAG,CACjC,IAAIo8C,EAAOt7C,EAAE+jB,GAAK7kB,EACdq8C,EAAMD,EAAKA,EAAOt7C,EAAEgkB,GAAGhkB,EAAEgkB,GAClB,GAAPu3B,GACF16C,EAAEkjB,IAAMzjB,EAAEpB,GAAKo8C,EAAOC,EACtB16C,EAAEmjB,KAAQ1jB,EAAEpB,GAAKc,EAAEgkB,GAAMu3B,GAEzB16C,EAAEkjB,GAAKzjB,EAAEpB,GAAK,GACR,EAAA,EACC2H,EAAAA,EAIXmrB,EAAI,IAAIlxB,EAAKgiB,QAAQ9iB,EAAE+jB,GAAKk3B,EAAI,GAAKj7C,EAAEgkB,IACvC,IAAIw3B,EAAYz3C,KAAKyuB,KAAK,EAAEzuB,KAAKmhC,IAEjCllC,EAAE+jB,IAAM,GACR,IAAInM,EAAShJ,EAAIojB,EAAGhyB,GACH,GAAb4X,EAAOoM,GACTpM,EAAOmM,IAAMy3B,EACS,GAAb5jC,EAAOmM,GAChBnM,EAAOoM,IAAMw3B,GAEb5jC,EAAOmM,IAAMy3B,EACb5jC,EAAOoM,IAAMw3B,GAGf,IAAIx8B,EAAIjb,KAAKsiC,KAAKrU,EAAEjO,IAIpB,OAHAiO,EAAEjO,GAAK/E,EAAIjb,KAAKkhC,KAAKjT,EAAEhO,IACvBgO,EAAEhO,GAAKhF,EAAIjb,KAAK6rC,KAAK5d,EAAEhO,IAEhB9U,EAASA,EAAS0I,EAAQoa,GAAInxB,IAGvCkiB,UAAa,SAAU/iB,GACrB,GAAIA,EAAEmD,YACJ,OAAQnD,EAAE0yB,cAAgB1yB,EAAEulB,SACtB,IAAIzkB,EAAKiiB,UAAUlc,EAAAA,GAqB/B,SAAsB7G,GACpB,GAAIA,EAAEulB,SACJ,OAAO,IAAIzkB,EAAKiiB,UAAU,GAQ5B,IALA,IAAI/b,EAAYjG,EAAOiG,WAAsC,EAAzBjD,KAAK2D,IAAI1H,EAAE6lB,aAG3C3K,EAAM,IAFApa,EAAKiiB,UAAU9R,OAAOjK,UAAWA,IAEjC,CAAQhH,GACdyD,EAAQzD,EAAE6lB,WAAa,EACpBpiB,EAAQ,GACbyX,EAAMA,EAAIsE,MAAM/b,GAChBA,IAGF,OAAO,IAAI3C,EAAKiiB,UAAU7H,EAAIjT,YAAYnH,EAAKiiB,UAAU/b,YAnC/Cy0C,CAAaz7C,EAAEqf,MAAM,IAG7B,IAAKrf,EAAEyG,WACL,OAAO,IAAI3F,EAAKiiB,UAAU/iB,EAAE0yB,aAAelM,IAAM3f,EAAAA,GAGnD,MAAM,IAAItD,MAAM,+BAGlB0f,iBAAkB,SAAUjjB,GAC1B,OAAOQ,EAAQR,EAAGiL,MA6BtB,OAFAA,EAAMlJ,OAASE,EAAG,oCAEXgJ,IA+BH,SAAUxM,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA2DlCR,EAAQgB,KAAO,MACfhB,EAAQD,QA1DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GA2B5BiQ,EAAMhO,EAAM,OACdkB,OAAU,SAAUtB,GAClB,OAAQA,GAGViiB,QAAW,SAAUjiB,GACnB,OAAgB,IAATA,EAAEkjB,IAAqB,IAATljB,EAAEmjB,IAGzBjB,UAAa,SAAUliB,GACrB,OAAOA,EAAE0kB,UAAY1kB,EAAEiG,SAGzBoc,KAAQ,SAAUriB,GAChB,OAAmB,OAAZA,EAAE4C,OAAiBwL,EAAIpO,EAAE4C,QAGlCwf,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGoO,MAQtB,OAJAA,EAAIlN,OACFE,EAAGgU,EAAMxH,UAAe,IAAI,6BAGvBQ,IASH,SAAUxQ,EAAQD,EAASQ,GAEjC,aAGA,IAAI2lB,EAAmB3lB,EAAoB,IAAI2lB,iBA+C/C,SAAS+2B,EAAMj7C,EAAOC,GAEpB,IAAImc,EAAO8H,EAAiBjkB,GAExB0wB,EAAU,SAAU3tB,EAAOR,GAC7B,OAAIxB,MAAMc,QAAQkB,GACTA,EAAM7C,IAAI,SAAUmC,EAAO7D,GAEhC,OAAOkyB,EAAQruB,EAAOE,EAAMqG,OAAOpK,MAKxB,IAAT2d,EACKnc,EAAS+C,GAEA,IAAToZ,EACAnc,EAAS+C,EAAOR,GAGhBvC,EAAS+C,EAAOR,EAAOxC,IAKpC,OAAO2wB,EAAQ3wB,MAGjBjC,EAAQgB,KAAO,MACfhB,EAAQD,QA1ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GAyBpC,IAAIL,EAAMK,EAAM,OACd06C,kBAAmBD,EAEnBE,mBAAoB,SAAU/6C,EAAGH,GAC/B,OAAOG,EAAED,IAAIF,MAMjB,OAFAE,EAAImB,WAAQkC,EAELrD,IA4CH,SAAUnC,EAAQD,EAASQ,GAEjC,aAGA,IAAI+wB,EAAc/wB,EAAoB,IAsFtCR,EAAQgB,KAAO,MACfhB,EAAQD,QArFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIsO,EAAMvO,EAAKhC,EAAoB,KAC/Bq0C,EAAsBryC,EAAKhC,EAAoB,KAyB/CqZ,EAAMpX,EAAM,OACdgiB,iBAAkB,SAAUpG,GAE1B,OAAOg/B,EAAKh/B,IAGd02B,qCAAsC,WAGpC,MAAM,IAAIhwC,MAAM,qCAGlBkwC,MAAO,SAAU52B,GAEf,OAAOg/B,EAAKh/B,MAMhB,OAFAxE,EAAItW,WAAQkC,EAELoU,EAQP,SAASwjC,EAAKp7C,GACZ,IAAI4X,OAAMpU,EAWV,GATA8rB,EAAYtvB,EAAO,SAAUgD,GAC3B,IACE4U,OAAepU,IAARoU,EAAqB5U,EAAQ8L,EAAI8I,EAAK5U,GAE/C,MAAO2hB,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO3hB,WAI9BQ,IAARoU,EACF,OAAQtX,EAAOoB,QACb,IAAK,SACH,OAAO,EACT,IAAK,YACH,OAAO,IAAIrB,EAAKiiB,UAAU,GAC5B,IAAK,WACH,OAAO,IAAIjiB,EAAKkiB,SAAS,GAC3B,QACE,OAAO,EAIb,OAAO3K,KAUL,SAAU5Z,EAAQD,EAASQ,GAEjC,aAGA,IAAIsF,EAAUtF,EAAoB,GAAGsF,QACjC4B,EAAWlH,EAAoB,GAAGkH,SAClCK,EAAavH,EAAoB,GAAGuH,WAoExC/H,EAAQgB,KAAO,gBACfhB,EAAQD,QAnER,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgC,EAAQjC,EAAKhC,EAAoB,KACjCkC,EAASF,EAAKhC,EAAoB,KAClCsD,EAAOtB,EAAKhC,EAAoB,KAChCghB,EAAShf,EAAKhC,EAAoB,KAClCwkB,EAAiBxiB,EAAKhC,EAAoB,KA0D9C,OAnCoBiC,EAAM,iBACxBgvB,iCAAkC,SAAU8mB,EAAI+E,GAC9C,GAAuC,IAAnC97B,EAAO1d,EAAKy0C,GAAK,IAAI9zC,EAAM,IAC7B,IAAI2U,SAED,CAAA,GAAuC,IAAnCoI,EAAO1d,EAAKw5C,GAAK,IAAI74C,EAAM,IAClC,OAAOqB,EAAQyyC,EAAGx0B,WAOlB,IAJA,IAGIw5B,EAHAC,EAAK91C,EAAS5B,EAAQ7C,MAAMc,QAAQw0C,GAAMA,EAAIA,EAAGx0B,WAAW8B,KAAKb,IACjEy4B,EAAK/1C,EAAS5B,EAAQ7C,MAAMc,QAAQu5C,GAAMA,EAAIA,EAAGv5B,WAAW8B,KAAKb,IAG5DtkB,GAFL0Y,KAEO,GAAG1Y,EAAE88C,EAAGv5C,OAAQvD,IAAK,CAC9B68C,GAAO,EACP,IAAK,IAAIhpC,EAAE,EAAGA,EAAEkpC,EAAGx5C,OAAQsQ,IACzB,GAAiD,IAA7CyQ,EAAew4B,EAAG98C,GAAGuE,MAAOw4C,EAAGlpC,GAAGtP,QAAgBu4C,EAAG98C,GAAGoH,aAAe21C,EAAGlpC,GAAGzM,WAAY,CAC3Fy1C,GAAO,EACP,MAGCA,GACHnkC,EAAOpV,KAAKw5C,EAAG98C,KAKrB,OAAIuC,MAAMc,QAAQw0C,IAAOt1C,MAAMc,QAAQu5C,GAC9Bv1C,EAAWqR,GAGb,IAAI1W,EAAOqF,EAAWqR,SAa7B,SAAUnZ,EAAQD,EAASQ,GAEjC,aAGA,IAAIsF,EAAUtF,EAAoB,GAAGsF,QACjC4B,EAAWlH,EAAoB,GAAGkH,SAClCK,EAAavH,EAAoB,GAAGuH,WA4DxC/H,EAAQgB,KAAO,eACfhB,EAAQD,QA3DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgC,EAAQjC,EAAKhC,EAAoB,KACjCkC,EAASF,EAAKhC,EAAoB,KAClCsD,EAAOtB,EAAKhC,EAAoB,KAChCghB,EAAShf,EAAKhC,EAAoB,KAClCwkB,EAAiBxiB,EAAKhC,EAAoB,KAkD9C,OA3BmBiC,EAAM,gBACvBgvB,iCAAkC,SAAU8mB,EAAI+E,GAC9C,GAAuC,IAAnC97B,EAAO1d,EAAKy0C,GAAK,IAAI9zC,EAAM,KAAgD,IAAnC+c,EAAO1d,EAAKw5C,GAAK,IAAI74C,EAAM,IACrE,IAAI2U,UAMJ,IAHA,IAAIokC,EAAK91C,EAAS5B,EAAQ7C,MAAMc,QAAQw0C,GAAMA,EAAKA,EAAGx0B,WAAW8B,KAAKb,IAClEy4B,EAAK/1C,EAAS5B,EAAQ7C,MAAMc,QAAQu5C,GAAMA,EAAKA,EAAGv5B,WAAW8B,KAAKb,IAE7DtkB,GADL0Y,KACO,GAAG1Y,EAAE88C,EAAGv5C,OAAQvD,IACzB,IAAK,IAAI6T,EAAE,EAAGA,EAAEkpC,EAAGx5C,OAAQsQ,IACvB,GAAiD,IAA7CyQ,EAAew4B,EAAG98C,GAAGuE,MAAOw4C,EAAGlpC,GAAGtP,QAAgBu4C,EAAG98C,GAAGoH,aAAe21C,EAAGlpC,GAAGzM,WAAY,CAC3FsR,EAAOpV,KAAKw5C,EAAG98C,IACf,MAMV,OAAIuC,MAAMc,QAAQw0C,IAAOt1C,MAAMc,QAAQu5C,GAC9Bv1C,EAAWqR,GAGb,IAAI1W,EAAOqF,EAAWqR,SAa7B,SAAUnZ,EAAQD,EAASQ,GAEjC,aAGA,IAAIsF,EAAUtF,EAAoB,GAAGsF,QA+CrC9F,EAAQgB,KAAO,mBACfhB,EAAQD,QA9CR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgC,EAAQjC,EAAKhC,EAAoB,KACjCsK,EAAStI,EAAKhC,EAAoB,KAClCsD,EAAOtB,EAAKhC,EAAoB,KAChCghB,EAAShf,EAAKhC,EAAoB,KAClCwuC,EAAgBxsC,EAAKhC,EAAoB,MAqC7C,OAduBiC,EAAM,oBAC3BgvB,iCAAkC,SAAU8mB,EAAI+E,GAC9C,GAAuC,IAAnC97B,EAAO1d,EAAKy0C,GAAK,IAAI9zC,EAAM,IAC7B,OAAOqB,EAAQw3C,GAEZ,GAAuC,IAAnC97B,EAAO1d,EAAKw5C,GAAK,IAAI74C,EAAM,IAClC,OAAOqB,EAAQyyC,GAEjB,IAAIiF,EAAK13C,EAAQyyC,GACbkF,EAAK33C,EAAQw3C,GACjB,OAAOxyC,EAAOkkC,EAAcwO,EAAIC,GAAKzO,EAAcyO,EAAID,SAavD,SAAUv9C,EAAQD,EAASQ,GAEjC,aAGA,IAAIsF,EAAUtF,EAAoB,GAAGsF,QACjC8uC,EAAsBp0C,EAAoB,IAsH9CR,EAAQgB,KAAO,SACfhB,EAAQD,QArHR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIsO,EAAMvO,EAAKhC,EAAoB,KAC/BmQ,EAASnO,EAAKhC,EAAoB,KAClCskB,EAAUtiB,EAAKhC,EAAoB,KACnCkuC,EAAkBlsC,EAAKhC,EAAoB,KAC3Cq0C,EAAsBryC,EAAKhC,EAAoB,KA4B/CovC,EAASntC,EAAM,UAEjBgiB,iBAAkBi5B,EAGlB3I,qCAAsC,SAAU9yC,EAAOmC,GAErD,MAAM,IAAIW,MAAM,wCAKlBkwC,MAAO,SAAU52B,GACf,GAAIu2B,EAAoBv2B,GACpB,MAAM,IAAIzZ,UAAU,6CAGxB,OAAO84C,EAAQr/B,MAWnB,SAASq/B,EAAQz7C,GACf,IAGE,IAAI66B,GAFJ76B,EAAQ6D,EAAQ7D,EAAMyQ,YAENzO,OAChB,GAAW,GAAP64B,EACF,MAAM,IAAI/3B,MAAM,6CAGlB,GAAI+3B,EAAM,GAAK,EAAG,CAOhB,IALA,IAAI6gB,EAAM7gB,EAAM,EAAI,EAChBkF,EAAQ0M,EAAgBzsC,EAAO07C,EAAM,GAGrCC,EAAO37C,EAAM07C,GACRj9C,EAAI,EAAGA,EAAIi9C,IAAOj9C,EACrBokB,EAAQ7iB,EAAMvB,GAAIk9C,GAAQ,IAC5BA,EAAO37C,EAAMvB,IAIjB,OAAOm9C,EAAQD,EAAM5b,GAIrB,IAAInhC,EAAI6tC,EAAgBzsC,GAAQ66B,EAAM,GAAK,GAE3C,OAAOghB,EAAOj9C,GAGlB,MAAO+lB,GACL,MAAMiuB,EAAoBjuB,EAAK,WAKnC,IAAIk3B,EAASr7C,GACXs7C,sCAAuC,SAAU94C,GAC/C,OAAOA,KAKP44C,EAAUp7C,GACZu7C,2EAA4E,SAAUJ,EAAM5b,GAC1F,OAAOrxB,EAAOI,EAAI6sC,EAAM5b,GAAQ,MAMpC,OAFA4N,EAAOrsC,WAAQkC,EAERmqC,IASH,SAAU3vC,EAAQD,EAASQ,GAEjC,aAGA,IAAIy9C,EAAwB,WAExB1sB,EAAc/wB,EAAoB,IAgItCR,EAAQgB,KAAO,MACfhB,EAAQD,QA/HR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIsO,EAAMvO,EAAKhC,EAAoB,KAC/BwQ,EAAWxO,EAAKhC,EAAoB,KACpCkQ,EAAWlO,EAAKhC,EAAoB,KACpCmQ,EAASnO,EAAKhC,EAAoB,KAClCq0C,EAAsBryC,EAAKhC,EAAoB,KA4C/C09C,EAAWz7C,EAAM,YAEnBgiB,iBAAkB,SAAUxiB,GAC1B,OAAOk8C,EAAKl8C,EAAOg8C,IAIrB56C,yBAA0B86C,EAG1BlJ,MAAO,SAAU52B,GACf,OAAO8/B,EAAK9/B,EAAM4/B,MAMtB,OAFAC,EAAS36C,MAAQ,sCAEV26C,EAaP,SAASC,EAAKl8C,EAAOm8C,GACnB,IAAIvkC,EAAM,EACNijB,EAAM,EAEV,GAAoB,GAAhB76B,EAAMgC,OACR,MAAM,IAAIgG,YAAY,6DAaxB,GATAsnB,EAAYtvB,EAAO,SAAUgD,GAC3B,IACE4U,EAAM9I,EAAI8I,EAAK5U,GACf63B,IAEF,MAAOlW,GACL,MAAMiuB,EAAoBjuB,EAAK,MAAO3hB,MAG9B,IAAR63B,EAAW,MAAM,IAAI/3B,MAAM,0CAE/B,IAAI4qC,EAAOh/B,EAAOkJ,EAAKijB,GASvB,OANAjjB,EAAM,EACN0X,EAAYtvB,EAAO,SAAUgD,GAC3B,IAAI+G,EAAOgF,EAAS/L,EAAO0qC,GAC3B91B,EAAM9I,EAAI8I,EAAKnJ,EAAS1E,EAAMA,MAGxBoyC,GACN,IAAK,cACH,OAAOztC,EAAOkJ,EAAKijB,GAErB,IAAK,SACH,OAAOnsB,EAAOkJ,EAAKijB,EAAM,GAE3B,IAAK,WACH,IAAIniB,EAAOrY,EAAKkQ,YAAYqH,GAAO,IAAIvX,EAAKiiB,UAAU,GAAK,EAC3D,OAAe,GAAPuY,EAAYniB,EAAOhK,EAAOkJ,EAAKijB,EAAM,GAE/C,QACE,MAAM,IAAI/3B,MAAM,0BAA4Bq5C,EAAgB,mEAY9D,SAAUn+C,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA4DlC,IAAI69C,EAAS94C,KAAK0qC,OAAS,SAAU5tC,GACnC,OAAOkD,KAAK2D,IAAI3D,KAAKyuB,KAAK3xB,EAAEA,EAAI,GAAKA,IAGvCrC,EAAQgB,KAAO,QACfhB,EAAQD,QA/DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAuBpC,IAAIwtC,EAAQxtC,EAAM,SAChBkB,OAAU,SAAUtB,GAClB,OAAIA,GAAK,GAAKE,EAAO6kB,YACZi3B,EAAOh8C,GAEZA,IAAM,EACD,IAAIC,EAAKgiB,QAAQ/e,KAAK2D,IAAI3D,KAAKyuB,KAAK3xB,EAAEA,EAAI,GAAKA,GAAIkD,KAAKmhC,IAE1D,IAAIpkC,EAAKgiB,QAAQjiB,EAAG,GAAG4tC,SAGhC3rB,QAAW,SAAUjiB,GACnB,OAAOA,EAAE4tC,SAGX1rB,UAAa,SAAUliB,GACrB,OAAOA,EAAE4tC,SAGXxrB,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG4tC,MAMtB,OAFAA,EAAM1sC,OAASE,EAAG,wCAEXwsC,IAmBH,SAAUhwC,EAAQD,EAASQ,GAEjC,IAAI89C,EAAO99C,EAAoB,KAqC/BP,EAAOD,QAZP,SAAS2jB,EAAQphB,GAEf,IAAImb,EAAO4gC,EAAK36B,OAAOphB,GAMvB,OALAmb,EAAKiG,OAASA,EAGdjG,EAAa,OAAEld,EAAoB,MAE5Bkd,EAIQiG,IAKX,SAAU1jB,EAAQD,EAASQ,GAEjCP,EAAOD,QAAUQ,EAAoB,MAI/B,SAAUP,EAAQD,EAASQ,GAEjC,IAAIsT,EAAYtT,EAAoB,GAAGsT,UACnCyqC,EAAe/9C,EAAoB,KACnCmiB,EAAUniB,EAAoB,IAE9Bg+C,EAAgBh+C,EAAoB,KACpCi+C,EAAgBj+C,EAAoB,KA+BxCR,EAAQ2jB,OAAS,SAAiBvb,GAEhC,GAA6B,mBAAlBjH,OAAOwiB,OAChB,MAAM,IAAI5e,MAAM,iHAKlB,IAAI25C,KACAC,KAGAjhC,EAAOiF,EAAQikB,UACnBlpB,EAAKpb,QACLob,EAAKS,YACHU,aACAT,sBAIFV,EAAKjb,MAAQ87C,EAAa56B,OAAOjG,EAAKpb,MAGtC,IAAIs8C,GAGF7yC,QAAS,MAGTrJ,OAAQ,SAGRiB,OAAQ,SAGR6E,UAAW,GAMX4e,aAAa,EAIby3B,WAAY,MAUd,SAASr8C,EAAMzC,GACb,IAAK+T,EAAU/T,GACb,MAAM,IAAIgF,MAAM,yEAGlB,IACI+5C,EADAr6C,EAAQi6C,EAAUr0C,QAAQtK,GAqB9B,OAnBe,IAAX0E,GAIAq6C,GAFmB,IAAjB/+C,EAAQ2d,KAEC3d,EAAQA,QAAQ2d,EAAKpb,KAAMs8C,EAASp8C,EAAMkb,EAAKjb,MAAOib,GAGtD3d,EAAQA,QAAQ2d,EAAKpb,KAAMs8C,EAASp8C,EAAMkb,EAAKjb,OAI5Di8C,EAAU16C,KAAKjE,GACf4+C,EAAU36C,KAAK86C,IAIfA,EAAWH,EAAUl6C,GAGhBq6C,EAaT,OATAphC,EAAa,OAAIlb,EAAKg8C,GACtB9gC,EAAa,OAAIlb,EAAKi8C,GACtB/gC,EAAKS,WAAWC,kBAA0B,OAAIV,EAAa,OAGvDtV,GACFsV,EAAKnb,OAAO6F,GAGPsV,IAMH,SAAUzd,EAAQD,EAASQ,GAEjC,IAAIu+C,EAAgBv+C,EAAoB,KACpCmJ,EAASnJ,EAAoB,GAAGmJ,OAChC6I,EAAchS,EAAoB,IAClCyX,EAAWzX,EAAoB,IAG/Bw+C,EAAc,WAIhB,OADAA,EAAcD,EAAcp7B,OACrBo7B,GAQT/+C,EAAQ2jB,OAAS,SAAgBrhB,GAgB/BA,EAAKoC,SAAW,SAAUrC,GAAK,MAAoB,iBAANA,GAC7CC,EAAKmxB,UAAY,SAAUpxB,GAAK,OAAOC,EAAKgiB,SAAWjiB,aAAaC,EAAKgiB,UAAW,GACpFhiB,EAAKkQ,YAAcA,EACnBlQ,EAAKoxB,WAAa,SAAUrxB,GAAK,OAAOC,EAAKkiB,UAAYniB,aAAaC,EAAKkiB,WAAY,GACvFliB,EAAKiQ,OAAS,SAAUlQ,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAU2Q,SAAU,GAC3EjQ,EAAK8S,SAAW,SAAU/S,GAAK,MAAoB,iBAANA,GAC7CC,EAAKyB,QAAUd,MAAMc,QACrBzB,EAAK2V,SAAWA,EAChB3V,EAAKgjB,cAAgB,SAAUjjB,GAAK,OAAOA,GAAKA,EAAEijB,eAAiBjjB,EAAE6Q,YAAYtR,UAAUqW,WAAY,GACvG3V,EAAK8iB,eAAiB,SAAU/iB,GAAK,OAAOA,GAAKA,EAAE+iB,gBAAkB/iB,EAAE6Q,YAAYtR,UAAUqW,WAAY,GACzG3V,EAAKkhB,QAAU,SAAUnhB,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAU4hB,UAAW,GAC7ElhB,EAAKwf,QAAU,SAAUzf,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAUkgB,UAAW,GAC7Exf,EAAK28C,UAAY,SAAU58C,GAAK,MAAoB,kBAANA,GAC9CC,EAAKslC,YAAc,SAAUvlC,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAUgmC,cAAe,GACrFtlC,EAAKsxB,OAAS,SAAUvxB,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAUgyB,SAAU,GAC3EtxB,EAAK48C,WAAa,SAAU78C,GAAK,MAAoB,mBAANA,GAC/CC,EAAK68C,OAAS,SAAU98C,GAAK,OAAOA,aAAauQ,MACjDtQ,EAAK88C,SAAW,SAAU/8C,GAAK,OAAOA,aAAawQ,QACnDvQ,EAAK+8C,SAAW,SAAUh9C,GACxB,MAAoB,iBAANA,GACVA,EAAE6Q,cAAgB/R,SACjBmB,EAAKmxB,UAAUpxB,KACfC,EAAKoxB,WAAWrxB,IAEvBC,EAAKg9C,OAAS,SAAUj9C,GAAK,OAAa,OAANA,GACpCC,EAAKi9C,YAAc,SAAUl9C,GAAK,YAAaoD,IAANpD,GAEzCC,EAAKqsB,eAAiB,SAAUtsB,GAAK,OAAOA,GAAKA,EAAEssB,gBAAkBtsB,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACvGzb,EAAKwvC,YAAc,SAAUzvC,GAAK,OAAOA,GAAKA,EAAEyvC,aAAezvC,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACjGzb,EAAKiwC,iBAAmB,SAAUlwC,GAAK,OAAOA,GAAKA,EAAEkwC,kBAAoBlwC,EAAE6Q,YAAYtR,UAAUmc,SAAU,GAC3Gzb,EAAKywC,YAAc,SAAU1wC,GAAK,OAAOA,GAAKA,EAAE0wC,aAAe1wC,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACjGzb,EAAK8wC,kBAAoB,SAAU/wC,GAAK,OAAOA,GAAKA,EAAE+wC,mBAAqB/wC,EAAE6Q,YAAYtR,UAAUmc,SAAU,GAC7Gzb,EAAKotB,eAAiB,SAAUrtB,GAAK,OAAOA,GAAKA,EAAEqtB,gBAAkBrtB,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACvGzb,EAAKi5B,yBAA2B,SAAUl5B,GAAK,OAAOA,GAAKA,EAAEk5B,0BAA4Bl5B,EAAE6Q,YAAYtR,UAAUmc,SAAU,GAC3Hzb,EAAKssB,eAAiB,SAAUvsB,GAAK,OAAOA,GAAKA,EAAEusB,gBAAkBvsB,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACvGzb,EAAKu4B,YAAc,SAAUx4B,GAAK,OAAOA,GAAKA,EAAEw4B,aAAex4B,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACjGzb,EAAKyb,OAAS,SAAU1b,GAAK,OAAOA,GAAKA,EAAE0b,QAAU1b,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACvFzb,EAAKyvC,aAAe,SAAU1vC,GAAK,OAAOA,GAAKA,EAAE0vC,cAAgB1vC,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACnGzb,EAAKqtB,eAAiB,SAAUttB,GAAK,OAAOA,GAAKA,EAAEstB,gBAAkBttB,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACvGzb,EAAKm2B,kBAAoB,SAAUp2B,GAAK,OAAOA,GAAKA,EAAEo2B,mBAAqBp2B,EAAE6Q,YAAYtR,UAAUmc,SAAU,GAC7Gzb,EAAKi7B,YAAc,SAAUl7B,GAAK,OAAOA,GAAKA,EAAEk7B,aAAel7B,EAAE6Q,YAAYtR,UAAUmc,SAAU,GACjGzb,EAAKosB,aAAe,SAAUrsB,GAAK,OAAOA,GAAKA,EAAEqsB,cAAgBrsB,EAAE6Q,YAAYtR,UAAUmc,SAAU,GAEnGzb,EAAKqxB,QAAU,SAAUtxB,GAAK,OAAOA,GAAKA,EAAE6Q,YAAYtR,UAAU+xB,UAAW,GAG7E,IAAIlxB,EAAQu8C,IA8LZ,OAzLAv8C,EAAMmuB,QACF5vB,KAAM,SAAmBuG,KAAMjF,EAAKoC,WACpC1D,KAAM,UAAmBuG,KAAMjF,EAAKmxB,YACpCzyB,KAAM,YAAmBuG,KAAMjF,EAAKkQ,cACpCxR,KAAM,WAAmBuG,KAAMjF,EAAKoxB,aACpC1yB,KAAM,OAAmBuG,KAAMjF,EAAKiQ,SACpCvR,KAAM,SAAmBuG,KAAMjF,EAAK8S,WACpCpU,KAAM,QAAmBuG,KAAMjF,EAAKyB,UACpC/C,KAAM,SAAmBuG,KAAMjF,EAAK2V,WACpCjX,KAAM,cAAmBuG,KAAMjF,EAAKgjB,gBACpCtkB,KAAM,eAAmBuG,KAAMjF,EAAK8iB,iBACpCpkB,KAAM,QAAmBuG,KAAMjF,EAAKkhB,UACpCxiB,KAAM,QAAmBuG,KAAMjF,EAAKwf,UACpC9gB,KAAM,UAAmBuG,KAAMjF,EAAK28C,YACpCj+C,KAAM,YAAmBuG,KAAMjF,EAAKslC,cACpC5mC,KAAM,OAAmBuG,KAAMjF,EAAKsxB,SACpC5yB,KAAM,WAAmBuG,KAAMjF,EAAK48C,aACpCl+C,KAAM,OAAmBuG,KAAMjF,EAAK68C,SACpCn+C,KAAM,SAAmBuG,KAAMjF,EAAK88C,WACpCp+C,KAAM,OAAmBuG,KAAMjF,EAAKg9C,SACpCt+C,KAAM,YAAmBuG,KAAMjF,EAAKi9C,cAEpCv+C,KAAM,eAAmBuG,KAAMjF,EAAKqtB,iBACpC3uB,KAAM,eAAmBuG,KAAMjF,EAAKotB,iBACpC1uB,KAAM,aAAmBuG,KAAMjF,EAAKosB,eACpC1tB,KAAM,kBAAmBuG,KAAMjF,EAAKm2B,oBACpCz3B,KAAM,eAAmBuG,KAAMjF,EAAKssB,iBACpC5tB,KAAM,yBAA6BuG,KAAMjF,EAAKi5B,2BAC9Cv6B,KAAM,YAA6BuG,KAAMjF,EAAKwvC,cAC9C9wC,KAAM,iBAA6BuG,KAAMjF,EAAKiwC,mBAC9CvxC,KAAM,YAA6BuG,KAAMjF,EAAKywC,cAC9C/xC,KAAM,kBAA6BuG,KAAMjF,EAAK8wC,oBAC9CpyC,KAAM,YAA6BuG,KAAMjF,EAAKu4B,cAC9C75B,KAAM,YAA6BuG,KAAMjF,EAAKi7B,cAC9Cv8B,KAAM,OAA6BuG,KAAMjF,EAAKyb,SAE9C/c,KAAM,SAAmBuG,KAAMjF,EAAK+8C,WAIxC58C,EAAM+8C,cAEFjb,KAAM,SACNtzB,GAAI,YACJ+D,QAAS,SAAU3S,GAEjB,GAAIsH,EAAOtH,GAAK,GACd,MAAM,IAAIuC,UAAU,uFACPvC,EAAI,yDAGnB,OAAO,IAAIC,EAAKiiB,UAAUliB,MAG5BkiC,KAAM,SACNtzB,GAAI,UACJ+D,QAAS,SAAU3S,GACjB,OAAO,IAAIC,EAAKgiB,QAAQjiB,EAAG,MAG7BkiC,KAAM,SACNtzB,GAAI,SACJ+D,QAAS,SAAU3S,GACjB,OAAOA,EAAI,MAGbkiC,KAAM,YACNtzB,GAAI,UACJ+D,QAAS,SAAU3S,GACjB,OAAO,IAAIC,EAAKgiB,QAAQjiB,EAAEglB,WAAY,MAGxCkd,KAAM,WACNtzB,GAAI,YACJ+D,QAAS,SAAU3S,GACjB,MAAM,IAAIuC,UAAU,gKAItB2/B,KAAM,WACNtzB,GAAI,UACJ+D,QAAS,SAAU3S,GACjB,OAAO,IAAIC,EAAKgiB,QAAQjiB,EAAEqQ,UAAW,MAGvC6xB,KAAM,SACNtzB,GAAI,WACJ+D,QAAS,SAAU3S,GAEjB,GADQ,IAAIC,EAAKkiB,SAASniB,GACpBqQ,YAAcrQ,EAClB,MAAM,IAAIuC,UAAU,mGACHvC,EAAI,uDAGvB,OAAO,IAAIC,EAAKkiB,SAASniB,MAU3BkiC,KAAM,SACNtzB,GAAI,SACJ+D,QAAS,SAAU3S,GACjB,IAAIb,EAAImK,OAAOtJ,GACf,GAAIiG,MAAM9G,GACR,MAAM,IAAIuD,MAAM,mBAAqB1C,EAAI,iBAE3C,OAAOb,KAGT+iC,KAAM,SACNtzB,GAAI,YACJ+D,QAAS,SAAU3S,GACjB,IACE,OAAO,IAAIC,EAAKiiB,UAAUliB,GAE5B,MAAOukB,GACL,MAAM,IAAI7hB,MAAM,mBAAqB1C,EAAI,sBAI7CkiC,KAAM,SACNtzB,GAAI,WACJ+D,QAAS,SAAU3S,GACjB,IACE,OAAO,IAAIC,EAAKkiB,SAASniB,GAE3B,MAAOukB,GACL,MAAM,IAAI7hB,MAAM,mBAAqB1C,EAAI,qBAI7CkiC,KAAM,SACNtzB,GAAI,UACJ+D,QAAS,SAAU3S,GACjB,IACE,OAAO,IAAIC,EAAKgiB,QAAQjiB,GAE1B,MAAOukB,GACL,MAAM,IAAI7hB,MAAM,mBAAqB1C,EAAI,oBAI7CkiC,KAAM,UACNtzB,GAAI,SACJ+D,QAAS,SAAU3S,GACjB,OAAQA,KAGVkiC,KAAM,UACNtzB,GAAI,YACJ+D,QAAS,SAAU3S,GACjB,OAAO,IAAIC,EAAKiiB,WAAWliB,MAG7BkiC,KAAM,UACNtzB,GAAI,WACJ+D,QAAS,SAAU3S,GACjB,OAAO,IAAIC,EAAKkiB,UAAUniB,MAG5BkiC,KAAM,UACNtzB,GAAI,SACJ+D,QAAS,SAAU3S,GACjB,OAAQA,KAGVkiC,KAAM,QACNtzB,GAAI,SACJ+D,QAAS,SAAU/S,GACjB,OAAO,IAAIK,EAAKyR,YAAY9R,MAG9BsiC,KAAM,SACNtzB,GAAI,QACJ+D,QAAS,SAAUtS,GACjB,OAAOA,EAAOgQ,aAKbjQ,IAMH,SAAUxC,EAAQD,EAASQ,GAEjC,aACA,IAAIi/C,EAAgCC,EAA8BC,EAY5DD,UAGgCj6C,KAFlCk6C,EAA2E,mBADtCF,EAajC,WAEN,SAASG,IACP,OAAO,EAGT,SAASC,IACP,OAAO,EAGT,SAAS9rB,KAizCT,OA7wCA,SAASpQ,IAEP,IAAIm8B,IACA9+C,KAAM,SAAauG,KAAM,SAAUlF,GAAK,MAAoB,iBAANA,KACtDrB,KAAM,SAAauG,KAAM,SAAUlF,GAAK,MAAoB,iBAANA,KACtDrB,KAAM,UAAauG,KAAM,SAAUlF,GAAK,MAAoB,kBAANA,KACtDrB,KAAM,WAAauG,KAAM,SAAUlF,GAAK,MAAoB,mBAANA,KACtDrB,KAAM,QAAauG,KAAMtE,MAAMc,UAC/B/C,KAAM,OAAauG,KAAM,SAAUlF,GAAK,OAAOA,aAAauQ,QAC5D5R,KAAM,SAAauG,KAAM,SAAUlF,GAAK,OAAOA,aAAawQ,UAC5D7R,KAAM,SAAauG,KAAM,SAAUlF,GACnC,MAAoB,iBAANA,GAAkBA,EAAE6Q,cAAgB/R,UAElDH,KAAM,OAAauG,KAAM,SAAUlF,GAAK,OAAa,OAANA,KAC/CrB,KAAM,YAAauG,KAAM,SAAUlF,GAAK,YAAaoD,IAANpD,KAG/C09C,GACF/+C,KAAM,MACNuG,KAAMq4C,GAIJI,KAGAC,KAGAx9C,GACFmuB,MAAOkvB,EACPN,YAAaS,EACb7I,OAAQ4I,GASV,SAASE,EAAgBC,GACvB,IAAI74C,EAAQ84C,EAAY39C,EAAMmuB,MAAO,SAAUtpB,GAC7C,OAAOA,EAAMtG,OAASm/C,IAGxB,GAAI74C,EACF,OAAOA,EAGT,GAAiB,QAAb64C,EACF,OAAOJ,EAGT,IAAIM,EAAOD,EAAY39C,EAAMmuB,MAAO,SAAUtpB,GAC5C,OAAOA,EAAMtG,KAAKgJ,gBAAkBm2C,EAASn2C,gBAG/C,MAAM,IAAIpF,UAAU,iBAAmBu7C,EAAW,KAC7CE,EAAQ,mBAAqBA,EAAKr/C,KAAO,KAAQ,KAQxD,SAASs/C,EAAch+C,GACrB,OAAIA,IAASy9C,EACJ,IAGFt9C,EAAMmuB,MAAMvmB,QAAQ/H,GAS7B,SAASi+C,EAAat7C,GACpB,IAAIqC,EAAQ84C,EAAY39C,EAAMmuB,MAAO,SAAUtpB,GAC7C,OAAOA,EAAMC,KAAKtC,KAGpB,GAAIqC,EACF,OAAOA,EAAMtG,KAGf,MAAM,IAAI4D,UAAU,kCAAoCK,GA+E1D,SAASu7C,EAAiBtxB,GACxB,OAAOA,EACF9sB,IAAI,SAAU8wC,GACb,IAAIuN,EAAYvN,EAAMtiB,MAAMxuB,IAAIs+C,GAEhC,OAAQxN,EAAMyN,UAAY,MAAQ,IAAMF,EAAUj5C,KAAK,OAExDA,KAAK,KASZ,SAASo5C,EAAY1N,EAAOsM,GAC1B,IA0dsCiB,EAClCxf,EA3dA0f,EAAqC,IAAzBzN,EAAM7oC,QAAQ,OAO1Bo2C,GANUE,EAEPzN,EAAMjvC,OAAS,EACZivC,EAAM3sC,MAAM,GACZ,MAHJ2sC,GAKgB3oC,MAAM,KAAKnI,IAAIy+C,GAChC15C,OAAO25C,GACP35C,OAAO45C,GAERC,GA+ckCP,EA/cmBA,EAgdrDxf,KAhdwCue,EAkdhCx6C,QAAQ,SAAUi8C,IACgB,IAAxCR,EAAUp2C,QAAQ42C,EAAW1c,QACS,IAAtCkc,EAAUp2C,QAAQ42C,EAAWhwC,KAC5BgwB,EAAQggB,EAAW1c,QACtBtD,EAAQggB,EAAW1c,MAAQ0c,KAIxB9/C,OAAOwkB,KAAKsb,GAAS7+B,IAAI,SAAUmiC,GACxC,OAAOtD,EAAQsD,MAzdb2c,EAAaT,EAAUr+C,IAAI,SAAU+9C,GACvC,IAAI79C,EAAO49C,EAAeC,GAE1B,OACEn/C,KAAMm/C,EACNgB,UAAWb,EAAch+C,GACzBiF,KAAMjF,EAAKiF,KACX05C,WAAY,KACZG,iBAAkB,KAIlBC,EAAmBL,EAAoB5+C,IAAI,SAAU6+C,GACvD,IAAI3+C,EAAO49C,EAAee,EAAW1c,MAErC,OACEvjC,KAAMigD,EAAW1c,KACjB4c,UAAWb,EAAch+C,GACzBiF,KAAMjF,EAAKiF,KACX05C,WAAYA,EACZG,gBAAiB5B,EAAYn1C,QAAQ42C,MAIzC,OACErwB,MAAOswB,EAAWp2C,OAAOu2C,GACzBV,UAAWA,GAgDf,SAASW,EAAapyB,GACpB,IAAIgkB,EAAQn3B,EAAKmT,GACjB,QAAOgkB,GAAQA,EAAMyN,UASvB,SAASY,EAAerO,GACtB,OAAOA,EAAMtiB,MAAM6W,KAAK,SAAUnlC,GAChC,OAA0B,MAAnBA,EAAK2+C,aAUhB,SAASO,EAAYtO,GACnB,GAAKA,GAAgC,IAAvBA,EAAMtiB,MAAM3sB,OAIrB,CAAA,GAA2B,IAAvBivC,EAAMtiB,MAAM3sB,OACnB,OAAOi8C,EAAehN,EAAMtiB,MAAM,GAAG5vB,MAAMuG,KAExC,GAA2B,IAAvB2rC,EAAMtiB,MAAM3sB,OAAc,CACjC,IAAIw9C,EAAQvB,EAAehN,EAAMtiB,MAAM,GAAG5vB,MAAMuG,KAC5Cm6C,EAAQxB,EAAehN,EAAMtiB,MAAM,GAAG5vB,MAAMuG,KAChD,OAAO,SAAYlF,GACjB,OAAOo/C,EAAMp/C,IAAMq/C,EAAMr/C,IAI3B,IAAIs/C,EAAQzO,EAAMtiB,MAAMxuB,IAAI,SAAUE,GACpC,OAAO49C,EAAe59C,EAAKtB,MAAMuG,OAEnC,OAAO,SAAYlF,GACjB,IAAK,IAAI3B,EAAI,EAAGA,EAAIihD,EAAM19C,OAAQvD,IAChC,GAAIihD,EAAMjhD,GAAG2B,GACX,OAAO,EAGX,OAAO,GAtBT,OAAOu9C,EAgCX,SAASgC,EAAa1yB,GACpB,IAAIyyB,EAAOF,EAAOC,EAwvBH17C,EAtvBf,GAAIs7C,EAAapyB,GAAS,CAGxB,IAAI2yB,GADJF,GAovBa37C,EApvBGkpB,EAqvBXlpB,EAAIO,MAAM,EAAGP,EAAI/B,OAAS,IArvBP7B,IAAIo/C,IACPv9C,OACjB69C,EAAWN,EAAYzlC,EAAKmT,IAUhC,OAAO,SAAkB7Q,GACvB,IAAK,IAAI3d,EAAI,EAAGA,EAAIihD,EAAM19C,OAAQvD,IAChC,IAAKihD,EAAMjhD,GAAG2d,EAAK3d,IACjB,OAAO,EAGX,OAfkB,SAAU2d,GAC5B,IAAK,IAAI3d,EAAImhD,EAAUnhD,EAAI2d,EAAKpa,OAAQvD,IACtC,IAAKohD,EAASzjC,EAAK3d,IACjB,OAAO,EAGX,OAAO,EASAqhD,CAAc1jC,IAAUA,EAAKpa,QAAU49C,EAAW,GAK3D,OAAsB,IAAlB3yB,EAAOjrB,OACF,SAAkBoa,GACvB,OAAuB,IAAhBA,EAAKpa,QAGW,IAAlBirB,EAAOjrB,QACdw9C,EAAQD,EAAYtyB,EAAO,IACpB,SAAkB7Q,GACvB,OAAOojC,EAAMpjC,EAAK,KAAuB,IAAhBA,EAAKpa,SAGP,IAAlBirB,EAAOjrB,QACdw9C,EAAQD,EAAYtyB,EAAO,IAC3BwyB,EAAQF,EAAYtyB,EAAO,IACpB,SAAkB7Q,GACvB,OAAOojC,EAAMpjC,EAAK,KAAOqjC,EAAMrjC,EAAK,KAAuB,IAAhBA,EAAKpa,UAIlD09C,EAAQzyB,EAAO9sB,IAAIo/C,GACZ,SAAkBnjC,GACvB,IAAK,IAAI3d,EAAI,EAAGA,EAAIihD,EAAM19C,OAAQvD,IAChC,IAAKihD,EAAMjhD,GAAG2d,EAAK3d,IACjB,OAAO,EAGX,OAAO2d,EAAKpa,SAAW09C,EAAM19C,SAcrC,SAAS+9C,EAAgB57B,EAAW3hB,GAClC,OAAOA,EAAQ2hB,EAAU8I,OAAOjrB,OAC1BmiB,EAAU8I,OAAOzqB,GACjB68C,EAAal7B,EAAU8I,QACnBnT,EAAKqK,EAAU8I,QACf,KAUZ,SAAS+yB,EAAsB77B,EAAW3hB,EAAOy9C,GAC/C,IAAIhP,EAAQ8O,EAAgB57B,EAAW3hB,GAOvC,OANYyuC,EACNgP,EACQhP,EAAMtiB,MAAMzpB,OAAOg7C,GACnBjP,EAAMtiB,UAGPxuB,IAAIs+C,GAQnB,SAASA,EAAYp+C,GACnB,OAAOA,EAAKtB,KAQd,SAASmhD,EAAY7/C,GACnB,OAA2B,OAApBA,EAAK2+C,iBAA2Cx7C,IAApBnD,EAAK2+C,WAU1C,SAASmB,EAAoB/oC,EAAY5U,GACvC,IAAIg8C,EAwsBN,SAAcz6C,GAEZ,IADA,IAAIgR,KACKtW,EAAI,EAAGA,EAAIsF,EAAI/B,OAAQvD,IAC9BsW,EAAQhR,EAAItF,KAAM,EAEpB,OAAOS,OAAOwkB,KAAK3O,GA7sBHqrC,CAAKC,EAAQjpC,EAAY,SAAU+M,GACjD,OAAO67B,EAAqB77B,EAAW3hB,GAAO,MAGhD,OAAsC,IAA9Bg8C,EAAUp2C,QAAQ,QAAkB,OAASo2C,EA+FvD,SAAS8B,EAAoBrP,GAG3B,IAFA,IAAI1tC,EAAM,IAED9E,EAAI,EAAGA,EAAIwyC,EAAMtiB,MAAM3sB,OAAQvD,IAClCyhD,EAAYjP,EAAMtiB,MAAMlwB,MAC1B8E,EAAMD,KAAKC,IAAIA,EAAK0tC,EAAMtiB,MAAMlwB,GAAGygD,YAIvC,OAAO37C,EAST,SAASg9C,EAA0BtP,GAGjC,IAFA,IAAI1tC,EAAM,IAED9E,EAAI,EAAGA,EAAIwyC,EAAMtiB,MAAM3sB,OAAQvD,IACjCyhD,EAAYjP,EAAMtiB,MAAMlwB,MAC3B8E,EAAMD,KAAKC,IAAIA,EAAK0tC,EAAMtiB,MAAMlwB,GAAG0gD,kBAIvC,OAAO57C,EA4CT,SAASi9C,EAAmBC,EAAYC,GACtC,IACIjiD,EACAI,EApCkB8hD,EAAQC,EAC1B/hD,EAiCAuD,EAAMkB,KAAKC,IAAIk9C,EAAWxzB,OAAOjrB,OAAQ0+C,EAAWzzB,OAAOjrB,QAM/D,GAAU,IADVnD,EAAI4hD,EAAWxzB,OAAOuY,KAAK8Z,GAAkBoB,EAAWzzB,OAAOuY,KAAK8Z,IAElE,OAAOzgD,EAIT,IAAKJ,EAAI,EAAGA,EAAI2D,EAAK3D,IAEnB,GAAU,IADVI,EAAIygD,EAAemB,EAAWxzB,OAAOxuB,IAAM6gD,EAAeoB,EAAWzzB,OAAOxuB,KAE1E,OAAOI,EAKX,IAAKJ,EAAI,EAAGA,EAAI2D,EAAK3D,IAEnB,GAvDoBkiD,EAsDFF,EAAWxzB,OAAOxuB,GAtDRmiD,EAsDYF,EAAWzzB,OAAOxuB,GArDxDI,OAAAA,EAsDQ,KADVA,EAjDQ,IADVA,EAAI8hD,EAAOjC,UAAYkC,EAAOlC,WAErB7/C,EAKC,IADVA,EAAIygD,EAAeqB,GAAUrB,EAAesB,IAEnC/hD,EAKC,IADVA,EAAIyhD,EAAmBK,GAAUL,EAAmBM,IAE3C/hD,EAIF0hD,EAAyBI,GAAUJ,EAAyBK,IAkC/D,OAAO/hD,EAKX,OAAO4hD,EAAWxzB,OAAOjrB,OAAS0+C,EAAWzzB,OAAOjrB,OA6EtD,SAAS6+C,EAAqB5P,GAC5B,IAAIuO,EAAOC,EAAOqB,EAAaC,EAC3BrB,KACAnC,KAUJ,OARAtM,EAAMtiB,MAAM5rB,QAAQ,SAAU1C,GACxBA,EAAK2+C,aACPU,EAAM39C,KAAKk8C,EAAe59C,EAAK2+C,WAAW1c,MAAMh9B,MAChDi4C,EAAYx7C,KAAK1B,EAAK2+C,WAAWjsC,YAK7BwqC,EAAYv7C,QAClB,KAAK,EACH,OAAO,SAAoBsf,GACzB,OAAOA,GAGX,KAAK,EAGH,OAFAk+B,EAAQE,EAAM,GACdoB,EAAcvD,EAAY,GACnB,SAAoBj8B,GACzB,OAAIk+B,EAAMl+B,GACDw/B,EAAYx/B,GAEdA,GAGX,KAAK,EAKH,OAJAk+B,EAAQE,EAAM,GACdD,EAAQC,EAAM,GACdoB,EAAcvD,EAAY,GAC1BwD,EAAcxD,EAAY,GACnB,SAAoBj8B,GACzB,OAAIk+B,EAAMl+B,GACDw/B,EAAYx/B,GAEjBm+B,EAAMn+B,GACDy/B,EAAYz/B,GAEdA,GAGX,QACE,OAAO,SAAoBA,GACzB,IAAK,IAAI7iB,EAAI,EAAGA,EAAI8+C,EAAYv7C,OAAQvD,IACtC,GAAIihD,EAAMjhD,GAAG6iB,GACX,OAAOi8B,EAAY9+C,GAAG6iB,GAG1B,OAAOA,IA+Cf,SAAS0/B,EAAY/zB,EAAQg0B,GA4C3B,OA3CA,SAASC,EAAaj0B,EAAQzqB,EAAOmsB,GACnC,GAAInsB,EAAQyqB,EAAOjrB,OAAQ,CACzB,IAIIm/C,EAJAlQ,EAAQhkB,EAAOzqB,GACf4+C,EAAgBH,EACdhQ,EAAMtiB,MAAMzpB,OAAOg7C,GACnBjP,EAAMtiB,MAGZ,GAAIsiB,EAAMyN,UAAW,CAGnB,IAAIO,EAAamC,EAAcl8C,OAAOg7C,GACtCiB,EAAalC,EAAWj9C,OAASo/C,EAAcp/C,QACxCi9C,EAAYmC,IACZA,QAKPD,EAAaC,EAAcjhD,IAAI,SAAUE,GACvC,OAAQA,KAKZ,OAAOggD,EAAQc,EAAY,SAAUE,GACnC,OAAOH,EAAaj0B,EAAQzqB,EAAQ,EAAGmsB,EAAM9lB,QAAQw4C,OAavD,OAPqB1yB,EAAMxuB,IAAI,SAAUE,EAAM6+C,GAC7C,OACEvwB,MAAOtuB,EACPq+C,UAAYQ,IAAcjyB,EAAOjrB,OAAS,GAAMq9C,EAAapyB,OAQ9Di0B,CAAaj0B,EAAQ,MAyC9B,SAASq0B,EAAoBviD,EAAMwiD,GACjC,GAA0C,IAAtCriD,OAAOwkB,KAAK69B,GAAev/C,OAC7B,MAAM,IAAIgG,YAAY,0BAIxB,IAAIw5C,KACJtiD,OAAOwkB,KAAK69B,GACPphD,IAAI,SAAUgkB,GACb,OAzqBiBA,EAyqBKA,EAzqBM9S,EAyqBKkwC,EAAcp9B,GAzqBfo5B,EAyqB2B/8C,EAAM+8C,YAxqBnEtwB,KAEqB,KAArB9I,EAAUy6B,SACZ3xB,EAAS9I,EACJ7b,MAAM,KACNnI,IAAIy+C,GACJz+C,IAAI,SAAU8wC,EAAOzuC,EAAOxC,GAC3B,IAAIyhD,EAAc9C,EAAW1N,EAAOsM,GAEpC,GAAIkE,EAAY/C,WAAcl8C,IAAUxC,EAAMgC,OAAS,EACrD,MAAM,IAAIgG,YAAY,8BAAgCipC,EAAQ,0CAIhE,OAAOwQ,KAIXx0B,EAAOuY,KAAKkc,GAGP,MAIPz0B,OAAQA,EACR5b,GAAIA,GA3BR,IAAyB8S,EAAW9S,EAAIksC,EAClCtwB,IA0qBC/nB,OAAOy8C,GACP5+C,QAAQ,SAAU6+C,GAEjB,IAAIC,EAAuB1D,EAAYqD,EAAkB,SAAU1hD,GACjE,OA/CV,SAA8B2gD,EAAYC,GAGxC,IAFA,IAAI/7C,EAAKrB,KAAK0G,IAAIy2C,EAAWxzB,OAAOjrB,OAAQ0+C,EAAWzzB,OAAOjrB,QAErDvD,EAAI,EAAGA,EAAIkG,EAAIlG,IAItB,IAAKqjD,EAHa9B,EAAqBS,EAAYhiD,GAAG,GACpCuhD,EAAqBU,EAAYjiD,GAAG,IAGpD,OAAO,EAIX,IAAIsjD,EAAOtB,EAAWxzB,OAAOjrB,OACzBggD,EAAOtB,EAAWzzB,OAAOjrB,OACzBigD,EAAa5C,EAAaoB,EAAWxzB,QACrCi1B,EAAa7C,EAAaqB,EAAWzzB,QAEzC,OAAOg1B,EACDC,EAAcH,IAASC,EAASA,GAAQD,EACxCG,EAAcH,GAAQC,EAAUD,IAASC,EA4BhCG,CAAqBriD,EAAG8hD,KAEjC,GAAIC,EACF,MAAM,IAAIl/C,UAAU,2BAChB47C,EAAgBsD,EAAqB50B,QAAU,UAC/CsxB,EAAgBqD,EAAgB30B,QAAU,MAGhDu0B,EAAiBz/C,KAAK6/C,KAI5B,IAAIxqC,EAAaipC,EAAQmB,EAAkB,SAAUI,GAGnD,OAFaA,EAAkBZ,EAAYY,EAAgB30B,QAAQ,OAErD9sB,IAAI,SAAU8sB,GAC1B,OACEA,OAAQA,EACR5b,GAAIuwC,EAAgBvwC,QAGvBnM,OAAOy8C,GAEVvqC,EAAWwM,KAAK48B,GAGhB,IA5JIe,EA4JAa,EAAMhrC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFo1B,EAAMjrC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFq1B,EAAMlrC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFs1B,EAAMnrC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFu1B,EAAMprC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFw1B,EAAMrrC,EAAW,IAAMA,EAAW,GAAG6V,OAAOjrB,QAAU,IAAMq9C,EAAajoC,EAAW,GAAG6V,QACvFy1B,EAAQN,GAAOC,GAAOC,GAAOC,GAAOC,GAAOC,EAG3C/C,EAAQtoC,EAAWjX,IAAI,SAAUgkB,GACnC,OAAOw7B,EAAax7B,EAAU8I,UAG5B01B,EAASP,EAAM7C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDgF,EAASP,EAAM9C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDiF,EAASP,EAAM/C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDkF,EAASP,EAAMhD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDmF,EAASP,EAAMjD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDoF,EAASP,EAAMlD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EAEtDqF,EAASb,EAAM7C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDsF,EAASb,EAAM9C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDuF,EAASb,EAAM/C,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDwF,EAASb,EAAMhD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtDyF,EAASb,EAAMjD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EACtD0F,EAASb,EAAMlD,EAAYnoC,EAAW,GAAG6V,OAAO,IAAM2wB,EAGtD2F,EAAMnsC,EAAWjX,IAAI,SAASgkB,GAChC,OAvSJ,SAAkC8I,EAAQ5b,GACxC,IAAImyC,EAAYnyC,EAIhB,GAAI4b,EAAOuY,KAAK8Z,GAAiB,CAC/B,IAAIZ,EAAYW,EAAapyB,GACzBw2B,EAAsBx2B,EAAO9sB,IAAI0gD,GAErC2C,EAAY,WAGV,IAFA,IAAIpnC,KACAtC,EAAO4kC,EAAY/2C,UAAU3F,OAAS,EAAI2F,UAAU3F,OAC/CvD,EAAI,EAAGA,EAAIqb,EAAMrb,IACxB2d,EAAK3d,GAAKglD,EAAoBhlD,GAAGkJ,UAAUlJ,IAM7C,OAJIigD,IACFtiC,EAAKtC,GAAQnS,UAAUmS,GAAM3Z,IAAIsjD,EAAoB3pC,KAGhDzI,EAAGsQ,MAAM,KAAMvF,IAI1B,IAAIsnC,EAAeF,EACnB,GAAInE,EAAapyB,GAAS,CACxB,IAAI02B,EAAS12B,EAAOjrB,OAAS,EAE7B0hD,EAAe,WACb,OAAOF,EAAU7hC,MAAM,KACnBrd,EAAMqD,UAAW,EAAGg8C,GAAQ96C,QAAQvE,EAAMqD,UAAWg8C,OAI7D,OAAOD,EAsQEE,CAAyBz/B,EAAU8I,OAAQ9I,EAAU9S,MAG1DwyC,EAAMzB,EAAMmB,EAAI,GAAKzxB,EACrBgyB,EAAMzB,EAAMkB,EAAI,GAAKzxB,EACrBiyB,EAAMzB,EAAMiB,EAAI,GAAKzxB,EACrBkyB,EAAMzB,EAAMgB,EAAI,GAAKzxB,EACrBmyB,EAAMzB,EAAMe,EAAI,GAAKzxB,EACrBoyB,GAAMzB,EAAMc,EAAI,GAAKzxB,EAErBqyB,GAAO/B,EAAMhrC,EAAW,GAAG6V,OAAOjrB,QAAU,EAC5C+/C,GAAOM,EAAMjrC,EAAW,GAAG6V,OAAOjrB,QAAU,EAC5CggD,GAAOM,EAAMlrC,EAAW,GAAG6V,OAAOjrB,QAAU,EAC5CoiD,GAAO7B,EAAMnrC,EAAW,GAAG6V,OAAOjrB,QAAU,EAC5CqiD,GAAO7B,EAAMprC,EAAW,GAAG6V,OAAOjrB,QAAU,EAC5CsiD,GAAO7B,EAAMrrC,EAAW,GAAG6V,OAAOjrB,QAAU,EAG5CuiD,GAAS7B,EAAQ,EAAI,EACrB8B,GAAOptC,EAAWpV,OAClByiD,GAAU,WAGZ,IAAK,IAAIhmD,EAAI8lD,GAAQ9lD,EAAI+lD,GAAM/lD,IAC7B,GAAIihD,EAAMjhD,GAAGkJ,WACX,OAAO47C,EAAI9kD,GAAGkjB,MAAM,KAAMha,WAI9B,MA9hBJ,SAAqB5I,EAAMqd,EAAMhF,GAC/B,IAAIuN,EAAKxP,EAKL3S,EAJAkiD,EAAQ3lD,GAAQ,UAGhB4lD,EAAqBvtC,EAEzB,IAAK5U,EAAQ,EAAGA,EAAQ4Z,EAAKpa,OAAQQ,IAAS,CAC5C,IAAIoiD,EAAmBD,EAAmBz/C,OAAO,SAAUif,GACzD,IAAI7e,EAAOi6C,EAAYQ,EAAgB57B,EAAW3hB,IAClD,OAAQA,EAAQ2hB,EAAU8I,OAAOjrB,QAAUq9C,EAAal7B,EAAU8I,UAC9D3nB,EAAK8W,EAAK5Z,MAGhB,GAAgC,IAA5BoiD,EAAiB5iD,QAGnB,IADAmT,EAAWgrC,EAAoBwE,EAAoBniD,IACtCR,OAAS,EAAG,CACvB,IAAI6iD,EAAavG,EAAaliC,EAAK5Z,IAYnC,OAVAmiB,EAAM,IAAIhiB,UAAU,2CAA6C+hD,EAC7D,eAAiBvvC,EAAS5P,KAAK,QAC/B,aAAes/C,EAAa,YAAcriD,EAAQ,MAClDvB,MACFuuC,SAAU,YACVn+B,GAAIqzC,EACJliD,MAAOA,EACP0S,OAAQ2vC,EACR1vC,SAAUA,GAELwP,QAITggC,EAAqBC,EAKzB,IAAIE,EAAUH,EAAmBxkD,IAAI,SAAUgkB,GAC7C,OAAOk7B,EAAal7B,EAAU8I,QAAU7mB,EAAAA,EAAW+d,EAAU8I,OAAOjrB,SAEtE,GAAIoa,EAAKpa,OAASsB,KAAKC,IAAIoe,MAAM,KAAMmjC,GAWrC,OAVA3vC,EAAWgrC,EAAoBwE,EAAoBniD,IACnDmiB,EAAM,IAAIhiB,UAAU,iCAAmC+hD,EACnD,eAAiBvvC,EAAS5P,KAAK,QAC/B,YAAc6W,EAAKpa,OAAS,MAC5Bf,MACFuuC,SAAU,aACVn+B,GAAIqzC,EACJliD,MAAO4Z,EAAKpa,OACZmT,SAAUA,GAELwP,EAIT,IAAIogC,EAAYzhD,KAAK0G,IAAI2X,MAAM,KAAMmjC,GACrC,OAAI1oC,EAAKpa,OAAS+iD,IAChBpgC,EAAM,IAAIhiB,UAAU,kCAAoC+hD,EACpD,eAAiBK,EAAY,aAAe3oC,EAAKpa,OAAS,MAC1Df,MACFuuC,SAAU,cACVn+B,GAAIqzC,EACJliD,MAAO4Z,EAAKpa,OACZgjD,eAAgBD,GAEXpgC,KAGTA,EAAM,IAAIhiB,UAAU,sBAAwByZ,EAAK7W,KAAK,MAClD,4DAA8Dm/C,EAAQ,MACtEzjD,MACFuuC,SAAU,WACVt6B,OAAQkH,EAAKjc,IAAIm+C,IAEZ35B,GAkdCsH,CAAYltB,EAAM4I,UAAWyP,IAKjC/F,GAAK,SAAY4zC,EAAM/hB,GAGzB,OAAIv7B,UAAU3F,SAAWmiD,IAAQxB,EAAOsC,IAAShC,EAAO/f,GAAgB2gB,EAAIliC,MAAM,KAAMha,WACpFA,UAAU3F,SAAW+/C,IAAQa,EAAOqC,IAAS/B,EAAOhgB,GAAgB4gB,EAAIniC,MAAM,KAAMha,WACpFA,UAAU3F,SAAWggD,IAAQa,EAAOoC,IAAS9B,EAAOjgB,GAAgB6gB,EAAIpiC,MAAM,KAAMha,WACpFA,UAAU3F,SAAWoiD,IAAQtB,EAAOmC,IAAS7B,EAAOlgB,GAAgB8gB,EAAIriC,MAAM,KAAMha,WACpFA,UAAU3F,SAAWqiD,IAAQtB,EAAOkC,IAAS5B,EAAOngB,GAAgB+gB,EAAItiC,MAAM,KAAMha,WACpFA,UAAU3F,SAAWsiD,IAAQtB,EAAOiC,IAAS3B,EAAOpgB,GAAgBghB,GAAIviC,MAAM,KAAMha,WAEjF88C,GAAQ9iC,MAAM,KAAMha,YAI7B,IACEzI,OAAOC,eAAekS,GAAI,QAASrO,MAAOjE,IAE5C,MAAO4lB,IASP,OAFAtT,GAAG+F,YAnPCmqC,KAmPgCnqC,EAlPzBrU,QAAQ,SAAUohB,GACtBA,EAAU8I,OAAOuY,KAAK8Z,IACzB0B,EAAY78B,EAAU8I,QAAQ,GAAMlqB,QAAQ,SAAUkqB,GACpDs0B,EAAchD,EAAgBtxB,IAAW9I,EAAU9S,OAKlDkwC,GA4OAlwC,GAQT,SAASytC,EAAUZ,GACjB,OAA2C,IAApC19C,EAAM20C,OAAO/sC,QAAQ81C,GAQ9B,SAASU,EAAK11C,GACZ,OAAOA,EAAI01C,OAQb,SAASC,EAAS31C,GAChB,QAASA,EAQX,SAASy4C,EAAQ3+C,GACf,OAAiB,OAAVA,EAQT,SAAS0+C,EAAgBzQ,GACvB,OAA8B,IAAvBA,EAAMtiB,MAAM3sB,OAiBrB,SAAS8X,EAAK/V,GACZ,OAAOA,EAAIA,EAAI/B,OAAS,GAU1B,SAASsC,EAAMP,EAAK0Q,EAAOC,GACzB,OAAO1T,MAAMrB,UAAU2E,MAAM3F,KAAKoF,EAAK0Q,EAAOC,GAmBhD,SAASotC,EAAWoD,EAAQC,GAC1B,IAAK,IAAI1mD,EAAI,EAAGA,EAAIymD,EAAOljD,OAAQvD,IACjC,GAZcuB,EAYDmlD,EAZQjV,EAYAgV,EAAOzmD,IAXE,IAAzBuB,EAAMoI,QAAQ8nC,GAYjB,OAAO,EAbb,IAAkBlwC,EAAOkwC,EAiBvB,OAAO,EAUT,SAASiO,EAAYp6C,EAAKuB,GACxB,IAAK,IAAI7G,EAAI,EAAGA,EAAIsF,EAAI/B,OAAQvD,IAC9B,GAAI6G,EAAKvB,EAAItF,IACX,OAAOsF,EAAItF,GA0BjB,SAAS4hD,EAAQt8C,EAAK9D,GACpB,OAAOe,MAAMrB,UAAUkJ,OAAO8Y,SAAU5d,EAAI5D,IAAIF,IAQlD,SAASmlD,EAAS7B,GAGhB,IAFA,IAAIxkD,EAAO,GAEFN,EAAI,EAAGA,EAAI8kD,EAAIvhD,OAAQvD,IAAK,CACnC,IAAI4S,EAAKkyC,EAAI9kD,GAGb,GAAI4S,EAAG+F,YAA0B,KAAZ/F,EAAGtS,KACtB,GAAa,KAATA,EACFA,EAAOsS,EAAGtS,UAEP,GAAIA,IAASsS,EAAGtS,KAAM,CACzB,IAAI4lB,EAAM,IAAI7hB,MAAM,0CAA4C/D,EAAO,aAAesS,EAAGtS,KAAO,KAKhG,MAJA4lB,EAAI1jB,MACFiU,OAAQ7D,EAAGtS,KACXoW,SAAUpW,GAEN4lB,GAKZ,OAAO5lB,EAiFT,OA9EAyB,EAAQ8gD,EAAoB,SAC1BlkB,iBAAkBkkB,EAClBpiD,OAAU,SAAUqiD,GAElB,IAAIgC,KACJ,IAAK,IAAIp/B,KAAao9B,EAChBA,EAAc3hD,eAAeukB,IAC/Bo/B,EAAIxhD,KAAKw/C,EAAcp9B,IAI3B,OAAOm9B,EADI8D,EAAQ7B,GACchC,IAEnC8D,cAAe,SAAU9B,GAKvB,IAJA,IAAI5+B,EACA5lB,EAAOqmD,EAAQ7B,GACfhC,KAEK9iD,EAAI,EAAGA,EAAI8kD,EAAIvhD,OAAQvD,IAAK,CACnC,IAAI4S,EAAKkyC,EAAI9kD,GAGb,GAA+B,iBAAlB4S,EAAG+F,WAGd,MAFAuN,EAAM,IAAIhiB,UAAU,yCAA2ClE,EAAI,MAC/DwC,MAAQuB,MAAO/D,GACbkmB,EAIR,IAAK,IAAIR,KAAa9S,EAAG+F,WACvB,GAAI/F,EAAG+F,WAAWxX,eAAeukB,GAC/B,GAAIo9B,EAAc3hD,eAAeukB,IAC/B,GAAI9S,EAAG+F,WAAW+M,KAAeo9B,EAAcp9B,GAG7C,MAFAQ,EAAM,IAAI7hB,MAAM,cAAgBqhB,EAAY,uBACxCljB,MAAQkjB,UAAWA,GACjBQ,OAKR48B,EAAcp9B,GAAa9S,EAAG+F,WAAW+M,GAMjD,OAAOm9B,EAAoBviD,EAAMwiD,OAI/B7/B,OAASA,EACflhB,EAAMmuB,MAAQkvB,EACdr9C,EAAM+8C,YAAcS,EACpBx9C,EAAM20C,OAAS4I,EACfv9C,EAAMuS,QAhmCN,SAAkB/P,EAAO3C,GACvB,IAAIiiC,EAAOgc,EAAat7C,GAGxB,GAAI3C,IAASiiC,EACX,OAAOt/B,EAGT,IAAK,IAAIvE,EAAI,EAAGA,EAAI+B,EAAM+8C,YAAYv7C,OAAQvD,IAAK,CACjD,IAAIugD,EAAax+C,EAAM+8C,YAAY9+C,GACnC,GAAIugD,EAAW1c,OAASA,GAAQ0c,EAAWhwC,KAAO3O,EAChD,OAAO2+C,EAAWjsC,QAAQ/P,GAI9B,MAAM,IAAIF,MAAM,uBAAyBw/B,EAAO,OAASjiC,IAklC3DG,EAAMwS,KAvoCN,SAAe3B,EAAI8S,GACjB,IAAK9S,EAAG+F,WACN,MAAM,IAAIzU,UAAU,iCAItB,IAAIoB,EACJ,GAAyB,iBAAdogB,EAAwB,CACjCpgB,EAAMogB,EAAU7b,MAAM,KACtB,IAAK,IAAI7J,EAAI,EAAGA,EAAIsF,EAAI/B,OAAQvD,IAC9BsF,EAAItF,GAAKsF,EAAItF,GAAGmgD,WAGf,CAAA,IAAI59C,MAAMc,QAAQqiB,GAIrB,MAAM,IAAIxhB,UAAU,qDAHpBoB,EAAMogB,EAMR,IAAIjb,EAAMnF,EAAIwB,KAAK,KAGfsC,EAAQwJ,EAAG+F,WAAWlO,GAC1B,GAAIrB,EACF,OAAOA,EAKT,MAAM,IAAIlF,UAAU,oCAAsC0O,EAAGtS,MAAQ,WAAa,IAAMgF,EAAIwB,KAAK,MAAQ,OA4mC3G/E,EAAM8kD,QAAU,SAAUjlD,GACxB,IAAKA,GAA6B,iBAAdA,EAAKtB,MAA0C,mBAAdsB,EAAKiF,KACxD,MAAM,IAAI3C,UAAU,kEAGtBnC,EAAMmuB,MAAM5sB,KAAK1B,IAInBG,EAAM+kD,cAAgB,SAAUvG,GAC9B,IAAKA,GAC6B,iBAApBA,EAAW1c,MACO,iBAAlB0c,EAAWhwC,IACY,mBAAvBgwC,EAAWjsC,QACvB,MAAM,IAAIpQ,UAAU,iFAGtBnC,EAAM+8C,YAAYx7C,KAAKi9C,IAGlBx+C,EAGFkhB,KAt0CJ87B,EAA+B77B,MAAM5jB,EAAS0/C,GAAiCD,KAChCx/C,EAAOD,QAAU2/C,IA00C/D,SAAU1/C,EAAQD,GAExB,SAASqpC,KAKTA,EAAEznC,WACAilC,GAAI,SAAU7lC,EAAMkB,EAAUulD,GAC5B,IAAIjhD,EAAInG,KAAKmG,IAAMnG,KAAKmG,MAOxB,OALCA,EAAExF,KAAUwF,EAAExF,QAAagD,MAC1BsP,GAAIpR,EACJulD,IAAKA,IAGApnD,MAGT0mC,KAAM,SAAU/lC,EAAMkB,EAAUulD,GAC9B,IAAIrnD,EAAOC,KACX,SAASqnD,IACPtnD,EAAK0mC,IAAI9lC,EAAM0mD,GACfxlD,EAAS0hB,MAAM6jC,EAAK79C,WAItB,OADA89C,EAASC,EAAIzlD,EACN7B,KAAKwmC,GAAG7lC,EAAM0mD,EAAUD,IAGjCzgB,KAAM,SAAUhmC,GAMd,IALA,IAAIkC,KAAUqD,MAAM3F,KAAKgJ,UAAW,GAChCg+C,IAAWvnD,KAAKmG,IAAMnG,KAAKmG,OAASxF,QAAauF,QACjD7F,EAAI,EACJ2D,EAAMujD,EAAO3jD,OAETvD,EAAI2D,EAAK3D,IACfknD,EAAOlnD,GAAG4S,GAAGsQ,MAAMgkC,EAAOlnD,GAAG+mD,IAAKvkD,GAGpC,OAAO7C,MAGTymC,IAAK,SAAU9lC,EAAMkB,GACnB,IAAIsE,EAAInG,KAAKmG,IAAMnG,KAAKmG,MACpBqhD,EAAOrhD,EAAExF,GACT8mD,KAEJ,GAAID,GAAQ3lD,EACV,IAAK,IAAIxB,EAAI,EAAG2D,EAAMwjD,EAAK5jD,OAAQvD,EAAI2D,EAAK3D,IACtCmnD,EAAKnnD,GAAG4S,KAAOpR,GAAY2lD,EAAKnnD,GAAG4S,GAAGq0C,IAAMzlD,GAC9C4lD,EAAW9jD,KAAK6jD,EAAKnnD,IAY3B,OAJConD,EAAiB,OACdthD,EAAExF,GAAQ8mD,SACHthD,EAAExF,GAENX,OAIXJ,EAAOD,QAAUqpC,GAKX,SAAUppC,EAAQD,EAASQ,GAEjC,aAGA,IAAI6S,EAAO7S,EAAoB,GAAG6S,KAC9BS,EAAYtT,EAAoB,GAAGsT,UACnCJ,EAAWlT,EAAoB,GAAGkT,SAClC2U,EAAiB7nB,EAAoB,IA0SzCR,EAAQ0d,MAAO,EACf1d,EAAQgB,KAAO,SACfhB,EAAQD,QA1SR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAkG3C,SAASqqC,EAAQ/mD,EAAMiE,EAAOmD,GAO5B,GALIA,EAAQ4/C,MAAyB,mBAAV/iD,IA6DvBgjD,EAAU,WAEZ,IADA,IAAI5pC,KACK3d,EAAI,EAAG2D,EAAMuF,UAAU3F,OAAQvD,EAAI2D,EAAK3D,IAAK,CACpD,IAAI6iB,EAAM3Z,UAAUlJ,GACpB2d,EAAK3d,GAAK6iB,GAAOA,EAAI7Q,UAEvB,OAAOY,EAAGsQ,MAAMlG,EAAMW,KAPV/K,EA1DErO,GAoET4Z,YACLopC,EAAQppC,UAAYvL,EAAGuL,WArEvB5Z,EAwEKgjD,GArEHC,EAAgBxqC,EAAK1c,KAAUknD,EAAgBjjD,GAejD,OAZEA,EAFEmD,EAAQ+/C,SAEF1lD,EAAMzB,EAAMiE,EAAMoU,YAIlB5W,EAAMib,EAAK1c,GAAOiE,GAG5ByY,EAAK1c,GAAQiE,EACbmjD,EAAiBpnD,EAAMiE,QACvByY,EAAKspB,KAAK,SAAUhmC,EAAM,WACxB,OAAOiE,IA0Cb,IAAgBqO,EACV20C,EAtCJ,QAAmBxiD,IAAfiY,EAAK1c,IAAuBoH,EAAQ+/C,SAMtC,OALAzqC,EAAK1c,GAAQiE,EACbmjD,EAAiBpnD,EAAMiE,QACvByY,EAAKspB,KAAK,SAAUhmC,EAAM,WACxB,OAAOiE,IAKX,IAAKmD,EAAQigD,OACX,MAAM,IAAItjD,MAAM,kBAAoB/D,EAAO,qBAI/C,SAASonD,EAAkBpnD,EAAMiE,GAC3BA,GAAoC,mBAApBA,EAAM4Z,WACxBnB,EAAKS,WAAWU,UAAU7d,GAAQiE,EAAM4Z,UACpCypC,EAAqBtnD,KACvB0c,EAAKS,WAAWC,kBAAkBpd,GAAQiE,EAAM4Z,oBAK3CnB,EAAKS,WAAWU,UAAU7d,GAC7BsnD,EAAqBtnD,KACvB0c,EAAKS,WAAWC,kBAAkBpd,GAAQiE,IAmChD,SAASsjD,EAAexoD,EAASqI,GAC/B,GAA4B,iBAAjBrI,EAAQiB,KAAmB,CACpC,IAAIA,EAAOjB,EAAQiB,KACfwnD,EAAoBxnD,KAAQ0c,EAAKS,WAAWU,UAC5C4pC,EAAY1oD,EAAQ4T,KAAOD,EAASgK,EAAM3d,EAAQ4T,MAAQ+J,EAC1DgrC,EAAWD,EAAU5mD,eAAeb,GAAQynD,EAAUznD,QAAQyE,EAE9DkjD,EAAW,WACb,IAAI7J,EAAWt8C,EAAKzC,GACpB,GAAI++C,GAA0C,mBAAvBA,EAASjgC,UAC9B,MAAM,IAAI9Z,MAAM,yIAIlB,GAAImjD,EAAgBQ,IAAaR,EAAgBpJ,GAS/C,OARI12C,EAAQ+/C,WAKVrJ,EAAWr8C,EAAMimD,EAAU5J,IAGtBA,EAGT,QAAiBr5C,IAAbijD,GAA0BtgD,EAAQ+/C,SACpC,OAAOrJ,EAGT,IAAK12C,EAAQigD,OACX,MAAM,IAAItjD,MAAM,kBAAoB/D,EAAO,uBAI1B,IAAjBjB,EAAQsT,MACVA,EAAKo1C,EAAWznD,EAAM2nD,GAEjBH,IACkB,yBAAjBzoD,EAAQ4T,MAAmCi1C,EAA4B7oD,KACzEsT,EAAKqK,EAAKS,WAAWC,kBAAmBpd,EAAM2nD,KAKlDF,EAAUznD,GAAQ2nD,IAEbH,IACkB,yBAAjBzoD,EAAQ4T,MAAmCi1C,EAA4B7oD,MACzE2d,EAAKS,WAAWC,kBAAkBpd,GAAQ2nD,MAKhDjrC,EAAKspB,KAAK,SAAUhmC,EAAM2nD,EAAU5oD,EAAQ4T,WAK5CnR,EAAKzC,GA6BT,SAASmoD,EAAiB50C,GACxB,MAAqB,mBAAPA,GAA8C,iBAAlBA,EAAG+F,WAG/C,SAASivC,EAAsBtnD,GAC7B,OAAQ6nD,EAAOhnD,eAAeb,GAGhC,SAAS4nD,EAA6B7oD,GACpC,YAAwB0F,IAAjB1F,EAAQ4T,OAAuBk1C,EAAOhnD,eAAe9B,EAAQiB,MAItE,IAAI6nD,GACF1qC,YAAc,EACd7b,MAAQ,EACRymC,MAAQ,EACRjY,OAAS,EACTzM,MAAQ,EACRykC,OAAS,GAGX,OArPA,SAASC,EAAYrnD,EAAQ0G,GAC3B,IA2MuB1G,EA3MnBo7B,EAAMlzB,UAAU3F,OACpB,GAAY,IAAR64B,GAAqB,IAARA,EACf,MAAM,IAAIzU,EAAe,SAAUyU,EAAK,EAAG,GAO7C,GAJK10B,IACHA,MAGE0L,EAAUpS,GACZ6mD,EAAe7mD,EAAQ0G,QAGpB,GAAInF,MAAMc,QAAQrC,GACrBA,EAAOsD,QAAQ,SAAUsC,GACvByhD,EAAYzhD,EAAOc,UAGlB,GAAsB,iBAAX1G,GAEd,IAAK,IAAIV,KAAQU,EACf,GAAIA,EAAOG,eAAeb,GAAO,CAC/B,IAAIiE,EAAQvD,EAAOV,GAsLA,mBADFU,EApLGuD,IAsLD,iBAAXvD,GACW,iBAAXA,GACW,kBAAXA,GACI,OAAXA,GACCA,GAAUY,EAAKiQ,OAAO7Q,IACtBA,GAAUY,EAAKmxB,UAAU/xB,IACzBA,GAAUY,EAAKkQ,YAAY9Q,IAC3BA,GAAUY,EAAKoxB,WAAWhyB,IAC1BA,GAAUY,EAAK2V,SAASvW,IACxBA,GAAUuB,MAAMc,QAAQrC,GA9LxBqmD,EAAQ/mD,EAAMiE,EAAOmD,GAEd0L,EAAUpS,GACjB6mD,EAAe7mD,EAAQ0G,GAGvB2gD,EAAY9jD,EAAOmD,SAMzB,IAAKA,EAAQigD,OACX,MAAM,IAAIzjD,UAAU,wCAqN5B5E,EAAQqT,MAAO,GAKT,SAAUpT,EAAQD,EAASQ,GAEjC,aAGA,IAAIkB,EAASlB,EAAoB,GAsGjC,SAASwoD,EAAe5gD,EAASpH,EAAMqa,GACrC,QAAsB5V,IAAlB2C,EAAQpH,KAzBKiB,EAyB4BoZ,EAzBrB82B,EAyB6B/pC,EAAQpH,IAxB7B,IAAzBiB,EAAMoI,QAAQ8nC,IAwBgD,CACnE,IAAI1tC,GAhBYxC,EAgBMoZ,EAhBC82B,EAgBO/pC,EAAQpH,GAfjCiB,EACFG,IAAI,SAAU1B,GACb,OAAOA,EAAEsJ,gBAEVK,QAAQ8nC,EAAKnoC,iBAYD,IAAXvF,GAGF4E,QAAQC,KAAK,mDAAqDtI,EAAO,iBAAmBqa,EAAO5W,GAAS,iBAAmB2D,EAAQpH,GAAQ,MAE/IoH,EAAQpH,GAAQqa,EAAO5W,IAIvB4E,QAAQC,KAAK,2BAA6BlB,EAAQpH,GAAQ,+BAAiCA,EAAO,yBAA2Bqa,EAAOjZ,IAAImH,KAAKC,WAAWhC,KAAK,MAAQ,KA1B3K,IAAoBvF,EAAOkwC,EAVRlwC,EAAOkwC,EAyC1BnyC,EAAQgB,KAAO,SACfhB,EAAQ0d,MAAO,EACf1d,EAAQD,QAvHR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAIurC,GAAU,SAAU,SACpBt/B,GAAU,SAAU,YAAa,YAoCrC,SAASi1B,EAAQx2C,GACf,GAAIA,EAAS,CACX,IAAIlC,EAAOxE,EAAOU,IAAIG,EAAQb,EAAO+Q,OAGrCu2C,EAAe5gD,EAAS,SAAU6gD,GAClCD,EAAe5gD,EAAS,SAAUuhB,GAGlCjoB,EAAOuR,WAAW1Q,EAAQ6F,GAE1B,IAAIjC,EAAOzE,EAAOU,IAAIG,EAAQb,EAAO+Q,OAEjCy2C,EAAUxnD,EAAOU,IAAIgG,EAAS1G,EAAO+Q,OAKzC,OAFAiL,EAAKspB,KAAK,SAAU7gC,EAAMD,EAAMgjD,GAEzB/iD,EAGP,OAAOzE,EAAOU,IAAIG,EAAQb,EAAO+Q,OAQrC,OAHAmsC,EAAQqK,OAASA,EACjBrK,EAAQj1B,OAASA,EAEVi1B,IAyDH,SAAU3+C,EAAQD,EAASQ,GAEjCP,EAAOD,SACLQ,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjCP,EAAOD,SACLQ,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,KAGpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjC,IAAI2oD,EAAU3oD,EAAoB,KA4ClCR,EAAQgB,KAAO,YACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA5CR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAAI6G,EAAY4kC,EAAQ12C,OAAOjK,UAAWjG,EAAOiG,YAsCjD,OAjCA+b,EAAU3iB,UAAUU,KAAO,YAC3BiiB,EAAU3iB,UAAU4Q,aAAc,EAQlC+R,EAAU3iB,UAAUqiB,OAAS,WAC3B,OACEC,OAAQ,YACRjf,MAAO5E,KAAK+K,aAUhBmZ,EAAUH,SAAW,SAAUC,GAC7B,OAAO,IAAIE,EAAUF,EAAKpf,QAI5ByY,EAAKmpB,GAAG,SAAU,SAAU1gC,EAAMD,GAC5BC,EAAKqC,YAActC,EAAKsC,WAC1B+b,EAAUhiB,QAASiG,UAAWrC,EAAKqC,cAIhC+b,GAMTvkB,EAAQ0d,MAAO,GAIT,SAAUzd,EAAQD,EAASQ,GAEjC,IAAIm/C,GACH,SAAWyJ,GACV,aAiBA,IAkFED,EAASE,EAAqBC,EAlF5BC,EAAY,KAIdC,EAAa,IAGbC,EAAW,mBAGXtgD,EAAO,qgCAGPu9B,EAAK,qgCAILgjB,GAOElhD,UAAW,GAiBXmhD,SAAU,EAeVC,OAAQ,EAIRC,UAAW,EAIXC,SAAW,GAIXC,MAAOR,EAIPS,KAAMT,EAGNU,QAAQ,GAQVC,GAAW,EAEXC,EAAe,kBACfC,EAAkBD,EAAe,qBACjCE,EAAyBF,EAAe,2BACxCG,EAAoBH,EAAe,qBAEnCI,EAAYhlD,KAAKk/B,MACjB+lB,EAAUjlD,KAAK6K,IAEf2oB,EAAW,6CACX0xB,EAAQ,yDACRC,EAAU,gDACVC,EAAY,qCAEZC,EAAO,IACPC,EAAW,EAGXC,EAAiB3hD,EAAKlF,OAAS,EAC/B8mD,EAAerkB,EAAGziC,OAAS,EAG3B+mD,GAAMhqD,KAAM,oBAq1Ed,SAASiqD,EAAelqD,GACtB,IAAIL,EAAG6f,EAAG2qC,EACRC,EAAkBpqD,EAAEkD,OAAS,EAC7BkH,EAAM,GACNyP,EAAI7Z,EAAE,GAER,GAAIoqD,EAAkB,EAAG,CAEvB,IADAhgD,GAAOyP,EACFla,EAAI,EAAGA,EAAIyqD,EAAiBzqD,IAC/BwqD,EAAKnqD,EAAEL,GAAK,IACZ6f,EAAIsqC,EAAWK,EAAGjnD,UACXkH,GAAOigD,EAAc7qC,IAC5BpV,GAAO+/C,EAGTtwC,EAAI7Z,EAAEL,IAEN6f,EAAIsqC,GADJK,EAAKtwC,EAAI,IACS3W,UACXkH,GAAOigD,EAAc7qC,SACvB,GAAU,IAAN3F,EACT,MAAO,IAIT,KAAOA,EAAI,IAAO,GAAIA,GAAK,GAE3B,OAAOzP,EAAMyP,EAIf,SAASywC,EAAW3qD,EAAG8E,EAAKyG,GAC1B,GAAIvL,MAAQA,GAAKA,EAAI8E,GAAO9E,EAAIuL,EAC9B,MAAMlH,MAAMqlD,EAAkB1pD,GAUlC,SAAS4qD,EAAoBvqD,EAAGL,EAAG6qD,EAAIC,GACrC,IAAIC,EAAIlrC,EAAGC,EAAGkrC,EAGd,IAAKnrC,EAAIxf,EAAE,GAAIwf,GAAK,GAAIA,GAAK,KAAM7f,EAwCnC,QArCMA,EAAI,GACRA,GAAKmqD,EACLY,EAAK,IAELA,EAAKlmD,KAAKmiC,MAAMhnC,EAAI,GAAKmqD,GACzBnqD,GAAKmqD,GAMPtqC,EAAIiqC,EAAQ,GAAIK,EAAWnqD,GAC3BgrD,EAAK3qD,EAAE0qD,GAAMlrC,EAAI,EAEA,MAAbirC,EACE9qD,EAAI,GACG,GAALA,EAAQgrD,EAAKA,EAAK,IAAM,EACd,GAALhrD,IAAQgrD,EAAKA,EAAK,GAAK,GAChClrC,EAAI+qC,EAAK,GAAW,OAANG,GAAeH,EAAK,GAAW,OAANG,GAAqB,KAANA,GAAqB,GAANA,GAErElrC,GAAK+qC,EAAK,GAAKG,EAAK,GAAKnrC,GAAKgrC,EAAK,GAAKG,EAAK,GAAKnrC,EAAI,KACnDxf,EAAE0qD,EAAK,GAAKlrC,EAAI,IAAM,IAAMiqC,EAAQ,GAAI9pD,EAAI,GAAK,IAC/CgrD,GAAMnrC,EAAI,GAAW,GAANmrC,IAAyC,IAA5B3qD,EAAE0qD,EAAK,GAAKlrC,EAAI,IAAM,GAGrD7f,EAAI,GACG,GAALA,EAAQgrD,EAAKA,EAAK,IAAO,EACf,GAALhrD,EAAQgrD,EAAKA,EAAK,IAAM,EACnB,GAALhrD,IAAQgrD,EAAKA,EAAK,GAAK,GAChClrC,GAAKgrC,GAAaD,EAAK,IAAY,MAANG,IAAeF,GAAaD,EAAK,GAAW,MAANG,GAEnElrC,IAAMgrC,GAAaD,EAAK,IAAMG,EAAK,GAAKnrC,IACtCirC,GAAaD,EAAK,GAAMG,EAAK,GAAKnrC,EAAI,KACrCxf,EAAE0qD,EAAK,GAAKlrC,EAAI,IAAO,IAAMiqC,EAAQ,GAAI9pD,EAAI,GAAK,EAIlD8f,EAOT,SAASmrC,EAAYxgD,EAAKygD,EAAQC,GAOhC,IANA,IAAIt3C,EAEFwuB,EADA/8B,GAAO,GAEPtF,EAAI,EACJoiC,EAAO33B,EAAIlH,OAENvD,EAAIoiC,GAAO,CAChB,IAAKC,EAAO/8B,EAAI/B,OAAQ8+B,KAAS/8B,EAAI+8B,IAAS6oB,EAE9C,IADA5lD,EAAI,IAAMyjD,EAASp/C,QAAQc,EAAI+L,OAAOxW,MACjC6T,EAAI,EAAGA,EAAIvO,EAAI/B,OAAQsQ,IACtBvO,EAAIuO,GAAKs3C,EAAU,SACF,IAAf7lD,EAAIuO,EAAI,KAAevO,EAAIuO,EAAI,GAAK,GACxCvO,EAAIuO,EAAI,IAAMvO,EAAIuO,GAAKs3C,EAAU,EACjC7lD,EAAIuO,IAAMs3C,GAKhB,OAAO7lD,EAAIg9B,UA53EbgoB,EAAEc,cAAgBd,EAAEngD,IAAM,WACxB,IAAIxI,EAAI,IAAIhC,KAAK6S,YAAY7S,MAE7B,OADIgC,EAAEN,EAAI,IAAGM,EAAEN,EAAI,GACZgqD,EAAS1pD,IASlB2oD,EAAEtjB,KAAO,WACP,OAAOqkB,EAAS,IAAI1rD,KAAK6S,YAAY7S,MAAOA,KAAKmG,EAAI,EAAG,IAY1DwkD,EAAEgB,WAAahB,EAAE52B,IAAM,SAAUtoB,GAC/B,IAAIpL,EAAG6T,EAAG03C,EAAKC,EAEbC,EADI9rD,KACGU,EACPqrD,GAAMtgD,EAAI,IAFNzL,KAEY6S,YAAYpH,IAAI/K,EAChCsrD,EAHIhsD,KAGG0B,EACPuqD,EAAKxgD,EAAE/J,EAGT,IAAKoqD,IAAOC,EACV,OAAQC,GAAOC,EAAWD,IAAOC,EAAKD,EAAKF,IAAOC,EAAK,GAAKD,EAAKE,EAAK,EAAI,GAAK,EAA3DrkC,IAItB,IAAKmkC,EAAG,KAAOC,EAAG,GAAI,OAAOD,EAAG,GAAKE,EAAKD,EAAG,IAAME,EAAK,EAGxD,GAAID,IAAOC,EAAI,OAAOD,EAGtB,GAlBMhsD,KAkBAmG,IAAMsF,EAAEtF,EAAG,OAlBXnG,KAkBoBmG,EAAIsF,EAAEtF,EAAI6lD,EAAK,EAAI,GAAK,EAMlD,IAAK3rD,EAAI,EAAG6T,GAJZ03C,EAAME,EAAGloD,SACTioD,EAAME,EAAGnoD,QAGmBgoD,EAAMC,EAAKxrD,EAAI6T,IAAK7T,EAC9C,GAAIyrD,EAAGzrD,KAAO0rD,EAAG1rD,GAAI,OAAOyrD,EAAGzrD,GAAK0rD,EAAG1rD,GAAK2rD,EAAK,EAAI,GAAK,EAI5D,OAAOJ,IAAQC,EAAM,EAAID,EAAMC,EAAMG,EAAK,EAAI,GAAK,GAiBrDrB,EAAEuB,OAASvB,EAAEvkB,IAAM,WACjB,IAAI+lB,EAAIjB,EACNlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAK7Q,EAAEtB,EAGFsB,EAAEtB,EAAE,IAETyrD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAKjnD,KAAK0G,IAAI5J,EAAEmE,EAAGnE,EAAEqqD,MAAQ7B,EAC9C4B,EAAK9C,SAAW,EAEhBtnD,EA6yEF,SAAgBoqD,EAAMpqD,GACpB,IAAIke,EAAGzU,EACLzH,EAAMhC,EAAEtB,EAAEkD,OAMRI,EAAM,IACRkc,EAAIhb,KAAKmiC,KAAKrjC,EAAM,GACpByH,EAAIvG,KAAK6K,IAAI,GAAImQ,GAAGnV,aAEpBmV,EAAI,GACJzU,EAAI,gCAGN2gD,EAAKjkD,WAAa+X,EAElBle,EAAIsqD,EAAaF,EAAM,EAAGpqD,EAAE2e,MAAMlV,GAAI,IAAI2gD,EAAK,IAG/C,IAAK,IAAI/rD,EAAI6f,EAAG7f,KAAM,CACpB,IAAIksD,EAAQvqD,EAAE2e,MAAM3e,GACpBA,EAAIuqD,EAAM5rC,MAAM4rC,GAAO/rC,MAAM+rC,GAAO5rC,MAAM,GAAGlB,KAAK,GAKpD,OAFA2sC,EAAKjkD,WAAa+X,EAEXle,EAz0EHkqD,CAAOE,EAAMI,EAAiBJ,EAAMpqD,IAExCoqD,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETQ,EAAqB,GAAZzC,GAA6B,GAAZA,EAAgBjnD,EAAEqkB,MAAQrkB,EAAGmqD,EAAIjB,GAAI,IAZlD,IAAIkB,EAAK,GAHZ,IAAIA,EAAKzkC,MAmC5BgjC,EAAE8B,SAAW9B,EAAE7d,KAAO,WACpB,IAAI3mC,EAAG3F,EAAGW,EAAGgf,EAAGusC,EAAKhrD,EAAG2qD,EAAIl5B,EAAGw5B,EAAIC,EACjC5qD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,IAAK7Q,EAAE4F,YAAc5F,EAAE0kB,SAAU,OAAO,IAAI0lC,EAAKpqD,GAoCjD,IAnCA6nD,GAAW,GAGXnoD,EAAIM,EAAEN,EAAIwD,KAAK6K,IAAI/N,EAAEN,EAAIM,EAAG,EAAI,KAItBkD,KAAKsF,IAAI9I,IAAM,EAAA,EAqBvBye,EAAI,IAAIisC,EAAK1qD,EAAEqJ,aApBf5J,EAAIypD,EAAe5oD,EAAEtB,IAIjBgB,IAHJyE,EAAInE,EAAEmE,GAGOhF,EAAEyC,OAAS,GAAK,KAAGzC,GAAW,GAALO,IAAgB,GAANA,EAAU,IAAM,MAChEA,EAAIwD,KAAK6K,IAAI5O,EAAG,EAAI,GAGpBgF,EAAI+jD,GAAW/jD,EAAI,GAAK,IAAMA,EAAI,IAAMA,EAAI,GAAK,EAAI,KASrDga,EAAI,IAAIisC,EANNjrD,EADEO,GAAK,EAAA,EACH,KAAOyE,GAEXhF,EAAIO,EAAE2G,iBACAnC,MAAM,EAAG/E,EAAE6I,QAAQ,KAAO,GAAK7D,IAIrCzE,EAAIM,EAAEN,GAKV2qD,GAAMlmD,EAAIimD,EAAKjkD,WAAa,IAW1B,GAJAykD,GADAD,GADAx5B,EAAIhT,GACGQ,MAAMwS,GAAGxS,MAAMwS,IACT1T,KAAKzd,GAClBme,EAAI7P,EAAOs8C,EAAQntC,KAAKzd,GAAG2e,MAAMwS,GAAIy5B,EAAQntC,KAAKktC,GAAKN,EAAK,EAAG,GAG3DzB,EAAez3B,EAAEzyB,GAAGwF,MAAM,EAAGmmD,MAASlrD,EAAIypD,EAAezqC,EAAEzf,IAAIwF,MAAM,EAAGmmD,GAAK,CAK/E,GAAS,SAJTlrD,EAAIA,EAAE+E,MAAMmmD,EAAK,EAAGA,EAAK,MAILK,GAAY,QAALvrD,GAepB,EAICA,KAAOA,EAAE+E,MAAM,IAAqB,KAAf/E,EAAE0V,OAAO,MAGlC60C,EAASvrC,EAAGha,EAAI,EAAG,GACnB3F,GAAK2f,EAAEQ,MAAMR,GAAGQ,MAAMR,GAAGzK,GAAG1T,IAG9B,MAtBA,IAAK0qD,IACHhB,EAASv4B,EAAGhtB,EAAI,EAAG,GAEfgtB,EAAExS,MAAMwS,GAAGxS,MAAMwS,GAAGzd,GAAG1T,IAAI,CAC7Bme,EAAIgT,EACJ,MAIJk5B,GAAM,EACNK,EAAM,EAmBZ,OAFA7C,GAAW,EAEJ6B,EAASvrC,EAAGha,EAAGimD,EAAK9C,SAAU9oD,IAQvCmqD,EAAEkC,cAAgBlC,EAAEmC,GAAK,WACvB,IAAIvyC,EACF7Z,EAAIV,KAAKU,EACTS,EAAIwmB,IAEN,GAAIjnB,EAAG,CAML,GAJAS,IADAoZ,EAAI7Z,EAAEkD,OAAS,GACNsmD,EAAUlqD,KAAKmG,EAAIqkD,IAAaA,EAGzCjwC,EAAI7Z,EAAE6Z,GACC,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIpZ,IAChCA,EAAI,IAAGA,EAAI,GAGjB,OAAOA,GAyBTwpD,EAAEnuB,UAAYmuB,EAAExuC,IAAM,SAAU1Q,GAC9B,OAAO6E,EAAOtQ,KAAM,IAAIA,KAAK6S,YAAYpH,KAS3Ck/C,EAAEoC,mBAAqBpC,EAAEqC,SAAW,SAAUvhD,GAC5C,IACE2gD,EADMpsD,KACG6S,YACX,OAAO64C,EAASp7C,EAFRtQ,KAEkB,IAAIosD,EAAK3gD,GAAI,EAAG,EAAG,GAAI2gD,EAAKjkD,UAAWikD,EAAK9C,WAQxEqB,EAAE/0C,OAAS+0C,EAAEj1C,GAAK,SAAUjK,GAC1B,OAAuB,IAAhBzL,KAAK+zB,IAAItoB,IASlBk/C,EAAEvmB,MAAQ,WACR,OAAOsnB,EAAS,IAAI1rD,KAAK6S,YAAY7S,MAAOA,KAAKmG,EAAI,EAAG,IAS1DwkD,EAAEsC,YAActC,EAAEvkC,GAAK,SAAU3a,GAC/B,OAAOzL,KAAK+zB,IAAItoB,GAAK,GASvBk/C,EAAEuC,qBAAuBvC,EAAEruB,IAAM,SAAU7wB,GACzC,IAAIyU,EAAIlgB,KAAK+zB,IAAItoB,GACjB,OAAY,GAALyU,GAAgB,IAANA,GA6BnByqC,EAAEwC,iBAAmBxC,EAAEna,KAAO,WAC5B,IAAItwB,EAAG/e,EAAGgrD,EAAIjB,EAAIlnD,EAChBhC,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YACTqnB,EAAM,IAAIkyB,EAAK,GAEjB,IAAKpqD,EAAE4F,WAAY,OAAO,IAAIwkD,EAAKpqD,EAAEN,EAAI,EAAA,EAAQimB,KACjD,GAAI3lB,EAAE0kB,SAAU,OAAOwT,EAEvBiyB,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAKjnD,KAAK0G,IAAI5J,EAAEmE,EAAGnE,EAAEqqD,MAAQ,EAC9CD,EAAK9C,SAAW,GAChBtlD,EAAMhC,EAAEtB,EAAEkD,QAOA,IACRsc,EAAIhb,KAAKmiC,KAAKrjC,EAAM,GACpB7C,EAAI+D,KAAK6K,IAAI,GAAImQ,GAAGnV,aAEpBmV,EAAI,GACJ/e,EAAI,gCAGNa,EAAIsqD,EAAaF,EAAM,EAAGpqD,EAAE2e,MAAMxf,GAAI,IAAIirD,EAAK,IAAI,GAMnD,IAHA,IAAIgB,EACF/sD,EAAI6f,EACJmtC,EAAK,IAAIjB,EAAK,GACT/rD,KACL+sD,EAAUprD,EAAE2e,MAAM3e,GAClBA,EAAIk4B,EAAI1Z,MAAM4sC,EAAQzsC,MAAM0sC,EAAG7sC,MAAM4sC,EAAQzsC,MAAM0sC,MAGrD,OAAO3B,EAAS1pD,EAAGoqD,EAAKjkD,UAAYgkD,EAAIC,EAAK9C,SAAW4B,GAAI,IAkC9DP,EAAE2C,eAAiB3C,EAAE3Z,KAAO,WAC1B,IAAI9wB,EAAGisC,EAAIjB,EAAIlnD,EACbhC,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,IAAK7Q,EAAE4F,YAAc5F,EAAE0kB,SAAU,OAAO,IAAI0lC,EAAKpqD,GAQjD,GANAmqD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAKjnD,KAAK0G,IAAI5J,EAAEmE,EAAGnE,EAAEqqD,MAAQ,EAC9CD,EAAK9C,SAAW,GAChBtlD,EAAMhC,EAAEtB,EAAEkD,QAEA,EACR5B,EAAIsqD,EAAaF,EAAM,EAAGpqD,EAAGA,GAAG,OAC3B,CAYLke,GADAA,EAAI,IAAMhb,KAAKyuB,KAAK3vB,IACZ,GAAK,GAAS,EAAJkc,EAIlBle,EAAIsqD,EAAaF,EAAM,EAFvBpqD,EAAIA,EAAE2e,MAAMzb,KAAK6K,IAAI,GAAImQ,IAEIle,GAAG,GAOhC,IAJA,IAAIurD,EACFC,EAAK,IAAIpB,EAAK,GACdqB,EAAM,IAAIrB,EAAK,IACfsB,EAAM,IAAItB,EAAK,IACVlsC,KACLqtC,EAAUvrD,EAAE2e,MAAM3e,GAClBA,EAAIA,EAAE2e,MAAM6sC,EAAG/tC,KAAK8tC,EAAQ5sC,MAAM8sC,EAAI9sC,MAAM4sC,GAAS9tC,KAAKiuC,MAO9D,OAHAtB,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETQ,EAAS1pD,EAAGmqD,EAAIjB,GAAI,IAoB7BP,EAAEgD,kBAAoBhD,EAAEzZ,KAAO,WAC7B,IAAIib,EAAIjB,EAENkB,EADIpsD,KACK6S,YAEX,OAHM7S,KAGC4H,WAHD5H,KAIA0mB,SAAiB,IAAI0lC,EAJrBpsD,OAMNmsD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAK,EACtBC,EAAK9C,SAAW,EAETh5C,EAXDtQ,KAWUgxC,OAXVhxC,KAWoBwwC,OAAQ4b,EAAKjkD,UAAYgkD,EAAIC,EAAK9C,SAAW4B,IAR7C,IAAIkB,EAHxBpsD,KAG+B0B,IA+BvCipD,EAAEiD,cAAgBjD,EAAEljB,KAAO,WACzB,IAAIomB,EACF7rD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YACTqN,EAAIle,EAAEwI,MAAMupB,IAAI,GAChBo4B,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SAEZ,OAAW,IAAPppC,EACW,IAANA,EAEHle,EAAEq3B,QAAUy0B,EAAM1B,EAAMD,EAAIjB,GAAM,IAAIkB,EAAK,GAE3C,IAAIA,EAAKzkC,KAGX3lB,EAAE0kB,SAAiBonC,EAAM1B,EAAMD,EAAK,EAAGjB,GAAIvqC,MAAM,KAIrDyrC,EAAKjkD,UAAYgkD,EAAK,EACtBC,EAAK9C,SAAW,EAEhBtnD,EAAIA,EAAEmuC,OACN0d,EAASC,EAAM1B,EAAMD,EAAK,EAAGjB,GAAIvqC,MAAM,IAEvCyrC,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAET2C,EAAOrtC,MAAMxe,KAuBtB2oD,EAAEoD,wBAA0BpD,EAAE/a,MAAQ,WACpC,IAAIuc,EAAIjB,EACNlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAI7Q,EAAE2kB,IAAI,GAAW,IAAIylC,EAAKpqD,EAAE0T,GAAG,GAAK,EAAIiS,KACvC3lB,EAAE4F,YAEPukD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAKjnD,KAAK0G,IAAI1G,KAAKsF,IAAIxI,EAAEmE,GAAInE,EAAEqqD,MAAQ,EACxDD,EAAK9C,SAAW,EAChBO,GAAW,EAEX7nD,EAAIA,EAAE2e,MAAM3e,GAAGwe,MAAM,GAAGmT,OAAOlU,KAAKzd,GAEpC6nD,GAAW,EACXuC,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETlpD,EAAE65C,MAdiB,IAAIuQ,EAAKpqD,IAkCrC2oD,EAAEqD,sBAAwBrD,EAAEva,MAAQ,WAClC,IAAI+b,EAAIjB,EACNlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAK7Q,EAAE4F,YAAc5F,EAAE0kB,SAAiB,IAAI0lC,EAAKpqD,IAEjDmqD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAK,EAAIjnD,KAAK0G,IAAI1G,KAAKsF,IAAIxI,EAAEmE,GAAInE,EAAEqqD,MAAQ,EAC5DD,EAAK9C,SAAW,EAChBO,GAAW,EAEX7nD,EAAIA,EAAE2e,MAAM3e,GAAGyd,KAAK,GAAGkU,OAAOlU,KAAKzd,GAEnC6nD,GAAW,EACXuC,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETlpD,EAAE65C,OAuBX8O,EAAEsD,yBAA2BtD,EAAEra,MAAQ,WACrC,IAAI6b,EAAIjB,EAAIgD,EAAKC,EACfnsD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAK7Q,EAAE4F,WACH5F,EAAEmE,GAAK,EAAU,IAAIimD,EAAKpqD,EAAEwI,MAAMkL,GAAG,GAAK1T,EAAEN,EAAI,EAAIM,EAAE0kB,SAAW1kB,EAAI2lB,MAEzEwkC,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV6E,EAAMnsD,EAAEqqD,KAEJnnD,KAAK0G,IAAIuiD,EAAKhC,GAAM,GAAKnqD,EAAEmE,EAAI,EAAUulD,EAAS,IAAIU,EAAKpqD,GAAImqD,EAAIjB,GAAI,IAE3EkB,EAAKjkD,UAAY+lD,EAAMC,EAAMnsD,EAAEmE,EAE/BnE,EAAIsO,EAAOtO,EAAEyd,KAAK,GAAI,IAAI2sC,EAAK,GAAG5rC,MAAMxe,GAAIksD,EAAM/B,EAAI,GAEtDC,EAAKjkD,UAAYgkD,EAAK,EACtBC,EAAK9C,SAAW,EAEhBtnD,EAAIA,EAAE65C,KAENuQ,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETlpD,EAAE2e,MAAM,MArBW,IAAIyrC,EAAKzkC,MA8CrCgjC,EAAEyD,YAAczD,EAAExa,KAAO,WACvB,IAAI0d,EAAQ3tC,EACVisC,EAAIjB,EACJlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAI7Q,EAAE0kB,SAAiB,IAAI0lC,EAAKpqD,IAEhCke,EAAIle,EAAEwI,MAAMupB,IAAI,GAChBo4B,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,UAEC,IAAPppC,EAGQ,IAANA,IACF2tC,EAASC,EAAM1B,EAAMD,EAAK,EAAGjB,GAAIvqC,MAAM,KAChCjf,EAAIM,EAAEN,EACNmsD,GAIF,IAAIzB,EAAKzkC,MAKlBykC,EAAKjkD,UAAYgkD,EAAK,EACtBC,EAAK9C,SAAW,EAEhBtnD,EAAIA,EAAEma,IAAI,IAAIiwC,EAAK,GAAG5rC,MAAMxe,EAAE2e,MAAM3e,IAAI2xB,OAAOlU,KAAK,IAAI4wB,OAExD+b,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETlpD,EAAE2e,MAAM,MAsBjBgqC,EAAE0D,eAAiB1D,EAAEta,KAAO,WAC1B,IAAIhwC,EAAG6T,EAAGgM,EAAG/e,EAAGymB,EAAIuL,EAAGhT,EAAG+tC,EAAKI,EAC7BtsD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YACTs5C,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SAEZ,GAAKtnD,EAAE4F,WAOA,CAAA,GAAI5F,EAAE0kB,SACX,OAAO,IAAI0lC,EAAKpqD,GACX,GAAIA,EAAEwI,MAAMkL,GAAG,IAAMy2C,EAAK,GAAKzB,EAGpC,OAFAvqC,EAAI2tC,EAAM1B,EAAMD,EAAK,EAAGjB,GAAIvqC,MAAM,MAChCjf,EAAIM,EAAEN,EACDye,MAZU,CACjB,IAAKne,EAAEN,EAAG,OAAO,IAAI0qD,EAAKzkC,KAC1B,GAAIwkC,EAAK,GAAKzB,EAGZ,OAFAvqC,EAAI2tC,EAAM1B,EAAMD,EAAK,EAAGjB,GAAIvqC,MAAM,KAChCjf,EAAIM,EAAEN,EACDye,EAqBX,IAXAisC,EAAKjkD,UAAY+lD,EAAM/B,EAAK,GAC5BC,EAAK9C,SAAW,EAUXjpD,EAFL6f,EAAIhb,KAAKC,IAAI,GAAI+oD,EAAM1D,EAAW,EAAI,GAE1BnqD,IAAKA,EAAG2B,EAAIA,EAAEma,IAAIna,EAAE2e,MAAM3e,GAAGyd,KAAK,GAAGkU,OAAOlU,KAAK,IAW7D,IATAoqC,GAAW,EAEX31C,EAAIhP,KAAKmiC,KAAK6mB,EAAM1D,GACpBrpD,EAAI,EACJmtD,EAAKtsD,EAAE2e,MAAM3e,GACbme,EAAI,IAAIisC,EAAKpqD,GACb4lB,EAAK5lB,GAGS,IAAP3B,GAOL,GANAunB,EAAKA,EAAGjH,MAAM2tC,GACdn7B,EAAIhT,EAAEK,MAAMoH,EAAGzL,IAAIhb,GAAK,IAExBymB,EAAKA,EAAGjH,MAAM2tC,QAGC,KAFfnuC,EAAIgT,EAAE1T,KAAKmI,EAAGzL,IAAIhb,GAAK,KAEjBT,EAAEwT,GAAe,IAAK7T,EAAI6T,EAAGiM,EAAEzf,EAAEL,KAAO8yB,EAAEzyB,EAAEL,IAAMA,MAO1D,OAJI6f,IAAGC,EAAIA,EAAEQ,MAAM,GAAMT,EAAI,IAE7B2pC,GAAW,EAEJ6B,EAASvrC,EAAGisC,EAAKjkD,UAAYgkD,EAAIC,EAAK9C,SAAW4B,GAAI,IAQ9DP,EAAE/iD,SAAW,WACX,QAAS5H,KAAKU,GAQhBiqD,EAAErmD,UAAYqmD,EAAE72B,MAAQ,WACtB,QAAS9zB,KAAKU,GAAKwpD,EAAUlqD,KAAKmG,EAAIqkD,GAAYxqD,KAAKU,EAAEkD,OAAS,GAQpE+mD,EAAE1iD,MAAQ,WACR,OAAQjI,KAAK0B,GAQfipD,EAAE92B,WAAa82B,EAAEtxB,MAAQ,WACvB,OAAOr5B,KAAK0B,EAAI,GAQlBipD,EAAEvxB,WAAauxB,EAAE4D,MAAQ,WACvB,OAAOvuD,KAAK0B,EAAI,GAQlBipD,EAAEjkC,OAAS,WACT,QAAS1mB,KAAKU,GAAmB,IAAdV,KAAKU,EAAE,IAQ5BiqD,EAAE6D,SAAW7D,EAAE/jC,GAAK,SAAUnb,GAC5B,OAAOzL,KAAK+zB,IAAItoB,GAAK,GAQvBk/C,EAAE8D,kBAAoB9D,EAAEhkC,IAAM,SAAUlb,GACtC,OAAOzL,KAAK+zB,IAAItoB,GAAK,GAkCvBk/C,EAAE+D,UAAY/D,EAAE9hD,IAAM,SAAUizC,GAC9B,IAAI6S,EAAUjuD,EAAGwmC,EAAahnB,EAAG3Q,EAAKktB,EAAK4vB,EAAIlsC,EAE7CisC,EADMpsD,KACK6S,YACXs5C,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SAIZ,GAAY,MAARxN,EACFA,EAAO,IAAIsQ,EAAK,IAChBuC,GAAW,MACN,CAKL,GAHAjuD,GADAo7C,EAAO,IAAIsQ,EAAKtQ,IACPp7C,EAGLo7C,EAAKp6C,EAAI,IAAMhB,IAAMA,EAAE,IAAMo7C,EAAKpmC,GAAG,GAAI,OAAO,IAAI02C,EAAKzkC,KAE7DgnC,EAAW7S,EAAKpmC,GAAG,IAMrB,GAHAhV,EApBQV,KAoBAU,EApBAV,KAuBA0B,EAAI,IAAMhB,IAAMA,EAAE,IAvBlBV,KAuB4B0V,GAAG,GACrC,OAAO,IAAI02C,EAAK1rD,IAAMA,EAAE,IAAK,EAAA,EAAkB,GAxBzCV,KAwBoC0B,EAASimB,IAAMjnB,EAAI,EAAI,EAAA,GAKnE,GAAIiuD,EACF,GAAIjuD,EAAEkD,OAAS,EACb2L,GAAM,MACD,CACL,IAAK2Q,EAAIxf,EAAE,GAAIwf,EAAI,IAAO,GAAIA,GAAK,GACnC3Q,EAAY,IAAN2Q,EA0BV,GAtBA2pC,GAAW,EAEXptB,EAAMmyB,EAxCE5uD,KAuCRqsD,EAAKF,EAnCK,GAqCVjlB,EAAcynB,EAAWE,EAAQzC,EAAMC,EAAK,IAAMuC,EAAiB9S,EAAMuQ,GAmBrEpB,GAhBJ9qC,EAAI7P,EAAOmsB,EAAKyK,EAAamlB,EAAI,IAgBP3rD,EAAGwf,EAAIisC,EAAIjB,GAEnC,GAME,GAJAzuB,EAAMmyB,EAhEF5uD,KA+DJqsD,GAAM,IAENnlB,EAAcynB,EAAWE,EAAQzC,EAAMC,EAAK,IAAMuC,EAAiB9S,EAAMuQ,GACzElsC,EAAI7P,EAAOmsB,EAAKyK,EAAamlB,EAAI,IAE5B98C,EAAK,EAGHq7C,EAAezqC,EAAEzf,GAAGwF,MAAMga,EAAI,EAAGA,EAAI,IAAM,GAAK,OACnDC,EAAIurC,EAASvrC,EAAGgsC,EAAK,EAAG,IAG1B,aAEKlB,EAAoB9qC,EAAEzf,EAAGwf,GAAK,GAAIgrC,IAK7C,OAFArB,GAAW,EAEJ6B,EAASvrC,EAAGgsC,EAAIjB,IAiDzBP,EAAEnqC,MAAQmqC,EAAEpqC,IAAM,SAAU9U,GAC1B,IAAI/K,EAAGyF,EAAG9F,EAAG6T,EAAGgM,EAAGlc,EAAKmoD,EAAIjB,EAAIY,EAAItpB,EAAIssB,EAAM/C,EAC5C/pD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAKX,GAHApH,EAAI,IAAI2gD,EAAK3gD,IAGRzJ,EAAEtB,IAAM+K,EAAE/K,EAab,OAVKsB,EAAEN,GAAM+J,EAAE/J,EAGNM,EAAEtB,EAAG+K,EAAE/J,GAAK+J,EAAE/J,EAKlB+J,EAAI,IAAI2gD,EAAK3gD,EAAE/K,GAAKsB,EAAEN,IAAM+J,EAAE/J,EAAIM,EAAI2lB,KARzBlc,EAAI,IAAI2gD,EAAKzkC,KAUxBlc,EAIT,GAAIzJ,EAAEN,GAAK+J,EAAE/J,EAEX,OADA+J,EAAE/J,GAAK+J,EAAE/J,EACFM,EAAEyd,KAAKhU,GAShB,GANAqgD,EAAK9pD,EAAEtB,EACPqrD,EAAKtgD,EAAE/K,EACPyrD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,UAGLwC,EAAG,KAAOC,EAAG,GAAI,CAGpB,GAAIA,EAAG,GAAItgD,EAAE/J,GAAK+J,EAAE/J,MAGf,CAAA,IAAIoqD,EAAG,GAIP,OAAO,IAAIM,EAAY,IAAPlB,GAAY,EAAI,GAJrBz/C,EAAI,IAAI2gD,EAAKpqD,GAM7B,OAAO6nD,EAAW6B,EAASjgD,EAAG0gD,EAAIjB,GAAMz/C,EAa1C,GAPAtF,EAAI+jD,EAAUz+C,EAAEtF,EAAIqkD,GACpBhoB,EAAK0nB,EAAUloD,EAAEmE,EAAIqkD,GAErBsB,EAAKA,EAAG5lD,QACRga,EAAIsiB,EAAKr8B,EAGF,CAyBL,KAxBA2oD,EAAO5uC,EAAI,IAGTxf,EAAIorD,EACJ5rC,GAAKA,EACLlc,EAAM+nD,EAAGnoD,SAETlD,EAAIqrD,EACJ5lD,EAAIq8B,EACJx+B,EAAM8nD,EAAGloD,QAQPsc,GAFJ7f,EAAI6E,KAAK0G,IAAI1G,KAAKmiC,KAAK8kB,EAAK3B,GAAWxmD,GAAO,KAG5Ckc,EAAI7f,EACJK,EAAEkD,OAAS,GAIblD,EAAEiiC,UACGtiC,EAAI6f,EAAG7f,KAAMK,EAAEiD,KAAK,GACzBjD,EAAEiiC,cAGG,CASL,KAHAmsB,GAFAzuD,EAAIyrD,EAAGloD,SACPI,EAAM+nD,EAAGnoD,WAECI,EAAM3D,GAEXA,EAAI,EAAGA,EAAI2D,EAAK3D,IACnB,GAAIyrD,EAAGzrD,IAAM0rD,EAAG1rD,GAAI,CAClByuD,EAAOhD,EAAGzrD,GAAK0rD,EAAG1rD,GAClB,MAIJ6f,EAAI,EAcN,IAXI4uC,IACFpuD,EAAIorD,EACJA,EAAKC,EACLA,EAAKrrD,EACL+K,EAAE/J,GAAK+J,EAAE/J,GAGXsC,EAAM8nD,EAAGloD,OAIJvD,EAAI0rD,EAAGnoD,OAASI,EAAK3D,EAAI,IAAKA,EAAGyrD,EAAG9nD,KAAS,EAGlD,IAAK3D,EAAI0rD,EAAGnoD,OAAQvD,EAAI6f,GAAI,CAE1B,GAAI4rC,IAAKzrD,GAAK0rD,EAAG1rD,GAAI,CACnB,IAAK6T,EAAI7T,EAAG6T,GAAiB,IAAZ43C,IAAK53C,IAAW43C,EAAG53C,GAAKq2C,EAAO,IAC9CuB,EAAG53C,GACL43C,EAAGzrD,IAAMkqD,EAGXuB,EAAGzrD,IAAM0rD,EAAG1rD,GAId,KAAqB,IAAdyrD,IAAK9nD,IAAa8nD,EAAG1gD,MAG5B,KAAiB,IAAV0gD,EAAG,GAAUA,EAAG7lD,UAAWE,EAGlC,OAAK2lD,EAAG,IAERrgD,EAAE/K,EAAIorD,EACNrgD,EAAEtF,EAAI4oD,EAAkBjD,EAAI3lD,GAErB0jD,EAAW6B,EAASjgD,EAAG0gD,EAAIjB,GAAMz/C,GALrB,IAAI2gD,EAAY,IAAPlB,GAAY,EAAI,IAiC9CP,EAAEpB,OAASoB,EAAEl6C,IAAM,SAAUhF,GAC3B,IAAIywB,EAEFkwB,EADIpsD,KACK6S,YAKX,OAHApH,EAAI,IAAI2gD,EAAK3gD,IAHPzL,KAMCU,IAAM+K,EAAE/J,GAAK+J,EAAE/K,IAAM+K,EAAE/K,EAAE,GAAW,IAAI0rD,EAAKzkC,MAG/Clc,EAAE/K,GATDV,KASQU,IATRV,KASgBU,EAAE,GACfgrD,EAAS,IAAIU,EAVhBpsD,MAUyBosD,EAAKjkD,UAAWikD,EAAK9C,WAIpDO,GAAW,EAEQ,GAAfuC,EAAK7C,QAIPrtB,EAAI5rB,EApBAtQ,KAoBUyL,EAAEjB,MAAO,EAAG,EAAG,IAC3B9I,GAAK+J,EAAE/J,EAETw6B,EAAI5rB,EAvBAtQ,KAuBUyL,EAAG,EAAG2gD,EAAK7C,OAAQ,GAGnCrtB,EAAIA,EAAEvb,MAAMlV,GAEZo+C,GAAW,EA5BL7pD,KA8BGwgB,MAAM0b,KAUjByuB,EAAEqE,mBAAqBrE,EAAEnjB,IAAM,WAC7B,OAAOwnB,EAAmBhvD,OAS5B2qD,EAAEiE,iBAAmBjE,EAAE9O,GAAK,WAC1B,OAAO+S,EAAiB5uD,OAS1B2qD,EAAExT,QAAUwT,EAAEtkC,IAAM,WAClB,IAAIrkB,EAAI,IAAIhC,KAAK6S,YAAY7S,MAE7B,OADAgC,EAAEN,GAAKM,EAAEN,EACFgqD,EAAS1pD,IAyBlB2oD,EAAElrC,KAAOkrC,EAAEj6C,IAAM,SAAUjF,GACzB,IAAIwjD,EAAOvuD,EAAGyF,EAAG9F,EAAG6f,EAAGlc,EAAKmoD,EAAIjB,EAAIY,EAAIC,EACtC/pD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAKX,GAHApH,EAAI,IAAI2gD,EAAK3gD,IAGRzJ,EAAEtB,IAAM+K,EAAE/K,EAWb,OARKsB,EAAEN,GAAM+J,EAAE/J,EAMLM,EAAEtB,IAAG+K,EAAI,IAAI2gD,EAAK3gD,EAAE/K,GAAKsB,EAAEN,IAAM+J,EAAE/J,EAAIM,EAAI2lB,MANnClc,EAAI,IAAI2gD,EAAKzkC,KAQxBlc,EAIT,GAAIzJ,EAAEN,GAAK+J,EAAE/J,EAEX,OADA+J,EAAE/J,GAAK+J,EAAE/J,EACFM,EAAEwe,MAAM/U,GASjB,GANAqgD,EAAK9pD,EAAEtB,EACPqrD,EAAKtgD,EAAE/K,EACPyrD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,UAGLwC,EAAG,KAAOC,EAAG,GAMhB,OAFKA,EAAG,KAAItgD,EAAI,IAAI2gD,EAAKpqD,IAElB6nD,EAAW6B,EAASjgD,EAAG0gD,EAAIjB,GAAMz/C,EAa1C,GAPAyU,EAAIgqC,EAAUloD,EAAEmE,EAAIqkD,GACpBrkD,EAAI+jD,EAAUz+C,EAAEtF,EAAIqkD,GAEpBsB,EAAKA,EAAG5lD,QACR7F,EAAI6f,EAAI/Z,EAGD,CAuBL,IArBI9F,EAAI,GACNK,EAAIorD,EACJzrD,GAAKA,EACL2D,EAAM+nD,EAAGnoD,SAETlD,EAAIqrD,EACJ5lD,EAAI+Z,EACJlc,EAAM8nD,EAAGloD,QAOPvD,GAFJ2D,GADAkc,EAAIhb,KAAKmiC,KAAK8kB,EAAK3B,IACTxmD,EAAMkc,EAAI,EAAIlc,EAAM,KAG5B3D,EAAI2D,EACJtD,EAAEkD,OAAS,GAIblD,EAAEiiC,UACKtiC,KAAMK,EAAEiD,KAAK,GACpBjD,EAAEiiC,UAeJ,KAZA3+B,EAAM8nD,EAAGloD,SACTvD,EAAI0rD,EAAGnoD,QAGO,IACZvD,EAAI2D,EACJtD,EAAIqrD,EACJA,EAAKD,EACLA,EAAKprD,GAIFuuD,EAAQ,EAAG5uD,GACd4uD,GAASnD,IAAKzrD,GAAKyrD,EAAGzrD,GAAK0rD,EAAG1rD,GAAK4uD,GAAS1E,EAAO,EACnDuB,EAAGzrD,IAAMkqD,EAUX,IAPI0E,IACFnD,EAAGnlD,QAAQsoD,KACT9oD,GAKCnC,EAAM8nD,EAAGloD,OAAqB,GAAbkoD,IAAK9nD,IAAY8nD,EAAG1gD,MAK1C,OAHAK,EAAE/K,EAAIorD,EACNrgD,EAAEtF,EAAI4oD,EAAkBjD,EAAI3lD,GAErB0jD,EAAW6B,EAASjgD,EAAG0gD,EAAIjB,GAAMz/C,GAU1Ck/C,EAAExiD,UAAYwiD,EAAE0B,GAAK,SAAUtsC,GAC7B,IAAIG,EAGJ,QAAU,IAANH,GAAgBA,MAAQA,GAAW,IAANA,GAAiB,IAANA,EAAS,MAAMrb,MAAMqlD,EAAkBhqC,GASnF,OAXM/f,KAIAU,GACJwf,EAAIgvC,EALAlvD,KAKeU,GACfqf,GANA/f,KAMOmG,EAAI,EAAI+Z,IAAGA,EANlBlgB,KAMwBmG,EAAI,IAEhC+Z,EAAIyH,IAGCzH,GASTyqC,EAAE9iD,MAAQ,WACR,IACEukD,EADMpsD,KACG6S,YAEX,OAAO64C,EAAS,IAAIU,EAHZpsD,MAAAA,KAGuBmG,EAAI,EAAGimD,EAAK9C,WAmB7CqB,EAAEwE,KAAOxE,EAAE5Z,IAAM,WACf,IAAIob,EAAIjB,EACNlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAK7Q,EAAE4F,WACH5F,EAAE0kB,SAAiB,IAAI0lC,EAAKpqD,IAEhCmqD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAKjnD,KAAK0G,IAAI5J,EAAEmE,EAAGnE,EAAEqqD,MAAQ7B,EAC9C4B,EAAK9C,SAAW,EAEhBtnD,EAi8DF,SAAcoqD,EAAMpqD,GAClB,IAAIke,EACFlc,EAAMhC,EAAEtB,EAAEkD,OAEZ,GAAII,EAAM,EAAG,OAAOsoD,EAAaF,EAAM,EAAGpqD,EAAGA,GAQ7Cke,GADAA,EAAI,IAAMhb,KAAKyuB,KAAK3vB,IACZ,GAAK,GAAS,EAAJkc,EAGlBle,EAAIA,EAAE2e,MAAMzb,KAAK6K,IAAI,GAAImQ,IACzBle,EAAIsqD,EAAaF,EAAM,EAAGpqD,EAAGA,GAO7B,IAJA,IAAIotD,EACF5B,EAAK,IAAIpB,EAAK,GACdqB,EAAM,IAAIrB,EAAK,IACfsB,EAAM,IAAItB,EAAK,IACVlsC,KACLkvC,EAASptD,EAAE2e,MAAM3e,GACjBA,EAAIA,EAAE2e,MAAM6sC,EAAG/tC,KAAK2vC,EAAOzuC,MAAM8sC,EAAI9sC,MAAMyuC,GAAQ5uC,MAAMktC,MAG3D,OAAO1rD,EA79DHmtD,CAAK/C,EAAMI,EAAiBJ,EAAMpqD,IAEtCoqD,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETQ,EAASzC,EAAW,EAAIjnD,EAAEqkB,MAAQrkB,EAAGmqD,EAAIjB,GAAI,IAb1B,IAAIkB,EAAKzkC,MA6BrCgjC,EAAE0E,WAAa1E,EAAEh3B,KAAO,WACtB,IAAInzB,EAAGW,EAAGkrD,EAAIlsC,EAAGusC,EAAKv5B,EAEpBzyB,EADIV,KACEU,EACNyF,EAFInG,KAEEmG,EACNzE,EAHI1B,KAGE0B,EACN0qD,EAJIpsD,KAIK6S,YAGX,GAAU,IAANnR,IAAYhB,IAAMA,EAAE,GACtB,OAAO,IAAI0rD,GAAM1qD,GAAKA,EAAI,KAAOhB,GAAKA,EAAE,IAAMinB,IAAMjnB,EARhDV,KAQwD,EAAA,GAgC9D,IA7BA6pD,GAAW,EAOF,IAJTnoD,EAAIwD,KAAKyuB,MAdH3zB,QAkBQ0B,GAAK,EAAA,KACjBP,EAAIypD,EAAelqD,IAEZkD,OAASuC,GAAK,GAAK,IAAGhF,GAAK,KAClCO,EAAIwD,KAAKyuB,KAAKxyB,GACdgF,EAAI+jD,GAAW/jD,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS3Cga,EAAI,IAAIisC,EANNjrD,EADEO,GAAK,EAAA,EACH,KAAOyE,GAEXhF,EAAIO,EAAE2G,iBACAnC,MAAM,EAAG/E,EAAE6I,QAAQ,KAAO,GAAK7D,IAKvCga,EAAI,IAAIisC,EAAK1qD,EAAEqJ,YAGjBshD,GAAMlmD,EAAIimD,EAAKjkD,WAAa,IAQ1B,GAHAgY,GADAgT,EAAIhT,GACEV,KAAKnP,EA1CPtQ,KA0CiBmzB,EAAGk5B,EAAK,EAAG,IAAI1rC,MAAM,IAGtCiqC,EAAez3B,EAAEzyB,GAAGwF,MAAM,EAAGmmD,MAASlrD,EAAIypD,EAAezqC,EAAEzf,IAAIwF,MAAM,EAAGmmD,GAAK,CAK/E,GAAS,SAJTlrD,EAAIA,EAAE+E,MAAMmmD,EAAK,EAAGA,EAAK,MAILK,GAAY,QAALvrD,GAepB,EAICA,KAAOA,EAAE+E,MAAM,IAAqB,KAAf/E,EAAE0V,OAAO,MAGlC60C,EAASvrC,EAAGha,EAAI,EAAG,GACnB3F,GAAK2f,EAAEQ,MAAMR,GAAGzK,GAzElB1V,OA4EA,MAtBA,IAAK0sD,IACHhB,EAASv4B,EAAGhtB,EAAI,EAAG,GAEfgtB,EAAExS,MAAMwS,GAAGzd,GAzDjB1V,OAyDwB,CACpBmgB,EAAIgT,EACJ,MAIJk5B,GAAM,EACNK,EAAM,EAmBZ,OAFA7C,GAAW,EAEJ6B,EAASvrC,EAAGha,EAAGimD,EAAK9C,SAAU9oD,IAiBvCmqD,EAAE2E,QAAU3E,EAAE1Z,IAAM,WAClB,IAAIkb,EAAIjB,EACNlpD,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAEX,OAAK7Q,EAAE4F,WACH5F,EAAE0kB,SAAiB,IAAI0lC,EAAKpqD,IAEhCmqD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SACV8C,EAAKjkD,UAAYgkD,EAAK,GACtBC,EAAK9C,SAAW,GAEhBtnD,EAAIA,EAAE+uC,OACJrvC,EAAI,EACNM,EAAIsO,EAAOtO,EAAG,IAAIoqD,EAAK,GAAG5rC,MAAMxe,EAAE2e,MAAM3e,IAAI2xB,OAAQw4B,EAAK,GAAI,GAE7DC,EAAKjkD,UAAYgkD,EACjBC,EAAK9C,SAAW4B,EAETQ,EAAqB,GAAZzC,GAA6B,GAAZA,EAAgBjnD,EAAEqkB,MAAQrkB,EAAGmqD,EAAIjB,GAAI,IAf5C,IAAIkB,EAAKzkC,MAwCrCgjC,EAAEhqC,MAAQgqC,EAAEjqC,IAAM,SAAUjV,GAC1B,IAAIwjD,EAAO9oD,EAAG9F,EAAG6f,EAAGC,EAAGovC,EAAIp8B,EAAGy4B,EAAKC,EAEjCO,EADIpsD,KACK6S,YACTi5C,EAFI9rD,KAEGU,EACPqrD,GAAMtgD,EAAI,IAAI2gD,EAAK3gD,IAAI/K,EAKzB,GAHA+K,EAAE/J,GALI1B,KAKG0B,IAGJoqD,GAAOA,EAAG,IAAOC,GAAOA,EAAG,IAE9B,OAAO,IAAIK,GAAM3gD,EAAE/J,GAAKoqD,IAAOA,EAAG,KAAOC,GAAMA,IAAOA,EAAG,KAAOD,EAI5DnkC,IAICmkC,GAAOC,EAAqB,EAANtgD,EAAE/J,EAAZ+J,EAAE/J,EAAI,GAoBzB,IAjBAyE,EAAI+jD,EArBElqD,KAqBUmG,EAAIqkD,GAAYN,EAAUz+C,EAAEtF,EAAIqkD,IAChDoB,EAAME,EAAGloD,SACTioD,EAAME,EAAGnoD,UAIPuc,EAAI2rC,EACJA,EAAKC,EACLA,EAAK5rC,EACLovC,EAAK3D,EACLA,EAAMC,EACNA,EAAM0D,GAIRpvC,KAEK9f,EADLkvD,EAAK3D,EAAMC,EACExrD,KAAM8f,EAAExc,KAAK,GAG1B,IAAKtD,EAAIwrD,IAAOxrD,GAAK,GAAI,CAEvB,IADA4uD,EAAQ,EACH/uC,EAAI0rC,EAAMvrD,EAAG6f,EAAI7f,GACpB8yB,EAAIhT,EAAED,GAAK6rC,EAAG1rD,GAAKyrD,EAAG5rC,EAAI7f,EAAI,GAAK4uD,EACnC9uC,EAAED,KAAOiT,EAAIo3B,EAAO,EACpB0E,EAAQ97B,EAAIo3B,EAAO,EAGrBpqC,EAAED,IAAMC,EAAED,GAAK+uC,GAAS1E,EAAO,EAIjC,MAAQpqC,IAAIovC,IAAMpvC,EAAE/U,MAQpB,OANI6jD,IAAS9oD,EACRga,EAAEla,QAEPwF,EAAE/K,EAAIyf,EACN1U,EAAEtF,EAAI4oD,EAAkB5uC,EAAGha,GAEpB0jD,EAAW6B,EAASjgD,EAAG2gD,EAAKjkD,UAAWikD,EAAK9C,UAAY79C,GAcjEk/C,EAAE6E,SAAW,SAAUnD,EAAInB,GACzB,OAAOuE,EAAezvD,KAAM,EAAGqsD,EAAInB,IAcrCP,EAAE3iB,gBAAkB2iB,EAAE+E,KAAO,SAAU5C,EAAI5B,GACzC,IAAIlpD,EAAIhC,KACNosD,EAAOpqD,EAAE6Q,YAGX,OADA7Q,EAAI,IAAIoqD,EAAKpqD,QACF,IAAP8qD,EAAsB9qD,GAE1BgpD,EAAW8B,EAAI,EAAG3D,QAEP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,GAEhBQ,EAAS1pD,EAAG8qD,EAAK9qD,EAAEmE,EAAI,EAAG+kD,KAYnCP,EAAEtiD,cAAgB,SAAUykD,EAAI5B,GAC9B,IAAIpgD,EACF9I,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAcX,YAZW,IAAPi6C,EACFhiD,EAAM6kD,EAAe3tD,GAAG,IAExBgpD,EAAW8B,EAAI,EAAG3D,QAEP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,GAGvBpgD,EAAM6kD,EADN3tD,EAAI0pD,EAAS,IAAIU,EAAKpqD,GAAI8qD,EAAK,EAAG5B,IACV,EAAM4B,EAAK,IAG9B9qD,EAAEq3B,UAAYr3B,EAAE0kB,SAAW,IAAM5b,EAAMA,GAoBhD6/C,EAAEviD,QAAU,SAAU0kD,EAAI5B,GACxB,IAAIpgD,EAAKW,EAEP2gD,EADIpsD,KACK6S,YAgBX,YAdW,IAAPi6C,EACFhiD,EAAM6kD,EAJF3vD,OAMJgrD,EAAW8B,EAAI,EAAG3D,QAEP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,GAGvBpgD,EAAM6kD,EADNlkD,EAAIigD,EAAS,IAAIU,EAXbpsD,MAWsB8sD,EAXtB9sD,KAW6BmG,EAAI,EAAG+kD,IAChB,EAAO4B,EAAKrhD,EAAEtF,EAAI,IAZtCnG,KAiBGq5B,UAjBHr5B,KAiBiB0mB,SAAW,IAAM5b,EAAMA,GAehD6/C,EAAEiF,WAAa,SAAUC,GACvB,IAAInvD,EAAGovD,EAAIC,EAAIC,EAAI7pD,EAAG+Z,EAAG/e,EAAG8uD,EAAIC,EAAI/D,EAAIjwB,EAAG/b,EAEzC2rC,EADI9rD,KACGU,EACP0rD,EAFIpsD,KAEK6S,YAEX,IAAKi5C,EAAI,OAAO,IAAIM,EAJdpsD,MAcN,GARAkwD,EAAKJ,EAAK,IAAI1D,EAAK,GAKnBlsC,GADA/Z,GADAzF,EAAI,IAAI0rD,EAFR2D,EAAKE,EAAK,IAAI7D,EAAK,KAGbjmD,EAAI+oD,EAAapD,GAVjB9rD,KAUyBmG,EAAI,GAC3BqkD,EACR9pD,EAAEA,EAAE,GAAKypD,EAAQ,GAAIjqC,EAAI,EAAIsqC,EAAWtqC,EAAIA,GAEhC,MAAR2vC,EAGFA,EAAO1pD,EAAI,EAAIzF,EAAIwvD,MACd,CAEL,KADA/uD,EAAI,IAAIirD,EAAKyD,IACN/7B,SAAW3yB,EAAEylB,GAAGspC,GAAK,MAAMxrD,MAAMqlD,EAAkB5oD,GAC1D0uD,EAAO1uD,EAAEilB,GAAG1lB,GAAMyF,EAAI,EAAIzF,EAAIwvD,EAAM/uD,EAQtC,IALA0oD,GAAW,EACX1oD,EAAI,IAAIirD,EAAKxB,EAAekB,IAC5BK,EAAKC,EAAKjkD,UACVikD,EAAKjkD,UAAYhC,EAAI2lD,EAAGloD,OAAS4mD,EAAW,EAG1CtuB,EAAI5rB,EAAOnP,EAAGT,EAAG,EAAG,EAAG,GAEH,IADpBsvD,EAAKF,EAAGrwC,KAAKyc,EAAEvb,MAAMovC,KACdh8B,IAAI87B,IACXC,EAAKC,EACLA,EAAKC,EACLA,EAAKE,EACLA,EAAKD,EAAGxwC,KAAKyc,EAAEvb,MAAMqvC,IACrBC,EAAKD,EACLA,EAAKtvD,EACLA,EAAIS,EAAEqf,MAAM0b,EAAEvb,MAAMqvC,IACpB7uD,EAAI6uD,EAeN,OAZAA,EAAK1/C,EAAOu/C,EAAKrvC,MAAMsvC,GAAKC,EAAI,EAAG,EAAG,GACtCE,EAAKA,EAAGxwC,KAAKuwC,EAAGrvC,MAAMuvC,IACtBJ,EAAKA,EAAGrwC,KAAKuwC,EAAGrvC,MAAMovC,IACtBE,EAAGvuD,EAAIwuD,EAAGxuD,EA9CJ1B,KA8CU0B,EAGhBye,EAAI7P,EAAO4/C,EAAIH,EAAI5pD,EAAG,GAAGqa,MAjDnBxgB,MAiD4BwK,MAAMupB,IAAIzjB,EAAO2/C,EAAIH,EAAI3pD,EAAG,GAAGqa,MAjD3DxgB,MAiDoEwK,OAAS,GAC5E0lD,EAAIH,IAAOE,EAAIH,GAEtB1D,EAAKjkD,UAAYgkD,EACjBtC,GAAW,EAEJ1pC,GAcTwqC,EAAEwF,cAAgBxF,EAAEyF,MAAQ,SAAU/D,EAAInB,GACxC,OAAOuE,EAAezvD,KAAM,GAAIqsD,EAAInB,IA2BtCP,EAAE0F,UAAY,SAAU5kD,EAAGy/C,GACzB,IAAIlpD,EAAIhC,KACNosD,EAAOpqD,EAAE6Q,YAIX,GAFA7Q,EAAI,IAAIoqD,EAAKpqD,GAEJ,MAALyJ,EAAW,CAGb,IAAKzJ,EAAEtB,EAAG,OAAOsB,EAEjByJ,EAAI,IAAI2gD,EAAK,GACblB,EAAKkB,EAAK9C,aACL,CAKL,GAJA79C,EAAI,IAAI2gD,EAAK3gD,QACF,IAAPy/C,GAAeF,EAAWE,EAAI,EAAG,IAGhClpD,EAAEtB,EAAG,OAAO+K,EAAE/J,EAAIM,EAAIyJ,EAG3B,IAAKA,EAAE/K,EAEL,OADI+K,EAAE/J,IAAG+J,EAAE/J,EAAIM,EAAEN,GACV+J,EAkBX,OAbIA,EAAE/K,EAAE,IACNmpD,GAAW,EACPqB,EAAK,IAAGA,GAAM,EAAG,EAAG,EAAG,GAAGA,IAC9BlpD,EAAIsO,EAAOtO,EAAGyJ,EAAG,EAAGy/C,EAAI,GAAGvqC,MAAMlV,GACjCo+C,GAAW,EACX6B,EAAS1pD,KAITyJ,EAAE/J,EAAIM,EAAEN,EACRM,EAAIyJ,GAGCzJ,GAST2oD,EAAE3jC,SAAW,WACX,OAAQhnB,MAcV2qD,EAAE2F,QAAU,SAAUjE,EAAInB,GACxB,OAAOuE,EAAezvD,KAAM,EAAGqsD,EAAInB,IA+CrCP,EAAE4F,QAAU5F,EAAE56C,IAAM,SAAUtE,GAC5B,IAAItF,EAAG+Z,EAAGisC,EAAIhsC,EAAG+qC,EAAIxpD,EACnBM,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YACT29C,IAAO/kD,EAAI,IAAI2gD,EAAK3gD,IAGtB,KAAKzJ,EAAEtB,GAAM+K,EAAE/K,GAAMsB,EAAEtB,EAAE,IAAO+K,EAAE/K,EAAE,IAAI,OAAO,IAAI0rD,EAAKjC,GAASnoD,EAAGwuD,IAIpE,IAFAxuD,EAAI,IAAIoqD,EAAKpqD,IAEP0T,GAAG,GAAI,OAAO1T,EAKpB,GAHAmqD,EAAKC,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,SAEN79C,EAAEiK,GAAG,GAAI,OAAOg2C,EAAS1pD,EAAGmqD,EAAIjB,GAMpC,IAHA/kD,EAAI+jD,EAAUz+C,EAAEtF,EAAIqkD,KAGX/+C,EAAE/K,EAAEkD,OAAS,IAAMsc,EAAIswC,EAAK,GAAKA,EAAKA,IAzmE5B,iBA2mEjB,OADArwC,EAAIswC,EAAOrE,EAAMpqD,EAAGke,EAAGisC,GAChB1gD,EAAE/J,EAAI,EAAI,IAAI0qD,EAAK,GAAGjwC,IAAIgE,GAAKurC,EAASvrC,EAAGgsC,EAAIjB,GAMxD,IAHAxpD,EAAIM,EAAEN,GAGE,EAAG,CAGT,GAAIyE,EAAIsF,EAAE/K,EAAEkD,OAAS,EAAG,OAAO,IAAIwoD,EAAKzkC,KAMxC,GAHoB,IAAN,EAATlc,EAAE/K,EAAEyF,MAAczE,EAAI,GAGhB,GAAPM,EAAEmE,GAAoB,GAAVnE,EAAEtB,EAAE,IAAyB,GAAdsB,EAAEtB,EAAEkD,OAEjC,OADA5B,EAAEN,EAAIA,EACCM,EAgBX,OAPAmE,EAAS,IADT+Z,EAAIiqC,GAASnoD,EAAGwuD,KACD5oD,SAASsY,GAEpB,IAAIksC,EAAKlsC,EAAI,IAAI/Z,EADjB+jD,EAAUsG,GAAMtrD,KAAK2D,IAAI,KAAO+hD,EAAe5oD,EAAEtB,IAAMwE,KAAK4D,KAAO9G,EAAEmE,EAAI,KAMrEimD,EAAKzC,KAAO,GAAKxjD,EAAIimD,EAAK1C,KAAO,EAAU,IAAI0C,EAAKjmD,EAAI,EAAIzE,EAAI,EAAI,IAE5EmoD,GAAW,EACXuC,EAAK9C,SAAWtnD,EAAEN,EAAI,EAMtBwe,EAAIhb,KAAKC,IAAI,IAAKgB,EAAI,IAAIvC,SAG1Buc,EAAI6uC,EAAmBvjD,EAAEkV,MAAMiuC,EAAiB5sD,EAAGmqD,EAAKjsC,IAAKisC,IAGvDzrD,GAOAuqD,GAJJ9qC,EAAIurC,EAASvrC,EAAGgsC,EAAK,EAAG,IAIEzrD,EAAGyrD,EAAIjB,KAC/B/kD,EAAIgmD,EAAK,IAMJvB,GAHLzqC,EAAIurC,EAASsD,EAAmBvjD,EAAEkV,MAAMiuC,EAAiB5sD,EAAGmE,EAAI+Z,IAAK/Z,GAAIA,EAAI,EAAG,IAG1DzF,GAAGwF,MAAMimD,EAAK,EAAGA,EAAK,IAAM,GAAK,OACrDhsC,EAAIurC,EAASvrC,EAAGgsC,EAAK,EAAG,KAK9BhsC,EAAEze,EAAIA,EACNmoD,GAAW,EACXuC,EAAK9C,SAAW4B,EAETQ,EAASvrC,EAAGgsC,EAAIjB,KAezBP,EAAEvhD,YAAc,SAAUijD,EAAInB,GAC5B,IAAIpgD,EACF9I,EAAIhC,KACJosD,EAAOpqD,EAAE6Q,YAcX,YAZW,IAAPw5C,EACFvhD,EAAM6kD,EAAe3tD,EAAGA,EAAEmE,GAAKimD,EAAK5C,UAAYxnD,EAAEmE,GAAKimD,EAAK3C,WAE5DuB,EAAWqB,EAAI,EAAGlD,QAEP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,GAGvBpgD,EAAM6kD,EADN3tD,EAAI0pD,EAAS,IAAIU,EAAKpqD,GAAIqqD,EAAInB,GACNmB,GAAMrqD,EAAEmE,GAAKnE,EAAEmE,GAAKimD,EAAK5C,SAAU6C,IAGtDrqD,EAAEq3B,UAAYr3B,EAAE0kB,SAAW,IAAM5b,EAAMA,GAkBhD6/C,EAAE+F,oBAAsB/F,EAAEgG,KAAO,SAAUtE,EAAInB,GAC7C,IACEkB,EADMpsD,KACG6S,YAYX,YAVW,IAAPw5C,GACFA,EAAKD,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,WAEV0B,EAAWqB,EAAI,EAAGlD,QAEP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,IAGlBQ,EAAS,IAAIU,EAbZpsD,MAaqBqsD,EAAInB,IAWnCP,EAAE5/C,SAAW,WACX,IACEqhD,EADMpsD,KACG6S,YACT/H,EAAM6kD,EAFA3vD,KAAAA,KAEoBmG,GAAKimD,EAAK5C,UAF9BxpD,KAE4CmG,GAAKimD,EAAK3C,UAE9D,OAJQzpD,KAICq5B,UAJDr5B,KAIe0mB,SAAW,IAAM5b,EAAMA,GAQhD6/C,EAAEiG,UAAYjG,EAAEkG,MAAQ,WACtB,OAAOnF,EAAS,IAAI1rD,KAAK6S,YAAY7S,MAAOA,KAAKmG,EAAI,EAAG,IAS1DwkD,EAAEt4C,QAAUs4C,EAAE/mC,OAAS,WACrB,IACEwoC,EADMpsD,KACG6S,YACT/H,EAAM6kD,EAFA3vD,KAAAA,KAEoBmG,GAAKimD,EAAK5C,UAF9BxpD,KAE4CmG,GAAKimD,EAAK3C,UAE9D,OAJQzpD,KAICq5B,QAAU,IAAMvuB,EAAMA,GA6NjC,IAAIwF,EAAS,WAGX,SAASwgD,EAAgB9uD,EAAGke,EAAG47B,GAC7B,IAAI/G,EACFka,EAAQ,EACR5uD,EAAI2B,EAAE4B,OAER,IAAK5B,EAAIA,EAAEkE,QAAS7F,KAClB00C,EAAO/yC,EAAE3B,GAAK6f,EAAI+uC,EAClBjtD,EAAE3B,GAAK00C,EAAO+G,EAAO,EACrBmT,EAAQla,EAAO+G,EAAO,EAKxB,OAFImT,GAAOjtD,EAAE2E,QAAQsoD,GAEdjtD,EAGT,SAASyiB,EAAQnd,EAAGC,EAAGwpD,EAAIC,GACzB,IAAI3wD,EAAG8f,EAEP,GAAI4wC,GAAMC,EACR7wC,EAAI4wC,EAAKC,EAAK,GAAK,OAEnB,IAAK3wD,EAAI8f,EAAI,EAAG9f,EAAI0wD,EAAI1wD,IACtB,GAAIiH,EAAEjH,IAAMkH,EAAElH,GAAI,CAChB8f,EAAI7Y,EAAEjH,GAAKkH,EAAElH,GAAK,GAAK,EACvB,MAKN,OAAO8f,EAGT,SAASxP,EAASrJ,EAAGC,EAAGwpD,EAAIjV,GAI1B,IAHA,IAAIz7C,EAAI,EAGD0wD,KACLzpD,EAAEypD,IAAO1wD,EACTA,EAAIiH,EAAEypD,GAAMxpD,EAAEwpD,GAAM,EAAI,EACxBzpD,EAAEypD,GAAM1wD,EAAIy7C,EAAOx0C,EAAEypD,GAAMxpD,EAAEwpD,GAI/B,MAAQzpD,EAAE,IAAMA,EAAE1D,OAAS,GAAI0D,EAAErB,QAGnC,OAAO,SAAUjE,EAAGyJ,EAAG0gD,EAAIjB,EAAI4B,EAAIhR,GACjC,IAAI/nB,EAAK5tB,EAAG9F,EAAG6f,EAAG+wC,EAASC,EAAMzhB,EAAM0hB,EAAOj1B,EAAGk1B,EAAIC,EAAKC,EAAMC,EAAMlF,EAAIl5B,EAAGvlB,EAAI4jD,EAAIC,EACnFC,EAAIC,EACJvF,EAAOpqD,EAAE6Q,YACT/K,EAAO9F,EAAEN,GAAK+J,EAAE/J,EAAI,GAAK,EACzBoqD,EAAK9pD,EAAEtB,EACPqrD,EAAKtgD,EAAE/K,EAGT,KAAKorD,GAAOA,EAAG,IAAOC,GAAOA,EAAG,IAE9B,OAAO,IAAIK,EACRpqD,EAAEN,GAAM+J,EAAE/J,IAAMoqD,GAAKC,GAAMD,EAAG,IAAMC,EAAG,GAAMA,GAG9CD,GAAe,GAATA,EAAG,KAAYC,EAAY,EAAPjkD,EAAWA,EAAO,EAHQ6f,KAsBxD,IAhBIm0B,GACFmV,EAAU,EACV9qD,EAAInE,EAAEmE,EAAIsF,EAAEtF,IAEZ21C,EAAOyO,EACP0G,EAAUzG,EACVrkD,EAAI+jD,EAAUloD,EAAEmE,EAAI8qD,GAAW/G,EAAUz+C,EAAEtF,EAAI8qD,IAGjDS,EAAK3F,EAAGnoD,OACR4tD,EAAK1F,EAAGloD,OAERwtD,GADAl1B,EAAI,IAAIkwB,EAAKtkD,IACNpH,KAIFL,EAAI,EAAG0rD,EAAG1rD,KAAOyrD,EAAGzrD,IAAM,GAAIA,KAanC,GAXI0rD,EAAG1rD,IAAMyrD,EAAGzrD,IAAM,IAAI8F,IAEhB,MAANgmD,GACFE,EAAKF,EAAKC,EAAKjkD,UACf+iD,EAAKkB,EAAK9C,UAEV+C,EADSS,EACJX,GAAMnqD,EAAEmE,EAAIsF,EAAEtF,GAAK,EAEnBgmD,EAGHE,EAAK,EACP+E,EAAGztD,KAAK,GACRutD,GAAO,MACF,CAOL,GAJA7E,EAAKA,EAAK4E,EAAU,EAAI,EACxB5wD,EAAI,EAGM,GAANqxD,EAAS,CAMX,IALAxxC,EAAI,EACJ6rC,EAAKA,EAAG,GACRM,KAGQhsD,EAAImxD,GAAMtxC,IAAMmsC,IAAMhsD,IAC5B8yB,EAAIjT,EAAI47B,GAAQgQ,EAAGzrD,IAAM,GACzB+wD,EAAG/wD,GAAK8yB,EAAI44B,EAAK,EACjB7rC,EAAIiT,EAAI44B,EAAK,EAGfmF,EAAOhxC,GAAK7f,EAAImxD,MAGX,CAiBL,KAdAtxC,EAAI47B,GAAQiQ,EAAG,GAAK,GAAK,GAEjB,IACNA,EAAK+E,EAAgB/E,EAAI7rC,EAAG47B,GAC5BgQ,EAAKgF,EAAgBhF,EAAI5rC,EAAG47B,GAC5B4V,EAAK3F,EAAGnoD,OACR4tD,EAAK1F,EAAGloD,QAGVgK,EAAK8jD,EAELJ,GADAD,EAAMvF,EAAG5lD,MAAM,EAAGwrD,IACP9tD,OAGJ0tD,EAAOI,GAAKL,EAAIC,KAAU,EAQjC,KANAK,EAAK5F,EAAG7lD,SACLS,QAAQ,GACX8qD,EAAM1F,EAAG,GAELA,EAAG,IAAMjQ,EAAO,KAAK2V,EAGvBvxC,EAAI,GAGJ6T,EAAMtP,EAAQsnC,EAAIsF,EAAKK,EAAIJ,IAGjB,GAGRC,EAAOF,EAAI,GACPK,GAAMJ,IAAMC,EAAOA,EAAOzV,GAAQuV,EAAI,IAAM,KAGhDnxC,EAAIqxC,EAAOE,EAAM,GAUT,GACFvxC,GAAK47B,IAAM57B,EAAI47B,EAAO,GAWf,IAHX/nB,EAAMtP,EALNgrB,EAAOqhB,EAAgB/E,EAAI7rC,EAAG47B,GAKVuV,EAJpBF,EAAQ1hB,EAAK7rC,OACb0tD,EAAOD,EAAIztD,WAOTsc,IAGAvP,EAAS8+B,EAAMiiB,EAAKP,EAAQQ,EAAK5F,EAAIoF,EAAOrV,MAOrC,GAAL57B,IAAQ6T,EAAM7T,EAAI,GACtBuvB,EAAOsc,EAAG7lD,UAGZirD,EAAQ1hB,EAAK7rC,QACD0tD,GAAM7hB,EAAK9oC,QAAQ,GAG/BgK,EAAS0gD,EAAK5hB,EAAM6hB,EAAMxV,IAGd,GAAR/nB,IAIFA,EAAMtP,EAAQsnC,EAAIsF,EAAKK,EAHvBJ,EAAOD,EAAIztD,SAMD,IACRsc,IAGAvP,EAAS0gD,EAAKK,EAAKJ,EAAOK,EAAK5F,EAAIuF,EAAMxV,IAI7CwV,EAAOD,EAAIztD,QACM,IAARmwB,IACT7T,IACAmxC,GAAO,IAITD,EAAG/wD,KAAO6f,EAGN6T,GAAOs9B,EAAI,GACbA,EAAIC,KAAUxF,EAAGl+C,IAAO,GAExByjD,GAAOvF,EAAGl+C,IACV0jD,EAAO,IAGD1jD,IAAO4jD,QAAiB,IAAXH,EAAI,KAAkBhF,MAE7C6E,OAAkB,IAAXG,EAAI,GAIRD,EAAG,IAAIA,EAAGnrD,QAIjB,GAAe,GAAXgrD,EACF/0B,EAAE/1B,EAAIA,EACN6iD,EAAUkI,MACL,CAGL,IAAK7wD,EAAI,EAAG6f,EAAIkxC,EAAG,GAAIlxC,GAAK,GAAIA,GAAK,GAAI7f,IACzC67B,EAAE/1B,EAAI9F,EAAI8F,EAAI8qD,EAAU,EAExBvF,EAASxvB,EAAG4wB,EAAKX,EAAKjwB,EAAE/1B,EAAI,EAAIgmD,EAAIjB,EAAIgG,GAG1C,OAAOh1B,GAnQE,GA4QZ,SAASwvB,EAAS1pD,EAAGqqD,EAAInB,EAAI0G,GAC5B,IAAItoD,EAAQjJ,EAAG6T,EAAGgM,EAAGmrC,EAAIwG,EAASt3C,EAAGuxC,EAAIgG,EACvC1F,EAAOpqD,EAAE6Q,YAGXk/C,EAAK,GAAU,MAAN1F,EAAY,CAInB,KAHAP,EAAK9pD,EAAEtB,GAGE,OAAOsB,EAWhB,IAAKsH,EAAS,EAAG4W,EAAI4rC,EAAG,GAAI5rC,GAAK,GAAIA,GAAK,GAAI5W,IAI9C,IAHAjJ,EAAIgsD,EAAK/iD,GAGD,EACNjJ,GAAKmqD,EACLt2C,EAAIm4C,EAIJhB,GAHA9wC,EAAIuxC,EAAGgG,EAAM,IAGJ3H,EAAQ,GAAI7gD,EAAS4K,EAAI,GAAK,GAAK,OAI5C,IAFA49C,EAAM5sD,KAAKmiC,MAAMhnC,EAAI,GAAKmqD,MAC1BtqC,EAAI4rC,EAAGloD,QACO,CACZ,IAAIguD,EASF,MAAMG,EANN,KAAO7xC,KAAO4xC,GAAMhG,EAAGnoD,KAAK,GAC5B4W,EAAI8wC,EAAK,EACT/hD,EAAS,EAET4K,GADA7T,GAAKmqD,GACGA,EAAW,MAIhB,CAIL,IAHAjwC,EAAI2F,EAAI4rC,EAAGgG,GAGNxoD,EAAS,EAAG4W,GAAK,GAAIA,GAAK,GAAI5W,IAUnC+hD,GAHAn3C,GAJA7T,GAAKmqD,GAIGA,EAAWlhD,GAGV,EAAI,EAAIiR,EAAI4vC,EAAQ,GAAI7gD,EAAS4K,EAAI,GAAK,GAAK,EAoB5D,GAfA09C,EAAcA,GAAevF,EAAK,QAChB,IAAhBP,EAAGgG,EAAM,KAAkB59C,EAAI,EAAIqG,EAAIA,EAAI4vC,EAAQ,GAAI7gD,EAAS4K,EAAI,IAMtE29C,EAAU3G,EAAK,GACVG,GAAMuG,KAAuB,GAAN1G,GAAWA,IAAOlpD,EAAEN,EAAI,EAAI,EAAI,IACxD2pD,EAAK,GAAW,GAANA,IAAkB,GAANH,GAAW0G,GAAqB,GAAN1G,IAG9C7qD,EAAI,EAAI6T,EAAI,EAAIqG,EAAI4vC,EAAQ,GAAI7gD,EAAS4K,GAAK,EAAI43C,EAAGgG,EAAM,IAAM,GAAM,GACvE5G,IAAOlpD,EAAEN,EAAI,EAAI,EAAI,IAEvB2qD,EAAK,IAAMP,EAAG,GAgBhB,OAfAA,EAAGloD,OAAS,EACRiuD,GAGFxF,GAAMrqD,EAAEmE,EAAI,EAGZ2lD,EAAG,GAAK3B,EAAQ,IAAKK,EAAW6B,EAAK7B,GAAYA,GACjDxoD,EAAEmE,GAAKkmD,GAAM,GAIbP,EAAG,GAAK9pD,EAAEmE,EAAI,EAGTnE,EAiBT,GAbS,GAAL3B,GACFyrD,EAAGloD,OAASkuD,EACZ5xC,EAAI,EACJ4xC,MAEAhG,EAAGloD,OAASkuD,EAAM,EAClB5xC,EAAIiqC,EAAQ,GAAIK,EAAWnqD,GAI3ByrD,EAAGgG,GAAO59C,EAAI,GAAKqG,EAAI4vC,EAAQ,GAAI7gD,EAAS4K,GAAKi2C,EAAQ,GAAIj2C,GAAK,GAAKgM,EAAI,GAGzE2xC,EACF,OAAS,CAGP,GAAW,GAAPC,EAAU,CAGZ,IAAKzxD,EAAI,EAAG6T,EAAI43C,EAAG,GAAI53C,GAAK,GAAIA,GAAK,GAAI7T,IAEzC,IADA6T,EAAI43C,EAAG,IAAM5rC,EACRA,EAAI,EAAGhM,GAAK,GAAIA,GAAK,GAAIgM,IAG1B7f,GAAK6f,IACPle,EAAEmE,IACE2lD,EAAG,IAAMvB,IAAMuB,EAAG,GAAK,IAG7B,MAGA,GADAA,EAAGgG,IAAQ5xC,EACP4rC,EAAGgG,IAAQvH,EAAM,MACrBuB,EAAGgG,KAAS,EACZ5xC,EAAI,EAMV,IAAK7f,EAAIyrD,EAAGloD,OAAoB,IAAZkoD,IAAKzrD,IAAWyrD,EAAG1gD,MAsBzC,OAnBIy+C,IAGE7nD,EAAEmE,EAAIimD,EAAKzC,MAGb3nD,EAAEtB,EAAI,KACNsB,EAAEmE,EAAIwhB,KAGG3lB,EAAEmE,EAAIimD,EAAK1C,OAGpB1nD,EAAEmE,EAAI,EACNnE,EAAEtB,GAAK,KAKJsB,EAIT,SAAS2tD,EAAe3tD,EAAGgwD,EAAO3F,GAChC,IAAKrqD,EAAE4F,WAAY,OAAOqqD,EAAkBjwD,GAC5C,IAAIke,EACF/Z,EAAInE,EAAEmE,EACN2E,EAAM8/C,EAAe5oD,EAAEtB,GACvBsD,EAAM8G,EAAIlH,OAwBZ,OAtBIouD,GACE3F,IAAOnsC,EAAImsC,EAAKroD,GAAO,EACzB8G,EAAMA,EAAI+L,OAAO,GAAK,IAAM/L,EAAI5E,MAAM,GAAK6kD,EAAc7qC,GAChDlc,EAAM,IACf8G,EAAMA,EAAI+L,OAAO,GAAK,IAAM/L,EAAI5E,MAAM,IAGxC4E,EAAMA,GAAO9I,EAAEmE,EAAI,EAAI,IAAM,MAAQnE,EAAEmE,GAC9BA,EAAI,GACb2E,EAAM,KAAOigD,GAAe5kD,EAAI,GAAK2E,EACjCuhD,IAAOnsC,EAAImsC,EAAKroD,GAAO,IAAG8G,GAAOigD,EAAc7qC,KAC1C/Z,GAAKnC,GACd8G,GAAOigD,EAAc5kD,EAAI,EAAInC,GACzBqoD,IAAOnsC,EAAImsC,EAAKlmD,EAAI,GAAK,IAAG2E,EAAMA,EAAM,IAAMigD,EAAc7qC,OAE3DA,EAAI/Z,EAAI,GAAKnC,IAAK8G,EAAMA,EAAI5E,MAAM,EAAGga,GAAK,IAAMpV,EAAI5E,MAAMga,IAC3DmsC,IAAOnsC,EAAImsC,EAAKroD,GAAO,IACrBmC,EAAI,IAAMnC,IAAK8G,GAAO,KAC1BA,GAAOigD,EAAc7qC,KAIlBpV,EAKT,SAASikD,EAAkBzlD,EAAQnD,GACjC,IAAIoU,EAAIjR,EAAO,GAGf,IAAMnD,GAAKqkD,EAAUjwC,GAAK,GAAIA,GAAK,GAAIpU,IACvC,OAAOA,EAIT,SAAS0oD,EAAQzC,EAAMC,EAAIF,GACzB,GAAIE,EAAK5B,EAKP,MAFAZ,GAAW,EACPsC,IAAIC,EAAKjkD,UAAYgkD,GACnBznD,MAAMslD,GAEd,OAAO0B,EAAS,IAAIU,EAAKtjD,GAAOujD,EAAI,GAAG,GAIzC,SAASyB,EAAM1B,EAAMC,EAAInB,GACvB,GAAImB,EAAK3B,EAAc,MAAMhmD,MAAMslD,GACnC,OAAO0B,EAAS,IAAIU,EAAK/lB,GAAKgmB,EAAInB,GAAI,GAIxC,SAASgE,EAAa5lD,GACpB,IAAIiR,EAAIjR,EAAO1F,OAAS,EACtBI,EAAMuW,EAAIiwC,EAAW,EAKvB,GAHAjwC,EAAIjR,EAAOiR,GAGJ,CAGL,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIvW,IAG7B,IAAKuW,EAAIjR,EAAO,GAAIiR,GAAK,GAAIA,GAAK,GAAIvW,IAGxC,OAAOA,EAIT,SAAS+mD,EAAc7qC,GAErB,IADA,IAAIgyC,EAAK,GACFhyC,KAAMgyC,GAAM,IACnB,OAAOA,EAWT,SAASzB,EAAOrE,EAAMpqD,EAAGb,EAAGgrD,GAC1B,IAAIyF,EACFzxC,EAAI,IAAIisC,EAAK,GAIblsC,EAAIhb,KAAKmiC,KAAK8kB,EAAK3B,EAAW,GAIhC,IAFAX,GAAW,IAEF,CAOP,GANI1oD,EAAI,GAEFgxD,GADJhyC,EAAIA,EAAEQ,MAAM3e,IACGtB,EAAGwf,KAAI0xC,GAAc,GAI5B,KADVzwD,EAAI+oD,EAAU/oD,EAAI,IACL,CAGXA,EAAIgf,EAAEzf,EAAEkD,OAAS,EACbguD,GAA0B,IAAXzxC,EAAEzf,EAAES,MAAYgf,EAAEzf,EAAES,GACvC,MAIFgxD,GADAnwD,EAAIA,EAAE2e,MAAM3e,IACDtB,EAAGwf,GAKhB,OAFA2pC,GAAW,EAEJ1pC,EAIT,SAASiyC,EAAMjxD,GACb,OAA6B,EAAtBA,EAAET,EAAES,EAAET,EAAEkD,OAAS,GAO1B,SAASyuD,EAASjG,EAAMpuC,EAAMs0C,GAK5B,IAJA,IAAI7mD,EACFzJ,EAAI,IAAIoqD,EAAKpuC,EAAK,IAClB3d,EAAI,IAEGA,EAAI2d,EAAKpa,QAAS,CAEzB,KADA6H,EAAI,IAAI2gD,EAAKpuC,EAAK3d,KACXqB,EAAG,CACRM,EAAIyJ,EACJ,MACSzJ,EAAEswD,GAAM7mD,KACjBzJ,EAAIyJ,GAIR,OAAOzJ,EAmCT,SAASgtD,EAAmBhtD,EAAGqqD,GAC7B,IAAInlB,EAAaqrB,EAAOr+C,EAAGnE,EAAKyJ,EAAK2Z,EAAG+6B,EACtCxB,EAAM,EACNrsD,EAAI,EACJ6f,EAAI,EACJksC,EAAOpqD,EAAE6Q,YACTq4C,EAAKkB,EAAK9C,SACV6C,EAAKC,EAAKjkD,UAGZ,IAAKnG,EAAEtB,IAAMsB,EAAEtB,EAAE,IAAMsB,EAAEmE,EAAI,GAE3B,OAAO,IAAIimD,EAAKpqD,EAAEtB,EACbsB,EAAEtB,EAAE,GAASsB,EAAEN,EAAI,EAAI,EAAI,EAAA,EAAlB,EACVM,EAAEN,EAAIM,EAAEN,EAAI,EAAI,EAAIM,EAAI,KAa9B,IAVU,MAANqqD,GACFxC,GAAW,EACXqE,EAAM/B,GAEN+B,EAAM7B,EAGRl5B,EAAI,IAAIi5B,EAAK,QAGNpqD,EAAEmE,GAAK,GAGZnE,EAAIA,EAAE2e,MAAMwS,GACZjT,GAAK,EAUP,IAJAguC,GADAqE,EAAQrtD,KAAK2D,IAAIshD,EAAQ,EAAGjqC,IAAMhb,KAAK4D,KAAO,EAAI,EAAI,EAEtDo+B,EAAcn3B,EAAMyJ,EAAM,IAAI4yC,EAAK,GACnCA,EAAKjkD,UAAY+lD,IAER,CAKP,GAJAn+C,EAAM27C,EAAS37C,EAAI4Q,MAAM3e,GAAIksD,EAAK,GAClChnB,EAAcA,EAAYvmB,QAAQtgB,GAG9BuqD,GAFJz3B,EAAI3Z,EAAIiG,KAAKnP,EAAOP,EAAKm3B,EAAagnB,EAAK,KAEtBxtD,GAAGwF,MAAM,EAAGgoD,KAAStD,EAAepxC,EAAI9Y,GAAGwF,MAAM,EAAGgoD,GAAM,CAE7E,IADAh6C,EAAIgM,EACGhM,KAAKsF,EAAMkyC,EAASlyC,EAAImH,MAAMnH,GAAM00C,EAAK,GAOhD,GAAU,MAAN7B,EAYF,OADAD,EAAKjkD,UAAYgkD,EACV3yC,EAVP,KAAIkzC,EAAM,GAAKzB,EAAoBzxC,EAAI9Y,EAAGwtD,EAAMqE,EAAOrH,EAAIwB,IAMzD,OAAOhB,EAASlyC,EAAK4yC,EAAKjkD,UAAYgkD,EAAIjB,EAAIrB,GAAW,GALzDuC,EAAKjkD,UAAY+lD,GAAO,GACxBhnB,EAAcn3B,EAAMojB,EAAI,IAAIi5B,EAAK,GACjC/rD,EAAI,EACJqsD,IAUNlzC,EAAM2Z,GAoBV,SAASy7B,EAAiBnjD,EAAG4gD,GAC3B,IAAI5rD,EAAG+xD,EAAItrB,EAAa/gC,EAAG8gC,EAAWylB,EAAKlzC,EAAK2Z,EAAG+6B,EAAKuE,EAAInE,EAC1DntD,EAAI,EAEJa,EAAIyJ,EACJqgD,EAAK9pD,EAAEtB,EACP0rD,EAAOpqD,EAAE6Q,YACTq4C,EAAKkB,EAAK9C,SACV6C,EAAKC,EAAKjkD,UAGZ,GAAInG,EAAEN,EAAI,IAAMoqD,IAAOA,EAAG,KAAO9pD,EAAEmE,GAAc,GAAT2lD,EAAG,IAAwB,GAAbA,EAAGloD,OACvD,OAAO,IAAIwoD,EAAKN,IAAOA,EAAG,IAAK,EAAA,EAAgB,GAAP9pD,EAAEN,EAASimB,IAAMmkC,EAAK,EAAI9pD,GAcpE,GAXU,MAANqqD,GACFxC,GAAW,EACXqE,EAAM/B,GAEN+B,EAAM7B,EAGRD,EAAKjkD,UAAY+lD,GAnBP,GAqBVsE,GADA/xD,EAAImqD,EAAekB,IACZj1C,OAAO,KAEV3R,KAAKsF,IAAIrE,EAAInE,EAAEmE,GAAK,OAqCtB,OAJAgtB,EAAI07B,EAAQzC,EAAM8B,EAAM,EAAG/B,GAAIxrC,MAAMxa,EAAI,IACzCnE,EAAI4sD,EAAiB,IAAIxC,EAAKoG,EAAK,IAAM/xD,EAAEyF,MAAM,IAAKgoD,EAzD9C,IAyD2DzuC,KAAK0T,GACxEi5B,EAAKjkD,UAAYgkD,EAEJ,MAANE,EAAaX,EAAS1pD,EAAGmqD,EAAIjB,EAAIrB,GAAW,GAAQ7nD,EAxB3D,KAAOwwD,EAAK,GAAW,GAANA,GAAiB,GAANA,GAAW/xD,EAAEoW,OAAO,GAAK,GAGnD27C,GADA/xD,EAAImqD,GADJ5oD,EAAIA,EAAE2e,MAAMlV,IACS/K,IACdmW,OAAO,GACd1V,IAiCJ,IA9BEgF,EAAInE,EAAEmE,EAEFqsD,EAAK,GACPxwD,EAAI,IAAIoqD,EAAK,KAAO3rD,GACpB0F,KAEAnE,EAAI,IAAIoqD,EAAKoG,EAAK,IAAM/xD,EAAEyF,MAAM,IAepCusD,EAAKzwD,EAKLwX,EAAMytB,EAAYjlC,EAAIsO,EAAOtO,EAAEwe,MAAM,GAAIxe,EAAEyd,KAAK,GAAIyuC,EAAK,GACzDI,EAAK5C,EAAS1pD,EAAE2e,MAAM3e,GAAIksD,EAAK,GAC/BhnB,EAAc,IAEL,CAIP,GAHAD,EAAYykB,EAASzkB,EAAUtmB,MAAM2tC,GAAKJ,EAAK,GAG3CtD,GAFJz3B,EAAI3Z,EAAIiG,KAAKnP,EAAO22B,EAAW,IAAImlB,EAAKllB,GAAcgnB,EAAK,KAEtCxtD,GAAGwF,MAAM,EAAGgoD,KAAStD,EAAepxC,EAAI9Y,GAAGwF,MAAM,EAAGgoD,GAAM,CAc7E,GAbA10C,EAAMA,EAAImH,MAAM,GAIN,IAANxa,IAASqT,EAAMA,EAAIiG,KAAKovC,EAAQzC,EAAM8B,EAAM,EAAG/B,GAAIxrC,MAAMxa,EAAI,MACjEqT,EAAMlJ,EAAOkJ,EAAK,IAAI4yC,EAAKjrD,GAAI+sD,EAAK,GAQ1B,MAAN7B,EAWF,OADAD,EAAKjkD,UAAYgkD,EACV3yC,EAVP,IAAIyxC,EAAoBzxC,EAAI9Y,EAAGwtD,EA5F3B,GA4FwChD,EAAIwB,GAM9C,OAAOhB,EAASlyC,EAAK4yC,EAAKjkD,UAAYgkD,EAAIjB,EAAIrB,GAAW,GALzDuC,EAAKjkD,UAAY+lD,GA7Ff,GA8FF/6B,EAAI8T,EAAYjlC,EAAIsO,EAAOmiD,EAAGjyC,MAAM,GAAIiyC,EAAGhzC,KAAK,GAAIyuC,EAAK,GACzDI,EAAK5C,EAAS1pD,EAAE2e,MAAM3e,GAAIksD,EAAK,GAC/BhnB,EAAcwlB,EAAM,EAU1BlzC,EAAM2Z,EACN+T,GAAe,GAMnB,SAAS+qB,EAAkBjwD,GAEzB,OAAO0H,OAAO1H,EAAEN,EAAIM,EAAEN,EAAI,GAO5B,SAASgxD,EAAa1wD,EAAG8I,GACvB,IAAI3E,EAAG9F,EAAG2D,EAmBV,KAhBKmC,EAAI2E,EAAId,QAAQ,OAAS,IAAGc,EAAMA,EAAIzB,QAAQ,IAAK,MAGnDhJ,EAAIyK,EAAIsL,OAAO,OAAS,GAGvBjQ,EAAI,IAAGA,EAAI9F,GACf8F,IAAM2E,EAAI5E,MAAM7F,EAAI,GACpByK,EAAMA,EAAIyL,UAAU,EAAGlW,IACd8F,EAAI,IAGbA,EAAI2E,EAAIlH,QAILvD,EAAI,EAAyB,KAAtByK,EAAI6nD,WAAWtyD,GAAWA,KAGtC,IAAK2D,EAAM8G,EAAIlH,OAAoC,KAA5BkH,EAAI6nD,WAAW3uD,EAAM,KAAaA,GAGzD,GAFA8G,EAAMA,EAAI5E,MAAM7F,EAAG2D,GAEV,CAYP,GAXAA,GAAO3D,EACP2B,EAAEmE,EAAIA,EAAIA,EAAI9F,EAAI,EAClB2B,EAAEtB,KAMFL,GAAK8F,EAAI,GAAKqkD,EACVrkD,EAAI,IAAG9F,GAAKmqD,GAEZnqD,EAAI2D,EAAK,CAEX,IADI3D,GAAG2B,EAAEtB,EAAEiD,MAAMmH,EAAI5E,MAAM,EAAG7F,IACzB2D,GAAOwmD,EAAUnqD,EAAI2D,GAAMhC,EAAEtB,EAAEiD,MAAMmH,EAAI5E,MAAM7F,EAAGA,GAAKmqD,IAC5D1/C,EAAMA,EAAI5E,MAAM7F,GAChBA,EAAImqD,EAAW1/C,EAAIlH,YAEnBvD,GAAK2D,EAGP,KAAO3D,KAAMyK,GAAO,IACpB9I,EAAEtB,EAAEiD,MAAMmH,GAEN++C,IAGE7nD,EAAEmE,EAAInE,EAAE6Q,YAAY82C,MAGtB3nD,EAAEtB,EAAI,KACNsB,EAAEmE,EAAIwhB,KAGG3lB,EAAEmE,EAAInE,EAAE6Q,YAAY62C,OAG7B1nD,EAAEmE,EAAI,EACNnE,EAAEtB,GAAK,UAOXsB,EAAEmE,EAAI,EACNnE,EAAEtB,GAAK,GAGT,OAAOsB,EAqHT,SAASsqD,EAAaF,EAAMjrD,EAAGa,EAAGyJ,EAAGmnD,GACnC,IAAI1+C,EAAGif,EAAGiJ,EAAGkyB,EAEXnC,EAAKC,EAAKjkD,UACV+X,EAAIhb,KAAKmiC,KAAK8kB,EAAK3B,GAMrB,IAJAX,GAAW,EACXyE,EAAKtsD,EAAE2e,MAAM3e,GACbo6B,EAAI,IAAIgwB,EAAK3gD,KAEJ,CAMP,GALA0nB,EAAI7iB,EAAO8rB,EAAEzb,MAAM2tC,GAAK,IAAIlC,EAAKjrD,IAAMA,KAAMgrD,EAAI,GACjD/vB,EAAIw2B,EAAennD,EAAEgU,KAAK0T,GAAK1nB,EAAE+U,MAAM2S,GACvC1nB,EAAI6E,EAAO6iB,EAAExS,MAAM2tC,GAAK,IAAIlC,EAAKjrD,IAAMA,KAAMgrD,EAAI,QAGlC,KAFfh5B,EAAIiJ,EAAE3c,KAAKhU,IAEL/K,EAAEwf,GAAe,CACrB,IAAKhM,EAAIgM,EAAGiT,EAAEzyB,EAAEwT,KAAOkoB,EAAE17B,EAAEwT,IAAMA,MACjC,IAAU,GAANA,EAAS,MAGfA,EAAIkoB,EACJA,EAAI3wB,EACJA,EAAI0nB,EACJA,EAAIjf,EACJ7T,EAMF,OAHAwpD,GAAW,EACX12B,EAAEzyB,EAAEkD,OAASsc,EAAI,EAEViT,EAKT,SAASq5B,EAAiBJ,EAAMpqD,GAC9B,IAAImxB,EACFkG,EAAQr3B,EAAEN,EAAI,EACdsM,EAAK8/C,EAAM1B,EAAMA,EAAKjkD,UAAW,GACjC0lD,EAAS7/C,EAAG2S,MAAM,IAIpB,IAFA3e,EAAIA,EAAEwI,OAEAmc,IAAIknC,GAER,OADA5E,EAAW5vB,EAAQ,EAAI,EAChBr3B,EAKT,IAFAmxB,EAAInxB,EAAEgrD,SAASh/C,IAET0Y,SACJuiC,EAAW5vB,EAAQ,EAAI,MAClB,CAIL,IAHAr3B,EAAIA,EAAEwe,MAAM2S,EAAExS,MAAM3S,KAGd2Y,IAAIknC,GAER,OADA5E,EAAWmJ,EAAMj/B,GAAMkG,EAAQ,EAAI,EAAMA,EAAQ,EAAI,EAC9Cr3B,EAGTinD,EAAWmJ,EAAMj/B,GAAMkG,EAAQ,EAAI,EAAMA,EAAQ,EAAI,EAGvD,OAAOr3B,EAAEwe,MAAMxS,GAAIxD,MASrB,SAASilD,EAAeztD,EAAGwpD,EAASa,EAAInB,GACtC,IAAIpP,EAAM31C,EAAG9F,EAAG6f,EAAGlc,EAAK6tD,EAAS/mD,EAAKghD,EAAIrgD,EACxC2gD,EAAOpqD,EAAE6Q,YACTm/C,OAAe,IAAP3F,EAWV,GATI2F,GACFhH,EAAWqB,EAAI,EAAGlD,QACP,IAAP+B,EAAeA,EAAKkB,EAAK9C,SACxB0B,EAAWE,EAAI,EAAG,KAEvBmB,EAAKD,EAAKjkD,UACV+iD,EAAKkB,EAAK9C,UAGPtnD,EAAE4F,WAEA,CAoCL,IA3BIoqD,GACFlW,EAAO,EACQ,IAAX0P,EACFa,EAAU,EAALA,EAAS,EACM,GAAXb,IACTa,EAAU,EAALA,EAAS,IAGhBvQ,EAAO0P,GAfTnrD,GADAyK,EAAM6kD,EAAe3tD,IACbgI,QAAQ,OAsBP,IACPc,EAAMA,EAAIzB,QAAQ,IAAK,KACvBoC,EAAI,IAAI2gD,EAAK,IACXjmD,EAAI2E,EAAIlH,OAASvD,EACnBoL,EAAE/K,EAAI4qD,EAAYqE,EAAelkD,GAAI,GAAIqwC,GACzCrwC,EAAEtF,EAAIsF,EAAE/K,EAAEkD,QAIZuC,EAAInC,GADJ8nD,EAAKR,EAAYxgD,EAAK,GAAIgxC,IACbl4C,OAGO,GAAbkoD,IAAK9nD,IAAY8nD,EAAG1gD,MAE3B,GAAK0gD,EAAG,GAED,CAyBL,GAxBIzrD,EAAI,EACN8F,MAEAnE,EAAI,IAAIoqD,EAAKpqD,IACXtB,EAAIorD,EACN9pD,EAAEmE,EAAIA,EAEN2lD,GADA9pD,EAAIsO,EAAOtO,EAAGyJ,EAAG4gD,EAAInB,EAAI,EAAGpP,IACrBp7C,EACPyF,EAAInE,EAAEmE,EACN0rD,EAAU7I,GAIZ3oD,EAAIyrD,EAAGO,GACPnsC,EAAI47B,EAAO,EACX+V,EAAUA,QAA0B,IAAf/F,EAAGO,EAAK,GAE7BwF,EAAU3G,EAAK,QACJ,IAAN7qD,GAAgBwxD,KAAoB,IAAP3G,GAAYA,KAAQlpD,EAAEN,EAAI,EAAI,EAAI,IAChErB,EAAI6f,GAAK7f,IAAM6f,IAAa,IAAPgrC,GAAY2G,GAAkB,IAAP3G,GAAyB,EAAbY,EAAGO,EAAK,IAChEnB,KAAQlpD,EAAEN,EAAI,EAAI,EAAI,IAE1BoqD,EAAGloD,OAASyoD,EAERwF,EAGF,OAAS/F,IAAKO,GAAMvQ,EAAO,GACzBgQ,EAAGO,GAAM,EACJA,MACDlmD,EACF2lD,EAAGnlD,QAAQ,IAMjB,IAAK3C,EAAM8nD,EAAGloD,QAASkoD,EAAG9nD,EAAM,KAAMA,GAGtC,IAAK3D,EAAI,EAAGyK,EAAM,GAAIzK,EAAI2D,EAAK3D,IAAKyK,GAAOs+C,EAASvyC,OAAOi1C,EAAGzrD,IAG9D,GAAI2xD,EAAO,CACT,GAAIhuD,EAAM,EACR,GAAe,IAAXwnD,GAA4B,GAAXA,EAAc,CAEjC,IADAnrD,EAAe,IAAXmrD,EAAgB,EAAI,IACjBxnD,EAAKA,EAAM3D,EAAG2D,IAAO8G,GAAO,IAEnC,IAAK9G,GADL8nD,EAAKR,EAAYxgD,EAAKgxC,EAAM0P,IACd5nD,QAASkoD,EAAG9nD,EAAM,KAAMA,GAGtC,IAAK3D,EAAI,EAAGyK,EAAM,KAAMzK,EAAI2D,EAAK3D,IAAKyK,GAAOs+C,EAASvyC,OAAOi1C,EAAGzrD,SAEhEyK,EAAMA,EAAI+L,OAAO,GAAK,IAAM/L,EAAI5E,MAAM,GAI1C4E,EAAOA,GAAO3E,EAAI,EAAI,IAAM,MAAQA,OAC/B,GAAIA,EAAI,EAAG,CAChB,OAASA,GAAI2E,EAAM,IAAMA,EACzBA,EAAM,KAAOA,OAEb,KAAM3E,EAAInC,EAAK,IAAKmC,GAAKnC,EAAKmC,KAAO2E,GAAO,SACnC3E,EAAInC,IAAK8G,EAAMA,EAAI5E,MAAM,EAAGC,GAAK,IAAM2E,EAAI5E,MAAMC,SAlE5D2E,EAAMknD,EAAQ,OAAS,IAsEzBlnD,GAAkB,IAAX0gD,EAAgB,KAAkB,GAAXA,EAAe,KAAkB,GAAXA,EAAe,KAAO,IAAM1gD,OA9GhFA,EAAMmnD,EAAkBjwD,GAiH1B,OAAOA,EAAEN,EAAI,EAAI,IAAMoJ,EAAMA,EAK/B,SAASqnD,EAASxsD,EAAK3B,GACrB,GAAI2B,EAAI/B,OAASI,EAEf,OADA2B,EAAI/B,OAASI,GACN,EAyDX,SAASwG,EAAIxI,GACX,OAAO,IAAIhC,KAAKgC,GAAGwI,MAUrB,SAASi9B,GAAKzlC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGylC,OAWrB,SAASmI,GAAM5tC,GACb,OAAO,IAAIhC,KAAKgC,GAAG4tC,QAYrB,SAASl/B,GAAI1O,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAGyd,KAAKhU,GAW1B,SAAS0kC,GAAKnuC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGmuC,OAWrB,SAASC,GAAMpuC,GACb,OAAO,IAAIhC,KAAKgC,GAAGouC,QAWrB,SAASC,GAAKruC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGquC,OAWrB,SAASC,GAAMtuC,GACb,OAAO,IAAIhC,KAAKgC,GAAGsuC,QA6BrB,SAASC,GAAM9kC,EAAGzJ,GAChByJ,EAAI,IAAIzL,KAAKyL,GACbzJ,EAAI,IAAIhC,KAAKgC,GACb,IAAIme,EACFgsC,EAAKnsD,KAAKmI,UACV+iD,EAAKlrD,KAAKspD,SACV4E,EAAM/B,EAAK,EAkCb,OA/BK1gD,EAAE/J,GAAMM,EAAEN,EAIH+J,EAAE/K,GAAMsB,EAAEtB,GAKVsB,EAAEtB,GAAK+K,EAAEib,UACnBvG,EAAIne,EAAEN,EAAI,EAAIosD,EAAM9tD,KAAMmsD,EAAIjB,GAAM,IAAIlrD,KAAK,IAC3C0B,EAAI+J,EAAE/J,GAGE+J,EAAE/K,GAAKsB,EAAE0kB,UACnBvG,EAAI2tC,EAAM9tD,KAAMkuD,EAAK,GAAGvtC,MAAM,KAC5Bjf,EAAI+J,EAAE/J,EAGCM,EAAEN,EAAI,GACf1B,KAAKmI,UAAY+lD,EACjBluD,KAAKspD,SAAW,EAChBnpC,EAAIngB,KAAKqwC,KAAK//B,EAAO7E,EAAGzJ,EAAGksD,EAAK,IAChClsD,EAAI8rD,EAAM9tD,KAAMkuD,EAAK,GACrBluD,KAAKmI,UAAYgkD,EACjBnsD,KAAKspD,SAAW4B,EAChB/qC,EAAI1U,EAAE/J,EAAI,EAAIye,EAAEK,MAAMxe,GAAKme,EAAEV,KAAKzd,IAElCme,EAAIngB,KAAKqwC,KAAK//B,EAAO7E,EAAGzJ,EAAGksD,EAAK,KAvBhC/tC,EAAI2tC,EAAM9tD,KAAMkuD,EAAK,GAAGvtC,MAAM3e,EAAEN,EAAI,EAAI,IAAO,MAC7CA,EAAI+J,EAAE/J,EALRye,EAAI,IAAIngB,KAAK2nB,KA8BRxH,EAWT,SAAS2sB,GAAK9qC,GACZ,OAAO,IAAIhC,KAAKgC,GAAG8qC,OAUrB,SAASzF,GAAKrlC,GACZ,OAAO0pD,EAAS1pD,EAAI,IAAIhC,KAAKgC,GAAIA,EAAEmE,EAAI,EAAG,GAsB5C,SAASjE,GAAOqR,GACd,IAAKA,GAAsB,iBAARA,EAAkB,MAAM7O,MAAMolD,EAAe,mBAChE,IAAIzpD,EAAGoB,EAAGgf,EACRoyC,GAA+B,IAAjBt/C,EAAIu/C,SAClBC,GACE,YAAa,EAAG5J,EAChB,WAAY,EAAG,EACf,YAAaD,EAAW,EACxB,WAAY,EAAGA,EACf,OAAQ,EAAGA,EACX,QAASA,EAAW,EACpB,SAAU,EAAG,GAGjB,IAAK7oD,EAAI,EAAGA,EAAI0yD,EAAGnvD,OAAQvD,GAAK,EAE9B,GADIoB,EAAIsxD,EAAG1yD,GAAIwyD,IAAa7yD,KAAKyB,GAAK4nD,EAAS5nD,SAC1B,KAAhBgf,EAAIlN,EAAI9R,IAAgB,CAC3B,KAAIyoD,EAAUzpC,KAAOA,GAAKA,GAAKsyC,EAAG1yD,EAAI,IAAMogB,GAAKsyC,EAAG1yD,EAAI,IACnD,MAAMqE,MAAMqlD,EAAkBtoD,EAAI,KAAOgf,GADczgB,KAAKyB,GAAKgf,EAM1E,GADIhf,EAAI,SAAUoxD,IAAa7yD,KAAKyB,GAAK4nD,EAAS5nD,SAC7B,KAAhBgf,EAAIlN,EAAI9R,IAAgB,CAC3B,IAAU,IAANgf,IAAoB,IAANA,GAAqB,IAANA,GAAiB,IAANA,EAY1C,MAAM/b,MAAMqlD,EAAkBtoD,EAAI,KAAOgf,GAXzC,GAAIA,EAAG,CACL,GAAqB,oBAAVmpC,SAAyBA,SACjCA,OAAOoJ,kBAAmBpJ,OAAOqJ,YAGlC,MAAMvuD,MAAMulD,GAFZjqD,KAAKyB,IAAK,OAKZzB,KAAKyB,IAAK,EAOhB,OAAOzB,KAWT,SAASomC,GAAIpkC,GACX,OAAO,IAAIhC,KAAKgC,GAAGokC,MAWrB,SAASoK,GAAKxuC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGwuC,OAmKrB,SAASr0B,GAAIna,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAGma,IAAI1Q,GAWzB,SAAS+7B,GAAIxlC,GACX,OAAO,IAAIhC,KAAKgC,GAAGwlC,MAUrB,SAASpD,GAAMpiC,GACb,OAAO0pD,EAAS1pD,EAAI,IAAIhC,KAAKgC,GAAIA,EAAEmE,EAAI,EAAG,GAW5C,SAAS8mC,KACP,IAAI5sC,EAAGc,EACLgyB,EAAI,IAAInzB,KAAK,GAIf,IAFA6pD,GAAW,EAENxpD,EAAI,EAAGA,EAAIkJ,UAAU3F,QAExB,IADAzC,EAAI,IAAInB,KAAKuJ,UAAUlJ,OAChBK,EAMIyyB,EAAEzyB,IACXyyB,EAAIA,EAAE1T,KAAKte,EAAEwf,MAAMxf,SAPX,CACR,GAAIA,EAAEO,EAEJ,OADAmoD,GAAW,EACJ,IAAI7pD,KAAK,EAAA,GAElBmzB,EAAIhyB,EAQR,OAFA0oD,GAAW,EAEJ12B,EAAEQ,OASX,SAASu/B,GAAkB3/C,GACzB,OAAOA,aAAeu1C,GAAWv1C,GAAoB,qBAAbA,EAAI5S,OAA+B,EAW7E,SAASk7C,GAAG75C,GACV,OAAO,IAAIhC,KAAKgC,GAAG65C,KAcrB,SAAShzC,GAAI7G,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAG6G,IAAI4C,GAWzB,SAAS0nD,GAAKnxD,GACZ,OAAO,IAAIhC,KAAKgC,GAAG6G,IAAI,GAWzB,SAASskC,GAAMnrC,GACb,OAAO,IAAIhC,KAAKgC,GAAG6G,IAAI,IAUzB,SAAS+C,KACP,OAAOymD,EAASryD,KAAMuJ,UAAW,MAUnC,SAASpE,KACP,OAAOktD,EAASryD,KAAMuJ,UAAW,MAYnC,SAASkH,GAAIzO,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAGyO,IAAIhF,GAYzB,SAASiV,GAAI1e,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAG0e,IAAIjV,GAYzB,SAASsE,GAAI/N,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAG+N,IAAItE,GAYzB,SAAS44B,GAAOgoB,GACd,IAAI3rD,EAAGyF,EAAG+Z,EAAG/e,EACXd,EAAI,EACJ8f,EAAI,IAAIngB,KAAK,GACbqrD,KAOF,QALW,IAAPgB,EAAeA,EAAKrsD,KAAKmI,UACxB6iD,EAAWqB,EAAI,EAAGlD,GAEvBjpC,EAAIhb,KAAKmiC,KAAKglB,EAAK7B,GAEdxqD,KAAK4pD,OAIH,GAAIA,OAAOoJ,gBAGhB,IAFAtyD,EAAIkpD,OAAOoJ,gBAAgB,IAAII,YAAYlzC,IAEpC7f,EAAI6f,IACT/e,EAAIT,EAAEL,KAIG,MACPK,EAAEL,GAAKupD,OAAOoJ,gBAAgB,IAAII,YAAY,IAAI,GAKlD/H,EAAGhrD,KAAOc,EAAI,QAKb,CAAA,IAAIyoD,OAAOqJ,YAwBhB,MAAMvuD,MAAMulD,GAnBZ,IAFAvpD,EAAIkpD,OAAOqJ,YAAY/yC,GAAK,GAErB7f,EAAI6f,IAGT/e,EAAIT,EAAEL,IAAMK,EAAEL,EAAI,IAAM,IAAMK,EAAEL,EAAI,IAAM,MAAmB,IAAXK,EAAEL,EAAI,KAAc,MAG7D,MACPupD,OAAOqJ,YAAY,GAAG9gC,KAAKzxB,EAAGL,IAK9BgrD,EAAG1nD,KAAKxC,EAAI,KACZd,GAAK,GAITA,EAAI6f,EAAI,OA5CR,KAAO7f,EAAI6f,GAAImrC,EAAGhrD,KAAuB,IAAhB6E,KAAKm/B,SAAiB,EA2DjD,IAVAnkB,EAAImrC,IAAKhrD,GACTgsD,GAAM7B,EAGFtqC,GAAKmsC,IACPlrD,EAAIgpD,EAAQ,GAAIK,EAAW6B,GAC3BhB,EAAGhrD,IAAM6f,EAAI/e,EAAI,GAAKA,GAIP,IAAVkqD,EAAGhrD,GAAUA,IAAKgrD,EAAGjgD,MAG5B,GAAI/K,EAAI,EACN8F,EAAI,EACJklD,GAAM,OACD,CAIL,IAHAllD,GAAK,EAGY,IAAVklD,EAAG,GAAUllD,GAAKqkD,EAAUa,EAAGplD,QAGtC,IAAKia,EAAI,EAAG/e,EAAIkqD,EAAG,GAAIlqD,GAAK,GAAIA,GAAK,GAAI+e,IAGrCA,EAAIsqC,IAAUrkD,GAAKqkD,EAAWtqC,GAMpC,OAHAC,EAAEha,EAAIA,EACNga,EAAEzf,EAAI2qD,EAEClrC,EAYT,SAAStY,GAAM7F,GACb,OAAO0pD,EAAS1pD,EAAI,IAAIhC,KAAKgC,GAAIA,EAAEmE,EAAI,EAAGnG,KAAKspD,UAajD,SAASxhD,GAAK9F,GAEZ,OADAA,EAAI,IAAIhC,KAAKgC,IACJtB,EAAKsB,EAAEtB,EAAE,GAAKsB,EAAEN,EAAI,EAAIM,EAAEN,EAAKM,EAAEN,GAAKimB,IAWjD,SAASopB,GAAI/uC,GACX,OAAO,IAAIhC,KAAKgC,GAAG+uC,MAWrB,SAASC,GAAKhvC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGgvC,OAWrB,SAASrd,GAAK3xB,GACZ,OAAO,IAAIhC,KAAKgC,GAAG2xB,OAYrB,SAASpT,GAAIve,EAAGyJ,GACd,OAAO,IAAIzL,KAAKgC,GAAGue,IAAI9U,GAWzB,SAASwlC,GAAIjvC,GACX,OAAO,IAAIhC,KAAKgC,GAAGivC,MAWrB,SAASC,GAAKlvC,GACZ,OAAO,IAAIhC,KAAKgC,GAAGkvC,OAUrB,SAAS2f,GAAM7uD,GACb,OAAO0pD,EAAS1pD,EAAI,IAAIhC,KAAKgC,GAAIA,EAAEmE,EAAI,EAAG,IAK5C2iD,EA1iBA,SAAS12C,EAAMmB,GACb,IAAIlT,EAAGoB,EAAGsxD,EASV,SAASjK,EAAQroC,GACf,IAAIta,EAAG9F,EAAG8yB,EACRnxB,EAAIhC,KAGN,KAAMgC,aAAa8mD,GAAU,OAAO,IAAIA,EAAQroC,GAOhD,GAHAze,EAAE6Q,YAAci2C,EAGZroC,aAAaqoC,EAIf,OAHA9mD,EAAEN,EAAI+e,EAAE/e,EACRM,EAAEmE,EAAIsa,EAAEta,OACRnE,EAAEtB,GAAK+f,EAAIA,EAAE/f,GAAK+f,EAAEva,QAAUua,GAMhC,GAAU,WAFV0S,SAAW1S,GAES,CAClB,GAAU,IAANA,EAIF,OAHAze,EAAEN,EAAI,EAAI+e,EAAI,GAAK,EAAI,EACvBze,EAAEmE,EAAI,OACNnE,EAAEtB,GAAK,IAYT,GARI+f,EAAI,GACNA,GAAKA,EACLze,EAAEN,GAAK,GAEPM,EAAEN,EAAI,EAIJ+e,MAAQA,GAAKA,EAAI,IAAK,CACxB,IAAKta,EAAI,EAAG9F,EAAIogB,EAAGpgB,GAAK,GAAIA,GAAK,GAAI8F,IAGrC,OAFAnE,EAAEmE,EAAIA,OACNnE,EAAEtB,GAAK+f,IAIF,OAAQ,EAAJA,GAAU,GACdA,IAAGze,EAAEN,EAAIimB,KACd3lB,EAAEmE,EAAIwhB,SACN3lB,EAAEtB,EAAI,OAIDgyD,EAAa1wD,EAAGye,EAAE1V,YAEpB,GAAU,WAANooB,EACT,MAAMzuB,MAAMqlD,EAAkBtpC,GAWhC,OAPwB,KAApBA,EAAEkyC,WAAW,IACflyC,EAAIA,EAAEva,MAAM,GACZlE,EAAEN,GAAK,GAEPM,EAAEN,EAAI,EAGD4oD,EAAUpjD,KAAKuZ,GAAKiyC,EAAa1wD,EAAGye,GAptB/C,SAAoBze,EAAG8I,GACrB,IAAIgxC,EAAMsQ,EAAMiH,EAAShzD,EAAGizD,EAAStvD,EAAKvC,EAAGqqD,EAAItpB,EAEjD,GAAY,aAAR13B,GAA8B,QAARA,EAIxB,OAHMA,IAAK9I,EAAEN,EAAIimB,KACjB3lB,EAAEmE,EAAIwhB,IACN3lB,EAAEtB,EAAI,KACCsB,EAGT,GAAIooD,EAAMljD,KAAK4D,GACbgxC,EAAO,GACPhxC,EAAMA,EAAInB,mBACL,GAAI+uB,EAASxxB,KAAK4D,GACvBgxC,EAAO,MACF,CAAA,IAAIuO,EAAQnjD,KAAK4D,GAGtB,MAAMpG,MAAMqlD,EAAkBj/C,GAF9BgxC,EAAO,EAkCT,KA5BAz7C,EAAIyK,EAAIsL,OAAO,OAEP,GACN3U,GAAKqJ,EAAI5E,MAAM7F,EAAI,GACnByK,EAAMA,EAAIyL,UAAU,EAAGlW,IAEvByK,EAAMA,EAAI5E,MAAM,GAMlBotD,GADAjzD,EAAIyK,EAAId,QAAQ,OACD,EACfoiD,EAAOpqD,EAAE6Q,YAELygD,IAGFjzD,GADA2D,GADA8G,EAAMA,EAAIzB,QAAQ,IAAK,KACbzF,QACAvD,EAGVgzD,EAAU5C,EAAOrE,EAAM,IAAIA,EAAKtQ,GAAOz7C,EAAO,EAAJA,IAOvCA,EAHLmiC,GADAspB,EAAKR,EAAYxgD,EAAKgxC,EAAMyO,IACpB3mD,OAAS,EAGM,IAAVkoD,EAAGzrD,KAAYA,EAAGyrD,EAAG1gD,MAClC,OAAI/K,EAAI,EAAU,IAAI+rD,EAAW,EAANpqD,EAAEN,IAC7BM,EAAEmE,EAAI4oD,EAAkBjD,EAAItpB,GAC5BxgC,EAAEtB,EAAIorD,EACNjC,GAAW,EAQPyJ,IAAStxD,EAAIsO,EAAOtO,EAAGqxD,EAAe,EAANrvD,IAGhCvC,IAAGO,EAAIA,EAAE2e,MAAMzb,KAAKsF,IAAI/I,GAAK,GAAKyD,KAAK6K,IAAI,EAAGtO,GAAKqnD,EAAQ/4C,IAAI,EAAGtO,KACtEooD,GAAW,EAEJ7nD,GAgpB2CuxD,CAAWvxD,EAAGye,GA0DhE,GAvDAqoC,EAAQvnD,UAAYopD,EAEpB7B,EAAQ0K,SAAW,EACnB1K,EAAQ2K,WAAa,EACrB3K,EAAQ4K,WAAa,EACrB5K,EAAQ6K,YAAc,EACtB7K,EAAQ8K,cAAgB,EACxB9K,EAAQ+K,gBAAkB,EAC1B/K,EAAQgL,gBAAkB,EAC1BhL,EAAQiL,gBAAkB,EAC1BjL,EAAQkL,iBAAmB,EAC3BlL,EAAQmL,OAAS,EAEjBnL,EAAQ5mD,OAAS4mD,EAAQ11C,IAAMlR,GAC/B4mD,EAAQ12C,MAAQA,EAChB02C,EAAQwB,UAAY4I,GAEpBpK,EAAQt+C,IAAMA,EACds+C,EAAQrhB,KAAOA,GACfqhB,EAAQlZ,MAAQA,GAChBkZ,EAAQp4C,IAAMA,GACdo4C,EAAQ3Y,KAAOA,GACf2Y,EAAQ1Y,MAAQA,GAChB0Y,EAAQzY,KAAOA,GACfyY,EAAQxY,MAAQA,GAChBwY,EAAQvY,MAAQA,GAChBuY,EAAQhc,KAAOA,GACfgc,EAAQzhB,KAAOA,GACfyhB,EAAQ1iB,IAAMA,GACd0iB,EAAQtY,KAAOA,GACfsY,EAAQ3sC,IAAMA,GACd2sC,EAAQthB,IAAMA,GACdshB,EAAQ1kB,MAAQA,GAChB0kB,EAAQ7b,MAAQA,GAChB6b,EAAQjN,GAAKA,GACbiN,EAAQjgD,IAAMA,GACdigD,EAAQ3b,MAAQA,GAChB2b,EAAQqK,KAAOA,GACfrK,EAAQl9C,IAAMA,GACdk9C,EAAQ3jD,IAAMA,GACd2jD,EAAQr4C,IAAMA,GACdq4C,EAAQpoC,IAAMA,GACdooC,EAAQ/4C,IAAMA,GACd+4C,EAAQzkB,OAASA,GACjBykB,EAAQjhD,MAAQA,GAChBihD,EAAQhhD,KAAOA,GACfghD,EAAQ/X,IAAMA,GACd+X,EAAQ9X,KAAOA,GACf8X,EAAQn1B,KAAOA,GACfm1B,EAAQvoC,IAAMA,GACduoC,EAAQ7X,IAAMA,GACd6X,EAAQ5X,KAAOA,GACf4X,EAAQ+H,MAAQA,QAEJ,IAARt9C,IAAgBA,MAChBA,IACmB,IAAjBA,EAAIu/C,SAEN,IADAC,GAAM,YAAa,WAAY,WAAY,WAAY,OAAQ,OAAQ,SAAU,UAC5E1yD,EAAI,EAAGA,EAAI0yD,EAAGnvD,QAAc2P,EAAI/R,eAAeC,EAAIsxD,EAAG1yD,QAAOkT,EAAI9R,GAAKzB,KAAKyB,IAMpF,OAFAqnD,EAAQ5mD,OAAOqR,GAERu1C,EA4ZC12C,CAAMi3C,IAEC,QAAIP,EAAQA,QAAUA,EAGvChgD,EAAO,IAAIggD,EAAQhgD,GACnBu9B,EAAK,IAAIyiB,EAAQziB,QAWmBjhC,KAHhCk6C,EAAgC,WAChC,OAAOwJ,GACNvoD,KAAKZ,EAASQ,EAAqBR,EAASC,MACCA,EAAOD,QAAU2/C,GA1sJpE,IAouJK,SAAU1/C,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAoElCR,EAAQgB,KAAO,YACfhB,EAAQD,QAnER,SAAkBuC,EAAMC,EAAQC,EAAMC,GA0BpC,IAAIumC,EAAYvmC,EAAM,aACpBE,GAAI,WACF,OAAO,IAAIL,EAAKiiB,UAAU,IAG5B5gB,OAAU,SAAUtB,GAElB,OAAO,IAAIC,EAAKiiB,UAAUliB,EAAI,KAGhCQ,OAAU,SAAUR,GAClB,OAAO,IAAIC,EAAKiiB,UAAUliB,IAG5BkiB,UAAa,SAAUliB,GAErB,OAAOA,GAGTmiB,SAAY,SAAUniB,GACpB,OAAO,IAAIC,EAAKiiB,UAAUliB,EAAEb,GAAGgb,IAAIna,EAAEtB,IAGvCurB,KAAQ,SAAUjqB,GAChB,OAAO,IAAIC,EAAKiiB,UAAU,IAG5BE,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG2mC,MAStB,OALAA,EAAUzlC,OACRC,EAAG,IACHC,EAAG,6BAGEulC,IASH,SAAU/oC,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GA8ElCR,EAAQgB,KAAO,UACfhB,EAAQD,QA7ER,SAAkBuC,EAAMC,EAAQC,EAAMC,GA4BpC,IAAI8xD,EAAO9xD,EAAM,QACfE,GAAI,WACF,OAAO,GAGT6xD,QAAW,SAAUnyD,GACnB,OAAOA,GAGTsB,OAAU,SAAUtB,GAClB,QAASA,GAGXiqB,KAAQ,SAAUjqB,GAChB,OAAO,GAGTkiB,UAAa,SAAUliB,GACrB,OAAQA,EAAE0kB,UAGZlkB,OAAU,SAAUR,GAElB,IAAIoyD,EAAQpyD,EAAE2H,cACd,GAAc,SAAVyqD,EACF,OAAO,EAEJ,GAAc,UAAVA,EACP,OAAO,EAIT,IAAI33B,EAAMnxB,OAAOtJ,GACjB,GAAS,IAALA,IAAYiG,MAAMw0B,GACpB,QAASA,EAGX,MAAM,IAAI/3B,MAAM,mBAAqB1C,EAAI,mBAG3CoiB,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGkyD,MAItB,OAAOA,IASH,SAAUt0D,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,KAGpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjC,aAGA,IAAIsC,EAAStC,EAAoB,GAAGsC,OAChCuQ,EAAO7S,EAAoB,GAAG6S,KA6JlCrT,EAAQgB,KAAO,QACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA7JR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAmB3C,SAASg3C,EAAOzvD,GACd,KAAM5E,gBAAgBq0D,GACpB,MAAM,IAAIzqD,YAAY,oDAGpB3H,EAAKqxB,QAAQ1uB,GACf5E,KAAK4E,MAAQA,EAAMA,MAGnB5E,KAAK4E,MAAQA,EA2CjB,SAAS0vD,EAAY3zD,EAAMsS,GACP,mBAAPA,IACTohD,EAAM9yD,UAAUZ,GAAQ4zD,EAASthD,IA4BrC,SAASshD,EAAUthD,GACjB,OAAO,WAEL,IADA,IAAI+K,GAAQhe,KAAK4E,OACRvE,EAAI,EAAGA,EAAIkJ,UAAU3F,OAAQvD,IACpC2d,EAAK3d,EAAI,GAAKkJ,UAAUlJ,GAG1B,OAAO,IAAIg0D,EAAMphD,EAAGsQ,MAAMtQ,EAAI+K,KA4ClC,OArHAq2C,EAAM9yD,UAAUU,KAAO,QACvBoyD,EAAM9yD,UAAU+xB,SAAU,EAO1B+gC,EAAM9yD,UAAUizD,KAAO,WACrB,OAAOx0D,KAAK4E,OAQdyvD,EAAM9yD,UAAU8Q,QAAU,WACxB,OAAOrS,KAAK4E,OAOdyvD,EAAM9yD,UAAUwJ,SAAW,WACzB,OAAOtI,EAAOzC,KAAK4E,QAiErByvD,EAAMC,YAAc,SAAUzN,EAAM/hB,GAClC,GAAoB,iBAAT+hB,EAETyN,EAAYzN,EAAM/hB,QAIlB,IAAK,IAAInyB,KAAQk0C,EACXA,EAAKrlD,eAAemR,IACtB2hD,EAAY3hD,EAAMk0C,EAAKl0C,KAO/B0hD,EAAMC,YAAYj3C,GAGlBA,EAAKmpB,GAAG,SAAU,SAAU7lC,EAAM2nD,EAAUh1C,GA7D5C,IAAyB3S,EAAM2nD,OA8DhBljD,IAATkO,IA9DmB3S,EAgELA,EAhEW2nD,EAgELA,EA/DxBt1C,EAAKqhD,EAAM9yD,UAAWZ,EAAM,WAC1B,IAAIsS,EAAKq1C,IACT,GAAkB,mBAAPr1C,EACT,OAAOshD,EAASthD,QAgEfohD,GAMT10D,EAAQ0d,MAAO,EACf1d,EAAQqT,MAAO,GAKT,SAAUpT,EAAQD,GAoExBA,EAAQ8C,OAAS,SAAUmC,EAAOmD,GAChC,GAAuB,mBAAZA,EAET,OAAOA,EAAQnD,GAIjB,IAAKA,EAAMgD,WACT,OAAOhD,EAAMqD,QAAU,MAASrD,EAAMwhB,GAAG,GAAK,WAAa,YAI7D,IAAIle,EAAW,OACXC,OAAY/C,EAkBhB,YAhBgBA,IAAZ2C,IAEEA,EAAQG,WACVA,EAAWH,EAAQG,UAIE,iBAAZH,EACTI,EAAYJ,EAELA,EAAQI,YACfA,EAAYJ,EAAQI,YAKhBD,GACN,IAAK,QACH,OAAOvI,EAAQyI,QAAQxD,EAAOuD,GAEhC,IAAK,cACH,OAAOxI,EAAQ0I,cAAczD,EAAOuD,GAEtC,IAAK,OAGH,GAAIJ,GAAWA,EAAQQ,mBAA8CnD,IAA9B2C,EAAQQ,YAAYC,YAAqDpD,IAA9B2C,EAAQQ,YAAYE,OAAsB,CAC1H,IAAIC,EAAe5H,OAAO6H,UAAWZ,GAerC,OAdAW,EAAaH,iBAAcnD,OACOA,IAA9B2C,EAAQQ,YAAYC,QACtBE,EAAaE,SAAW1D,KAAK2C,MAAM3C,KAAK2D,IAAId,EAAQQ,YAAYC,OAAStD,KAAK4D,YAE9C1D,IAA9B2C,EAAQQ,YAAYE,QACtBC,EAAaK,SAAW7D,KAAK2C,MAAM3C,KAAK2D,IAAId,EAAQQ,YAAYE,OAASvD,KAAK4D,OAGhFE,QAAQC,KAAK,2OAIIC,KAAKC,UAAUpB,GAAW,SAAWmB,KAAKC,UAAUT,IAE9D/I,EAAQ8C,OAAOmC,EAAO8D,GAK/B,IAAIE,EAAYb,QAAgC3C,IAArB2C,EAAQa,SAA0Bb,EAAQa,UAAY,EAC7EG,EAAYhB,QAAgC3C,IAArB2C,EAAQgB,SAA0BhB,EAAQgB,SAAW,EAGhF,GAAInE,EAAM8hB,SAAU,MAAO,IAI3B,IAAI8gB,EAAM5iC,EAAM8pD,YAWhB,OAVIlnB,EAAIlL,IAAI1zB,IAAa4+B,EAAI5gB,GAAG7d,GAExBnE,EAAM8rD,oBAAoBvoD,GAAWC,UAIrCzI,EAAQ0I,cAAczD,EAAOuD,IAI1BkB,QAAQ,sBAAuB,WACxC,IAAIC,EAASC,UAAU,GACnBpD,EAAIoD,UAAU,GAClB,MAAmB,MAAXD,EAAkBA,EAASnD,EAAIA,IAG3C,QACE,MAAM,IAAIzB,MAAM,qBAAuBwD,EAAW,kDAaxDvI,EAAQ0I,cAAgB,SAAUzD,EAAOuD,GACvC,YAAkB/C,IAAd+C,EACKvD,EAAMyD,cAAcF,EAAY,GAGhCvD,EAAMyD,iBAUjB1I,EAAQyI,QAAU,SAAUxD,EAAOuD,GACjC,OAAOvD,EAAMwD,QAAQD,KAMjB,SAAUvI,EAAQD,EAASQ,GAEjC,aAkDAR,EAAQgB,KAAO,QACfhB,EAAQD,QAhDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAoCpC,OAAOA,EAAM,SACXE,GAAI,WACF,OAAO,IAAIL,EAAKoyD,OAGlBnhC,IAAO,SAAStuB,GACd,OAAO,IAAI3C,EAAKoyD,MAAMzvD,QAWtB,SAAUhF,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,IAGpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjC,IAAkCm/C;;;;;;;;;;;;;CAmClC,SAAU7/C,GAER,aAEA,IAAIkrD,GAAKzlC,GAAM,EAAGC,GAAM,GAEpBqrB,EAAO,SAASxuC,GAClB,MAAsC,IAA9BkD,KAAKsiC,IAAIxlC,GAAKkD,KAAKsiC,KAAKxlC,KAG9BgvC,EAAO,SAAShvC,GAClB,MAAsC,IAA9BkD,KAAKsiC,IAAIxlC,GAAKkD,KAAKsiC,KAAKxlC,KAqB9ByyD,EAAc,WAChB,MAAM7qD,YAAY,kBAUpB,SAAS8qD,EAASptD,EAAGC,GAEnB,IAAIotD,EAAKzvD,KAAKsF,IAAIlD,GACdstD,EAAK1vD,KAAKsF,IAAIjD,GAElB,OAAU,IAAND,EACKpC,KAAK2D,IAAI+rD,GAGR,IAANrtD,EACKrC,KAAK2D,IAAI8rD,GAGdA,EAAK,KAAQC,EAAK,IACa,GAA1B1vD,KAAK2D,IAAIvB,EAAIA,EAAIC,EAAIA,GAmCvBrC,KAAK2D,IAAIvB,EAAIpC,KAAKkhC,IAAIlhC,KAAKqrC,MAAMhpC,EAAGD,KAG7C,IAAI0hB,EAAQ,SAAS1hB,EAAGC,GAEtB,GAAID,MAAAA,EACFqjD,EAAM,GACNA,EAAM,GAAI,OACL,QAAUvlD,IAANmC,EACTojD,EAAM,GAAIrjD,EACVqjD,EAAM,GAAIpjD,OACL,cAAeD,GAEpB,IAAK,SAEC,OAAQA,GAAK,OAAQA,GACvBqjD,EAAM,GAAIrjD,EAAM,GAChBqjD,EAAM,GAAIrjD,EAAM,IACP,QAASA,GAAK,QAASA,GAChCqjD,EAAM,GAAIrjD,EAAO,IAAIpC,KAAKkhC,IAAI9+B,EAAO,KACrCqjD,EAAM,GAAIrjD,EAAO,IAAIpC,KAAK6rC,IAAIzpC,EAAO,MAC5B,MAAOA,GAAK,QAASA,GAC9BqjD,EAAM,GAAIrjD,EAAK,EAAIpC,KAAKkhC,IAAI9+B,EAAO,KACnCqjD,EAAM,GAAIrjD,EAAK,EAAIpC,KAAK6rC,IAAIzpC,EAAO,MACb,IAAbA,EAAE1D,QACX+mD,EAAM,GAAIrjD,EAAE,GACZqjD,EAAM,GAAIrjD,EAAE,IAEZmtD,IAEF,MAEF,IAAK,SAEH9J,EAAM,GACNA,EAAM,GAAI,EAEV,IAAIkK,EAASvtD,EAAEmC,MAAM,yCACjBgW,EAAO,EACPe,EAAQ,EAEG,OAAXq0C,GACFJ,IAGF,IAAK,IAAIp0D,EAAI,EAAGA,EAAIw0D,EAAOjxD,OAAQvD,IAAK,CAEtC,IAAII,EAAIo0D,EAAOx0D,GAEL,MAANI,GAAmB,OAANA,GAAoB,OAANA,IAEd,MAANA,EACTgf,IACe,MAANhf,EACT+f,IACe,MAAN/f,GAAmB,MAANA,GAElBgf,EAAOe,IAAU,GACnBi0C,IAGoB,MAAlBI,EAAOx0D,EAAI,IAAe4H,MAAM4sD,EAAOx0D,EAAI,IAI7CsqD,EAAM,IAAI7gD,YAAY0W,EAAQ,EAAI,IAAM,IAAM,MAH9CmqC,EAAM,IAAI7gD,YAAY0W,EAAQ,EAAI,IAAM,IAAMq0C,EAAOx0D,EAAI,IACzDA,KAIFof,EAAOe,EAAQ,KAIXf,EAAOe,IAAU,GAAKvY,MAAMxH,KAC9Bg0D,IAGoB,MAAlBI,EAAOx0D,EAAI,IAAgC,MAAlBw0D,EAAOx0D,EAAI,IACtCsqD,EAAM,IAAI7gD,YAAY0W,EAAQ,EAAI,IAAM,IAAM/f,GAC9CJ,KAEAsqD,EAAM,IAAI7gD,YAAY0W,EAAQ,EAAI,IAAM,IAAM/f,GAEhDgf,EAAOe,EAAQ,IAKff,EAAOe,EAAQ,GACjBi0C,IAEF,MAEF,IAAK,SACH9J,EAAM,GAAI,EACVA,EAAM,GAAIrjD,EACV,MAEF,QACEmtD,IAGAxsD,MAAM0iD,EAAM,KAAM1iD,MAAM0iD,EAAM,KAUpC,SAAS1mC,EAAQ3c,EAAGC,GAElB,KAAMvH,gBAAgBikB,GACpB,OAAO,IAAIA,EAAQ3c,EAAGC,GAGxByhB,EAAM1hB,EAAGC,GAETvH,KAAS,GAAI2qD,EAAM,GACnB3qD,KAAS,GAAI2qD,EAAM,GAGrB1mC,EAAQ1iB,WAEN2jB,GAAM,EACNC,GAAM,EAONrd,KAAQ,WAEN,IAAI0C,EAAMxK,KAAU,MAEpB,OAAO,IAAIikB,EACHjkB,KAAS,GAAIwK,EACbxK,KAAS,GAAIwK,IAQvBkG,IAAO,SAASpJ,EAAGC,GAIjB,OAFAyhB,EAAM1hB,EAAGC,GAEF,IAAI0c,EACHjkB,KAAS,GAAI2qD,EAAM,GACnB3qD,KAAS,GAAI2qD,EAAM,KAQ7BpqC,IAAO,SAASjZ,EAAGC,GAIjB,OAFAyhB,EAAM1hB,EAAGC,GAEF,IAAI0c,EACHjkB,KAAS,GAAI2qD,EAAM,GACnB3qD,KAAS,GAAI2qD,EAAM,KAQ7BjqC,IAAO,SAASpZ,EAAGC,GAKjB,OAHAyhB,EAAM1hB,EAAGC,GAGO,IAAZojD,EAAM,IAA0B,IAAf3qD,KAAS,GACrB,IAAIikB,EAAQjkB,KAAS,GAAI2qD,EAAM,GAAG,GAGpC,IAAI1mC,EACHjkB,KAAS,GAAI2qD,EAAM,GAAI3qD,KAAS,GAAI2qD,EAAM,GAC1C3qD,KAAS,GAAI2qD,EAAM,GAAI3qD,KAAS,GAAI2qD,EAAM,KAQpDxuC,IAAO,SAAS7U,EAAGC,GAEjByhB,EAAM1hB,EAAGC,GAETD,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEb,IAEImzB,EAAGnxB,EAFHvB,EAAIkqD,EAAM,GACVjqD,EAAIiqD,EAAM,GAGd,OAAI,IAAMjqD,EACJ,IAAMD,EAED,IAAIwjB,EACE,IAAN3c,EAAYA,EAAI,EAAK,EACf,IAANC,EAAYA,EAAI,EAAK,GAGrB,IAAI0c,EAAQ3c,EAAI7G,EAAG8G,EAAI9G,GAI9ByE,KAAKsF,IAAI/J,GAAKyE,KAAKsF,IAAI9J,GAKlB,IAAIujB,GACF3c,GAJTtF,EAAIvB,EAAIC,GAIS6G,IAHjB4rB,EAAI1yB,EAAIuB,EAAItB,IAIH6G,EAAIvF,EAAIsF,GAAK6rB,GAOf,IAAIlP,GACF3c,EAAIC,GAJbvF,EAAItB,EAAID,KACR0yB,EAAIzyB,EAAIsB,EAAIvB,IAIH8G,EAAID,EAAItF,GAAKmxB,IAS1BpjB,IAAO,SAASzI,EAAGC,GAOjB,GALAyhB,EAAM1hB,EAAGC,GAETD,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEH,IAANsH,GAAiB,IAANC,EACb,OAAO0c,EAAc,KAIvB,GAAgB,IAAZ0mC,EAAM,GAAS,CAEjB,GAAU,IAANpjD,GAAWD,GAAK,EAElB,OAAO,IAAI2c,EAAQ/e,KAAK6K,IAAIzI,EAAGqjD,EAAM,IAAI,GAEpC,GAAU,IAANrjD,EAET,QAASqjD,EAAM,GAAI,EAAI,GAAK,GAC1B,KAAK,EACH,OAAO,IAAI1mC,EAAQ/e,KAAK6K,IAAIxI,EAAGojD,EAAM,IAAI,GAC3C,KAAK,EACH,OAAO,IAAI1mC,EAAQ,EAAG/e,KAAK6K,IAAIxI,EAAGojD,EAAM,KAC1C,KAAK,EACH,OAAO,IAAI1mC,GAAS/e,KAAK6K,IAAIxI,EAAGojD,EAAM,IAAI,GAC5C,KAAK,EACH,OAAO,IAAI1mC,EAAQ,GAAI/e,KAAK6K,IAAIxI,EAAGojD,EAAM,MAwBjD,IAAIznC,EAAMhe,KAAKqrC,MAAMhpC,EAAGD,GACpBwtD,EAAMJ,EAASptD,EAAGC,GAItB,OAFAD,EAAIpC,KAAKsiC,IAAImjB,EAAM,GAAImK,EAAMnK,EAAM,GAAIznC,GACvC3b,EAAIojD,EAAM,GAAImK,EAAMnK,EAAM,GAAIznC,EACvB,IAAIe,EACH3c,EAAIpC,KAAKkhC,IAAI7+B,GACbD,EAAIpC,KAAK6rC,IAAIxpC,KAQvBosB,KAAQ,WAEN,IAIIzO,EAAIC,EAJJ7d,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACbmgB,EAAIngB,KAAU,MAIlB,GAAIsH,GAAK,EAAG,CAEV,GAAU,IAANC,EACF,OAAO,IAAI0c,EAAQ/e,KAAKyuB,KAAKrsB,GAAI,GAGnC4d,EAAK,GAAMhgB,KAAKyuB,KAAK,GAAOxT,EAAI7Y,SAEhC4d,EAAKhgB,KAAKsF,IAAIjD,GAAKrC,KAAKyuB,KAAK,GAAKxT,EAAI7Y,IASxC,OALE6d,EADE7d,GAAK,EACF,GAAMpC,KAAKyuB,KAAK,GAAOxT,EAAI7Y,IAE3BpC,KAAKsF,IAAIjD,GAAKrC,KAAKyuB,KAAK,GAAKxT,EAAI7Y,IAGjC,IAAI2c,EAAQiB,EAAI3d,EAAI,GAAK4d,EAAKA,IAQvCqiB,IAAO,WAEL,IAAIpJ,EAAMl5B,KAAKsiC,IAAIxnC,KAAS,IAK5B,OAHIA,KAAS,GAGN,IAAIikB,EACHma,EAAMl5B,KAAKkhC,IAAIpmC,KAAS,IACxBo+B,EAAMl5B,KAAK6rC,IAAI/wC,KAAS,MAQlC6I,IAAO,WAEL,IAAIvB,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAMjB,OAAO,IAAIikB,EACHywC,EAASptD,EAAGC,GACZrC,KAAKqrC,MAAMhpC,EAAGD,KAQxBkD,IAAO,WAEL,OAzciBxI,EAycJhC,KAAS,GAzcFyL,EAycKzL,KAAS,GAvc9BsH,EAAIpC,KAAKsF,IAAIxI,GACbuF,EAAIrC,KAAKsF,IAAIiB,GAEbnE,EAAI,KAAQC,EAAI,IACXrC,KAAKyuB,KAAKrsB,EAAIA,EAAIC,EAAIA,IAG3BD,EAAIC,GACND,EAAIC,EACJA,EAAIvF,EAAIyJ,GAERlE,EAAIkE,EAAIzJ,EAEHsF,EAAIpC,KAAKyuB,KAAK,EAAIpsB,EAAIA,IAfrB,IAASvF,EAAGyJ,EAEhBnE,EACAC,GA8cN2b,IAAO,WAEL,OAAOhe,KAAKqrC,MAAMvwC,KAAS,GAAGA,KAAS,KAQzC+wC,IAAO,WAIL,IAAIzpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,OAAO,IAAIikB,EACH/e,KAAK6rC,IAAIzpC,GAAKkpC,EAAKjpC,GACnBrC,KAAKkhC,IAAI9+B,GAAK0pC,EAAKzpC,KAQ7B6+B,IAAO,WAIL,IAAI9+B,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,OAAO,IAAIikB,EACH/e,KAAKkhC,IAAI9+B,GAAKkpC,EAAKjpC,IACnBrC,KAAK6rC,IAAIzpC,GAAK0pC,EAAKzpC,KAQ7B0pC,IAAO,WAIL,IAAI3pC,EAAI,EAAItH,KAAS,GACjBuH,EAAI,EAAIvH,KAAS,GACjBU,EAAIwE,KAAKkhC,IAAI9+B,GAAKkpC,EAAKjpC,GAE3B,OAAO,IAAI0c,EACH/e,KAAK6rC,IAAIzpC,GAAK5G,EACdswC,EAAKzpC,GAAK7G,IAQpB+vC,IAAO,WAIL,IAAInpC,EAAI,EAAItH,KAAS,GACjBuH,EAAI,EAAIvH,KAAS,GACjBU,EAAIwE,KAAKkhC,IAAI9+B,GAAKkpC,EAAKjpC,GAE3B,OAAO,IAAI0c,GACH/e,KAAK6rC,IAAIzpC,GAAK5G,EACdswC,EAAKzpC,GAAK7G,IAQpBmwC,IAAO,WAIL,IAAIvpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACbU,EAAI,GAAM8vC,EAAK,EAAIjpC,GAAK,GAAMrC,KAAKkhC,IAAI,EAAI9+B,GAE/C,OAAO,IAAI2c,EACH/e,KAAKkhC,IAAI9+B,GAAKkpC,EAAKjpC,GAAK7G,EACxBwE,KAAK6rC,IAAIzpC,GAAK0pC,EAAKzpC,GAAK7G,IAQlCiwC,IAAO,WAIL,IAAIrpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACbU,EAAI,GAAM8vC,EAAK,EAAIjpC,GAAK,GAAMrC,KAAKkhC,IAAI,EAAI9+B,GAE/C,OAAO,IAAI2c,EACH/e,KAAK6rC,IAAIzpC,GAAKkpC,EAAKjpC,GAAK7G,GACxBwE,KAAKkhC,IAAI9+B,GAAK0pC,EAAKzpC,GAAK7G,IAQlCyvC,KAAQ,WAIN,IAAI7oC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEb+0D,EAAK,IAAI9wC,EACJ1c,EAAIA,EAAID,EAAIA,EAAI,GAChB,EAAIA,EAAIC,GAAS,OAEtBytD,EAAK,IAAI/wC,EACL8wC,EAAO,GAAIxtD,EACXwtD,EAAO,GAAIztD,GAAQ,MAE3B,OAAO,IAAI2c,EAAQ+wC,EAAO,IAAIA,EAAO,KAQvCvtB,KAAQ,WAIN,IAAIngC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEb+0D,EAAK,IAAI9wC,EACJ1c,EAAIA,EAAID,EAAIA,EAAI,GAChB,EAAIA,EAAIC,GAAS,OAEtBytD,EAAK,IAAI/wC,EACL8wC,EAAO,GAAIxtD,EACXwtD,EAAO,GAAIztD,GAAQ,MAE3B,OAAO,IAAI2c,EAAQ/e,KAAKmhC,GAAK,EAAI2uB,EAAO,GAAGA,EAAO,KAQpD3kB,KAAQ,WAIN,IAAI/oC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANsH,EAAS,CAEX,GAAU,IAANC,EACF,OAAO,IAAI0c,EAAQ,EAAGjc,EAAAA,GAGxB,IAAW,IAAPT,EACF,OAAO,IAAI0c,EAAQ,GAAIjc,EAAAA,GAI3B,IAAItH,EAAI4G,EAAIA,GAAK,EAAMC,IAAM,EAAMA,GAE/BwtD,EAAK,IAAI9wC,GACJ,EAAI1c,EAAIA,EAAID,EAAIA,GAAK5G,GACrB,EAAI4G,EAAI5G,GAAGmI,MAEpB,OAAO,IAAIob,GAAS,GAAM8wC,EAAO,GAAG,GAAMA,EAAO,KAQnDllB,KAAQ,WAIN,IAAIvoC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANuH,EACF,OAAO,IAAI0c,EAAQ/e,KAAKqrC,MAAM,EAAGjpC,GAAI,GAGvC,IAAI5G,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACJ6G,EAAI7G,GAAG2vC,OACb,IAAIpsB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAG8oC,QAQzCJ,KAAQ,WAIN,IAAI3oC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANsH,GAAiB,IAANC,EACb,OAAO,IAAI0c,EAAQ,EAAGjc,EAAAA,GAGxB,IAAItH,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACH6G,EAAI7G,GAAG+mC,OACd,IAAIxjB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAGkgC,QAQzCsI,KAAQ,WAIN,IAAIzoC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANsH,GAAiB,IAANC,EACb,OAAO,IAAI0c,EAAQ/e,KAAKmhC,GAAK,EAAGr+B,EAAAA,GAGlC,IAAItH,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACJ6G,EAAI7G,GAAGyvC,OACb,IAAIlsB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAG4oC,QAQzCa,KAAQ,WAIN,IAAI1pC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,OAAO,IAAIikB,EACH+sB,EAAK1pC,GAAKpC,KAAKkhC,IAAI7+B,GACnBipC,EAAKlpC,GAAKpC,KAAK6rC,IAAIxpC,KAQ7BipC,KAAQ,WAIN,IAAIlpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,OAAO,IAAIikB,EACHusB,EAAKlpC,GAAKpC,KAAKkhC,IAAI7+B,GACnBypC,EAAK1pC,GAAKpC,KAAK6rC,IAAIxpC,KAQ7B2pC,KAAQ,WAIN,IAAI5pC,EAAI,EAAItH,KAAS,GACjBuH,EAAI,EAAIvH,KAAS,GACjBU,EAAI8vC,EAAKlpC,GAAKpC,KAAKkhC,IAAI7+B,GAE3B,OAAO,IAAI0c,EACH+sB,EAAK1pC,GAAK5G,EACVwE,KAAK6rC,IAAIxpC,GAAK7G,IAQxBgwC,KAAQ,WAIN,IAAIppC,EAAI,EAAItH,KAAS,GACjBuH,EAAI,EAAIvH,KAAS,GACjBU,EAAI8vC,EAAKlpC,GAAKpC,KAAKkhC,IAAI7+B,GAE3B,OAAO,IAAI0c,EACH+sB,EAAK1pC,GAAK5G,GACVwE,KAAK6rC,IAAIxpC,GAAK7G,IAQxBkwC,KAAQ,WAIN,IAAItpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACbU,EAAIwE,KAAKkhC,IAAI,EAAI7+B,GAAKipC,EAAK,EAAIlpC,GAEnC,OAAO,IAAI2c,GACL,EAAI+sB,EAAK1pC,GAAKpC,KAAKkhC,IAAI7+B,GAAK7G,EAC5B,EAAI8vC,EAAKlpC,GAAKpC,KAAK6rC,IAAIxpC,GAAK7G,IAQpCowC,KAAQ,WAIN,IAAIxpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACbU,EAAIwE,KAAKkhC,IAAI,EAAI7+B,GAAKipC,EAAK,EAAIlpC,GAEnC,OAAO,IAAI2c,EACH,EAAIusB,EAAKlpC,GAAKpC,KAAKkhC,IAAI7+B,GAAK7G,GAC5B,EAAIswC,EAAK1pC,GAAKpC,KAAK6rC,IAAIxpC,GAAK7G,IAQtC0vC,MAAS,WAIP,IAAIhS,EAAMp+B,KAAS,GACnBA,KAAS,IAAKA,KAAS,GACvBA,KAAS,GAAIo+B,EACb,IAAI/hB,EAAMrc,KAAW,OAQrB,OANAA,KAAS,IAAKA,KAAS,GACvBA,KAAS,GAAIo+B,EACbA,EAAM/hB,EAAQ,GAEdA,EAAQ,IAAKA,EAAQ,GACrBA,EAAQ,GAAI+hB,EACL/hB,GAQTuzB,MAAS,WAIP,IAAIxR,EACA/hB,EAAMrc,KAAW,OAUrB,OATIqc,EAAQ,IAAK,GACf+hB,EAAM/hB,EAAQ,GACdA,EAAQ,IAAKA,EAAQ,GACrBA,EAAQ,GAAI+hB,IAEZA,EAAM/hB,EAAQ,GACdA,EAAQ,IAAKA,EAAQ,GACrBA,EAAQ,GAAI+hB,GAEP/hB,GAQTi0B,MAAS,WAIP,IAAIhpC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEbi1D,EAAO3tD,EAAI,GAAW,IAANC,EAChB2tD,EAAW,EAAI5tD,EACf6tD,EAAU,EAAI7tD,EACd5G,EAAIw0D,EAAWA,EAAW3tD,EAAIA,EAE9BvF,EAAW,IAANtB,EACC,IAAIujB,GACGkxC,EAAUD,EAAW3tD,EAAIA,GAAK7G,GAC9B6G,EAAI2tD,EAAWC,EAAU5tD,GAAK7G,GACrC,IAAIujB,GACU,IAAP3c,EAAaA,EAAI,EAAK,EAChB,IAANC,EAAYA,EAAI,EAAK,GAElCwtC,EAAO/yC,EAAM,GAMjB,OALAA,EAAM,GAAI0yD,EAAS1yD,EAAM,GAAGA,EAAM,IAAK,EACvCA,EAAM,GAAIkD,KAAKqrC,MAAMvuC,EAAM,GAAG+yC,GAAQ,EAClCkgB,IACFjzD,EAAM,IAAKA,EAAM,IAEZA,GAQT8tC,MAAS,WAIP,IAAIxoC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANsH,GAAiB,IAANC,EAEb,OAAO,IAAI0c,EAAQ,EAAG/e,KAAKmhC,GAAK,GAGlC,IAAI3lC,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACJ6G,EAAI7G,GAAG4vC,QACb,IAAIrsB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAG+oC,SAQzCN,MAAS,WAIP,IAAI1oC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANuH,EAEF,OAAO,IAAI0c,EACI,IAAN3c,EACCpC,KAAK2D,IAAIvB,EAAIpC,KAAKyuB,KAAKrsB,EAAIA,EAAI,IAC/BU,EAAAA,EAAU,GAGtB,IAAItH,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACH6G,EAAI7G,GAAG0vC,QACd,IAAInsB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAG6oC,SAQzCF,MAAS,WAIP,IAAI5oC,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEjB,GAAU,IAANsH,GAAiB,IAANC,EACb,OAAO,IAAI0c,EAAQjc,EAAAA,EAAU,GAG/B,IAAItH,EAAI4G,EAAIA,EAAIC,EAAIA,EACpB,OAAc,IAAN7G,EACE,IAAIujB,EACE3c,EAAI5G,GACJ6G,EAAI7G,GAAGkvC,QACb,IAAI3rB,EACS,IAAN3c,EAAWA,EAAI,EAAI,EACb,IAANC,GAAWA,EAAI,EAAI,GAAGqoC,SAQzC57B,QAAW,WAET,IAAI1M,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GAEbU,EAAI4G,EAAIA,EAAIC,EAAIA,EAEpB,OAAO,IAAI0c,EACG,IAAN3c,EAAUA,EAAI5G,EAAI,EACZ,IAAN6G,GAAUA,EAAI7G,EAAI,IAQ5B63C,UAAa,WAEX,OAAO,IAAIt0B,EAAQjkB,KAAS,IAAIA,KAAS,KAQ3CqmB,IAAO,WAEL,OAAO,IAAIpC,GAASjkB,KAAS,IAAIA,KAAS,KAQ5CqnC,KAAQ,SAAS+tB,GAIf,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAEzB,IAAInxC,EACH/e,KAAKmiC,KAAKrnC,KAAS,GAAIo1D,GAAUA,EACjClwD,KAAKmiC,KAAKrnC,KAAS,GAAIo1D,GAAUA,IAQ3ChxB,MAAS,SAASgxB,GAIhB,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAEzB,IAAInxC,EACH/e,KAAKk/B,MAAMpkC,KAAS,GAAIo1D,GAAUA,EAClClwD,KAAKk/B,MAAMpkC,KAAS,GAAIo1D,GAAUA,IAQ5CvtD,MAAS,SAASutD,GAIhB,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAEzB,IAAInxC,EACH/e,KAAK2C,MAAM7H,KAAS,GAAIo1D,GAAUA,EAClClwD,KAAK2C,MAAM7H,KAAS,GAAIo1D,GAAUA,IAQ5Cx/C,OAAU,SAAStO,EAAGC,GAIpB,OAFAyhB,EAAM1hB,EAAGC,GAEFrC,KAAKsF,IAAImgD,EAAM,GAAI3qD,KAAS,KAAMikB,EAAiB,SACnD/e,KAAKsF,IAAImgD,EAAM,GAAI3qD,KAAS,KAAMikB,EAAiB,SAQ5D7R,MAAS,WAEP,OAAO,IAAI6R,EAAQjkB,KAAS,GAAGA,KAAS,KAQ1C+K,SAAY,WAEV,IAAIzD,EAAItH,KAAS,GACbuH,EAAIvH,KAAS,GACb+9B,EAAM,GAEV,OAAI91B,MAAMX,IAAMW,MAAMV,GACb,OAGC,IAAND,IACFy2B,GAAMz2B,GAGE,IAANC,IAEQ,IAAND,EACFy2B,GAAMx2B,EAAI,EAAI,MAAQ,MACbA,EAAI,IACbw2B,GAAM,KAKJ,KAFJx2B,EAAIrC,KAAKsF,IAAIjD,MAGXw2B,GAAMx2B,GAERw2B,GAAM,KAGHA,GACI,MAUXs3B,SAAY,WAEV,OAAQr1D,KAAS,GAAGA,KAAS,KAQ/BqS,QAAW,WAET,OAAmB,IAAfrS,KAAS,GACJA,KAAS,GAEX,MAQTiI,MAAS,WACP,OAAOA,MAAMjI,KAAS,KAAMiI,MAAMjI,KAAS,KAQ7C4H,SAAY,WACV,OAAOA,SAAS5H,KAAS,KAAM4H,SAAS5H,KAAS,MAIrDikB,EAAc,KAAI,IAAIA,EAAQ,EAAG,GACjCA,EAAa,IAAI,IAAIA,EAAQ,EAAG,GAChCA,EAAW,EAAI,IAAIA,EAAQ,EAAG,GAC9BA,EAAY,GAAI,IAAIA,EAAQ/e,KAAKmhC,GAAI,GACrCpiB,EAAW,EAAI,IAAIA,EAAQ/e,KAAK8jC,EAAG,GACnC/kB,EAAiB,QAAI,WAMe7e,KAHGk6C,EAAgC,WACnE,OAAOr7B,GACNV,MAAM5jB,SACuCC,EAAOD,QAAU2/C,GA3rCrE,IAusCM,SAAU1/C,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAoGlCR,EAAQgB,KAAO,UACfhB,EAAQD,QAnGR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIgV,EAAQjX,EAAoB,GAwC5ByoC,EAAUxmC,EAAM,WAClBE,GAAI,WACF,OAAOL,EAAKgiB,QAAQ0xB,MAGtBryC,OAAU,SAAUtB,GAClB,OAAO,IAAIC,EAAKgiB,QAAQjiB,EAAG,IAG7BwT,iBAAkB,SAAU0P,EAAIC,GAC9B,OAAO,IAAIljB,EAAKgiB,QAAQiB,EAAIC,IAI9B1P,uBAAwB,SAAUyP,EAAIC,GACpC,OAAO,IAAIljB,EAAKgiB,QAAQiB,EAAG8B,WAAY7B,EAAG6B,aAG5C/C,QAAW,SAAUjiB,GACnB,OAAOA,EAAEoQ,SAGX5P,OAAU,SAAUR,GAClB,OAAOC,EAAKgiB,QAAQjiB,IAGtBiqB,KAAQ,SAAUjqB,GAChB,OAAOC,EAAKgiB,QAAQ,IAGtBnjB,OAAU,SAAUkB,GAClB,GAAG,OAAQA,GAAK,OAAQA,EACtB,OAAO,IAAIC,EAAKgiB,QAAQjiB,EAAEkjB,GAAIljB,EAAEmjB,IAGlC,GAAI,MAAOnjB,GAAK,QAASA,EACvB,OAAO,IAAIC,EAAKgiB,QAAQjiB,GAG1B,MAAM,IAAI0C,MAAM,+EAGlB0f,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG4mC,MAWtB,OAPAA,EAAQ1lC,OACNC,EAAG,IACHC,EAAG,4BACHC,EAAG,oCACC+T,EAAMtL,QAAW,EAAI,2CAGpB88B,IASH,SAAUhpC,EAAQD,EAASQ,GAEjC,aAMA,IAAIm1D,GACFvrC,IAAK,MACLC,IAAK,MACLurC,KAAM,oBACNC,IAAK,MACLC,EAAG,MACHhrC,IAAK,MACLK,IAAK,MACLJ,IAAK,sBACL48B,EAAG,MACH18B,IAAK,sBAEH8qC,GACFC,IAAK,OACLC,IAAK,QACLC,IAAK,IACLC,KAAM,YACNC,OAAQ,gBACRC,KAAM,iBAGJC,EAAqB,SAA4BX,EAAgBI,GACnE,OAAO50D,OAAO6H,UAAW2sD,EAAgBI,IAW3C91D,EAAOD,QAAU,SAAUmL,GAmCzB,IAlCA,IAAIorD,EAAO3sD,UAAU3F,OAAS,QAAsBwB,IAAjBmE,UAAU,GAAmBA,UAAU,MACtE4sD,EAAwBD,EAAKlkD,mBAC7BA,OAA+C5M,IAA1B+wD,GAA8CA,EACnEC,EAAmBF,EAAKG,YACxBA,OAAmCjxD,IAArBgxD,EAAiCH,EAAqBG,EAEpEE,EAAa5sD,OAAOoB,GACpBiO,EAAS,GAETw9C,EAAUF,EAAYv1D,OAAO6H,UAAW2sD,GAAiBtjD,EAAqBlR,OAAO6H,UAAW+sD,OAChGc,EAAa11D,OAAOwkB,KAAKixC,GAMzBE,EAAQ,WACV,IAAIC,GAAmB,EACvBF,EAAW7xD,QAAQ,SAAU8N,EAAKrO,GAC5BsyD,GAGAJ,EAAWK,WAAWlkD,KACxBsG,GAAUw9C,EAAQC,EAAWpyD,IAC7BkyD,EAAaA,EAAWpwD,MAAMuM,EAAI7O,OAAQ0yD,EAAW1yD,QACrD8yD,GAAmB,KAGlBA,IACH39C,GAAUu9C,EAAWpwD,MAAM,EAAG,GAC9BowD,EAAaA,EAAWpwD,MAAM,EAAGowD,EAAW1yD,UAIzC0yD,GACLG,IAEF,OAAO19C,IAKH,SAAUnZ,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,KAGpBA,EAAoB,MAMhB,SAAUP,EAAQD,EAASQ,GAEjC,IAAIgkB,EAAWhkB,EAAoB,KAKnCgkB,EAAS5iB,UAAUU,KAAO,WAC1BkiB,EAAS5iB,UAAU8xB,YAAa,EAOhClP,EAAS5iB,UAAUqiB,OAAS,WAC1B,OACEC,OAAQ,WACR1iB,EAAGnB,KAAK0B,EAAI1B,KAAKmB,EACjBT,EAAGV,KAAKU,IAUZyjB,EAASJ,SAAW,SAAUC,GAC5B,OAAO,IAAIG,EAASH,IAQtBrkB,EAAQgB,KAAO,WACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QANR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,OAAO+hB,IAUH,SAAUvkB,EAAQD,EAASQ,GAEjC,IAAkCm/C;;;;;;;;;;;;;;;CAuClC,SAAW7/C,GAET,aAKA,IAGIkrD,GACFjpD,EAAK,EACLP,EAAK,EACLT,EAAK,GAGP,SAASmtB,EAAYltB,GACnB,IAAIi2D,EAAmB,WACrB,IAAI7hB,EAAOrwC,MAAM6e,MAAMvjB,KAAMuJ,WAC7BwrC,EAAKp0C,KAAOX,KAAKW,KAAOA,EACxBX,KAAKkX,MAAQ69B,EAAK79B,MAClBlX,KAAKiX,QAAU89B,EAAK99B,SAGlB4/C,EAAwB,aAI5B,OAHAA,EAAsBt1D,UAAYmD,MAAMnD,UACxCq1D,EAAiBr1D,UAAY,IAAIs1D,EAE1BD,EAGT,IAAIE,EAAiB3yC,EAAyB,eAAI0J,EAAY,kBAC1DkpC,EAAmB5yC,EAA2B,iBAAI0J,EAAY,oBAElE,SAASllB,EAAOxH,EAAGO,GAKjB,OAHIuG,MAAM9G,EAAIgJ,SAAShJ,EAAG,MACxB61D,IAEK71D,EAAIO,EAGb,SAASs1D,IACP,MAAM,IAAID,EAGZ,IAAI/tC,EAAQ,SAAUlO,EAAIm8C,GAExB,IAOIC,EAPA/1D,EAAI,EAAGT,EAAI,EAAGgB,EAAI,EAClB+e,EAAI,EAAGlG,EAAI,EAAGvY,EAAI,EAAGyJ,EAAI,EAAGsU,EAAI,EAEhCi1B,EAAI,EAAGC,EAAI,EACXkiB,EAAI,EAAGC,EAAI,EAKf,GAAIt8C,MAAAA,QAEG,QAAW1V,IAAP6xD,EAGTv1D,GAFAP,EAAI2Z,IACJpa,EAAIu2D,QAGJ,cAAen8C,GAEb,IAAK,SAEC,MAAOA,GAAM,MAAOA,GACtB3Z,EAAI2Z,EAAM,EACVpa,EAAIoa,EAAM,EACN,MAAOA,IACT3Z,GAAI2Z,EAAM,IACH,KAAKA,GACd3Z,EAAI2Z,EAAG,GACH,KAAKA,IACPpa,EAAIoa,EAAG,KAETk8C,IAEFt1D,EAAIP,EAAIT,EACR,MAEF,IAAK,SAOH,GALIoa,EAAK,IACPpZ,EAAIoZ,EACJA,GAAMA,GAGJA,EAAK,GAAM,EACb3Z,EAAI2Z,OACC,GAAIA,EAAK,EAAG,CAUjB,IARIA,GAAM,IAERA,GADAiF,EAAI7a,KAAK6K,IAAI,GAAI7K,KAAKk/B,MAAM,EAAIl/B,KAAK2D,IAAIiS,GAAM5V,KAAK4D,QAO/CmsC,GAhDP,KAgDiBmiB,GAhDjB,KAgDyB,CAGvB,GAAIt8C,KAFJo8C,GAAKliB,EAAImiB,IAAMliB,EAAImiB,IAEL,CACRniB,EAAImiB,GApDZ,KAqDMj2D,EAAI6zC,EAAImiB,EACRz2D,EAAIu0C,EAAImiB,GACCA,EAAIniB,GACb9zC,EAAIg2D,EACJz2D,EAAI02D,IAEJj2D,EAAI6zC,EACJt0C,EAAIu0C,GAEN,MAIIn6B,EAAKo8C,GACPliB,GAAImiB,EACJliB,GAAImiB,IAEJD,GAAIniB,EACJoiB,GAAIniB,GAGFA,EA1ER,KA2EM9zC,EAAIg2D,EACJz2D,EAAI02D,IAEJj2D,EAAI6zC,EACJt0C,EAAIu0C,GAIV9zC,GAAI4e,OACK9X,MAAM6S,IAAO7S,MAAMgvD,MAC5Bv2D,EAAIS,EAAIwmB,KAEV,MAEF,IAAK,SAgDH,GA5CU,QAFVstB,EAAIn6B,EAAGrR,MAAM,YAGXutD,IAEW,MAAT/hB,EAAED,IACJtzC,GAAK,EACLszC,KACkB,MAATC,EAAED,IACXA,IAGEC,EAAErxC,SAAWoxC,EAAI,EACnBz6B,EAAI5R,EAAOssC,EAAED,KAAMtzC,GACG,MAAbuzC,EAAED,EAAI,IAAuB,MAATC,EAAED,IAElB,MAATC,EAAED,KACJv0B,EAAI9X,EAAOssC,EAAED,KAAMtzC,OAErBszC,EAGQ,IAAMC,EAAErxC,QAAuB,MAAbqxC,EAAED,EAAI,IAA2B,MAAbC,EAAED,EAAI,IAA2B,MAAbC,EAAED,EAAI,IAA2B,MAAbC,EAAED,EAAI,MAC1Fz6B,EAAI5R,EAAOssC,EAAED,GAAItzC,GACjB+J,EAAIvG,KAAK6K,IAAI,GAAIklC,EAAED,GAAGpxC,QACtBoxC,MAIW,MAATC,EAAED,IAA2B,MAAbC,EAAED,EAAI,IAAuB,MAATC,EAAED,IAA2B,MAAbC,EAAED,EAAI,MAC5DhzC,EAAI2G,EAAOssC,EAAED,EAAI,GAAItzC,GACrBqe,EAAI7a,KAAK6K,IAAI,GAAIklC,EAAED,EAAI,GAAGpxC,QAAU,EACpCoxC,GAAI,IAGgB,MAAbC,EAAED,EAAI,IAA2B,MAAbC,EAAED,EAAI,IACnCz6B,EAAI5R,EAAOssC,EAAED,GAAItzC,GACjB+J,EAAI9C,EAAOssC,EAAED,EAAI,GAAI,GACrBA,GAAI,GACkB,MAAbC,EAAED,EAAI,IAA2B,MAAbC,EAAED,EAAI,KACnCv0B,EAAI9X,EAAOssC,EAAED,GAAItzC,GACjB6Y,EAAI5R,EAAOssC,EAAED,EAAI,GAAItzC,GACrB+J,EAAI9C,EAAOssC,EAAED,EAAI,GAAI,GACrBA,GAAI,GAGFC,EAAErxC,QAAUoxC,EAAG,CAEjBtzC,EACQP,EAAIa,GAFZtB,EAAI+K,EAAIsU,GAEYU,EAAIV,EAAIxF,EAC5B,MAKJ,QACEy8C,IAGN,GAAU,IAANt2D,EACF,MAAM,IAAIo2D,EAGZnM,EAAK,EAAIjpD,EAAI,GAAK,EAAI,EACtBipD,EAAK,EAAIzlD,KAAKsF,IAAIrJ,GAClBwpD,EAAK,EAAIzlD,KAAKsF,IAAI9J,IA0DhBssC,EAAM,SAAU1lC,EAAGC,GAErB,IAAKD,EAAG,OAAOC,EACf,IAAKA,EAAG,OAAOD,EAEf,OAAU,CAER,KADAA,GAAIC,GACI,OAAOA,EAEf,KADAA,GAAID,GACI,OAAOA,IAWnB,SAAS6c,EAAS7c,EAAGC,GAEnB,KAAMvH,gBAAgBmkB,GACpB,OAAO,IAAIA,EAAS7c,EAAGC,GAGzByhB,EAAM1hB,EAAGC,GAGPD,EADE6c,EAAiB,OACf6oB,EAAI2d,EAAK,EAAGA,EAAK,GAEjB,EAGN3qD,KAAQ,EAAI2qD,EAAK,EACjB3qD,KAAQ,EAAI2qD,EAAK,EAAIrjD,EACrBtH,KAAQ,EAAI2qD,EAAK,EAAIrjD,EAOvB6c,EAAiB,OAAI,EAErBA,EAAS5iB,WAEPG,EAAK,EACLP,EAAK,EACLT,EAAK,EAOL8J,IAAO,WAEL,OAAO,IAAI2Z,EAASnkB,KAAQ,EAAGA,KAAQ,IAQzCqmB,IAAO,WAEL,OAAO,IAAIlC,GAAUnkB,KAAQ,EAAIA,KAAQ,EAAGA,KAAQ,IAQtD0Q,IAAO,SAAUpJ,EAAGC,GAGlB,OADAyhB,EAAM1hB,EAAGC,GACF,IAAI4c,EACHnkB,KAAQ,EAAIA,KAAQ,EAAI2qD,EAAK,EAAIA,EAAK,EAAI3qD,KAAQ,EAAI2qD,EAAK,EAC3D3qD,KAAQ,EAAI2qD,EAAK,IAS3BpqC,IAAO,SAAUjZ,EAAGC,GAGlB,OADAyhB,EAAM1hB,EAAGC,GACF,IAAI4c,EACHnkB,KAAQ,EAAIA,KAAQ,EAAI2qD,EAAK,EAAIA,EAAK,EAAI3qD,KAAQ,EAAI2qD,EAAK,EAC3D3qD,KAAQ,EAAI2qD,EAAK,IAS3BjqC,IAAO,SAAUpZ,EAAGC,GAGlB,OADAyhB,EAAM1hB,EAAGC,GACF,IAAI4c,EACHnkB,KAAQ,EAAI2qD,EAAK,EAAI3qD,KAAQ,EAAI2qD,EAAK,EACtC3qD,KAAQ,EAAI2qD,EAAK,IAS3BxuC,IAAO,SAAU7U,EAAGC,GAGlB,OADAyhB,EAAM1hB,EAAGC,GACF,IAAI4c,EACHnkB,KAAQ,EAAI2qD,EAAK,EAAI3qD,KAAQ,EAAI2qD,EAAK,EACtC3qD,KAAQ,EAAI2qD,EAAK,IAS3Bv4C,MAAS,WACP,OAAO,IAAI+R,EAASnkB,OAQtByQ,IAAO,SAAUnJ,EAAGC,GAElB,OAAIU,MAAMjI,KAAQ,IAAMiI,MAAMjI,KAAQ,GAC7B,IAAImkB,EAASwD,UAGZviB,IAANkC,EACK,IAAI6c,EAASnkB,KAAQ,EAAIA,KAAQ,EAAIA,KAAQ,EAAG,IAGzDgpB,EAAM1hB,EAAGC,GACL,IAAMojD,EAAK,GAAK,IAAM3qD,KAAQ,GAChCmkB,EAAS,EAAG,GAiBP,IAAIA,EACFnkB,KAAQ,EAAI2qD,EAAK,EAAI3qD,KAAQ,GAAM2qD,EAAK,EAAI3qD,KAAQ,GACrD2qD,EAAK,EAAI3qD,KAAQ,KAS3BgtC,IAAO,SAAU1lC,EAAGC,GAMlB,OAJAyhB,EAAM1hB,EAAGC,GAIF,IAAI4c,EAAS6oB,EAAI2d,EAAK,EAAG3qD,KAAQ,GAAI2qD,EAAK,EAAI3qD,KAAQ,EAAIgtC,EAAI2d,EAAK,EAAG3qD,KAAQ,KAQvFktC,IAAO,SAAU5lC,EAAGC,GAMlB,OAJAyhB,EAAM1hB,EAAGC,GAIM,IAAXojD,EAAK,GAAyB,IAAd3qD,KAAQ,EACnB,IAAImkB,EAEN,IAAIA,EAASwmC,EAAK,EAAI3qD,KAAQ,EAAIgtC,EAAI2d,EAAK,EAAG3qD,KAAQ,GAAIgtC,EAAI2d,EAAK,EAAG3qD,KAAQ,KAQvFqnC,KAAQ,SAAU+tB,GAIhB,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAE5BntD,MAAMjI,KAAQ,IAAMiI,MAAMjI,KAAQ,GAC7B,IAAImkB,EAASwD,KAEf,IAAIxD,EAASjf,KAAKmiC,KAAK+tB,EAASp1D,KAAQ,EAAIA,KAAQ,EAAIA,KAAQ,GAAIo1D,IAQ7EhxB,MAAS,SAAUgxB,GAIjB,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAE5BntD,MAAMjI,KAAQ,IAAMiI,MAAMjI,KAAQ,GAC7B,IAAImkB,EAASwD,KAEf,IAAIxD,EAASjf,KAAKk/B,MAAMgxB,EAASp1D,KAAQ,EAAIA,KAAQ,EAAIA,KAAQ,GAAIo1D,IAQ9EvtD,MAAS,SAAUutD,GAIjB,OAFAA,EAASlwD,KAAK6K,IAAI,GAAIqlD,GAAU,GAE5BntD,MAAMjI,KAAQ,IAAMiI,MAAMjI,KAAQ,GAC7B,IAAImkB,EAASwD,KAEf,IAAIxD,EAASjf,KAAK2C,MAAMutD,EAASp1D,KAAQ,EAAIA,KAAQ,EAAIA,KAAQ,GAAIo1D,IAQ9EphD,QAAW,WAET,OAAO,IAAImQ,EAASnkB,KAAQ,EAAIA,KAAQ,EAAGA,KAAQ,IAQrD+P,IAAO,SAAUvP,GAEf,OAAIA,EAAI,EACC,IAAI2jB,EAASjf,KAAK6K,IAAI/P,KAAQ,EAAIA,KAAQ,GAAIQ,GAAI0E,KAAK6K,IAAI/P,KAAQ,GAAIQ,IAEvE,IAAI2jB,EAASjf,KAAK6K,IAAI/P,KAAQ,EAAIA,KAAQ,EAAGQ,GAAI0E,KAAK6K,IAAI/P,KAAQ,EAAGQ,KAShFoV,OAAU,SAAUtO,EAAGC,GAGrB,OADAyhB,EAAM1hB,EAAGC,GACFvH,KAAQ,EAAIA,KAAQ,EAAI2qD,EAAK,GAAMA,EAAK,EAAIA,EAAK,EAAI3qD,KAAQ,GAQtEykB,QAAW,SAAUnd,EAAGC,GAEtByhB,EAAM1hB,EAAGC,GACT,IAAI4rB,EAAKnzB,KAAQ,EAAIA,KAAQ,EAAI2qD,EAAK,EAAIA,EAAK,EAAIA,EAAK,EAAI3qD,KAAQ,EACpE,OAAQ,EAAImzB,IAAMA,EAAI,IAQxBkkC,UAAa,SAAU/vD,EAAGC,GAGxB,OADAyhB,EAAM1hB,EAAGC,OACEojD,EAAK,EAAI3qD,KAAQ,IAAQA,KAAQ,EAAI2qD,EAAK,GAAMA,EAAK,EAAI3qD,KAAQ,KAQ9EqS,QAAW,WAET,OAAOrS,KAAQ,EAAIA,KAAQ,EAAIA,KAAQ,GAQzC4vD,WAAc,SAAU0H,GAEtB,IAAIC,EAAOzsD,EAAM,GACb3J,EAAInB,KAAQ,EACZU,EAAIV,KAAQ,EAmBhB,OAlBIA,KAAQ,EAAI,IACd8K,GAAM,KAGE,IAANpK,EACFoK,GAAM3J,GAGFm2D,IAAiBC,EAAQryD,KAAKk/B,MAAMjjC,EAAIT,IAAM,IAChDoK,GAAMysD,EACNzsD,GAAM,IACN3J,GAAIT,GAGNoK,GAAM3J,EACN2J,GAAM,IACNA,GAAMpK,GAEDoK,GAQTmsB,QAAW,SAAUqgC,GAEnB,IAAIC,EAAOzsD,EAAM,GACb3J,EAAInB,KAAQ,EACZU,EAAIV,KAAQ,EAoBhB,OAnBIA,KAAQ,EAAI,IACd8K,GAAM,KAGE,IAANpK,EACFoK,GAAM3J,GAGFm2D,IAAiBC,EAAQryD,KAAKk/B,MAAMjjC,EAAIT,IAAM,IAChDoK,GAAMysD,EACNp2D,GAAIT,GAGNoK,GAAM,UACNA,GAAM3J,EACN2J,GAAM,KACNA,GAAMpK,EACNoK,GAAM,KAEDA,GAQT0sD,YAAe,WAOb,IALA,IAAIrkC,EACA7rB,EAAItH,KAAQ,EACZuH,EAAIvH,KAAQ,EACZqc,KAGFA,EAAI1Y,KAAKuB,KAAKk/B,MAAM98B,EAAIC,IACxB4rB,EAAI7rB,EAAIC,EACRD,EAAIC,EACJA,EAAI4rB,EACS,IAAN7rB,IAET,OAAO+U,GAQTtR,SAAY,WAEV,IAAIqxC,EACAqb,EAAIz3D,KAAQ,EACZo3D,EAAIp3D,KAAQ,EAEhB,GAAIiI,MAAMwvD,IAAMxvD,MAAMmvD,GACpB,MAAO,MAGJjzC,EAAiB,SAEpBszC,GADArb,EAAIpP,EAAIyqB,EAAGL,GAEXA,GAAIhb,GAGN,IAEIsb,EAxdO,SAAUv2D,EAAGT,GAE1B,KAAOA,EAAI,GAAM,EACTA,GAAI,GAEZ,KAAOA,EAAI,GAAM,EACTA,GAAI,GAEZ,GAAU,IAANA,EACF,OAAO,EAST,IAFA,IAAI2wD,EAAM,GAAK3wD,EAENyyB,EAAI,EAAW,IAARk+B,EAAWl+B,IAGzB,GAFAk+B,EAAY,GAANA,EAAW3wD,EAEbyyB,EA9OY,IA+Od,OAAO,EAEX,OAAOA,EAgcQwkC,CAASF,EAAGL,GACrBQ,EA9bS,SAAUz2D,EAAGT,EAAGsD,GAK/B,IAHA,IAAI6zD,EAAO,EACPC,EAzCO,SAAUvwD,EAAGpB,EAAG3F,GAE3B,IAAK,IAAI2f,EAAI,EAAGha,EAAI,EAAGoB,EAAKA,EAAIA,EAAK/G,EAAG2F,IAAM,EAEpC,EAAJA,IACFga,EAAKA,EAAI5Y,EAAK/G,GAGlB,OAAO2f,EAiCI43C,CAAO,GAAI/zD,EAAKtD,GAElByyB,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAG5B,GAAI0kC,IAASC,EACX,OAAO3kC,EAET0kC,EAAc,GAAPA,EAAYn3D,EACnBo3D,EAAc,GAAPA,EAAYp3D,EAErB,OAAO,EAgbQs3D,CAAWP,EAAGL,EAAGM,GAE1B5sD,GAAqB,IAAf9K,KAAQ,EAAW,IAAM,GAUnC,GARA8K,GAAM2sD,EAAIL,EAAI,EAEdK,GAAIL,GACJK,GAAI,MAGF3sD,GAAM,KAEJ4sD,EAAQ,CAEV,IAAK,IAAIr3D,EAAIu3D,EAAQv3D,KACnByK,GAAM2sD,EAAIL,EAAI,EACdK,GAAIL,EACJK,GAAI,GAEN3sD,GAAM,IACN,IAASzK,EAAIq3D,EAAQr3D,KACnByK,GAAM2sD,EAAIL,EAAI,EACdK,GAAIL,EACJK,GAAI,GAEN3sD,GAAM,SAEN,IAASzK,EA9BD,GA8BUo3D,GAAKp3D,KACrByK,GAAM2sD,EAAIL,EAAI,EACdK,GAAIL,EACJK,GAAI,GAGR,OAAO3sD,SAQyB1F,KAHGk6C,EAAgC,WACnE,OAAOn7B,GACNZ,MAAM5jB,SACuCC,EAAOD,QAAU2/C,GAluBrE,IA8uBM,SAAU1/C,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IAGpBA,EAAoB,KACpBA,EAAoB,GACpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjC,aAQAR,EAAQi/C,UAAY,SAASh6C,GAC3B,MAAuB,kBAATA,IAMV,SAAUhF,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAC3BoD,EAAiBpD,EAAoB,IAErCyB,EAAQkT,EAAKlT,MACbP,EAASyT,EAAKzT,OACdmB,EAASsS,EAAKtS,OACdc,EAASwR,EAAKxR,OAEdI,EAAUd,MAAMc,QAChBW,EAAWf,EAAOe,SAClBC,EAAYhB,EAAOgB,UACnByQ,EAAWvS,EAAOuS,SAElB5Q,EAAgBvC,EAAMuC,cAu4C1BxE,EAAQgB,KAAO,eACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QAv4CR,SAAkBuC,EAAMC,EAAQC,EAAMC,GACpC,IAAIU,EAASX,EAAKhC,EAAoB,KAClCmV,EAAcnT,EAAKhC,EAAoB,IAO3C,SAASsX,EAAa5U,EAAMF,GAC1B,KAAM3C,gBAAgByX,GACpB,MAAM,IAAI7N,YAAY,oDACxB,GAAIjH,IAAaoS,EAASpS,GACxB,MAAM,IAAI+B,MAAM,qBAAuB/B,GAEzC,GAAIV,EAAK2V,SAAS/U,GAEhBo1D,EAAkBj4D,KAAM6C,EAAMF,QAE3B,GAAIE,GAAQa,EAAQb,EAAKuB,QAAUV,EAAQb,EAAKoY,MAAQvX,EAAQb,EAAKY,MAExEzD,KAAK6Z,QAAUhX,EAAKmY,OACpBhb,KAAK+Z,OAASlX,EAAKuB,MACnBpE,KAAKia,KAAOpX,EAAKoY,IACjBjb,KAAKuU,MAAQ1R,EAAKY,KAClBzD,KAAKyU,UAAY9R,GAAYE,EAAKF,cAE/B,GAAIe,EAAQb,GAEfq1D,EAAiBl4D,KAAM6C,EAAMF,OAE1B,CAAA,GAAIE,EAEP,MAAM,IAAI0B,UAAU,6BAA+BuQ,EAAKyb,MAAMtuB,KAAKY,GAAQ,KAI3E7C,KAAK6Z,WACL7Z,KAAK+Z,UACL/Z,KAAKia,MAAQ,GACbja,KAAKuU,OAAS,EAAG,GACjBvU,KAAKyU,UAAY9R,GAIrB,IAAIs1D,EAAoB,SAAU51D,EAAQ81D,EAAQx1D,GAE5B,iBAAhBw1D,EAAOl2D,MAETI,EAAOwX,QAAUs+C,EAAOt+C,QAAUxY,EAAO+Q,MAAM+lD,EAAOt+C,cAAWzU,EACjE/C,EAAO0X,OAAS1Y,EAAO+Q,MAAM+lD,EAAOp+C,QACpC1X,EAAO4X,KAAO5Y,EAAO+Q,MAAM+lD,EAAOl+C,MAClC5X,EAAOkS,MAAQlT,EAAO+Q,MAAM+lD,EAAO5jD,OACnClS,EAAOoS,UAAY9R,GAAYw1D,EAAO1jD,WAItCyjD,EAAiB71D,EAAQ81D,EAAO9lD,UAAW1P,GAAYw1D,EAAO1jD,YAI9DyjD,EAAmB,SAAU71D,EAAQQ,EAAMF,GAE7CN,EAAOwX,WACPxX,EAAO0X,UACP1X,EAAO4X,QACP5X,EAAOoS,UAAY9R,EAEnB,IAAIkd,EAAOhd,EAAKe,OACZkc,EAAU,EAGVpK,EAAKJ,EAELgF,EAAO,EAUX,GARIvF,EAASpS,KAEX+S,EAAKtT,EAAMwS,KAAKU,GAAc3S,EAAUA,KAAc2S,EAEtDgF,EAAOlY,EAAMuS,QAAQ,EAAGhS,IAItBkd,EAAO,EAAG,CAEZ,IAAI3L,EAAI,EACR,EAAG,CAED7R,EAAO4X,KAAKtW,KAAKtB,EAAO0X,OAAOnW,QAE/B,IAAK,IAAIvD,EAAI,EAAGA,EAAIwf,EAAMxf,IAAK,CAE7B,IAAIsZ,EAAM9W,EAAKxC,GAEf,GAAIqD,EAAQiW,IAKV,GAHU,IAANzF,GAAW4L,EAAUnG,EAAI/V,SAC3Bkc,EAAUnG,EAAI/V,QAEZsQ,EAAIyF,EAAI/V,OAAQ,CAElB,IAAI6c,EAAI9G,EAAIzF,GAEPwB,EAAG+K,EAAGnG,KAETjY,EAAOwX,QAAQlW,KAAK8c,GAEpBpe,EAAO0X,OAAOpW,KAAKtD,UAMb,IAAN6T,GAAW4L,EAAU,IACvBA,EAAU,GAEPpK,EAAGiE,EAAKW,KAEXjY,EAAOwX,QAAQlW,KAAKgW,GAEpBtX,EAAO0X,OAAOpW,KAAKtD,IAKzB6T,UAEKA,EAAI4L,GAGbzd,EAAO4X,KAAKtW,KAAKtB,EAAO0X,OAAOnW,QAE/BvB,EAAOkS,OAASsL,EAAMC,IAGxBrI,EAAalW,UAAY,IAAIuB,EAK7B2U,EAAalW,UAAUU,KAAO,eAC9BwV,EAAalW,UAAUwjB,gBAAiB,EAWxCtN,EAAalW,UAAUwB,QAAU,WAC/B,MAAO,UAYT0U,EAAalW,UAAUoB,SAAW,WAChC,OAAO3C,KAAKyU,WASdgD,EAAalW,UAAU+hB,OAAS,SAAUzgB,EAAMF,GAC9C,OAAO,IAAI8U,EAAa5U,EAAMF,IAYhC8U,EAAalW,UAAU62D,QAAU,WAE/B,IAAIv4C,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAEzB,OAAgB,IAATsL,GAA0B,IAAZC,EAAiB9f,KAAK+Z,OAAOnW,QAAUic,EAAOC,GAAY,GAiBjFrI,EAAalW,UAAU4f,OAAS,SAAU/c,EAAO6c,EAAaxc,GAC5D,IAAKzE,KAAK6Z,QACR,MAAM,IAAInV,MAAM,iDAGlB,OAAQ6E,UAAU3F,QAChB,KAAK,EACH,OAAOy0D,EAAWr4D,KAAMoE,GAG1B,KAAK,EACL,KAAK,EACH,OAAOk0D,EAAWt4D,KAAMoE,EAAO6c,EAAaxc,GAE9C,QACE,MAAM,IAAImF,YAAY,+BAI5B,IAAIyuD,EAAa,SAAUh2D,EAAQk2D,GAEjC,IAAKt2D,EAAKwf,QAAQ82C,GAChB,MAAM,IAAIh0D,UAAU,iBAItB,GADeg0D,EAAIl3C,WAGjB,OAAOhf,EAAOnB,IAAIq3D,EAAIpzD,OAGxB,IAMI9E,EAAGkG,EAAI2Z,EAAGs4C,EANV/0D,EAAO80D,EAAI90D,OACf,GAAIA,EAAKG,QAAUvB,EAAOkS,MAAM3Q,OAC9B,MAAM,IAAIL,EAAeE,EAAKG,OAAQvB,EAAOkS,MAAM3Q,QAOrD,IAAIuB,EAAMozD,EAAIpzD,MACVyG,EAAM2sD,EAAI3sD,MACd,IAAKvL,EAAI,EAAGkG,EAAKlE,EAAOkS,MAAM3Q,OAAQvD,EAAIkG,EAAIlG,IAC5C8D,EAAcgB,EAAI9E,GAAIgC,EAAOkS,MAAMlU,IACnC8D,EAAcyH,EAAIvL,GAAIgC,EAAOkS,MAAMlU,IAIrC,IAAIo4D,EAAUp2D,EAAOwX,QACjB6+C,EAASr2D,EAAO0X,OAChB4+C,EAAOt2D,EAAO4X,KAGd4F,EAAO04C,EAAIx3C,UAAU,GACrBjB,EAAUy4C,EAAIx3C,UAAU,GAGxBxG,KACA8+B,KAGJx5B,EAAKlb,QAAQ,SAAUtE,EAAG8f,GAExBk5B,EAAGh5C,GAAK8f,EAAE,GAEV5F,EAAEla,IAAK,IAIT,IAAI2a,EAASy9C,UAAerzD,EACxBhB,KACA6W,KAwBJ,OArBA6E,EAAQnb,QAAQ,SAAUuP,GAIxB,IAFA+G,EAAItX,KAAKS,EAAMR,QAEVsc,EAAIy4C,EAAKzkD,GAAIskD,EAAKG,EAAKzkD,EAAI,GAAIgM,EAAIs4C,EAAIt4C,IAE1C7f,EAAIq4D,EAAOx4C,IAEE,IAAT3F,EAAEla,KAEJ+D,EAAMT,KAAK01C,EAAGh5C,IAEV2a,GACFA,EAAOrX,KAAK80D,EAAQv4C,OAK5BjF,EAAItX,KAAKS,EAAMR,QAGR,IAAI6T,GACTuD,OAAQA,EACR5W,MAAOA,EACP6W,IAAKA,EACLxX,KAAMA,EACNd,SAAUN,EAAOoS,aAIjB6jD,EAAa,SAAUj2D,EAAQ+B,EAAOstB,EAAWjtB,GAEnD,IAAKL,IAA2B,IAAlBA,EAAMqd,QAClB,MAAM,IAAIld,UAAU,iBAItB,IAIIotB,EAJAC,EAAQxtB,EAAMX,OACd4d,EAAWjd,EAAMid,WAgBrB,GAZIpf,EAAK2V,SAAS8Z,IAEhBC,EAAQD,EAAUjuB,OAElBiuB,EAAYA,EAAUhO,WAItBiO,EAAQ/vB,EAAM6B,KAAKiuB,GAIjBrQ,EAAU,CAEZ,GAAqB,IAAjBsQ,EAAM/tB,OACR,MAAM,IAAIW,UAAU,mBAGtBlC,EAAO+Q,IAAIhP,EAAMe,MAAOusB,EAAWjtB,OAEhC,CAEH,GAAqB,IAAjBmtB,EAAMhuB,QAAiC,IAAjBguB,EAAMhuB,OAC9B,MAAM,IAAIL,EAAequB,EAAMhuB,OAAQvB,EAAOkS,MAAM3Q,OAAQ,KAI9D,GAAI+tB,EAAM/tB,OAASguB,EAAMhuB,OAAQ,CAI/B,IAFA,IAAIvD,EAAI,EACJqG,EAAQ,EACQ,IAAbkrB,EAAMvxB,IAAyB,IAAbsxB,EAAMtxB,IAC7BA,IAEF,KAAoB,IAAbuxB,EAAMvxB,IACXqG,IACArG,IAGFqxB,EAAY9vB,EAAM6E,UAAUirB,EAAWE,EAAMhuB,OAAQ8C,EAAOirB,GAI9D,IAAKtwB,EAAOyR,UAAU8e,EAAOD,GAC3B,MAAM,IAAIpuB,EAAequB,EAAOD,EAAO,KAYzC,IARA,IAAIinC,EAAKx0D,EAAMe,MAAM,GACjB0zD,EAAKz0D,EAAMe,MAAM,GAGjB3E,EAAImxB,EAAM,GACVxwB,EAAIwwB,EAAM,GAGL3vB,EAAI,EAAGA,EAAIxB,EAAGwB,IAErB,IAAK,IAAIyJ,EAAI,EAAGA,EAAItK,EAAGsK,IAAK,CAE1B,IAAIgV,EAAIiR,EAAU1vB,GAAGyJ,GAErBpJ,EAAO+Q,KAAKpR,EAAI42D,EAAIntD,EAAIotD,GAAKp4C,EAAGhc,IAItC,OAAOpC,GASToV,EAAalW,UAAUL,IAAM,SAAUkD,GACrC,IAAKV,EAAQU,GACX,MAAM,IAAIG,UAAU,kBACtB,GAAIH,EAAMR,QAAU5D,KAAKuU,MAAM3Q,OAC7B,MAAM,IAAIL,EAAea,EAAMR,OAAQ5D,KAAKuU,MAAM3Q,QAGpD,IAAK5D,KAAK6Z,QACR,MAAM,IAAInV,MAAM,8CAGlB,IAAIrE,EAAI+D,EAAM,GACV8P,EAAI9P,EAAM,GAGdD,EAAc9D,EAAGL,KAAKuU,MAAM,IAC5BpQ,EAAc+P,EAAGlU,KAAKuU,MAAM,IAG5B,IAAI2L,EAAI44C,EAAez4D,EAAGL,KAAKia,KAAK/F,GAAIlU,KAAKia,KAAK/F,EAAI,GAAIlU,KAAK+Z,QAE/D,OAAImG,EAAIlgB,KAAKia,KAAK/F,EAAI,IAAMlU,KAAK+Z,OAAOmG,KAAO7f,EACtCL,KAAK6Z,QAAQqG,GAEf,GAaTzI,EAAalW,UAAU6R,IAAM,SAAUhP,EAAOqc,EAAGhc,GAC/C,IAAKf,EAAQU,GACX,MAAM,IAAIG,UAAU,kBACtB,GAAIH,EAAMR,QAAU5D,KAAKuU,MAAM3Q,OAC7B,MAAM,IAAIL,EAAea,EAAMR,OAAQ5D,KAAKuU,MAAM3Q,QAGpD,IAAK5D,KAAK6Z,QACR,MAAM,IAAInV,MAAM,8CAGlB,IAAIrE,EAAI+D,EAAM,GACV8P,EAAI9P,EAAM,GAGVyb,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAGrBmB,EAAKJ,EAELgF,EAAO,EAEPvF,EAAS/U,KAAKyU,aAEhBiB,EAAKtT,EAAMwS,KAAKU,GAActV,KAAKyU,UAAWzU,KAAKyU,aAAea,EAElEgF,EAAOlY,EAAMuS,QAAQ,EAAG3U,KAAKyU,aAI3BpU,EAAIwf,EAAO,GAAK3L,EAAI4L,EAAU,KAEhCjb,EAAQ7E,KAAMkF,KAAK0G,IAAIvL,EAAI,EAAGwf,GAAO3a,KAAK0G,IAAIsI,EAAI,EAAG4L,GAAUrb,GAE/Dob,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,IAIvBpQ,EAAc9D,EAAGwf,GACjB1b,EAAc+P,EAAG4L,GAGjB,IAAII,EAAI44C,EAAez4D,EAAGL,KAAKia,KAAK/F,GAAIlU,KAAKia,KAAK/F,EAAI,GAAIlU,KAAK+Z,QAkB/D,OAhBImG,EAAIlgB,KAAKia,KAAK/F,EAAI,IAAMlU,KAAK+Z,OAAOmG,KAAO7f,EAExCqV,EAAG+K,EAAGnG,GAMTy+C,EAAQ74C,EAAGhM,EAAGlU,KAAK6Z,QAAS7Z,KAAK+Z,OAAQ/Z,KAAKia,MAJ9Cja,KAAK6Z,QAAQqG,GAAKO,EASpBu4C,EAAQ94C,EAAG7f,EAAG6T,EAAGuM,EAAGzgB,KAAK6Z,QAAS7Z,KAAK+Z,OAAQ/Z,KAAKia,MAG/Cja,MAGT,IAAI84D,EAAiB,SAASz4D,EAAGy6C,EAAKme,EAAQ70D,GAE5C,GAAI60D,EAASne,GAAQ,EACnB,OAAOme,EAET,IAAK,IAAI94C,EAAI26B,EAAK36B,EAAI84C,EAAQ94C,IAE5B,GAAI/b,EAAM+b,KAAO9f,EACf,OAAO8f,EAGX,OAAO26B,GAGLie,EAAU,SAAU74C,EAAGhM,EAAG8G,EAAQ5W,EAAO6W,GAE3CD,EAAO9P,OAAOgV,EAAG,GACjB9b,EAAM8G,OAAOgV,EAAG,GAEhB,IAAK,IAAIle,EAAIkS,EAAI,EAAGlS,EAAIiZ,EAAIrX,OAAQ5B,IAClCiZ,EAAIjZ,MAGJg3D,EAAU,SAAU94C,EAAG7f,EAAG6T,EAAGuM,EAAGzF,EAAQ5W,EAAO6W,GAEjDD,EAAO9P,OAAOgV,EAAG,EAAGO,GAEpBrc,EAAM8G,OAAOgV,EAAG,EAAG7f,GAEnB,IAAK,IAAI2B,EAAIkS,EAAI,EAAGlS,EAAIiZ,EAAIrX,OAAQ5B,IAClCiZ,EAAIjZ,MAgBRyV,EAAalW,UAAUiD,OAAS,SAAUf,EAAMgB,EAAc0tB,GAE5D,IAAKzuB,EAAQD,GACX,MAAM,IAAIc,UAAU,kBACtB,GAAoB,IAAhBd,EAAKG,OACP,MAAM,IAAIc,MAAM,4CAGlBjB,EAAKkB,QAAQ,SAAUC,GACrB,IAAKtB,EAAOe,SAASO,KAAWtB,EAAOgB,UAAUM,IAAUA,EAAQ,EACjE,MAAM,IAAIL,UAAU,uDACY/B,EAAOC,OAAOgB,GAAQ,OAK1D,IAAIjD,EAAI2xB,EAAOnyB,KAAKoS,QAAUpS,KAE9B,OAAO6E,EAAQrE,EAAGiD,EAAK,GAAIA,EAAK,GAAIgB,IAGtC,IAAII,EAAU,SAAUxC,EAAQwd,EAAMC,EAASrb,GAE7C,IAAIG,EAAQH,GAAgB,EAGxBiR,EAAKJ,EAELgF,EAAO,EAEPvF,EAAS1S,EAAOoS,aAElBiB,EAAKtT,EAAMwS,KAAKU,GAAcjT,EAAOoS,UAAWpS,EAAOoS,aAAea,EAEtEgF,EAAOlY,EAAMuS,QAAQ,EAAGtS,EAAOoS,WAE/B7P,EAAQxC,EAAMuS,QAAQ/P,EAAOvC,EAAOoS,YAItC,IAMIpU,EAAG6T,EAAGgM,EANNg5C,GAAOxjD,EAAG9Q,EAAO0V,GAGjB6F,EAAI9d,EAAOkS,MAAM,GACjB9T,EAAI4B,EAAOkS,MAAM,GAKrB,GAAIuL,EAAUrf,EAAG,CAEf,IAAKyT,EAAIzT,EAAGyT,EAAI4L,EAAS5L,IAIvB,GAFA7R,EAAO4X,KAAK/F,GAAK7R,EAAOwX,QAAQjW,OAE5Bs1D,EAEF,IAAK74D,EAAI,EAAGA,EAAI8f,EAAG9f,IAEjBgC,EAAOwX,QAAQlW,KAAKiB,GAEpBvC,EAAO0X,OAAOpW,KAAKtD,GAKzBgC,EAAO4X,KAAK6F,GAAWzd,EAAOwX,QAAQjW,YAE/Bkc,EAAUrf,IAEjB4B,EAAO4X,KAAK/O,OAAO4U,EAAU,EAAGrf,EAAIqf,GAEpCzd,EAAOwX,QAAQ3O,OAAO7I,EAAO4X,KAAK6F,GAAUzd,EAAOwX,QAAQjW,QAC3DvB,EAAO0X,OAAO7O,OAAO7I,EAAO4X,KAAK6F,GAAUzd,EAAO0X,OAAOnW,SAM3D,GAHAnD,EAAIqf,EAGAD,EAAOM,GAET,GAAI+4C,EAAK,CAEP,IAAI/3D,EAAI,EAER,IAAK+S,EAAI,EAAGA,EAAIzT,EAAGyT,IAAK,CAEtB7R,EAAO4X,KAAK/F,GAAK7R,EAAO4X,KAAK/F,GAAK/S,EAElC+e,EAAI7d,EAAO4X,KAAK/F,EAAI,GAAK/S,EAEzB,IAAIM,EAAI,EAER,IAAKpB,EAAI8f,EAAG9f,EAAIwf,EAAMxf,IAAKoB,IAEzBY,EAAOwX,QAAQ3O,OAAOgV,EAAIze,EAAG,EAAGmD,GAEhCvC,EAAO0X,OAAO7O,OAAOgV,EAAIze,EAAG,EAAGpB,GAE/Bc,IAIJkB,EAAO4X,KAAKxZ,GAAK4B,EAAOwX,QAAQjW,aAG/B,GAAIic,EAAOM,EAAG,CAEjB,IAAIzf,EAAI,EAER,IAAKwT,EAAI,EAAGA,EAAIzT,EAAGyT,IAAK,CAEtB7R,EAAO4X,KAAK/F,GAAK7R,EAAO4X,KAAK/F,GAAKxT,EAElC,IAAIsf,EAAK3d,EAAO4X,KAAK/F,GACjB+L,EAAK5d,EAAO4X,KAAK/F,EAAI,GAAKxT,EAE9B,IAAKwf,EAAIF,EAAIE,EAAID,EAAIC,KAEnB7f,EAAIgC,EAAO0X,OAAOmG,IAEVL,EAAO,IAEbxd,EAAOwX,QAAQ3O,OAAOgV,EAAG,GAEzB7d,EAAO0X,OAAO7O,OAAOgV,EAAG,GAExBxf,KAKN2B,EAAO4X,KAAK/F,GAAK7R,EAAOwX,QAAQjW,OAMlC,OAHAvB,EAAOkS,MAAM,GAAKsL,EAClBxd,EAAOkS,MAAM,GAAKuL,EAEXzd,GAiBToV,EAAalW,UAAU8D,QAAU,SAAU5B,EAAM0uB,GAG/C,IAAKzuB,EAAQD,GACX,MAAM,IAAIc,UAAU,kBACtB,GAAoB,IAAhBd,EAAKG,OACP,MAAM,IAAIc,MAAM,0DAWlB,GARAjB,EAAKkB,QAAQ,SAAUC,GACrB,IAAKtB,EAAOe,SAASO,KAAWtB,EAAOgB,UAAUM,IAAUA,EAAQ,EACjE,MAAM,IAAIL,UAAU,uDACY/B,EAAOC,OAAOgB,GAAQ,OAKvDzD,KAAKuU,MAAM,GAAKvU,KAAKuU,MAAM,IAAO9Q,EAAK,GAAKA,EAAK,GAClD,MAAM,IAAIiB,MAAM,uEAIlB,IAAIlE,EAAI2xB,EAAOnyB,KAAKoS,QAAUpS,KAG9B,GAAGA,KAAKuU,MAAM,KAAO9Q,EAAK,IAAMzD,KAAKuU,MAAM,KAAO9Q,EAAK,GACrD,OAAOjD,EAKT,IADA,IAAI24D,KACI94D,EAAE,EAAGA,EAAEG,EAAEyZ,KAAKrW,OAAQvD,IAC5B,IAAI,IAAI6T,EAAE,EAAGA,EAAE1T,EAAEyZ,KAAK5Z,EAAE,GAAGG,EAAEyZ,KAAK5Z,GAAI6T,IACpCilD,EAASx1D,KAAKtD,GAKlB,IAAI2a,EAASxa,EAAEqZ,QAAQ3T,QAGnBkzD,EAAW54D,EAAEuZ,OAAO7T,QAGxB,IAAQ7F,EAAE,EAAGA,EAAEG,EAAEuZ,OAAOnW,OAAQvD,IAAK,CACnC,IAAIg5D,EAAKD,EAAS/4D,GACdi5D,EAAKH,EAAS94D,GACdwG,EAAOwyD,EAAK74D,EAAE+T,MAAM,GAAK+kD,EAC7BH,EAAS94D,GAAKwG,EAAOpD,EAAK,GAC1B21D,EAAS/4D,GAAK6E,KAAKk/B,MAAMv9B,EAAOpD,EAAK,IAcvC,IAJAjD,EAAEqZ,QAAQjW,OAAS,EACnBpD,EAAEuZ,OAAOnW,OAAS,EAClBpD,EAAEyZ,KAAKrW,OAASH,EAAK,GAAK,EAC1BjD,EAAE+T,MAAQ9Q,EAAKyC,QACP7F,EAAE,EAAGA,EAAEG,EAAEyZ,KAAKrW,OAAQvD,IAC5BG,EAAEyZ,KAAK5Z,GAAK,EAKd,IAAI,IAAIk5D,EAAE,EAAGA,EAAEv+C,EAAOpX,OAAQ21D,IAAK,CAC7Bl5D,EAAI+4D,EAASG,GACbrlD,EAAIilD,EAASI,GADjB,IAEI94C,EAAIzF,EAAOu+C,GACXr5C,EAAI44C,EAAez4D,EAAGG,EAAEyZ,KAAK/F,GAAI1T,EAAEyZ,KAAK/F,EAAI,GAAI1T,EAAEuZ,QACtDi/C,EAAQ94C,EAAG7f,EAAG6T,EAAGuM,EAAGjgB,EAAEqZ,QAASrZ,EAAEuZ,OAAQvZ,EAAEyZ,MAK7C,OAAOzZ,GAQTiX,EAAalW,UAAU6Q,MAAQ,WAQ7B,OAPQ,IAAIqF,GACVuD,OAAQhb,KAAK6Z,QAAUxY,EAAO+Q,MAAMpS,KAAK6Z,cAAWzU,EACpDhB,MAAO/C,EAAO+Q,MAAMpS,KAAK+Z,QACzBkB,IAAK5Z,EAAO+Q,MAAMpS,KAAKia,MACvBxW,KAAMpC,EAAO+Q,MAAMpS,KAAKuU,OACxB5R,SAAU3C,KAAKyU,aAUnBgD,EAAalW,UAAUkC,KAAO,WAC5B,OAAOzD,KAAKuU,MAAMrO,MAAM,IAc1BuR,EAAalW,UAAUQ,IAAM,SAAUF,EAAUC,GAE/C,IAAK9B,KAAK6Z,QACR,MAAM,IAAInV,MAAM,8CAElB,IAAI4tB,EAAKtyB,KAEL6f,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAOzB,OAAOsoC,EAAK78C,KAAM,EAAG6f,EAAO,EAAG,EAAGC,EAAU,EAL/B,SAAUW,EAAGpgB,EAAG6T,GAE3B,OAAOrS,EAAS4e,GAAIpgB,EAAG6T,GAAIoe,IAG0BxwB,IAOzD,IAAI+6C,EAAO,SAAUx6C,EAAQm3D,EAAQC,EAAQC,EAAWC,EAAW93D,EAAUC,GAE3E,IAAIkZ,KACA5W,KACA6W,KAGAvF,EAAKJ,EAELgF,EAAO,EAEPvF,EAAS1S,EAAOoS,aAElBiB,EAAKtT,EAAMwS,KAAKU,GAAcjT,EAAOoS,UAAWpS,EAAOoS,aAAea,EAEtEgF,EAAOlY,EAAMuS,QAAQ,EAAGtS,EAAOoS,YAgBjC,IAZA,IAAImlD,EAAS,SAAUn5C,EAAGze,EAAGyJ,GAE3BgV,EAAI5e,EAAS4e,EAAGze,EAAGyJ,GAEdiK,EAAG+K,EAAGnG,KAETU,EAAOrX,KAAK8c,GAEZrc,EAAMT,KAAK3B,KAINkS,EAAIwlD,EAAWxlD,GAAKylD,EAAWzlD,IAAK,CAE3C+G,EAAItX,KAAKqX,EAAOpX,QAOhB,IALA,IAAIoc,EAAK3d,EAAO4X,KAAK/F,GACjB+L,EAAK5d,EAAO4X,KAAK/F,EAAI,GAErBzS,EAAI+3D,EAECt5C,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5B,IAAI7f,EAAIgC,EAAO0X,OAAOmG,GAEtB,GAAI7f,GAAKm5D,GAAUn5D,GAAKo5D,EAAQ,CAE9B,IAAK33D,EACJ,IAAK,IAAIE,EAAIP,EAAGO,EAAI3B,EAAG2B,IACrB43D,EAAO,EAAG53D,EAAIw3D,EAAQtlD,EAAIwlD,GAG7BE,EAAOv3D,EAAOwX,QAAQqG,GAAI7f,EAAIm5D,EAAQtlD,EAAIwlD,GAG5Cj4D,EAAIpB,EAAI,EAGV,IAAKyB,EACH,IAAK,IAAI2J,EAAIhK,EAAGgK,GAAKguD,EAAQhuD,IAC3BmuD,EAAO,EAAGnuD,EAAI+tD,EAAQtlD,EAAIwlD,GAMhC,OAFAz+C,EAAItX,KAAKqX,EAAOpX,QAET,IAAI6T,GACTuD,OAAQA,EACR5W,MAAOA,EACP6W,IAAKA,EACLxX,MAAOg2D,EAASD,EAAS,EAAGG,EAAYD,EAAY,MAYxDjiD,EAAalW,UAAUoD,QAAU,SAAU9C,EAAUC,GAEnD,IAAK9B,KAAK6Z,QACR,MAAM,IAAInV,MAAM,kDAOlB,IALA,IAEImb,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAEhBL,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAOhC,IALA,IAAI8L,EAAKhgB,KAAKia,KAAK/F,GACf+L,EAAKjgB,KAAKia,KAAK/F,EAAI,GAEnBzS,EAAI,EAECye,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5B,IAAI7f,EAAIL,KAAK+Z,OAAOmG,GAEpB,IAAKpe,EAEH,IAAK,IAAIE,EAAIP,EAAGO,EAAI3B,EAAG2B,IACrBH,EAAS,GAAIG,EAAGkS,GAnBflU,MAsBL6B,EAAS7B,KAAK6Z,QAAQqG,IAAK7f,EAAG6T,GAtBzBlU,MAwBLyB,EAAIpB,EAAI,EAGV,IAAKyB,EAEH,IAAK,IAAI2J,EAAIhK,EAAGgK,EAAIoU,EAAMpU,IACxB5J,EAAS,GAAI4J,EAAGyI,GA9BblU,QAwCXyX,EAAalW,UAAUmiB,QAAU,WAC/B,OAAOm2C,EAAS75D,KAAK6Z,QAAS7Z,KAAK+Z,OAAQ/Z,KAAKia,KAAMja,KAAKuU,OAAO,IAQpEkD,EAAalW,UAAU8Q,QAAU,WAC/B,OAAOwnD,EAAS75D,KAAK6Z,QAAS7Z,KAAK+Z,OAAQ/Z,KAAKia,KAAMja,KAAKuU,OAAO,IAGpE,IAAIslD,EAAW,SAAU7+C,EAAQ5W,EAAO6W,EAAKxX,EAAM0uB,GAEjD,IAKI9xB,EAAG6T,EALH2L,EAAOpc,EAAK,GACZqc,EAAUrc,EAAK,GAEf6D,KAIJ,IAAKjH,EAAI,EAAGA,EAAIwf,EAAMxf,IAEpB,IADAiH,EAAEjH,MACG6T,EAAI,EAAGA,EAAI4L,EAAS5L,IACvB5M,EAAEjH,GAAG6T,GAAK,EAId,IAAKA,EAAI,EAAGA,EAAI4L,EAAS5L,IAKvB,IAHA,IAAI8L,EAAK/E,EAAI/G,GACT+L,EAAKhF,EAAI/G,EAAI,GAERgM,EAAIF,EAAIE,EAAID,EAAIC,IAIvB5Y,EAFAjH,EAAI+D,EAAM8b,IAELhM,GAAK8G,EAAUmX,EAAO9wB,EAAO+Q,MAAM4I,EAAOkF,IAAMlF,EAAOkF,GAAM,EAGtE,OAAO5Y,GA8YT,OAlYAmQ,EAAalW,UAAUkB,OAAS,SAAUsF,GASxC,IAPA,IAAI8X,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAErB6jD,EAAUp4D,KAAKo4D,UAEfttD,EAAM,kBAAoBtI,EAAOC,OAAOod,EAAM9X,GAAW,MAAQvF,EAAOC,OAAOqd,EAAS/X,GAAW,cAAgBvF,EAAOC,OAAO21D,EAASrwD,GAAW,KAEhJmM,EAAI,EAAGA,EAAI4L,EAAS5L,IAK3B,IAHA,IAAI8L,EAAKhgB,KAAKia,KAAK/F,GACf+L,EAAKjgB,KAAKia,KAAK/F,EAAI,GAEdgM,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5B,IAAI7f,EAAIL,KAAK+Z,OAAOmG,GAEpBpV,GAAO,UAAYtI,EAAOC,OAAOpC,EAAG0H,GAAW,KAAOvF,EAAOC,OAAOyR,EAAGnM,GAAW,UAAY/H,KAAK6Z,QAAUrX,EAAOC,OAAOzC,KAAK6Z,QAAQqG,GAAInY,GAAW,KAG3J,OAAO+C,GAQT2M,EAAalW,UAAUwJ,SAAW,WAChC,OAAOvI,EAAOC,OAAOzC,KAAK0jB,YAQ5BjM,EAAalW,UAAUqiB,OAAS,WAC9B,OACEC,OAAQ,eACR7I,OAAQhb,KAAK6Z,QACbzV,MAAOpE,KAAK+Z,OACZkB,IAAKjb,KAAKia,KACVxW,KAAMzD,KAAKuU,MACX5R,SAAU3C,KAAKyU,YAYnBgD,EAAalW,UAAUixB,SAAW,SAAStS,GAEzC,GAAIA,GAKF,GAHIje,EAAKkQ,YAAY+N,KACnBA,EAAIA,EAAE8G,aAEH3iB,EAAS6b,KAAO5b,EAAU4b,GAC7B,MAAM,IAAI3b,UAAW,kDAKvB2b,EAAI,EAGN,IAAIuS,EAASvS,EAAI,EAAIA,EAAI,EACrBwS,EAAOxS,EAAI,GAAKA,EAAI,EAGpBL,EAAO7f,KAAKuU,MAAM,GAClBuL,EAAU9f,KAAKuU,MAAM,GAGrBpT,EAAI+D,KAAKC,IAAI0a,EAAO6S,EAAM5S,EAAW2S,GAGrCzX,KACA5W,KACA6W,KAEJA,EAAI,GAAK,EAET,IAAK,IAAI/G,EAAIue,EAAQve,EAAI4L,GAAW9E,EAAOpX,OAASzC,EAAG+S,IAKrD,IAHA,IAAI8L,EAAKhgB,KAAKia,KAAK/F,GACf+L,EAAKjgB,KAAKia,KAAK/F,EAAI,GAEdlS,EAAIge,EAAIhe,EAAIie,EAAIje,IAAK,CAE5B,IAAI3B,EAAIL,KAAK+Z,OAAO/X,GAEpB,GAAI3B,IAAM6T,EAAIue,EAASC,EAAM,CAE3B1X,EAAOrX,KAAK3D,KAAK6Z,QAAQ7X,IAEzBoC,EAAM4W,EAAOpX,OAAS,GAAKvD,EAAIqyB,EAE/B,OAON,OAFAzX,EAAItX,KAAKqX,EAAOpX,QAET,IAAI6T,GACTuD,OAAQA,EACR5W,MAAOA,EACP6W,IAAKA,EACLxX,MAAOtC,EAAG,MAYdsW,EAAasM,SAAW,SAAUC,GAChC,OAAO,IAAIvM,EAAauM,IAc1BvM,EAAa+a,SAAW,SAAU/uB,EAAMmB,EAAOsb,EAAGzb,EAAc9B,GAC9D,IAAKe,EAAQD,GACX,MAAM,IAAIc,UAAU,kCACtB,GAAoB,IAAhBd,EAAKG,OACP,MAAM,IAAIc,MAAM,4CAiBlB,GAdAjB,EAAOA,EAAK1B,IAAI,SAAUL,GAOxB,GALIO,EAAKkQ,YAAYzQ,KAEnBA,EAAIA,EAAEslB,aAGH3iB,EAAS3C,KAAO4C,EAAU5C,IAAMA,EAAI,EACvC,MAAM,IAAIgD,MAAM,yCAElB,OAAOhD,IAILwe,GAKF,GAHIje,EAAKkQ,YAAY+N,KACnBA,EAAIA,EAAE8G,aAEH3iB,EAAS6b,KAAO5b,EAAU4b,GAC7B,MAAM,IAAI3b,UAAW,kDAKvB2b,EAAI,EAIN,IAAIxK,EAAKJ,EAELgF,EAAO,EAEPvF,EAASpS,KAEX+S,EAAKtT,EAAMwS,KAAKU,GAAc3S,EAAUA,KAAc2S,EAEtDgF,EAAOlY,EAAMuS,QAAQ,EAAGhS,IAG1B,IAWIuQ,EAXAuf,EAASvS,EAAI,EAAIA,EAAI,EACrBwS,EAAOxS,EAAI,GAAKA,EAAI,EAGpBL,EAAOpc,EAAK,GACZqc,EAAUrc,EAAK,GAGftC,EAAI+D,KAAKC,IAAI0a,EAAO6S,EAAM5S,EAAW2S,GAMzC,GAAI/uB,EAAQkB,GAAQ,CAElB,GAAIA,EAAMhB,SAAWzC,EAEnB,MAAM,IAAIuD,MAAM,8BAGlBwO,EAAS,SAAU7S,GAEjB,OAAOuE,EAAMvE,SAGZ,GAAI4B,EAAK2V,SAAShT,GAAQ,CAE7B,IAAI+tB,EAAK/tB,EAAMnB,OAEf,GAAkB,IAAdkvB,EAAG/uB,QAAgB+uB,EAAG,KAAOxxB,EAE/B,MAAM,IAAIuD,MAAM,yBAGlBwO,EAAS,SAAU7S,GAEjB,OAAOuE,EAAM1D,KAAKb,UAKpB6S,EAAS,WAEP,OAAOtO,GAUX,IALA,IAAIoW,KACA5W,KACA6W,KAGK/G,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhC+G,EAAItX,KAAKqX,EAAOpX,QAEhB,IAAIvD,EAAI6T,EAAIue,EAEZ,GAAIpyB,GAAK,GAAKA,EAAIc,EAAG,CAEnB,IAAIsf,EAAIvN,EAAO7S,GAEVqV,EAAG+K,EAAGnG,KAETlW,EAAMT,KAAKtD,EAAIqyB,GAEf1X,EAAOrX,KAAK8c,KAOlB,OAFAxF,EAAItX,KAAKqX,EAAOpX,QAET,IAAI6T,GACTuD,OAAQA,EACR5W,MAAOA,EACP6W,IAAKA,EACLxX,MAAOoc,EAAMC,MAajBrI,EAAalW,UAAUqxB,SAAW,SAAUvyB,EAAG6T,GAE7C,KAAK7P,EAAShE,IAAOiE,EAAUjE,IAAOgE,EAAS6P,IAAO5P,EAAU4P,IAC9D,MAAM,IAAIxP,MAAM,uCAGlB,GAA0B,IAAtB1E,KAAKuU,MAAM3Q,OACb,MAAM,IAAIc,MAAM,4CASlB,OANAP,EAAc9D,EAAGL,KAAKuU,MAAM,IAC5BpQ,EAAc+P,EAAGlU,KAAKuU,MAAM,IAG5BkD,EAAaob,UAAUxyB,EAAG6T,EAAGlU,KAAKuU,MAAM,GAAIvU,KAAK6Z,QAAS7Z,KAAK+Z,OAAQ/Z,KAAKia,MAErEja,MAYTyX,EAAayiC,YAAc,SAAUhmC,EAAG8G,EAAQ5W,EAAO6W,EAAKpZ,GAK1D,IAHA,IAAIme,EAAK/E,EAAI/G,GACT+L,EAAKhF,EAAI/G,EAAI,GAERgM,EAAIF,EAAIE,EAAID,EAAIC,IAEvBre,EAASuC,EAAM8b,GAAIlF,EAAOkF,KAc9BzI,EAAaob,UAAY,SAAU7wB,EAAGyJ,EAAGqU,EAAS9E,EAAQ5W,EAAO6W,GAE/D,IAAK,IAAI/G,EAAI,EAAGA,EAAI4L,EAAS5L,IAAK,CAEhC,IAAI8L,EAAK/E,EAAI/G,GACT+L,EAAKhF,EAAI/G,EAAI,GAEbolC,EAAKwf,EAAe92D,EAAGge,EAAIC,EAAI7b,GAE/Bm1C,EAAKuf,EAAertD,EAAGuU,EAAIC,EAAI7b,GAEnC,GAAIk1C,EAAKr5B,GAAMs5B,EAAKt5B,GAAM7b,EAAMk1C,KAAQt3C,GAAKoC,EAAMm1C,KAAQ9tC,GAEzD,GAAIuP,EAAQ,CACV,IAAIyF,EAAIzF,EAAOs+B,GACft+B,EAAOs+B,GAAMt+B,EAAOu+B,GACpBv+B,EAAOu+B,GAAM94B,QAMjB,GAAI64B,EAAKr5B,GAAM7b,EAAMk1C,KAAQt3C,IAAMu3C,GAAMt5B,GAAM7b,EAAMm1C,KAAQ9tC,GAA7D,CAEE,IAAIquD,EAAK9+C,EAASA,EAAOs+B,QAAMl0C,EAE/BhB,EAAM8G,OAAOquC,EAAI,EAAG9tC,GAChBuP,GACFA,EAAO9P,OAAOquC,EAAI,EAAGugB,GAEvB11D,EAAM8G,OAAOquC,GAAMD,EAAKA,EAAK,EAAIA,EAAI,GACjCt+B,GACFA,EAAO9P,OAAOquC,GAAMD,EAAKA,EAAK,EAAIA,EAAI,QAK1C,GAAIC,EAAKt5B,GAAM7b,EAAMm1C,KAAQ9tC,IAAM6tC,GAAMr5B,GAAM7b,EAAMk1C,KAAQt3C,GAAI,CAE/D,IAAI+3D,EAAK/+C,EAASA,EAAOu+B,QAAMn0C,EAE/BhB,EAAM8G,OAAOouC,EAAI,EAAGt3C,GAChBgZ,GACFA,EAAO9P,OAAOouC,EAAI,EAAGygB,GAEvB31D,EAAM8G,OAAOouC,GAAMC,EAAKA,EAAK,EAAIA,EAAI,GACjCv+B,GACFA,EAAO9P,OAAOouC,GAAMC,EAAKA,EAAK,EAAIA,EAAI,MAM9Ct3C,EAAKa,OAAOiwB,SAAS+V,OAASrxB,EAEvBA,GAMT9X,EAAQqT,MAAO,GAKT,SAAUpT,EAAQD,EAASQ,GAEjC,aA2IAR,EAAQgB,KAAO,MACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA1IR,SAAkBuC,EAAMC,EAAQC,GAE9B,IAAIuO,EAAMvO,EAAKhC,EAAoB,KAC/BmV,EAAcnT,EAAKhC,EAAoB,IAM3C,SAASq4C,IACP,KAAMx4C,gBAAgBw4C,GACpB,MAAM,IAAI5uC,YAAY,oDAGxB5J,KAAK6Z,WACL7Z,KAAKg6D,MAAQ,IAAI/3D,EAAKg4D,cAsHxB,OAhHAzhB,EAAIj3C,UAAUU,KAAO,MACrBu2C,EAAIj3C,UAAU24D,OAAQ,EAQtB1hB,EAAIj3C,UAAU6R,IAAM,SAAU/S,EAAGogB,GAE/B,GAAKzgB,KAAK6Z,QAAQxZ,GAQhBL,KAAK6Z,QAAQxZ,GAAGuE,MAAQ6b,MARJ,CAEpB,IAAIpC,EAAOre,KAAKg6D,MAAMG,OAAO95D,EAAGogB,GAEhCzgB,KAAK6Z,QAAQxZ,GAAKge,IAQtBm6B,EAAIj3C,UAAUL,IAAM,SAAUb,GAC5B,IAAIge,EAAOre,KAAK6Z,QAAQxZ,GACxB,OAAIge,EACKA,EAAKzZ,MACP,GAGT4zC,EAAIj3C,UAAU64C,WAAa,SAAU/5C,EAAGogB,GAEtC,IAAIpC,EAAOre,KAAK6Z,QAAQxZ,GACnBge,EAQHA,EAAKzZ,MAAQ8L,EAAI2N,EAAKzZ,MAAO6b,IAN7BpC,EAAOre,KAAKg6D,MAAMG,OAAO95D,EAAGogB,GAE5BzgB,KAAK6Z,QAAQxZ,GAAKge,IAQtBm6B,EAAIj3C,UAAUoD,QAAU,SAAUu/B,EAAMtzB,EAAI/O,GAE1C,IAAIu4D,EAAOp6D,KAAKg6D,MACZh/C,EAAShb,KAAK6Z,QAEd6E,KAEAL,EAAO+7C,EAAKC,iBAIhB,IAHIh8C,GACFK,EAAM/a,KAAK0a,GAENA,GAAQA,EAAK5L,KAAO7B,GAErByN,EAAK5L,KAAOyxB,IAET5uB,EAAY+I,EAAKzZ,MAAO,IAE3B/C,EAASwc,EAAK5L,IAAK4L,EAAKzZ,MAAO5E,QAInCqe,EAAO+7C,EAAKC,mBAEV37C,EAAM/a,KAAK0a,GAGf,IAAK,IAAIhe,EAAI,EAAGA,EAAIqe,EAAM9a,OAAQvD,IAAK,CAErC,IAAIc,EAAIud,EAAMre,GAId2a,GAFAqD,EAAO+7C,EAAKD,OAAOh5D,EAAEsR,IAAKtR,EAAEyD,QAEhB6N,KAAO4L,IAIvBm6B,EAAIj3C,UAAU84C,KAAO,SAAUh6C,EAAG6T,GAEhC,IAAIomD,EAAQt6D,KAAK6Z,QAAQxZ,GACrBk6D,EAAQv6D,KAAK6Z,QAAQ3F,GAEzB,IAAKomD,GAASC,EAEZD,EAAQt6D,KAAKg6D,MAAMG,OAAO95D,EAAGk6D,EAAM31D,OAEnC5E,KAAKg6D,MAAM3lB,OAAOkmB,GAElBv6D,KAAK6Z,QAAQxZ,GAAKi6D,EAClBt6D,KAAK6Z,QAAQ3F,QAAK9O,OAEf,GAAIk1D,IAAUC,EAEjBA,EAAQv6D,KAAKg6D,MAAMG,OAAOjmD,EAAGomD,EAAM11D,OAEnC5E,KAAKg6D,MAAM3lB,OAAOimB,GAElBt6D,KAAK6Z,QAAQ3F,GAAKqmD,EAClBv6D,KAAK6Z,QAAQxZ,QAAK+E,OAEf,GAAIk1D,GAASC,EAAO,CAEvB,IAAI95C,EAAI65C,EAAM11D,MACd01D,EAAM11D,MAAQ21D,EAAM31D,MACpB21D,EAAM31D,MAAQ6b,IAIX+3B,IAUH,SAAU54C,EAAQD,EAASQ,GAEjC,aA2VAR,EAAQgB,KAAO,gBACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA1VR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAI8O,EAAU/O,EAAKhC,EAAoB,KACnCgR,EAAShP,EAAKhC,EAAoB,KAElCq6D,EAAgB,EAAMt1D,KAAK2D,KAAK,EAAM3D,KAAKyuB,KAAK,IAAQ,GAO5D,SAASsmC,IACP,KAAMj6D,gBAAgBi6D,GACpB,MAAM,IAAIrwD,YAAY,oDAGxB5J,KAAKy6D,SAAW,KAChBz6D,KAAKuU,MAAQ,EAMf0lD,EAAc14D,UAAUU,KAAO,gBAC/Bg4D,EAAc14D,UAAUm5D,iBAAkB,EAQ1CT,EAAc14D,UAAU44D,OAAS,SAAU1nD,EAAK7N,GAE9C,IAAIyZ,GACF5L,IAAKA,EACL7N,MAAOA,EACP+1D,OAAQ,GAGV,GAAI36D,KAAKy6D,SAAU,CAEjB,IAAItgC,EAAUn6B,KAAKy6D,SAEnBp8C,EAAKk/B,KAAOpjB,EACZ9b,EAAKsjB,MAAQxH,EAAQwH,MACrBxH,EAAQwH,MAAQtjB,EAChBA,EAAKsjB,MAAM4b,KAAOl/B,EAEdnN,EAAQuB,EAAK0nB,EAAQ1nB,OAEvBzS,KAAKy6D,SAAWp8C,QAKlBA,EAAKk/B,KAAOl/B,EACZA,EAAKsjB,MAAQtjB,EAEbre,KAAKy6D,SAAWp8C,EAKlB,OAFAre,KAAKuU,QAEE8J,GAOT47C,EAAc14D,UAAUkC,KAAO,WAC7B,OAAOzD,KAAKuU,OAOd0lD,EAAc14D,UAAU+yC,MAAQ,WAC9Bt0C,KAAKy6D,SAAW,KAChBz6D,KAAKuU,MAAQ,GAOf0lD,EAAc14D,UAAUq5D,QAAU,WAChC,OAAsB,IAAf56D,KAAKuU,OAQd0lD,EAAc14D,UAAU84D,eAAiB,WAEvC,IAAIh8C,EAAOre,KAAKy6D,SAEhB,GAAa,OAATp8C,EACF,OAAOA,EAQT,IANA,IAAI8b,EAAUn6B,KAAKy6D,SAEfI,EAAmBx8C,EAAKs8C,OAExB34D,EAAIqc,EAAKna,MAEN22D,EAAmB,GAAG,CAE3B,IAAIC,EAAY94D,EAAE2/B,MAElB3/B,EAAEu7C,KAAK5b,MAAQ3/B,EAAE2/B,MACjB3/B,EAAE2/B,MAAM4b,KAAOv7C,EAAEu7C,KAEjBv7C,EAAEu7C,KAAOpjB,EACTn4B,EAAE2/B,MAAQxH,EAAQwH,MAClBxH,EAAQwH,MAAQ3/B,EAChBA,EAAE2/B,MAAM4b,KAAOv7C,EAEfA,EAAEuc,OAAS,KACXvc,EAAI84D,EACJD,IAqBF,OAlBAx8C,EAAKk/B,KAAK5b,MAAQtjB,EAAKsjB,MACvBtjB,EAAKsjB,MAAM4b,KAAOl/B,EAAKk/B,KAEnBl/B,GAAQA,EAAKsjB,MAEfxH,EAAU,MAIVA,EAAU9b,EAAKsjB,MAEfxH,EAAU4gC,EAAiB5gC,EAASn6B,KAAKuU,QAG3CvU,KAAKuU,QAELvU,KAAKy6D,SAAWtgC,EAET9b,GAUT47C,EAAc14D,UAAU8yC,OAAS,SAAUh2B,GAEzCre,KAAKy6D,SAAWO,EAAah7D,KAAKy6D,SAAUp8C,GAAO,GAEnDre,KAAKq6D,kBASP,IAAIW,EAAe,SAAU7gC,EAAS9b,EAAM5L,GAE1C4L,EAAK5L,IAAMA,EAEX,IAAI8L,EAASF,EAAKE,OAWlB,OAVIA,GAAUrN,EAAQmN,EAAK5L,IAAK8L,EAAO9L,OAErCwoD,EAAK9gC,EAAS9b,EAAME,GAEpB28C,EAAc/gC,EAAS5b,IAGrBrN,EAAQmN,EAAK5L,IAAK0nB,EAAQ1nB,OAC5B0nB,EAAU9b,GAEL8b,GAQL8gC,EAAO,SAAU9gC,EAAS9b,EAAME,GAElCF,EAAKk/B,KAAK5b,MAAQtjB,EAAKsjB,MACvBtjB,EAAKsjB,MAAM4b,KAAOl/B,EAAKk/B,KACvBh/B,EAAOo8C,SAEHp8C,EAAOra,OAASma,IAClBE,EAAOra,MAAQma,EAAKsjB,OAEA,IAAlBpjB,EAAOo8C,SACTp8C,EAAOra,MAAQ,MAEjBma,EAAKk/B,KAAOpjB,EACZ9b,EAAKsjB,MAAQxH,EAAQwH,MACrBxH,EAAQwH,MAAQtjB,EAChBA,EAAKsjB,MAAM4b,KAAOl/B,EAElBA,EAAKE,OAAS,KAEdF,EAAKzC,MAAO,GASVs/C,EAAe,SAAU/gC,EAAS9b,GAEpC,IAAIE,EAASF,EAAKE,OAEbA,IAGAF,EAAKzC,MAKRq/C,EAAK9gC,EAAS9b,EAAME,GAEpB28C,EAAc38C,IANdF,EAAKzC,MAAO,IAqCZm/C,EAAmB,SAAU5gC,EAAS12B,GAExC,IAeIgI,EAxCqB4S,EAAME,EAyB3Bqf,EAAY14B,KAAKk/B,MAAMl/B,KAAK2D,IAAIpF,GAAQ+2D,GAAiB,EAEzD54D,EAAQ,IAAIgB,MAAMg7B,GAElBu9B,EAAW,EACXn5D,EAAIm4B,EACR,GAAIn4B,EAGF,IAFAm5D,IACAn5D,EAAIA,EAAE2/B,MACC3/B,IAAMm4B,GACXghC,IACAn5D,EAAIA,EAAE2/B,MAMV,KAAOw5B,EAAW,GAAG,CAMnB,IAJA,IAAIz6D,EAAIsB,EAAE24D,OAENn0D,EAAOxE,EAAE2/B,MAIXl2B,EAAI7J,EAAMlB,IAFC,CAMX,GAAIyQ,EAAOnP,EAAEyQ,IAAKhH,EAAEgH,KAAM,CACxB,IAAIsiC,EAAOtpC,EACXA,EAAIzJ,EACJA,EAAI+yC,EAzDqBx2B,EA4Dbvc,GA5DOqc,EA4DV5S,GA1DV8xC,KAAK5b,MAAQtjB,EAAKsjB,MACvBtjB,EAAKsjB,MAAM4b,KAAOl/B,EAAKk/B,KAEvBl/B,EAAKE,OAASA,EACTA,EAAOra,OAMVma,EAAKk/B,KAAOh/B,EAAOra,MACnBma,EAAKsjB,MAAQpjB,EAAOra,MAAMy9B,MAC1BpjB,EAAOra,MAAMy9B,MAAQtjB,EACrBA,EAAKsjB,MAAM4b,KAAOl/B,IARlBE,EAAOra,MAAQma,EACfA,EAAKsjB,MAAQtjB,EACbA,EAAKk/B,KAAOl/B,GASdE,EAAOo8C,SAEPt8C,EAAKzC,MAAO,EA0CRha,EAAMlB,GAAK,KACXA,IAGFkB,EAAMlB,GAAKsB,EAEXA,EAAIwE,EACJ20D,IAGFhhC,EAAU,KAEV,IAAK,IAAI95B,EAAI,EAAGA,EAAIu9B,EAAWv9B,KAE7BoL,EAAI7J,EAAMvB,MAIN85B,GAEF1uB,EAAE8xC,KAAK5b,MAAQl2B,EAAEk2B,MACjBl2B,EAAEk2B,MAAM4b,KAAO9xC,EAAE8xC,KAEjB9xC,EAAE8xC,KAAOpjB,EACT1uB,EAAEk2B,MAAQxH,EAAQwH,MAClBxH,EAAQwH,MAAQl2B,EAChBA,EAAEk2B,MAAM4b,KAAO9xC,EAEXyF,EAAQzF,EAAEgH,IAAK0nB,EAAQ1nB,OACzB0nB,EAAU1uB,IAGZ0uB,EAAU1uB,GAEd,OAAO0uB,GAGT,OAAO8/B,IAUH,SAAUr6D,EAAQD,EAASQ,GAEjC,aAGA,IAAI2U,EAAO3U,EAAoB,IAE3BqC,EAASsS,EAAKtS,OACdnB,EAASyT,EAAKzT,OAEdqC,EAAUd,MAAMc,QAChBqR,EAAWvS,EAAOuS,SA8NtBpV,EAAQgB,KAAO,uBACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QA9NR,SAAkBuC,EAAMC,EAAQC,GAE9B,IAAIuR,EAAcvR,EAAKhC,EAAoB,KAEvC+Q,EAAU/O,EAAKhC,EAAoB,KAEvC,SAASkjB,EAAqBxgB,EAAMF,GAClC,KAAM3C,gBAAgBqjB,GACpB,MAAM,IAAIzZ,YAAY,oDACxB,GAAIjH,IAAaoS,EAASpS,GACxB,MAAM,IAAI+B,MAAM,qBAAuB/B,GAEzC,GAAIV,EAAK2V,SAAS/U,IAASa,EAAQb,GAAO,CAExC,IAAIR,EAAS,IAAIqR,EAAY7Q,EAAMF,GAEnC3C,KAAKqU,MAAQhS,EAAOgS,MACpBrU,KAAKuU,MAAQlS,EAAOkS,MACpBvU,KAAKyU,UAAYpS,EAAOoS,UACxBzU,KAAKy1C,KAAO,KACZz1C,KAAKy0C,KAAO,UAET,GAAI5xC,GAAQa,EAAQb,EAAKA,OAASa,EAAQb,EAAKY,MAElDzD,KAAKqU,MAAQxR,EAAKA,KAClB7C,KAAKuU,MAAQ1R,EAAKY,KAClBzD,KAAKyU,UAAY5R,EAAKF,SACtB3C,KAAKy1C,UAA2B,IAAb5yC,EAAKsC,IAAsBtC,EAAKsC,IAAM,KACzDnF,KAAKy0C,UAA2B,IAAb5xC,EAAK+I,IAAsB/I,EAAK+I,IAAM,SAEtD,CAAA,GAAI/I,EAEP,MAAM,IAAI0B,UAAU,6BAA+BuQ,EAAKyb,MAAMtuB,KAAKY,GAAQ,KAI3E7C,KAAKqU,SACLrU,KAAKuU,OAAS,GACdvU,KAAKyU,UAAY9R,EACjB3C,KAAKy1C,KAAO,KACZz1C,KAAKy0C,KAAO,MAiLhB,OA7KApxB,EAAqB9hB,UAAY,IAAImS,EAKrC2P,EAAqB9hB,UAAUU,KAAO,uBACtCohB,EAAqB9hB,UAAU65D,wBAAyB,EAexD/3C,EAAqB9hB,UAAU4f,OAAS,SAAU/c,GAChD,OAAQmF,UAAU3F,QAChB,KAAK,EAEH,IAAIpD,EAAIkT,EAAYnS,UAAU4f,OAAO5gB,KAAKP,KAAMoE,GAEhD,OAAInC,EAAK2V,SAASpX,GAET,IAAI6iB,GACTxgB,KAAMrC,EAAE6T,MACR5Q,KAAMjD,EAAE+T,MACR5R,SAAUnC,EAAEiU,YAGTjU,EAGT,KAAK,EACL,KAAK,EACH,MAAM,IAAIkE,MAAM,4DAElB,QACE,MAAM,IAAIkF,YAAY,+BAa5ByZ,EAAqB9hB,UAAU6R,IAAM,WACnC,MAAM,IAAI1O,MAAM,sDAelB2e,EAAqB9hB,UAAUiD,OAAS,WACtC,MAAM,IAAIE,MAAM,yDAQlB2e,EAAqB9hB,UAAU8D,QAAU,WACvC,MAAM,IAAIX,MAAM,0DAOlB2e,EAAqB9hB,UAAU6Q,MAAQ,WAMrC,OALQ,IAAIiR,GACVxgB,KAAMxB,EAAO+Q,MAAMpS,KAAKqU,OACxB5Q,KAAMpC,EAAO+Q,MAAMpS,KAAKuU,OACxB5R,SAAU3C,KAAKyU,aASnB4O,EAAqB9hB,UAAUqiB,OAAS,WACtC,OACEC,OAAQ,uBACRhhB,KAAM7C,KAAKqU,MACX5Q,KAAMzD,KAAKuU,MACX5R,SAAU3C,KAAKyU,YAWnB4O,EAAqBU,SAAW,SAAUC,GACxC,OAAO,IAAIX,EAAqBW,IAWlCX,EAAqB9hB,UAAUqxB,SAAW,WACxC,MAAM,IAAIluB,MAAM,2DAOlB2e,EAAqB9hB,UAAU4D,IAAM,WAEnC,GAAkB,OAAdnF,KAAKy1C,KAAe,CAEtB,IAAIj1C,EAAI,KAERR,KAAK2E,QAAQ,SAAU8b,IACX,OAANjgB,GAAc0Q,EAAQuP,EAAGjgB,MAC3BA,EAAIigB,KAERzgB,KAAKy1C,KAAa,OAANj1C,EAAaA,OAAI4E,EAE/B,OAAOpF,KAAKy1C,MAOdpyB,EAAqB9hB,UAAUqK,IAAM,WAEnC,GAAkB,OAAd5L,KAAKy0C,KAAe,CAEtB,IAAIj0C,EAAI,KAERR,KAAK2E,QAAQ,SAAU8b,IACX,OAANjgB,GAAc0Q,EAAQ1Q,EAAGigB,MAC3BjgB,EAAIigB,KAERzgB,KAAKy0C,KAAa,OAANj0C,EAAaA,OAAI4E,EAE/B,OAAOpF,KAAKy0C,MAIPpxB,IAUH,SAAUzjB,EAAQD,EAASQ,GAEjC,aA+DAR,EAAQgB,KAAO,QACfhB,EAAQD,QA7DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAoCpC,OAAOA,EAAM,SACXi5D,0DAA2D,SAAUr9C,GACnE,IAAI+E,EAAS/E,EAAKjc,IAAI,SAAUmhB,GAC9B,OAAIjhB,EAAKkQ,YAAY+Q,GACZA,EAAI8D,WAEJpkB,MAAMc,QAAQwf,IAAQjhB,EAAK2V,SAASsL,GACpCA,EAAInhB,IAAI,SAAU+C,GAEvB,OAAO7C,EAAKkQ,YAAYrN,GAAQA,EAAKkiB,WAAaliB,IAI7Coe,IAIP7G,EAAM,IAAIpa,EAAK6gB,MAEnB,OADA7gB,EAAK6gB,MAAMS,MAAMlH,EAAK0G,GACf1G,OAWP,SAAUzc,EAAQD,EAASQ,GAEjC,aA4DAR,EAAQgB,KAAO,SACfhB,EAAQD,QA1DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAEpC,IAAIqV,EAAexV,EAAKwV,aA6BpBqxB,EAAS1mC,EAAM,UACjBE,GAAI,WACF,OAAO,IAAImV,OAGbjV,OAAU,SAAUG,GAClB,OAAO,IAAI8U,KAAiB9U,IAG9ByhB,iBAAkB,SAAUvhB,GAC1B,OAAO,IAAI4U,EAAa5U,IAG1BG,yBAA0B,SAAUH,EAAMF,GACxC,OAAO,IAAI8U,EAAa5U,EAAMF,MASlC,OALAmmC,EAAO5lC,OACLC,EAAG,iCACHC,EAAG,6BAGE0lC,IASH,SAAUlpC,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,MAMhB,SAAUP,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAC9BmD,EAASnD,EAAoB,GAgEjCR,EAAQgB,KAAO,SACfhB,EAAQD,QA/DR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA0BpC,IAAII,EAASJ,EAAM,UACjBE,GAAI,WACF,MAAO,IAGTgB,OAAUA,EAAOb,OAEjBwpB,KAAQ,SAAUjqB,GAChB,MAAO,QAGTmyD,QAAW,SAAUnyD,GACnB,OAAOA,EAAI,IAGbQ,OAAU,SAAUR,GAClB,OAAOA,GAGToiB,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAGQ,IAGpB0wB,IAAO,SAAUlxB,GACf,OAAO0H,OAAO1H,MASlB,OALAQ,EAAOU,OACLC,EAAG,eACHC,EAAG,6CAGEZ,IASH,SAAU5C,EAAQD,EAASQ,GAEjCP,EAAOD,SAELQ,EAAoB,KAGpBA,EAAoB,KAGpBA,EAAoB,KAGpBA,EAAoB,KAGpBA,EAAoB,OAMhB,SAAUP,EAAQD,EAASQ,GAEjC,aAGA,IAAI+V,EAAW/V,EAAoB,GAAG+V,SAClC9D,EAAQjS,EAAoB,GAAGiS,MAC/BkpD,EAAYn7D,EAAoB,IAgvGpCR,EAAQgB,KAAO,OACfhB,EAAQ2T,KAAO,OACf3T,EAAQD,QAhvGR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAC3C,IAkFIlH,EAAM/R,EAAO3D,EAlFbiQ,EAAYvO,EAAKhC,EAAoB,KACrCwQ,EAAYxO,EAAKhC,EAAoB,KACrCkQ,EAAYlO,EAAKhC,EAAoB,KACrCmQ,EAAYnO,EAAKhC,EAAoB,KACrC4P,EAAY5N,EAAKhC,EAAoB,KACrCqK,EAAYrI,EAAKhC,EAAoB,KACrCunC,EAAYvlC,EAAKhC,EAAoB,KACrC0H,EAAY1F,EAAKhC,EAAoB,KACrC6Q,EAAY7O,EAAKhC,EAAoB,KACrC6zB,EAAY7xB,EAAKhC,EAAoB,KACrCsC,EAAYN,EAAKhC,EAAoB,KACrCqkB,EAAYriB,EAAKhC,EAAoB,KACrC6mB,EAAY7kB,EAAKhC,EAAoB,KACrC8jB,EAAY9hB,EAAKhC,EAAoB,KAmBzC,SAASkkB,EAAKzf,EAAOjE,GACnB,KAAMX,gBAAgBqkB,GACpB,MAAM,IAAI3f,MAAM,oDAGlB,GAAeU,MAATR,IAAsBovB,EAAUpvB,KAAU3C,EAAKmxB,UAAUxuB,GAC7D,MAAM,IAAIL,UAAU,kGAEtB,GAAYa,MAARzE,IAAsC,iBAATA,GAA8B,KAATA,GACpD,MAAM,IAAI4D,UAAU,yDAGtB,GAAYa,MAARzE,EAAmB,CACrB,IAAIy7B,EAAI/X,EAAK2E,MAAMroB,GACnBX,KAAK6R,MAAQuqB,EAAEvqB,MACf7R,KAAK8jB,WAAasY,EAAEtY,eAEjB,CACH9jB,KAAK6R,QAED8qB,KAAM4+B,EACNC,OAAQC,EAASC,KACjBC,MAAO,IAGX37D,KAAK8jB,cACL,IAAI,IAAIzjB,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IACrCL,KAAK8jB,WAAWzjB,GAAK,EAIzBL,KAAK4E,MAAkBQ,MAATR,EAAsB5E,KAAKsc,WAAW1X,GAAS,KAE7D5E,KAAK0f,WAAY,EAMjB1f,KAAK67D,sBAAuB,EAa9B,SAASC,IACP,KAAY,KAALr7D,GAAiB,MAALA,GACjB+F,IAQJ,SAAS0mB,EAAQzsB,GACf,OAASA,GAAK,KAAOA,GAAK,IAG5B,SAAS+F,IACPpC,IACA3D,EAAI0V,EAAKU,OAAOzS,GAGlB,SAAS23D,EAAOC,GACd53D,EAAQ43D,EACRv7D,EAAI0V,EAAKU,OAAOzS,GAGlB,SAAS63D,IACP,IACID,EApBcv7D,EAmBd6C,EAAS,GAYb,GAVA04D,EAAW53D,EAEF,KAAL3D,EACF+F,IAEY,KAAL/F,IACP6C,GAAU7C,EACV+F,QA5BgB/F,EA+BFA,IA9BF,KAAOA,GAAK,KAAa,KAALA,GAiChC,OADAs7D,EAAOC,GACA,KAIT,GAAS,KAALv7D,GAGF,GAFA6C,GAAU7C,EACV+F,KACK0mB,EAAQzsB,GAGX,OADAs7D,EAAOC,GACA,SAGN,CACH,KAAO9uC,EAAQzsB,IACb6C,GAAU7C,EACV+F,IAEO,KAAL/F,IACF6C,GAAU7C,EACV+F,KAGJ,KAAO0mB,EAAQzsB,IACb6C,GAAU7C,EACV+F,IAIF,GAAS,KAAL/F,GAAiB,KAALA,EAAU,CAGxB,IAAIy7D,EAAkB,GAClBC,EAAiB/3D,EAWrB,GATA83D,GAAmBz7D,EACnB+F,IAES,KAAL/F,GAAiB,KAALA,IACdy7D,GAAmBz7D,EACnB+F,MAIG0mB,EAAQzsB,GAGX,OADAs7D,EAAOI,GACA74D,EAKT,IADAA,GAAkB44D,EACXhvC,EAAQzsB,IACb6C,GAAU7C,EACV+F,IAIJ,OAAOlD,EAGT,SAAS84D,IAKP,IAJA,IAAIC,EAAW,GAGXC,EAAOnmD,EAAKw8C,WAAWvuD,GAClBk4D,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,KAC7BD,GAAY57D,EACZ+F,IACA81D,EAAOnmD,EAAKw8C,WAAWvuD,GAKzB,QADAk4D,EAAOD,EAAS1J,WAAW,KACd,IAAM2J,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,MAChBD,GAGF,KAIX,SAASE,EAAeC,GACtB,OAAI/7D,IAAM+7D,GACRh2D,IACOg2D,GAGA,KAiVX,SAASC,EAAU3xD,GAGjB,GAAG4xD,EAAMl7D,eAAesJ,GAGtB,OACE6xB,KAHEA,EAAO+/B,EAAM5xD,GAIf0wD,OAHEA,EAAS7+B,EAAKggC,SAAS,KAO7B,IAAK,IAAIh8D,KAAQ+7D,EACf,GAAIA,EAAMl7D,eAAeb,IACnBuV,EAASpL,EAAKnK,GAAO,CACvB,IAGI66D,EAHA7+B,EAAO+/B,EAAM/7D,GACbi8D,EAAa9xD,EAAIlH,OAASjD,EAAKiD,OAC/Bi5D,EAAa/xD,EAAIyL,UAAU,EAAGqmD,GAIlC,QAAex3D,KAHXo2D,EAAS7+B,EAAKggC,SAASn7D,eAAeq7D,GACpClgC,EAAKggC,SAASE,QACdz3D,GAGJ,OACEu3B,KAAMA,EACN6+B,OAAQA,GAOlB,OAAO,KA1fTn3C,EAAK9iB,UAAUU,KAAO,OACtBoiB,EAAK9iB,UAAU2Q,QAAS,EAsJxBmS,EAAK2E,MAAQ,SAAUle,EAAK/C,GAM1B,GALAA,EAAUA,MAEV3D,GAAS,EACT3D,EAAI,GAEgB,iBAJpB0V,EAAOrL,GAKL,MAAM,IAAIvG,UAAU,mDAGtB,IAAIo4B,EAAO,IAAItY,EACfsY,EAAK9qB,SAEL,IAAIirD,EAAyB,EACzBC,GAAgB,EAgBpBv2D,IACAs1D,IAGA,IAAIkB,EAAWf,IACXr3D,EAAQ,KACTo4D,IAECp4D,EADoB,cAAlB1C,EAAOoB,OACD,IAAIrB,EAAKiiB,UAAU84C,GAEF,aAAlB96D,EAAOoB,OACN,IAAIrB,EAAKkiB,SAAS64C,GAGlBlzD,WAAWkzD,GAGrBlB,IAGIS,EAAe,MACjBO,EAAyB,EACzBC,GAAgB,GAETR,EAAe,OACtBO,GAA0B,EAC1BC,GAAgB,IAUpB,IALA,IAAIE,KAGAC,EAA8B,IAErB,CAKX,IAJApB,IAIa,MAANr7D,GACLw8D,EAAqBt5D,KAAKm5D,GAC1BI,GAA+BJ,EAC/BA,EAAyB,EACzBt2D,IACAs1D,IAIF,IAAGr7D,EASD,MARA,IAAI08D,EAAO18D,EACP28D,EAAOhB,IACX,GAAW,MAARgB,EACD,MAAM,IAAIxzD,YAAY,eAAiBuzD,EAAO,SAAWhnD,EAAO,cAAgB/R,EAAM2G,YAS1F,IAAIsR,EAAMogD,EAAUW,GACpB,GAAU,MAAP/gD,EAED,MAAM,IAAIzS,YAAY,SAAWwzD,EAAO,gBAG1C,IAAIzB,EAAQmB,EAAyBI,EAGrC,GADApB,IACIS,EAAe,KAAM,CACvBT,IACA,IAAIr6D,EAAIw6D,IACR,GAAQ,MAALx6D,EAED,MAAM,IAAImI,YAAY,OAASkB,EAAM,sDAEvC6wD,GAASl6D,EAIXk7B,EAAK9qB,MAAMlO,MACTg5B,KAAMtgB,EAAIsgB,KACV6+B,OAAQn/C,EAAIm/C,OACZG,MAAOA,IAET,IAAI,IAAIt7D,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IACrCs8B,EAAK7Y,WAAWzjB,KAAOgc,EAAIsgB,KAAK7Y,WAAWzjB,IAAM,GAAKs7D,EAMxD,IADAG,IACa,MAANr7D,GAAW,CAChB,GAAmC,IAAhCw8D,EAAqBr5D,OACtB,MAAM,IAAIgG,YAAY,qBAAuBuM,EAAO,cAAgB/R,EAAM2G,YAE5EmyD,GAA+BD,EAAqB7xD,MACpD5E,IACAs1D,IAuBF,GAlBAiB,GAAgB,EAEZR,EAAe,MAEjBO,EAAyB,EACzBC,GAAgB,GAETR,EAAe,MAEtBO,GAA0B,EAC1BC,GAAgB,GAIhBD,EAAyB,EAIxBzgD,EAAIsgB,KAAKmf,KAAM,CAChB,IAAIuhB,EAAUhhD,EAAIsgB,KAAKmf,KAAKrpC,IAC5B6qD,EAAaC,KAAKF,IAChB1gC,KAAMtgB,EAAIsgB,KACV6+B,OAAQn/C,EAAIm/C,SAOlB,GADAM,IACGr7D,EACD,MAAM,IAAImJ,YAAY,qBAAuBkB,EAAM,KAIrD,GAAGiyD,EACD,MAAM,IAAInzD,YAAY,yBAA2BkB,EAAM,KAIzD,GAAmC,IAAhCmyD,EAAqBr5D,OACtB,MAAM,IAAIgG,YAAY,qBAAuBuM,EAAO,KAItD,GAAwB,GAArBwmB,EAAK9qB,MAAMjO,SAAgBmE,EAAQy1D,aACpC,MAAM,IAAI5zD,YAAY,IAAMkB,EAAM,uBAIpC,OADA6xB,EAAK/3B,MAAkBQ,MAATR,EAAsB+3B,EAAKrgB,WAAW1X,GAAS,KACtD+3B,GAQTtY,EAAK9iB,UAAU6Q,MAAQ,WACrB,IAAIuqB,EAAO,IAAItY,EAEfsY,EAAKjd,UAAY1f,KAAK0f,UACtBid,EAAKk/B,qBAAuB77D,KAAK67D,qBAEjCl/B,EAAK/3B,MAAQwN,EAAMpS,KAAK4E,OACxB+3B,EAAK7Y,WAAa9jB,KAAK8jB,WAAW5d,MAAM,GACxCy2B,EAAK9qB,SACL,IAAI,IAAIxR,EAAI,EAAGA,EAAIL,KAAK6R,MAAMjO,OAAQvD,IAEpC,IAAK,IAAIoB,KADTk7B,EAAK9qB,MAAMxR,MACGL,KAAK6R,MAAMxR,GACnBL,KAAK6R,MAAMxR,GAAGmB,eAAeC,KAC/Bk7B,EAAK9qB,MAAMxR,GAAGoB,GAAKzB,KAAK6R,MAAMxR,GAAGoB,IAKvC,OAAOk7B,GAQTtY,EAAK9iB,UAAUk8D,WAAa,WAC1B,OAAyB,IAAtBz9D,KAAK6R,MAAMjO,SAGP5D,KAAK6R,MAAMjO,OAAS,GAAKsB,KAAKsF,IAAIxK,KAAK6R,MAAM,GAAG8pD,MAAQ,GAAO,QAUxEt3C,EAAK9iB,UAAU+a,WAAa,SAAU1X,GACpC,IAAI84D,EAAWC,EAAYC,EAAWC,EAClClpD,EAEJ,GAAa,MAAT/P,GAAuC,IAAtB5E,KAAK6R,MAAMjO,OAC9B,OAAOgB,EAEJ,GAAI5E,KAAKy9D,aAAc,CAG1B,IAAIphD,EAAMzX,EACV+P,EAAU0P,EAAKy5C,oBAAoBt5C,EAAU5f,IAE7C,IAAI,IAAIvE,EAAE,EAAGA,EAAIL,KAAK6R,MAAMjO,OAAQvD,IAClCq9D,EAAkB/oD,EAAQ3U,KAAK6R,MAAMxR,GAAGs8B,KAAK/3B,OAC7Ci5D,EAAkBlpD,EAAQ3U,KAAK6R,MAAMxR,GAAGm7D,OAAO52D,OAC/Cg5D,EAAkBjpD,EAAQ3U,KAAK6R,MAAMxR,GAAGs7D,OACxCt/C,EAAMhM,EAASgM,EAAKtM,EAAIM,EAASqtD,EAAWG,GAAkBD,IAGhE,OAAOvhD,EAUP,OAJAqhD,GAFA/oD,EAAU0P,EAAKy5C,oBAAoBt5C,EAAU5f,KAEnB5E,KAAK6R,MAAM,GAAG8qB,KAAK/3B,OAC7C+4D,EAAkBhpD,EAAQ3U,KAAK6R,MAAM,GAAG8qB,KAAK4oB,QAC7CsY,EAAkBlpD,EAAQ3U,KAAK6R,MAAM,GAAG2pD,OAAO52D,OAExCyL,EAASK,EAAI9L,EAAO+4D,GAAattD,EAASqtD,EAAWG,KAYhEx5C,EAAK9iB,UAAUw8D,aAAe,SAAUn5D,EAAOo5D,GAC7C,IAAIN,EAAWC,EAAYC,EAAWC,EAClClpD,EAEJ,GAAa,MAAT/P,GAAuC,IAAtB5E,KAAK6R,MAAMjO,OAC9B,OAAOgB,EAEJ,GAAI5E,KAAKy9D,aAAc,CAI1B,IAAIphD,EAAMzX,EACV+P,EAAU0P,EAAKy5C,oBAAoBt5C,EAAU5f,IAE7C,IAAK,IAAIvE,EAAI,EAAGA,EAAIL,KAAK6R,MAAMjO,OAAQvD,IACrCq9D,EAAkB/oD,EAAQ3U,KAAK6R,MAAMxR,GAAGs8B,KAAK/3B,OAC7Ci5D,EAAkBlpD,EAAQ3U,KAAK6R,MAAMxR,GAAGm7D,OAAO52D,OAC/Cg5D,EAAkBjpD,EAAQ3U,KAAK6R,MAAMxR,GAAGs7D,OACxCt/C,EAAM/L,EAAO+L,EAAKtM,EAAIM,EAASqtD,EAAWG,GAAkBD,IAG9D,OAAOvhD,EAUP,OAJAqhD,GAFA/oD,EAAU0P,EAAKy5C,oBAAoBt5C,EAAU5f,KAEnB5E,KAAK6R,MAAM,GAAG8qB,KAAK/3B,OAC7Ci5D,EAAkBlpD,EAAQ3U,KAAK6R,MAAM,GAAG2pD,OAAO52D,OAC/C+4D,EAAkBhpD,EAAQ3U,KAAK6R,MAAM,GAAG8qB,KAAK4oB,QAGpC50C,EAASL,EAAOA,EAAO1L,EAAO84D,GADpBt4D,MAAf44D,EAC+CH,EAGAG,GAHkBL,IA2DzEt5C,EAAKmP,gBAAkB,SAAU7yB,GAC/B,OAA2B,MAAnB87D,EAAU97D,IASpB0jB,EAAK9iB,UAAUylC,QAAU,SAAU8U,GAMjC,GAJoB,iBAAX,IACPA,EAAOmiB,EAAWniB,KAGhBA,EACF,OAAO,EAIT,IAAI,IAAIz7C,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IACrC,GAAI6E,KAAKsF,KAAKxK,KAAK8jB,WAAWzjB,IAAM,IAAMy7C,EAAKh4B,WAAWzjB,IAAM,IAAM,MACpE,OAAO,EAGX,OAAO,GAWTgkB,EAAK9iB,UAAUwU,UAAY,SAAU6I,GAEnC,IAAI,IAAIve,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IACrC,GAAI6E,KAAKsF,KAAKxK,KAAK8jB,WAAWzjB,IAAM,IAAMue,EAAMkF,WAAWzjB,IAAM,IAAM,MACrE,OAAO,EAGX,OAAO,GASTgkB,EAAK9iB,UAAUqU,OAAS,SAAUgJ,GAChC,OAAQ5e,KAAK+V,UAAU6I,IAAU5N,EAAMhR,KAAK4E,MAAOga,EAAMha,QAS3Dyf,EAAK9iB,UAAU8O,SAAW,SAAUuO,GAGlC,IAFA,IAAIvC,EAAMrc,KAAKoS,QAEP/R,EAAI,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IAEvCgc,EAAIyH,WAAWzjB,IAAML,KAAK8jB,WAAWzjB,IAAM,IAAMue,EAAMkF,WAAWzjB,IAAM,GAI1E,IAAQA,EAAE,EAAGA,EAAEue,EAAM/M,MAAMjO,OAAQvD,IAAK,CAEtC,IAAI69D,KACJ,IAAI,IAAIzrD,KAAOmM,EAAM/M,MAAMxR,GACzB69D,EAASzrD,GAAOmM,EAAM/M,MAAMxR,GAAGoS,GAEjC4J,EAAIxK,MAAMlO,KAAKu6D,GAIjB,GAAiB,MAAdl+D,KAAK4E,OAAgC,MAAfga,EAAMha,MAAe,CAC5C,IAAIu5D,EAAwB,MAAdn+D,KAAK4E,MAAgB5E,KAAKsc,WAAW,GAAKtc,KAAK4E,MACzDw5D,EAA0B,MAAfx/C,EAAMha,MAAgBga,EAAMtC,WAAW,GAAKsC,EAAMha,MACjEyX,EAAIzX,MAAQyL,EAAS8tD,EAASC,QAG9B/hD,EAAIzX,MAAQ,KAMd,OAFAyX,EAAIw/C,sBAAuB,EAEpBwC,EAAqBhiD,IAS9BgI,EAAK9iB,UAAU+O,OAAS,SAAUsO,GAGhC,IAFA,IAAIvC,EAAMrc,KAAKoS,QAEP/R,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IAErCgc,EAAIyH,WAAWzjB,IAAML,KAAK8jB,WAAWzjB,IAAM,IAAMue,EAAMkF,WAAWzjB,IAAM,GAI1E,IAAQA,EAAE,EAAGA,EAAEue,EAAM/M,MAAMjO,OAAQvD,IAAK,CAEtC,IAAI69D,KACJ,IAAI,IAAIzrD,KAAOmM,EAAM/M,MAAMxR,GACzB69D,EAASzrD,GAAOmM,EAAM/M,MAAMxR,GAAGoS,GAEjCyrD,EAASvC,OAASuC,EAASvC,MAC3Bt/C,EAAIxK,MAAMlO,KAAKu6D,GAIjB,GAAkB,MAAdl+D,KAAK4E,OAAgC,MAAfga,EAAMha,MAAe,CAC7C,IAAIu5D,EAAwB,MAAdn+D,KAAK4E,MAAgB5E,KAAKsc,WAAW,GAAKtc,KAAK4E,MACzDw5D,EAA0B,MAAfx/C,EAAMha,MAAgBga,EAAMtC,WAAW,GAAKsC,EAAMha,MACjEyX,EAAIzX,MAAQ0L,EAAO6tD,EAASC,QAG5B/hD,EAAIzX,MAAQ,KAMd,OAFAyX,EAAIw/C,sBAAuB,EAEpBwC,EAAqBhiD,IAS9BgI,EAAK9iB,UAAUwO,IAAM,SAAUtO,GAG7B,IAFA,IAAI4a,EAAMrc,KAAKoS,QAEP/R,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IAErCgc,EAAIyH,WAAWzjB,IAAML,KAAK8jB,WAAWzjB,IAAM,GAAKoB,EAIlD,IAAQpB,EAAE,EAAGA,EAAEgc,EAAIxK,MAAMjO,OAAQvD,IAC/Bgc,EAAIxK,MAAMxR,GAAGs7D,OAASl6D,EAmBxB,OAhBgB,MAAb4a,EAAIzX,MACLyX,EAAIzX,MAAQmL,EAAIsM,EAAIzX,MAAOnD,GAS3B4a,EAAIzX,MAAQ,KAIdyX,EAAIw/C,sBAAuB,EAEpBwC,EAAqBhiD,IAQ9B,IAAIgiD,EAAuB,SAAS1hC,GAClC,OAAGA,EAAK5mB,UAAUkoD,EAAWvC,OAAwB,OAAf/+B,EAAK/3B,QAAmB1C,EAAO6kB,YAC5D4V,EAAK/3B,MAGL+3B,GAWXtY,EAAK9iB,UAAUiJ,IAAM,WAGnB,IAAIuzB,EAAM/9B,KAAKoS,QAGf,IAAI,IAAI/R,KAFR09B,EAAIn5B,MAAsB,OAAdm5B,EAAIn5B,MAAiB4F,EAAIuzB,EAAIn5B,OAAS,KAErCm5B,EAAIlsB,MACe,OAA3BksB,EAAIlsB,MAAMxR,GAAGs8B,KAAKh8B,MAA4C,QAA3Bo9B,EAAIlsB,MAAMxR,GAAGs8B,KAAKh8B,OACtDo9B,EAAIlsB,MAAMxR,GAAGs8B,KAAO+/B,EAAS,GAIjC,OAAO3+B,GAST1Z,EAAK9iB,UAAUqP,GAAK,SAAUgsB,GAC5B,IAAIhe,EACAha,EAAsB,MAAd5E,KAAK4E,MAAgB5E,KAAKsc,WAAW,GAAKtc,KAAK4E,MAC3D,GAA6B,iBAAlBg4B,EAA4B,CAGrC,GADAhe,EAAQyF,EAAK2E,MAAM4T,IACd58B,KAAK+V,UAAU6I,GAClB,MAAM,IAAIla,MAAM,sBAElB,GAAoB,OAAhBka,EAAMha,MACR,MAAM,IAAIF,MAAM,yCAMlB,OAHAka,EAAMha,MAAQwN,EAAMxN,GACpBga,EAAMc,WAAY,EAClBd,EAAMi9C,sBAAuB,EACtBj9C,EAEJ,GAAI3c,EAAKiQ,OAAO0qB,GAAgB,CACnC,IAAK58B,KAAK+V,UAAU6mB,GAClB,MAAM,IAAIl4B,MAAM,sBAElB,GAA4B,OAAxBk4B,EAAch4B,MAChB,MAAM,IAAIF,MAAM,yCAMlB,OAJAka,EAAQge,EAAcxqB,SAChBxN,MAAQwN,EAAMxN,GACpBga,EAAMc,WAAY,EAClBd,EAAMi9C,sBAAuB,EACtBj9C,EAGP,MAAM,IAAIla,MAAM,yCAWpB2f,EAAK9iB,UAAUylB,SAAW,SAAU4V,GAClC,OAAO5V,EAAShnB,KAAKs+D,UAAU1hC,KASjCvY,EAAK9iB,UAAU+8D,UAAY,SAAU1hC,GACnC,IAAIhe,EAAQ5e,KAQZ,OAPG48B,IAEDhe,EAAQ5e,KAAK4Q,GAAGgsB,IAGlBhe,EAAM2/C,uBAEH3/C,EAAM6+C,aACA7+C,EAAMm/C,aAAan/C,EAAMha,OAGzBga,EAAMm/C,aAAan/C,EAAMha,MAAOga,EAAM/M,MAAM,GAAG2pD,OAAO52D,QASjEyf,EAAK9iB,UAAUwJ,SAAW,WACxB,OAAO/K,KAAKyC,UASd4hB,EAAK9iB,UAAUqiB,OAAS,WACtB,OACEC,OAAQ,OACRjf,MAAO5E,KAAK+9D,aAAa/9D,KAAK4E,OAC9B+3B,KAAM38B,KAAKolB,cACX1F,UAAW1f,KAAK0f,YAWpB2E,EAAKN,SAAW,SAAUC,GACxB,IAAI2Y,EAAO,IAAItY,EAAKL,EAAKpf,MAAOof,EAAK2Y,MAErC,OADAA,EAAKjd,UAAYsE,EAAKtE,YAAa,EAC5Bid,GAQTtY,EAAK9iB,UAAU8Q,QAAUgS,EAAK9iB,UAAUwJ,SAMxCsZ,EAAK9iB,UAAUg9D,qBAAuB,WAEpC,IAAIv+D,KAAK67D,sBAAsC,MAAd77D,KAAK4E,MAAtC,CAIA,IAGI45D,EAaEC,EAhBFC,KAIJ,IAAI,IAAIjsD,KAAOksD,EACb,GAAG3+D,KAAKgnC,QAAQi3B,EAAWxrD,IAAO,CAChC+rD,EAAe/rD,EACf,MAIJ,GAAoB,SAAjB+rD,EAEDx+D,KAAK6R,cAYL,GARG2sD,GAEEG,EAAkBn9D,eAAeg9D,KAClCC,EAAeE,EAAkBH,IAKlCC,EACDz+D,KAAK6R,QACH8qB,KAAM8hC,EAAa9hC,KACnB6+B,OAAQiD,EAAajD,OACrBG,MAAO,QAGN,CAKH,IADA,IAAIiD,GAAiB,EACbv+D,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IAAK,CAC1C,IAAIg9D,EAAUzB,EAAgBv7D,GAC3B6E,KAAKsF,IAAIxK,KAAK8jB,WAAWzjB,IAAM,GAAK,QAClCs+D,EAAkBn9D,eAAe67D,GAClCqB,EAAiB/6D,MACfg5B,KAAMgiC,EAAkBtB,GAAS1gC,KACjC6+B,OAAQmD,EAAkBtB,GAAS7B,OACnCG,MAAO37D,KAAK8jB,WAAWzjB,IAAM,IAI/Bu+D,GAAiB,GAMpBF,EAAiB96D,OAAS5D,KAAK6R,MAAMjO,SAAWg7D,IAEjD5+D,KAAK6R,MAAQ6sD,GAKnB1+D,KAAK67D,sBAAuB,IAG9Bx3C,EAAK9iB,UAAUs9D,KAAO,WAUpB,IARA,IAAI9gC,EAAM/9B,KAAKoS,QAEXssD,KAMIr+D,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IAAK,CAC1C,IAAIg9D,EAAUzB,EAAgBv7D,GAC9B,GAAG6E,KAAKsF,IAAIuzB,EAAIja,WAAWzjB,IAAM,GAAK,MAAO,CAC3C,IAAGi9D,EAAiB,GAAE97D,eAAe67D,GAQnC,MAAM,IAAI34D,MAAM,8BAAgC24D,EAAU,gBAP1DqB,EAAiB/6D,MACfg5B,KAAM2gC,EAAiB,GAAED,GAAS1gC,KAClC6+B,OAAQ8B,EAAiB,GAAED,GAAS7B,OACpCG,MAAO59B,EAAIja,WAAWzjB,IAAM,KAcpC,OAJA09B,EAAIlsB,MAAQ6sD,EAEZ3gC,EAAI89B,sBAAuB,EAEpB99B,GAQT1Z,EAAK9iB,UAAU6jB,YAAc,WAG3BplB,KAAKu+D,uBAOL,IALA,IAAIO,EAAS,GACTC,EAAS,GACTC,EAAO,EACPC,EAAO,EAEH5+D,EAAE,EAAGA,EAAEL,KAAK6R,MAAMjO,OAAQvD,IAC7BL,KAAK6R,MAAMxR,GAAGs7D,MAAQ,GACvBqD,IACAF,GAAU,IAAM9+D,KAAK6R,MAAMxR,GAAGm7D,OAAO76D,KAAOX,KAAK6R,MAAMxR,GAAGs8B,KAAKh8B,KAC5DuE,KAAKsF,IAAIxK,KAAK6R,MAAMxR,GAAGs7D,MAAQ,GAAO,QACvCmD,GAAU,IAAM9+D,KAAK6R,MAAMxR,GAAGs7D,QAG1B37D,KAAK6R,MAAMxR,GAAGs7D,MAAQ,GAC5BsD,IAIJ,GAAGA,EAAO,EACR,IAAQ5+D,EAAE,EAAGA,EAAEL,KAAK6R,MAAMjO,OAAQvD,IAC7BL,KAAK6R,MAAMxR,GAAGs7D,MAAQ,IACpBqD,EAAO,GACRD,GAAU,IAAM/+D,KAAK6R,MAAMxR,GAAGm7D,OAAO76D,KAAOX,KAAK6R,MAAMxR,GAAGs8B,KAAKh8B,KAC5DuE,KAAKsF,IAAIxK,KAAK6R,MAAMxR,GAAGs7D,MAAQ,GAAO,QACvCoD,GAAU,KAAQ/+D,KAAK6R,MAAMxR,GAAGs7D,SAIlCoD,GAAU,IAAM/+D,KAAK6R,MAAMxR,GAAGm7D,OAAO76D,KAAOX,KAAK6R,MAAMxR,GAAGs8B,KAAKh8B,KAC/Do+D,GAAU,IAAO/+D,KAAK6R,MAAMxR,GAAQ,QAM5Cy+D,EAASA,EAAOl9C,OAAO,GACvBm9C,EAASA,EAAOn9C,OAAO,GAGpBo9C,EAAO,GAAKC,EAAO,IACpBH,EAAS,IAAMA,EAAS,KAEvBG,EAAO,GAAKD,EAAO,IACpBD,EAAS,IAAMA,EAAS,KAG1B,IAAIj0D,EAAMg0D,EAMV,OALGE,EAAO,GAAKC,EAAO,IACpBn0D,GAAO,OAETA,GAAOi0D,GAcT16C,EAAK9iB,UAAUkB,OAAS,SAAUsF,GAGhC/H,KAAKu+D,uBAGL,IAAIW,GAAc,EAQlB,IAAI,IAAI7+D,UANkB,IAAhBL,KAAU,OAAoC,OAAfA,KAAK4E,OAAkB3C,EAAKmxB,UAAUpzB,KAAK4E,SAElFs6D,EAAch6D,KAAKsF,IAAIxK,KAAK4E,MAAMsgB,IAAM,MAC/BhgB,KAAKsF,IAAIxK,KAAK4E,MAAMugB,KAGlBnlB,KAAK6R,MACb7R,KAAK6R,MAAMxR,GAAGs8B,OACgB,OAA5B38B,KAAK6R,MAAMxR,GAAGs8B,KAAKh8B,MAAiBu+D,EACrCl/D,KAAK6R,MAAMxR,GAAGs8B,KAAO+/B,EAAW,IAEE,QAA5B18D,KAAK6R,MAAMxR,GAAGs8B,KAAKh8B,MAAmBu+D,IAC5Cl/D,KAAK6R,MAAMxR,GAAGs8B,KAAO+/B,EAAU,KAQX,IAAtB18D,KAAK6R,MAAMjO,QAAiB5D,KAAK0f,WAG/Bxa,KAAKsF,IAAIxK,KAAK6R,MAAM,GAAG8pD,MAAQz2D,KAAK2C,MAAM7H,KAAK6R,MAAM,GAAG8pD,QAAU,QAEpE37D,KAAK6R,MAAM,GAAG2pD,OAASx7D,KAAKm/D,eAKhC,IAAIv6D,EAAQ5E,KAAK+9D,aAAa/9D,KAAK4E,OAC/BkG,EAAsB,OAAf9K,KAAK4E,MAAkBnC,EAAOmC,EAAOmD,OAAiB,GAC7Dq3D,EAAUp/D,KAAKolB,cASnB,OARGplB,KAAK4E,OAAS3C,EAAKmxB,UAAUpzB,KAAK4E,SACnCkG,EAAM,IAAMA,EAAM,KAEjBs0D,EAAQx7D,OAAS,GAAKkH,EAAIlH,OAAS,IACpCkH,GAAO,KAETA,GAAOs0D,GAWT/6C,EAAK9iB,UAAU49D,YAAc,WAC3B,GAA0B,IAAtBn/D,KAAK6R,MAAMjO,OACb,MAAM,IAAIc,MAAM,4GAElB,GAAIQ,KAAKsF,IAAIxK,KAAK6R,MAAM,GAAG8pD,MAAQz2D,KAAK2C,MAAM7H,KAAK6R,MAAM,GAAG8pD,SAAW,MACrE,MAAM,IAAIj3D,MAAM,4GAWlB,IAAI26D,EAA0B,OAAfr/D,KAAK4E,MAAiB4F,EAAIxK,KAAK4E,OAAS,EACnD06D,EAAe90D,EAAIxK,KAAK6R,MAAM,GAAG8qB,KAAK/3B,OACtC26D,EAAav/D,KAAK6R,MAAM,GAAG2pD,OAC/B,GAAiB,IAAb6D,EACF,OAAOE,EAET,IAAI5D,EAAQ37D,KAAK6R,MAAM,GAAG8pD,MACtB6D,EAAWt6D,KAAK2D,IAAIw2D,EAAWn6D,KAAK6K,IAAIwvD,EAAW36D,MAAQ06D,EAAc3D,IAAUz2D,KAAK4D,KAAO,IACnG,GAAG02D,GAAY,UAAYA,EAAW,SAAU,OAAOD,EACvDC,EAAWt6D,KAAKsF,IAAIg1D,GACpB,IAAI7C,EAAW38D,KAAK6R,MAAM,GAAG8qB,KAAKggC,SAClC,IAAK,IAAIl7D,KAAKk7D,EACZ,GAAIA,EAASn7D,eAAeC,GAAI,CAC9B,IAAI+5D,EAASmB,EAASl7D,GACtB,GAAI+5D,EAAOiE,WAAY,CAErB,IAAI9zD,EAAOzG,KAAKsF,IACZtF,KAAK2D,IAAIw2D,EAAWn6D,KAAK6K,IAAIyrD,EAAO52D,MAAQ06D,EAAc3D,IAAUz2D,KAAK4D,KAAO,MAEhF6C,EAAO6zD,GACH7zD,IAAS6zD,GAAYhE,EAAO76D,KAAKiD,OAAS27D,EAAW5+D,KAAKiD,UAG5D27D,EAAa/D,EACbgE,EAAW7zD,IAMvB,OAAO4zD,GAgBTl7C,EAAK9iB,UAAUwnC,UAAY,SAAS22B,GAIlC,IAFA,IAAI19D,EAAIhC,KAAKoS,QACT2rB,KACI19B,EAAE,EAAGA,EAAEq/D,EAAM97D,SAEnB5B,EAAIA,EAAE4O,GAAG8uD,EAAMr/D,IACZA,GAAGq/D,EAAM97D,OAAO,GAHQvD,IAAK,CAMhC,IAAIs/D,EAAW39D,EAAEs8D,YAIbsB,EAAW/3D,EAAM83D,GAUjBl0D,EAAI,IAAI4Y,EARQrT,EAAM4uD,EAAUD,GAEzBC,EAGAl4B,EAAI1lC,EAAEs8D,aAGQoB,EAAMr/D,GAAG0K,YAClCgzB,EAAIp6B,KAAK8H,GACTzJ,EAAI2O,EAAS3O,EAAGyJ,GAOlB,IAAIo0D,EAAU,EACd,IAAQx/D,EAAE,EAAGA,EAAE09B,EAAIn6B,OAAQvD,IACzBw/D,EAAUnvD,EAAImvD,EAAS9hC,EAAI19B,GAAGuE,OAQhC,OANGoM,EAAM6uD,EAAS7/D,KAAK4E,SACrB5C,EAAE4C,MAAQ,GAGZm5B,EAAIp6B,KAAK3B,GAEF+7B,GAGT,IAAI09B,GACFC,MACEp5D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,IAEvCK,OACEx9D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GAErCM,IAAOp/D,KAAM,KAAMiE,MAAO,GAAK66D,YAAY,GAC3ClG,GAAM54D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCv/C,GAAMvf,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCvI,GAAMv2D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCO,GAAMr/D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCQ,GAAMt/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1C9U,GAAMhqD,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cz2B,GAAMroC,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CS,GAAMv/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CU,GAAMx/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAE1C/+D,GAAMC,KAAM,IAAKiE,MAAO,GAAM66D,YAAY,GAC1Ch/D,GAAME,KAAM,IAAKiE,MAAO,IAAM66D,YAAY,GAC1Cj/D,GAAMG,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CrjC,GAAMz7B,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Ct+D,GAAMR,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Ch+D,GAAMd,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C7rD,GAAMjT,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Cn4D,GAAM3G,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C1/C,GAAMpf,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ch0D,GAAM9K,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,IAE7CW,MACE99D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GAErCY,MAAS1/D,KAAM,OAAQiE,MAAO,GAAK66D,YAAY,GAC/Ca,OAAU3/D,KAAM,QAASiE,MAAO,IAAK66D,YAAY,GACjDc,MAAS5/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/Ce,MAAS7/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/CgB,MAAS9/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/CiB,MAAS//D,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChDkB,MAAShgE,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChDmB,KAAQjgE,KAAM,MAAOiE,MAAO,KAAM66D,YAAY,GAC9CoB,OAAUlgE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAClDqB,OAAUngE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAElDsB,MAASpgE,KAAM,OAAQiE,MAAO,GAAM66D,YAAY,GAChDuB,OAAUrgE,KAAM,QAASiE,MAAO,IAAM66D,YAAY,GAClDwB,OAAUtgE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAClDyB,OAAUvgE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAClD0B,MAASxgE,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChD2B,MAASzgE,KAAM,OAAQiE,MAAO,MAAO66D,YAAY,GACjD4B,OAAU1gE,KAAM,QAASiE,MAAO,MAAO66D,YAAY,GACnD6B,MAAS3gE,KAAM,OAAQiE,MAAO,MAAO66D,YAAY,GACjD8B,OAAU5gE,KAAM,QAASiE,MAAO,MAAO66D,YAAY,GACnD+B,OAAU7gE,KAAM,QAASiE,MAAO,MAAO66D,YAAY,IAErDgC,SACEn/D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GAErCM,IAAOp/D,KAAM,KAAMiE,MAAO,IAAK66D,YAAY,GAC3ClG,GAAM54D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCv/C,GAAMvf,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCvI,GAAMv2D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CO,GAAMr/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CQ,GAAMt/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1C9U,GAAMhqD,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cz2B,GAAMroC,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CS,GAAMv/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CU,GAAMx/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAE1C/+D,GAAMC,KAAM,IAAKiE,MAAO,IAAM66D,YAAY,GAC1Ch/D,GAAME,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cj/D,GAAMG,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CrjC,GAAMz7B,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ct+D,GAAMR,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ch+D,GAAMd,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C7rD,GAAMjT,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Cn4D,GAAM3G,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C1/C,GAAMpf,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ch0D,GAAM9K,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,IAE7CiC,OACEp/D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GAErCM,IAAOp/D,KAAM,KAAMiE,MAAO,IAAK66D,YAAY,GAC3ClG,GAAM54D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCv/C,GAAMvf,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCvI,GAAMv2D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CO,GAAMr/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CQ,GAAMt/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1C9U,GAAMhqD,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cz2B,GAAMroC,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CS,GAAMv/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CU,GAAMx/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAE1C/+D,GAAMC,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Ch/D,GAAME,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cj/D,GAAMG,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CrjC,GAAMz7B,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ct+D,GAAMR,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ch+D,GAAMd,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C7rD,GAAMjT,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Cn4D,GAAM3G,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3C1/C,GAAMpf,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,GAC3Ch0D,GAAM9K,KAAM,IAAKiE,MAAO,MAAO66D,YAAY,IAE7CkC,cACEr/D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GACrCv/C,GAAMvf,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCvI,GAAMv2D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCO,GAAMr/D,KAAM,IAAKiE,MAAO,IAAK66D,YAAY,GACzCQ,GAAMt/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1C9U,GAAMhqD,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1Cz2B,GAAMroC,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CS,GAAMv/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAC1CU,GAAMx/D,KAAM,IAAKiE,MAAO,KAAM66D,YAAY,GAE1CmC,IAAOjhE,KAAM,KAAMiE,MAAO,KAAM66D,YAAY,GAC5CoC,IAAOlhE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzDqC,IAAOnhE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzDsC,IAAOphE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzD1xD,IAAOpN,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzDuC,IAAOrhE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzDwC,IAAOthE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GACzDyC,IAAOvhE,KAAM,KAAMiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,IAE3D0C,aACE7/D,IAAK3B,KAAM,GAAIiE,MAAO,EAAG66D,YAAY,GACrCc,MAAS5/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/Ce,MAAS7/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/CgB,MAAS9/D,KAAM,OAAQiE,MAAO,IAAK66D,YAAY,GAC/CiB,MAAS//D,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChDkB,MAAShgE,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChDmB,KAAQjgE,KAAM,MAAOiE,MAAO,KAAM66D,YAAY,GAC9CoB,OAAUlgE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAClDqB,OAAUngE,KAAM,QAASiE,MAAO,KAAM66D,YAAY,GAElD2C,MAASzhE,KAAM,OAAQiE,MAAO,KAAM66D,YAAY,GAChD4C,MAAS1hE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC7D6C,MAAS3hE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC7D8C,MAAS5hE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC7D+C,MAAS7hE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC7DgD,KAAQ9hE,KAAM,MAAOiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC3DiD,MAAS/hE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,GAC7DkD,MAAShiE,KAAM,OAAQiE,MAAOM,KAAK6K,IAAI,KAAM,GAAI0vD,YAAY,IAE/DmD,KACEtgE,IAAO3B,KAAM,GAAMiE,MAAO,EAAK66D,YAAY,GAC3CoD,IAAOliE,KAAM,KAAMiE,MAAO,IAAK66D,YAAY,IAK/CqD,cACA,IAAK,IAAIrwD,KAAOgpD,EAASqE,MACpBrE,EAASqE,MAAMt+D,eAAeiR,KAC/BgpD,EAASqH,UAAUrwD,GAAOgpD,EAASqE,MAAMrtD,IAG7C,IAAK,IAAIA,KAAOgpD,EAAS2E,KACpB3E,EAAS2E,KAAK5+D,eAAeiR,KAC9BgpD,EAASqH,UAAUrwD,GAAOgpD,EAAS2E,KAAK3tD,IAoB5C,IAAImpD,GAAmB,OAAQ,SAAU,OAAQ,UAAW,cAAe,qBAAsB,sBAAuB,QAAS,OAE7HqC,GACFvC,MACE53C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCi/C,MACEj/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCk/C,QACEl/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCm/C,MACEn/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCo/C,SACEp/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCq/C,aACEr/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCs/C,oBACEt/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCu/C,qBACEv/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGvCw/C,OACEx/C,YAAa,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAExCy/C,SACEz/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvC0/C,QACE1/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvC2/C,QACE3/C,YAAa,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAExC4/C,OACE5/C,YAAa,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAExC6/C,UACE7/C,YAAa,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGzC8/C,iBACE9/C,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvC+/C,sBACE//C,aAAc,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCggD,oBACEhgD,YAAa,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCigD,qBACEjgD,YAAa,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCkgD,qBACElgD,YAAa,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCmgD,sBACEngD,aAAc,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCogD,eACEpgD,YAAa,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCqgD,uBACErgD,YAAa,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAGzCsgD,WACEtgD,YAAa,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAExCugD,OACEvgD,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCwgD,KACExgD,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAIzC,IAAI,IAAIrR,KAAOwrD,EACbA,EAAWxrD,GAAKA,IAAMA,EAGxB,IAEI8oD,GAAa56D,KAAM,GAAIm7C,QAAsBl3C,MAAO,EAAG2gD,OAAQ,EAAGzhC,YAAa,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAE/F44C,GAEF6H,OACE5jE,KAAM,QACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVif,MACE7jE,KAAM,OACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVkf,MACE9jE,KAAM,OACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVmf,MACE/jE,KAAM,OACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVof,MACEhkE,KAAM,OACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEVqf,MACEjkE,KAAM,OACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEVsf,KACElkE,KAAM,MACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEVkD,OACE9nD,KAAM,QACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEVuf,UACEnkE,KAAM,WACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAGV/kD,GACEG,KAAM,IACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVx5B,IACEprB,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVwf,IACEpkE,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVwG,IACEprD,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVyf,IACErkE,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV0f,IACEtkE,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV8F,IACE1qD,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV2f,IACEvkE,KAAM,KACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV4f,KACExkE,KAAM,MACNm7C,KAAMmiB,EAAW+E,OACjBrG,SAAUlB,EAASC,KACnB92D,MAAO,OACP2gD,OAAQ,GAIV6f,IACEzkE,KAAM,KACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASgG,QACnB78D,MAAO,EACP2gD,OAAQ,GAEV8f,MACE1kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV+f,MACE3kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAEVggB,MACE5kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAEVigB,MACE7kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,eACP2gD,OAAQ,GAEVkgB,MACE9kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEVmgB,MACE/kE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEVogB,OACEhlE,KAAM,QACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,WACP2gD,OAAQ,GAEVqgB,MACEjlE,KAAM,OACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEVsgB,SACEllE,KAAM,UACNm7C,KAAMmiB,EAAWsF,QACjB5G,SAAUlB,EAASC,KACnB92D,MAAO,IACP2gD,OAAQ,GAIVugB,IACEnlE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASiG,MACnB98D,MAAO,EACP2gD,OAAQ,GAEV5M,GACEh4C,KAAM,IACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVjlD,GACEK,KAAM,IACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVwgB,OACEplE,KAAM,QACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAAS2E,KACnBx7D,MAAO,KACP2gD,OAAQ,GAEVygB,MACErlE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,aACP2gD,OAAQ,GAEV0gB,MACEtlE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,cACP2gD,OAAQ,GAEV2gB,MACEvlE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,cACP2gD,OAAQ,GAEV4gB,UACExlE,KAAM,WACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEV6gB,YACEzlE,KAAM,aACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAGV8gB,MACE1lE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEV+gB,KACE3lE,KAAM,MACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAIVghB,OACE5lE,KAAM,QACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVihB,WACE7lE,KAAM,YACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,aACP2gD,OAAQ,GAEVkhB,YACE9lE,KAAM,aACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVmhB,MACE/lE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVohB,IACEhmE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEVqhB,KACEjmE,KAAM,MACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVshB,MACElmE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVuhB,OACEnmE,KAAM,QACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVwhB,QACEpmE,KAAM,SACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,WACP2gD,OAAQ,GAEVyhB,YACErmE,KAAM,aACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV0hB,WACEtmE,KAAM,YACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV2hB,UACEvmE,KAAM,WACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAIV4hB,MACExmE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,aACP2gD,OAAQ,GAEV6hB,MACEzmE,KAAM,OACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEV8hB,IACE1mE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEV+hB,IACE3mE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVgiB,IACE5mE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEViiB,IACE7mE,KAAM,KACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVkiB,KACE9mE,KAAM,MACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,WACP2gD,OAAQ,GAEVmiB,KACE/mE,KAAM,MACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEVoiB,KACEhnE,KAAM,MACNm7C,KAAMmiB,EAAWuF,OACjB7G,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAKVnJ,GACEz7C,KAAM,IACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVqiB,MACEjnE,KAAM,OACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAAS2E,KACnBx7D,MAAO,KACP2gD,OAAQ,GAGVsiB,KACElnE,KAAM,MACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASqE,MACnBl7D,MAAO,UACP2gD,OAAQ,GAEVuiB,OACEnnE,KAAM,QACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASqE,MACnBl7D,MAAO,IACP2gD,OAAQ,GAGVwiB,OACEpnE,KAAM,QACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVyiB,MACErnE,KAAM,OACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,kBACP2gD,OAAQ,GAEV0iB,OACEtnE,KAAM,QACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,cACP2gD,OAAQ,GAEV2iB,WACEvnE,KAAM,YACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAEV4iB,eACExnE,KAAM,gBACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAEV6iB,OACEznE,KAAM,QACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEV8iB,OACE1nE,KAAM,QACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,WACP2gD,OAAQ,GAGV+iB,IACE3nE,KAAM,KACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,YACP2gD,OAAQ,GAEVgjB,IACE5nE,KAAM,KACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,kBACP2gD,OAAQ,GAEVijB,IACE7nE,KAAM,KACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,cACP2gD,OAAQ,GAEVkjB,KACE9nE,KAAM,MACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAEVmjB,KACE/nE,KAAM,MACNm7C,KAAMmiB,EAAW8E,KACjBpG,SAAUlB,EAASC,KACnB92D,MAAO,UACP2gD,OAAQ,GAIV7jD,GACEf,KAAM,IACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVpgD,KACExE,KAAM,MACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,GACP2gD,OAAQ,GAEVgU,GACE54D,KAAM,IACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEVojB,QACEhoE,KAAM,SACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEV1U,KACElwC,KAAM,MACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVqjB,QACEjoE,KAAM,SACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,GACP2gD,OAAQ,GAEVsjB,MACEloE,KAAM,OACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEVujB,KACEnoE,KAAM,MACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,MACP2gD,OAAQ,GAEVwjB,MACEpoE,KAAM,OACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,OACP2gD,OAAQ,GAEVyjB,OACEroE,KAAM,QACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV0jB,MACEtoE,KAAM,OACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV2jB,QACEvoE,KAAM,OACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV4jB,SACExoE,KAAM,UACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAEV6jB,YACEzoE,KAAM,aACNm7C,KAAMmiB,EAAWgF,KACjBtG,SAAUlB,EAASC,KACnB92D,MAAO,SACP2gD,OAAQ,GAIV8jB,OACE1oE,KAAM,QACNm7C,KAAMmiB,EAAWmG,UACjBzH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,EACR+jB,YAAY,GAEdC,IACE5oE,KAAM,KACNm7C,KAAMmiB,EAAWmG,UACjBzH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,EACR+jB,YAAY,GAIdE,KACE7oE,KAAM,MACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVkkB,QACE9oE,KAAM,SACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAGVzzC,KACEnR,KAAM,MACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVoV,QACEh6D,KAAM,SACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAAS2E,KACnBx7D,MAAO,KACP2gD,OAAQ,GAGVmkB,MACE/oE,KAAM,OACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVokB,SACEhpE,KAAM,UACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAAS2E,KACnBx7D,MAAO,KACP2gD,OAAQ,GAGVqkB,OACEjpE,KAAM,QACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAGVskB,QACElpE,KAAM,SACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAGVukB,QACEnpE,KAAM,SACNm7C,KAAMmiB,EAAWoG,MACjB1H,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAIVvQ,GACEr0C,KAAM,IACNm7C,KAAMmiB,EAAWiF,QACjBvG,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVwkB,QACEppE,KAAM,SACNm7C,KAAMmiB,EAAWiF,QACjBvG,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAOVykB,GACErpE,KAAM,IACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,GAEV0kB,MACEtpE,KAAM,OACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,QAEV2kB,MACEvpE,KAAM,OACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EAAI,IACX2gD,OAAQ,QAEV4kB,MACExpE,KAAM,OACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EAAI,IACX2gD,OAAQ,GAEV6kB,QACEzpE,KAAM,SACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,GAEV8kB,SACE1pE,KAAM,UACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,QAEV+kB,YACE3pE,KAAM,aACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EAAI,IACX2gD,OAAQ,QAEVglB,SACE5pE,KAAM,UACNm7C,KAAMmiB,EAAWkF,YACjBxG,SAAUlB,EAASC,KACnB92D,MAAO,EAAI,IACX2gD,OAAQ,GAIVilB,KACE7pE,KAAM,MACNm7C,KAAMmiB,EAAWoF,oBACjB1G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVklB,MACE9pE,KAAM,OACNm7C,KAAMmiB,EAAWoF,oBACjB1G,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAIVmlB,IACE/pE,KAAM,KACNm7C,KAAMmiB,EAAWmF,mBACjBzG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,GAEVolB,SACEhqE,KAAM,UACNm7C,KAAMmiB,EAAWmF,mBACjBzG,SAAUlB,EAASC,KACnB92D,MAAO,EACP2gD,OAAQ,GAOVkS,GACE92D,KAAM,IACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVqlB,QACEjqE,KAAM,SACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVslB,KACElqE,KAAM,MACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVulB,MACEnqE,KAAM,OACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAAS2E,KACnBx7D,MAAO,KACP2gD,OAAQ,GAEVwlB,KACEpqE,KAAM,MACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAASC,KACnB92D,MAAO,gBACP2gD,OAAQ,GAEVylB,YACErqE,KAAM,aACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAASC,KACnB92D,MAAO,gBACP2gD,OAAQ,GAEV0lB,KACEtqE,KAAM,MACNm7C,KAAMmiB,EAAWqF,MACjB3G,SAAUlB,EAAS2E,KACnBx7D,MAAO,UACP2gD,OAAQ,GAIVpnB,GACEx9B,KAAM,IACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEV2lB,OACEvqE,KAAM,QACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEV4lB,KACExqE,KAAM,MACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASC,KACnB92D,MAAO,KACP2gD,OAAQ,GAEV6lB,IACEzqE,KAAM,KACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASqE,MACnBl7D,MAAO,KACP2gD,OAAQ,GAEVqd,KACEjiE,KAAM,MACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASmH,IACnBh+D,MAAO,cACP2gD,OAAQ,GAEV8lB,IACE1qE,KAAM,KACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAASqE,MACnBl7D,MAAO,gBACP2gD,OAAQ,GAEV+lB,cACE3qE,KAAM,eACNm7C,KAAMmiB,EAAWwF,OACjB9G,SAAUlB,EAAS2E,KACnBx7D,MAAO,gBACP2gD,OAAQ,GAKVgmB,GACE5qE,KAAM,IACNm7C,KAAMmiB,EAAWyF,MACjB/G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVimB,MACE7qE,KAAM,IACNm7C,KAAMmiB,EAAWyF,MACjB/G,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVkmB,IACE9qE,KAAM,KACNm7C,KAAMmiB,EAAWyF,MACjB/G,SAAUlB,EAASC,KACnB92D,MAAO,eACP2gD,OAAQ,GAIVmmB,KACE/qE,KAAM,MACNm7C,KAAMmiB,EAAWyF,MACjB/G,SAAUlB,EAASqE,MACnBl7D,MAAOqf,EAAQia,EACfqnB,OAAQ,GAGVomB,IACEhrE,KAAM,KACNm7C,KAAMmiB,EAAWyF,MACjB/G,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAIVqmB,IACEjrE,KAAM,KACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAEVr2C,KACEvO,KAAM,MACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,iBACP2gD,OAAQ,GAEVsmB,KACElrE,KAAM,MACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,OACP2gD,OAAQ,GAEVumB,KACEnrE,KAAM,MACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,IACP2gD,OAAQ,GAEVwmB,MACEprE,KAAM,OACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEVymB,MACErrE,KAAM,OACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV0mB,OACEtrE,KAAM,QACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAEV2mB,OACEvrE,KAAM,QACNm7C,KAAMmiB,EAAW0F,SACjBhH,SAAUlB,EAASC,KACnB92D,MAAO,QACP2gD,OAAQ,GAIV5b,SACEhpC,KAAM,UACNm7C,KAAMmiB,EAAW2F,gBACjBjH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEV4R,GACEx2D,KAAM,IACNm7C,KAAMmiB,EAAW2F,gBACjBjH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGV4mB,OACExrE,KAAM,QACNm7C,KAAMmiB,EAAW4F,qBACjBlH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEV6mB,GACEzrE,KAAM,IACNm7C,KAAMmiB,EAAW4F,qBACjBlH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGV8mB,MACE1rE,KAAM,OACNm7C,KAAMmiB,EAAW6F,mBACjBnH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEV+mB,GACE3rE,KAAM,IACNm7C,KAAMmiB,EAAW6F,mBACjBnH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGVgnB,KACE5rE,KAAM,MACNm7C,KAAMmiB,EAAW8F,oBACjBpH,SAAUlB,EAASqH,UACnBl+D,MAAO,EACP2gD,OAAQ,GAaVinB,OACE7rE,KAAM,QACNm7C,KAAMmiB,EAAW+F,oBACjBrH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVknB,GACE9rE,KAAM,IACNm7C,KAAMmiB,EAAW+F,oBACjBrH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGVmnB,SACE/rE,KAAM,UACNm7C,KAAMmiB,EAAWgG,qBACjBtH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVonB,GACEhsE,KAAM,IACNm7C,KAAMmiB,EAAWgG,qBACjBtH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGVqnB,OACEjsE,KAAM,QACNm7C,KAAMmiB,EAAWiG,cACjBvH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEVsnB,IACElsE,KAAM,KACNm7C,KAAMmiB,EAAWiG,cACjBvH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAGVunB,OACEnsE,KAAM,QACNm7C,KAAMmiB,EAAWkG,sBACjBxH,SAAUlB,EAAS2E,KACnBx7D,MAAO,EACP2gD,OAAQ,GAEV0a,GACEt/D,KAAM,IACNm7C,KAAMmiB,EAAWkG,sBACjBxH,SAAUlB,EAASqE,MACnBl7D,MAAO,EACP2gD,OAAQ,GAIVh+C,GACE5G,KAAM,IACNm7C,KAAMmiB,EAAWqG,IACjB3H,SAAUlB,EAASkG,aACnB/8D,MAAO,EACP2gD,OAAQ,GAEVwnB,MACEpsE,KAAM,OACNm7C,KAAMmiB,EAAWqG,IACjB3H,SAAUlB,EAAS0G,YACnBv9D,MAAO,EACP2gD,OAAQ,GAEVtQ,GACEt0C,KAAM,IACNm7C,KAAMmiB,EAAWqG,IACjB3H,SAAUlB,EAASkG,aACnB/8D,MAAO,EACP2gD,OAAQ,GAEVynB,OACErsE,KAAM,QACNm7C,KAAMmiB,EAAWqG,IACjB3H,SAAUlB,EAAS0G,YACnBv9D,MAAO,EACP2gD,OAAQ,IAKR0nB,GACFC,OAAQ,QACRC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,UAAW,WAEX9mD,GAAI,IACJ+mD,OAAQ,QACRC,MAAO,QACPC,OAAQ,QACRC,UAAW,WACXC,YAAa,aACbC,OAAQ,QACRC,WAAY,YACZC,YAAa,aACbC,MAAO,OACPC,KAAM,MACNC,MAAO,OACPC,OAAQ,QACRC,QAAS,SACTC,YAAa,aACbC,WAAY,YACZC,UAAW,WACXC,KAAM,MAENC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,OAAQ,QACRC,MAAO,OACPC,OAAQ,QACRC,YAAa,YACbC,eAAgB,gBAChBC,OAAQ,QACRC,GAAI,MACJC,IAAK,MAELC,KAAM,MAENC,MAAO,OACPC,SAAU,UACVC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,QAAS,OAETC,KAAM,OACNC,MAAO,QACPC,MAAO,QAEPC,QAAS,SACTC,KAAM,SACNC,QAAS,SACTC,KAAM,SACNC,MAAO,OACPC,GAAI,OACJC,IAAK,OACLC,KAAM,MACNC,MAAO,OACPC,OAAQ,QACRC,MAAO,OAEPtH,MAAO,QAEPuH,QAAS,SACTC,QAAS,SACTC,SAAU,UACVC,OAAQ,QACRC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,WAAY,SAEZC,KAAM,MACNC,MAAO,OACPC,OAAQ,QAERC,QAAS,SACTC,SAAU,UACVC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,OAAQ,QACRC,OAAQ,QACRC,cAAe,eACfC,MAAO,QAST,SAASC,EAAsB9vE,GAC7B,GAAsB,cAAlBA,EAAOoB,OAAwB,CACjC,IAAI0K,EAAKstD,EAAUttD,GAAG/L,EAAKiiB,WAC3Bw4C,EAAM8M,IAAI5kE,MAAQ,IAAI3C,EAAKiiB,UAAU,GACrCw4C,EAAM5qD,IAAIlN,MAAQoJ,EAAGmO,IAAI,KACzBugD,EAAMgN,KAAK9kE,MAAQoJ,EAAGmO,IAAI,KAC1BugD,EAAMkN,MAAMhlE,MAAQoJ,EAAG2S,MAAM,GAC7B+7C,EAAMmN,OAAOjlE,MAAQoJ,EAAGmO,IAAI,OAC5BugD,EAAMoN,OAAOllE,MAAQoJ,EAAGmO,IAAI,YAG5BugD,EAAM8M,IAAI5kE,MAAQ,EAClB83D,EAAM5qD,IAAIlN,MAAQM,KAAKmhC,GAAK,IAC5Bq2B,EAAMgN,KAAK9kE,MAAQM,KAAKmhC,GAAK,IAC7Bq2B,EAAMkN,MAAMhlE,MAAkB,EAAVM,KAAKmhC,GACzBq2B,EAAMmN,OAAOjlE,MAAQM,KAAKmhC,GAAK,MAC/Bq2B,EAAMoN,OAAOllE,MAAQM,KAAKmhC,GAAK,MAIjCq2B,EAAM+M,OAAO7kE,MAAQ83D,EAAM8M,IAAI5kE,MAC/B83D,EAAM/B,OAAO/1D,MAAQ83D,EAAM5qD,IAAIlN,MAC/B83D,EAAMiN,QAAQ/kE,MAAQ83D,EAAMgN,KAAK9kE,MAInCotE,EAAqB9vE,GAGrBmb,EAAKmpB,GAAG,SAAU,SAAU1gC,EAAMD,GAC5BC,EAAKxC,SAAWuC,EAAKvC,QACvB0uE,EAAqBlsE,KASzB,IAAIw3D,GACF2U,IAEEvW,MAAwB/+B,KAAM4+B,EAAWC,OAAQC,EAASC,KAAK,KAC/DsH,QAAwBrmC,KAAM+/B,EAAMl8D,EAAKg7D,OAAQC,EAASqE,MAAM,KAChEiD,MAAwBpmC,KAAM+/B,EAAMtgB,EAAKof,OAAQC,EAASqE,MAAS,GACnEmD,MAAwBtmC,KAAM+/B,EAAMh7D,EAAK85D,OAAQC,EAASqE,MAAM,KAChEoD,SAAwBvmC,KAAM+/B,EAAM1nB,EAAKwmB,OAAQC,EAASqE,MAAM,KAChEqD,aAAwBxmC,KAAM+/B,EAAMsN,EAAKxO,OAAQC,EAASqE,MAAM,KAChEsD,oBAAwBzmC,KAAM+/B,EAAMgO,GAAKlP,OAAQC,EAASqE,MAAM,KAChEuD,qBAAwB1mC,KAAM+/B,EAAM8N,IAAKhP,OAAQC,EAASqE,MAAM,KAChEuE,OAAwB1nC,KAAM+/B,EAAM8M,IAAKhO,OAAQC,EAASqE,MAAM,KAChEwE,KAAwB3nC,KAAM+/B,EAAMwV,IAAK1W,OAAQC,EAASqE,MAAM,KAGhEwD,OAAwB3mC,KAAM+/B,EAAMjF,EAAK+D,OAAQC,EAASqE,MAAM,KAChE2D,QAAwB9mC,KAAM+/B,EAAMv+B,EAAKq9B,OAAQC,EAASqE,MAAM,KAChE4D,OAAwB/mC,KAAM+/B,EAAM6O,EAAK/P,OAAQC,EAASqE,MAAM,KAChE6D,UAAwBhnC,KAAM+/B,EAAMkP,GAAKpQ,OAAQC,EAASqE,MAAM,KAChE8D,iBAAwBjnC,KAAM+/B,EAAMvF,EAAKqE,OAAQC,EAASqE,MAAM,KAChE+D,sBAAwBlnC,KAAM+/B,EAAM0P,EAAK5Q,OAAQC,EAASqE,MAAM,KAChEgE,oBAAwBnnC,KAAM+/B,EAAM4P,EAAK9Q,OAAQC,EAASqE,MAAM,KAChEiE,qBAAwBpnC,KAAM+/B,EAAM6P,IAAK/Q,OAAQC,EAASqE,MAAM,KAChEkE,qBAAwBrnC,KAAM+/B,EAAM+P,EAAKjR,OAAQC,EAASqE,MAAM,KAChEmE,sBAAwBtnC,KAAM+/B,EAAMiQ,EAAKnR,OAAQC,EAASqE,MAAM,KAChEoE,eAAwBvnC,KAAM+/B,EAAMmQ,GAAKrR,OAAQC,EAASqE,MAAM,KAChEqE,uBAAwBxnC,KAAM+/B,EAAMuD,EAAKzE,OAAQC,EAASqE,MAAM,KAChEsE,WAAwBznC,KAAM+/B,EAAM6M,GAAK/N,OAAQC,EAASqE,MAAM,OAKpExC,EAAa6U,IAAMjpE,KAAK8f,MAAM9f,KAAKC,UAAUm0D,EAAa2U,KAC1D3U,EAAa6U,IAAInP,QAAUrmC,KAAM+/B,EAAMl8D,EAAKg7D,OAAQC,EAASqE,MAAS,GACtExC,EAAa6U,IAAIpP,MAAUpmC,KAAM+/B,EAAMtgB,EAAKof,OAAQC,EAASqE,MAAM,KACnExC,EAAa6U,IAAI7O,OAAU3mC,KAAM+/B,EAAMmO,IAAKrP,OAAQC,EAASqE,MAAM,KACnExC,EAAa6U,IAAI1O,QAAU9mC,KAAM+/B,EAAMyO,IAAK3P,OAAQC,EAASC,KAAK,KAIlE4B,EAAa8U,GAAKlpE,KAAK8f,MAAM9f,KAAKC,UAAUm0D,EAAa2U,KACzD3U,EAAa8U,GAAGpP,QAAermC,KAAM+/B,EAAMqI,GAAMvJ,OAAQC,EAASC,KAAK,KACvE4B,EAAa8U,GAAGrP,MAAepmC,KAAM+/B,EAAM+L,IAAMjN,OAAQC,EAASC,KAAK,KACvE4B,EAAa8U,GAAGjP,aAAexmC,KAAM+/B,EAAMwN,KAAM1O,OAAQC,EAASC,KAAK,KACvE4B,EAAa8U,GAAG9O,OAAe3mC,KAAM+/B,EAAMqO,IAAMvP,OAAQC,EAASC,KAAK,KACvE4B,EAAa8U,GAAG3O,QAAe9mC,KAAM+/B,EAAMkG,IAAMpH,OAAQC,EAASmH,IAAI,KACtEtF,EAAa8U,GAAG1O,OAAe/mC,KAAM+/B,EAAM+O,GAAMjQ,OAAQC,EAASC,KAAK,KACvE4B,EAAa8U,GAAGzO,UAAehnC,KAAM+/B,EAAMxtD,IAAMssD,OAAQC,EAASC,KAAK,KAOvE4B,EAAaC,KAAOr0D,KAAK8f,MAAM9f,KAAKC,UAAUm0D,EAAa2U,KAG3D,IAAItT,EAAoBrB,EAAaC,KAkErC,IAAK,IAAI9qD,KA5DT4R,EAAKguD,cAAgB,SAAS1xE,GAC5B,IAAG28D,EAAa97D,eAAeb,GAI7B,MAAM,IAAI+D,MAAM,eAAiB/D,EAAO,iCAAmCG,OAAOwkB,KAAKg4C,GAAcn2D,KAAK,OAH1Gw3D,EAAoBrB,EAAa38D,IAWrC0jB,EAAKiuD,cAAgB,WACnB,IAAI,IAAI7/D,KAAO6qD,EACb,GAAGA,EAAa7qD,KAASksD,EACvB,OAAOlsD,GASb4R,EAAKkuD,gBACHruD,UAAW,SAAUliB,GACnB,OAAO,IAAIC,EAAKiiB,UAAUliB,EAAI,KAGhCmiB,SAAU,SAAUniB,GAClB,OAAO,IAAIC,EAAKkiB,SAASniB,IAG3BiiB,QAAS,SAAUjiB,GACjB,OAAOA,GAGTsB,OAAQ,SAAUtB,GAChB,OAAOA,IAYXqiB,EAAKy5C,oBAAsB,SAAU77D,GACnC,IAAKoiB,EAAKkuD,eAAetwE,GACvB,MAAM,IAAIsC,UAAU,qBAAuBtC,EAAO,KAGpD,OAAOoiB,EAAKkuD,eAAetwE,IAIby6D,GACV//B,EAAO+/B,EAAMjqD,IACZqR,WAAa6Y,EAAKmf,KAAKh4B,WAI9B,IAAK,IAAInjB,KAAQssE,EACf,GAAGA,EAAQzrE,eAAeb,GAAO,CAC/B,IAAIg8B,EAAO+/B,EAAMuQ,EAAQtsE,IACrB6xE,KACJ,IAAI,IAAI//D,KAAOkqB,EACVA,EAAKn7B,eAAeiR,KACrB+/D,EAAM//D,GAAOkqB,EAAKlqB,IAGtB+/D,EAAM7xE,KAAOA,EACb+7D,EAAM/7D,GAAQ6xE,EAmRlB,OAvOAnuD,EAAKwkB,WAAa,SAASt1B,EAAKxL,GAE9B,GAAmB,iBAAV,EACP,MAAM,IAAIxD,UAAU,6DAItB,GAAGwD,GAAWA,EAAQ+/C,SACpB,IAAI,IAAIr1C,KAAOc,EAIb,GAHGA,EAAI/R,eAAeiR,IACpB4R,EAAKouD,WAAWhgE,GAEfc,EAAId,GAAKigE,QACV,IAAI,IAAIryE,EAAE,EAAGA,EAAEkT,EAAId,GAAKigE,QAAQ9uE,OAAQvD,IACtCgkB,EAAKouD,WAAWl/D,EAAId,GAAKigE,QAAQryE,IAOzC,IAAIsyE,EACJ,IAAI,IAAIlgE,KAAOc,EACVA,EAAI/R,eAAeiR,KACpBkgE,EAAWtuD,EAAKuuD,iBAAiBngE,EAAKc,EAAId,KAG9C,OAAOkgE,GAkBTtuD,EAAKuuD,iBAAmB,SAASjyE,EAAM4S,EAAKxL,GAM1C,GAJG,MAAM,IACPwL,MAGkB,iBAAX,EACP,MAAM,IAAIhP,UAAU,mEAItB,GAAGm4D,EAAMl7D,eAAeb,GACtB,MAAM,IAAI+D,MAAM,uBAAyB/D,EAAO,4CAjGpD,SAA+BA,GAC7B,IAAI,IAAIN,EAAE,EAAGA,EAAEM,EAAKiD,OAAQvD,IAAK,CAC/B,IAAII,EAAIE,EAAKkW,OAAOxW,GAEhBwyE,EAAe,SAAUpxE,GAC3B,MAAO,aAAayF,KAAKzF,IAO3B,GAAS,IAANpB,IAAYwyE,EAAapyE,GAC1B,MAAM,IAAIiE,MAAM,yDAA2D/D,EAAO,KAEpF,GAAGN,EAAI,KAAQwyE,EAAapyE,KAPJA,EAQDA,IAPR,KAAOA,GAAK,KAQzB,MAAM,IAAIiE,MAAM,kEAAoE/D,EAAO,KAT/E,IAAUF,EA8F1BqyE,CAAsBnyE,GAEtB,IAGIoyE,EACApW,EAJAqW,EAAU,KACVN,KACAntB,EAAS,EAGb,GAAGhyC,GAAoB,SAAbA,EAAItR,KACZ+wE,EAAUz/D,EAAInB,aAEX,GAAmB,iBAAV,EACD,KAARmB,IACDw/D,EAAax/D,OAGZ,CAAA,GAAmB,iBAAV,EASZ,MAAM,IAAIhP,UAAU,uBAAyB5D,EAAO,WAAa4S,EAAIxI,WAAa,+CARlFgoE,EAAax/D,EAAIw/D,WACjBpW,EAAWppD,EAAIopD,SACfpX,EAAShyC,EAAIgyC,OACThyC,EAAIm/D,UACNA,EAAUn/D,EAAIm/D,QAAQrgE,WAO1B,GAAGqgE,EACD,IAAK,IAAIryE,EAAE,EAAGA,EAAEqyE,EAAQ9uE,OAAQvD,IAC9B,GAAGq8D,EAAMl7D,eAAekxE,EAAQryE,IAC9B,MAAM,IAAIqE,MAAM,wBAA0BguE,EAAQryE,GAAK,2CAK7D,GAAG0yE,GAAqC,iBAAjB,IAA8BC,EACnD,IACEA,EAAU3uD,EAAK2E,MAAM+pD,GAAavV,cAAc,IAElD,MAAO91C,GAEL,MADAA,EAAGzQ,QAAU,0BAA4BtW,EAAO,WAAaoyE,EAAa,MAAQrrD,EAAGzQ,QAChF,OAGD87D,GAAkC,SAApBA,EAAW9wE,OAC/B+wE,EAAUD,EAAW3gE,SAGvBsgE,EAAUA,MACVntB,EAASA,GAAU,EAEjBoX,EADCA,GAAYA,EAASsW,aACXxX,EAASkB,EAASsW,gBAElBxX,EAASC,KAKtB,IAAIwX,KACJ,GAAIF,EAuCC,CAEHE,GACEvyE,KAAMA,EACNiE,MAAOouE,EAAQpuE,MACfkf,WAAYkvD,EAAQlvD,WAAW5d,MAAM,GACrCy2D,SAAUA,EACVpX,OAAQA,GAIV,IAAI4tB,GAAW,EACf,IAAI,IAAI9yE,KAAK49D,EACX,GAAGA,EAAWz8D,eAAenB,GAAI,CAE/B,IADA,IAAIoJ,GAAQ,EACJyK,EAAE,EAAGA,EAAE0nD,EAAgBh4D,OAAQsQ,IACrC,GAAIhP,KAAKsF,KAAK0oE,EAAQpvD,WAAW5P,IAAM,IAAM+pD,EAAW59D,GAAGyjB,WAAW5P,IAAM,IAAM,MAAO,CACvFzK,GAAQ,EACR,MAGJ,GAAGA,EAAO,CACR0pE,GAAW,EACX,OAIFA,IACEC,EAAWzyE,EAAO,UAElB0yE,GAAgBvvD,WAAYkvD,EAAQlvD,WAAW5d,MAAM,KAC7CuM,IAAM2gE,EAClBnV,EAAWmV,GAAYC,EAEvB1U,EAAkByU,IAChBz2C,KAAMu2C,EACN1X,OAAQC,EAASC,KAAK,KAGxBwX,EAAQp3B,KAAOs3B,OA9EN,CAEX,IAAIA,EAAWzyE,EAAO,SACtB,GAAGi7D,EAAgB5xD,QAAQopE,IAAa,EACtC,MAAM,IAAI1uE,MAAM,gCAAkC/D,EAAO,2EAK3D,IAAI,IAAI4G,KAHRq0D,EAAgBj4D,KAAKyvE,GAGRnV,EACRA,EAAWz8D,eAAe+F,KAC3B02D,EAAW12D,GAAGuc,WAAW83C,EAAgBh4D,OAAO,GAAK,GAKzD,IAAIyvE,GAAgBvvD,eACpB,IAAQzjB,EAAE,EAAGA,EAAEu7D,EAAgBh4D,OAAQvD,IACrCgzE,EAAYvvD,WAAWzjB,GAAK,EAE9BgzE,EAAYvvD,WAAW83C,EAAgBh4D,OAAO,GAAK,EACnDyvE,EAAY5gE,IAAM2gE,EAClBnV,EAAWmV,GAAYC,EAEvBH,GACEvyE,KAAMA,EACNiE,MAAO,EACPkf,WAAYm6C,EAAWmV,GAAUtvD,WAAW5d,MAAM,GAClDy2D,SAAUA,EACVpX,OAAQA,EACRzJ,KAAMs3B,GAGRzU,EAAkByU,IAChBz2C,KAAMu2C,EACN1X,OAAQC,EAASC,KAAK,KAiD1B,IAFAr3C,EAAKq4C,MAAM/7D,GAAQuyE,EAEV7yE,EAAE,EAAGA,EAAEqyE,EAAQ9uE,OAAQvD,IAAK,CACnC,IAAIizE,EAAYZ,EAAQryE,GACpBmyE,KACJ,IAAI,IAAI//D,KAAOygE,EACVA,EAAQ1xE,eAAeiR,KACxB+/D,EAAM//D,GAAOygE,EAAQzgE,IAGzB+/D,EAAM7xE,KAAO2yE,EACbjvD,EAAKq4C,MAAM4W,GAAad,EAG1B,OAAO,IAAInuD,EAAK,KAAM1jB,IAGxB0jB,EAAKouD,WAAa,SAAS9xE,UAClB0jB,EAAKq4C,MAAM/7D,IAIpB0jB,EAAKo3C,SAAWA,EAChBp3C,EAAKu3C,gBAAkBA,EACvBv3C,EAAK45C,WAAaA,EAClB55C,EAAKi5C,aAAeA,EACpBj5C,EAAKq4C,MAAQA,EAENr4C,GAMT1kB,EAAQ0d,MAAO,GAKT,SAAUzd,EAAQD,EAASQ,GAEjC,aAGA,IAAIwB,EAAUxB,EAAoB,GAyDlCR,EAAQgB,KAAO,OACfhB,EAAQD,QAxDR,SAAkBuC,EAAMC,EAAQC,EAAMC,GAyBpC,IAAIu6B,EAAOv6B,EAAM,QACfiiB,KAAQ,SAAUriB,GAChB,OAAOA,EAAEoQ,SAGX5P,OAAU,SAAUR,GAClB,OAAIC,EAAKoiB,KAAKmP,gBAAgBxxB,GACrB,IAAIC,EAAKoiB,KAAK,KAAMriB,GAGtBC,EAAKoiB,KAAK2E,MAAMhnB,IAGzBuxE,kDAAmD,SAAU3uE,EAAO+3B,GAClE,OAAO,IAAI16B,EAAKoiB,KAAKzf,EAAO+3B,IAG9BvY,iBAAkB,SAAUpiB,GAC1B,OAAOL,EAAQK,EAAG26B,MAStB,OALAA,EAAKz5B,OACHE,EAAG,4BACHC,EAAG,sDAGEs5B,IASH,SAAU/8B,EAAQD,EAASQ,GAEjC,aAGcA,EAAoB,GAiFlCR,EAAQgB,KAAO,aACfhB,EAAQD,QAhFR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA4EpC,OAlCiBA,EAAM,cAGrBoxE,iBAAkB,SAASjgE,EAAKxL,GAC9B,OAAO9F,EAAKoiB,KAAKwkB,WAAWt1B,EAAKxL,IAInCjH,OAAU,SAASyS,GACjB,OAAOtR,EAAKoiB,KAAKwkB,WAAWt1B,OAI9BkgE,yCAA0C,SAAU9yE,EAAM+yE,EAAK3rE,GAC7D,IAAIwL,KAEJ,OADAA,EAAI5S,GAAQ+yE,EACLzxE,EAAKoiB,KAAKwkB,WAAWt1B,EAAKxL,IAInC4rE,iCAAkC,SAAUhzE,EAAM+yE,GAChD,IAAIngE,KAEJ,OADAA,EAAI5S,GAAQ+yE,EACLzxE,EAAKoiB,KAAKwkB,WAAWt1B,OAI9B/Q,OAAU,SAAU7B,GAClB,IAAI4S,KAEJ,OADAA,EAAI5S,MACGsB,EAAKoiB,KAAKwkB,WAAWt1B,WAa5B,SAAU3T,EAAQD,EAASQ,GAEjC,aAGcA,EAAoB,GAiClCR,EAAQgB,KAAO,YACfhB,EAAQD,QAhCR,SAAkBuC,EAAMC,EAAQC,EAAMC,GA2BpC,OANgBA,EAAM,aACpBwxE,cAAe,SAASj3C,EAAM+iC,GAC5B,OAAO/iC,EAAKoM,UAAU22B,QActB,SAAU9/D,EAAQD,EAASQ,GAEjC,IAAI6S,EAAO7S,EAAoB,GAAG6S,KAkFlC,SAAS6gE,EAAiBx2D,EAAM1c,EAAM2nD,GACpCt1C,EAAKqK,EAAM1c,EAAO2nD,GAClBt1C,EAAKqK,EAAKS,WAAWC,kBAAmBpd,EAAO2nD,GAGjD3oD,EAAQD,QApFR,SAAkBuC,EAAMC,EAAQC,EAAMC,EAAOib,GAG3C,SAASy2D,EAAUhpE,GACjB,IAAI6xB,EAAO16B,EAAKoiB,KAAK2E,MAAMle,GAE3B,OADA6xB,EAAKjd,WAAY,EACVid,EAMTk3C,EAAgBx2D,EAAM,eAAwB,WAAa,OAAOy2D,EAAU,sBAC5ED,EAAgBx2D,EAAM,sBAAwB,WAAa,OAAOy2D,EAAU,kCAC5ED,EAAgBx2D,EAAM,iBAAwB,WAAa,OAAOy2D,EAAU,yBAC5ED,EAAgBx2D,EAAM,wBAAwB,WAAa,OAAOy2D,EAAU,2BAG5ED,EAAgBx2D,EAAM,mBAA6B,WAAa,OAAOy2D,EAAU,4BACjFD,EAAgBx2D,EAAM,mBAA6B,WAAa,OAAOy2D,EAAU,4BACjFD,EAAgBx2D,EAAM,kBAA6B,WAAa,OAAOy2D,EAAU,uBACjFD,EAAgBx2D,EAAM,UAA6B,WAAa,OAAOy2D,EAAU,qCACjFD,EAAgBx2D,EAAM,mBAA6B,WAAa,OAAOy2D,EAAU,yBACjFD,EAAgBx2D,EAAM,eAA6B,WAAa,OAAOy2D,EAAU,6BACjFD,EAAgBx2D,EAAM,qBAA6B,WAAa,OAAOy2D,EAAU,yBACjFD,EAAgBx2D,EAAM,4BAA6B,WAAa,OAAOy2D,EAAU,yBACjFD,EAAgBx2D,EAAM,sBAA6B,WAAa,OAAOy2D,EAAU,0BACjFD,EAAgBx2D,EAAM,kBAA6B,WAAa,OAAOy2D,EAAU,6BACjFD,EAAgBx2D,EAAM,WAA6B,WAAa,OAAOy2D,EAAU,yBAIjFD,EAAgBx2D,EAAM,aAA2B,WAAa,OAAOy2D,EAAU,0BAC/ED,EAAgBx2D,EAAM,0BAA2B,WAAa,OAAOy2D,EAAU,0BAC/ED,EAAgBx2D,EAAM,eAA2B,WAAa,OAAOy2D,EAAU,yBAC/ED,EAAgBx2D,EAAM,gBAA2B,WAAa,OAAOy2D,EAAU,yBAC/ED,EAAgBx2D,EAAM,gBAA2B,WAAa,MAAO,mBACrEw2D,EAAgBx2D,EAAM,gBAA2B,WAAa,OAAOy2D,EAAU,wBAC/ED,EAAgBx2D,EAAM,aAA2B,WAAa,OAAOy2D,EAAU,0BAC/ED,EAAgBx2D,EAAM,eAA2B,WAAa,OAAOy2D,EAAU,yBAC/ED,EAAgBx2D,EAAM,cAA2B,WAAa,OAAOy2D,EAAU,yBAC/ED,EAAgBx2D,EAAM,uBAA2B,WAAa,OAAOy2D,EAAU,gCAC/ED,EAAgBx2D,EAAM,UAA2B,WAAa,OAAOy2D,EAAU,4BAC/ED,EAAgBx2D,EAAM,sBAA2B,WAAa,OAAOy2D,EAAU,2BAC/ED,EAAgBx2D,EAAM,kBAA2B,WAAa,MAAO,UACrEw2D,EAAgBx2D,EAAM,eAA2B,WAAa,OAAO,OAGrEw2D,EAAgBx2D,EAAM,aAAuB,WAAa,OAAOy2D,EAAU,0BAC3ED,EAAgBx2D,EAAM,WAAuB,WAAa,OAAOy2D,EAAU,4BAC3ED,EAAgBx2D,EAAM,YAAuB,WAAa,OAAOy2D,EAAU,4BAC3ED,EAAgBx2D,EAAM,UAAuB,WAAa,OAAOy2D,EAAU,2BAC3ED,EAAgBx2D,EAAM,iBAAuB,WAAa,OAAOy2D,EAAU,4BAE3ED,EAAgBx2D,EAAM,YAAuB,WAAa,OAAOy2D,EAAU,yBAC3ED,EAAgBx2D,EAAM,cAAuB,WAAa,OAAOy2D,EAAU,+BAC3ED,EAAgBx2D,EAAM,sBAAuB,WAAa,OAAOy2D,EAAU,mCAC3ED,EAAgBx2D,EAAM,cAAuB,WAAa,OAAOy2D,EAAU,gCAC3ED,EAAgBx2D,EAAM,gBAAuB,WAAa,OAAQ,cAClEw2D,EAAgBx2D,EAAM,kBAAuB,WAAa,OAAOy2D,EAAU,wBAC3ED,EAAgBx2D,EAAM,kBAAuB,WAAa,OAAOy2D,EAAU,+BAC3ED,EAAgBx2D,EAAM,mBAAuB,WAAa,OAAOy2D,EAAU,wBAG3ED,EAAgBx2D,EAAM,YAAqB,WAAa,OAAOy2D,EAAU,oBACzED,EAAgBx2D,EAAM,eAAqB,WAAa,OAAOy2D,EAAU,sBACzED,EAAgBx2D,EAAM,UAAqB,WAAa,OAAOy2D,EAAU,oBAIzED,EAAgBx2D,EAAM,eAAqB,WAAa,OAAOy2D,EAAU,sBACzED,EAAgBx2D,EAAM,aAAqB,WAAa,OAAOy2D,EAAU,qBACzED,EAAgBx2D,EAAM,aAAqB,WAAa,OAAOy2D,EAAU,qBACzED,EAAgBx2D,EAAM,eAAqB,WAAa,OAAOy2D,EAAU,yBACzED,EAAgBx2D,EAAM,oBAAqB,WAAa,OAAOy2D,EAAU,uBAW3En0E,EAAQqT,MAAO,EACfrT,EAAQ0d,MAAO,GAKT,SAAUzd,EAAQD,EAASQ,GAEjC,aAGA,IAAIkB,EAASlB,EAAoB,GAC7B4zE,EAAe5zE,EAAoB,IA+DvC,SAAS6zE,EAAY32D,EAAM1c,EAAMiE,GAC/ByY,EAAK1c,GAAQiE,EACbyY,EAAKS,WAAWC,kBAAkBpd,GAAQiE,EAI5C,SAASivE,EAAiBx2D,EAAM1c,EAAM2nD,GACpCjnD,EAAO2R,KAAKqK,EAAM1c,EAAO2nD,GACzBjnD,EAAO2R,KAAKqK,EAAKS,WAAWC,kBAAmBpd,EAAO2nD,GAGxD3oD,EAAQD,QAxER,SAASA,EAASuC,EAAMC,EAAQC,EAAMC,EAAOib,GAG3CA,EAAKmpB,GAAG,SAAU,SAAU1gC,EAAMD,GAC5BC,EAAKxC,SAAWuC,EAAKvC,QACvB5D,EAAQuC,EAAMC,EAAQC,EAAMC,EAAOib,KAIvC22D,EAAY32D,EAAM,QAAQ,GAC1B22D,EAAY32D,EAAM,SAAS,GAC3B22D,EAAY32D,EAAM,OAAQ,MAC1B22D,EAAY32D,EAAM,gBAAiB,2EAEb,cAAlBnb,EAAOoB,QACT0wE,EAAY32D,EAAM,WAAY,IAAIpb,EAAKiiB,UAAUlc,EAAAA,IACjDgsE,EAAY32D,EAAM,MAAO,IAAIpb,EAAKiiB,UAAUyD,MAE5CksD,EAAgBx2D,EAAM,KAAO,WAAa,OAAO02D,EAAa/lE,GAAG/L,EAAKiiB,aACtE2vD,EAAgBx2D,EAAM,MAAO,WAAa,OAAO02D,EAAatlE,IAAIxM,EAAKiiB,aACvE2vD,EAAgBx2D,EAAM,IAAO,WAAa,OAAO02D,EAAa5tE,EAAElE,EAAKiiB,aACrE2vD,EAAgBx2D,EAAM,MAAO,WAAa,OAAO02D,EAAallE,IAAI5M,EAAKiiB,aAGvE2vD,EAAgBx2D,EAAM,IAAW,WAAa,OAAOA,EAAKlX,IAC1D0tE,EAAgBx2D,EAAM,MAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,GAAG23B,OAC3Eg4B,EAAgBx2D,EAAM,OAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,IAAI23B,OAC5Eg4B,EAAgBx2D,EAAM,QAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,GAAG/H,IAAI,IAAIla,EAAKiiB,UAAU,GAAG23B,QACrGg4B,EAAgBx2D,EAAM,SAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,GAAG/H,IAAI,IAAIla,EAAKiiB,UAAU,IAAI23B,QACtGg4B,EAAgBx2D,EAAM,KAAW,WAAa,OAAOA,EAAKrP,KAC1D6lE,EAAgBx2D,EAAM,UAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,OAAOyP,SAC/EkgD,EAAgBx2D,EAAM,QAAW,WAAa,OAAO,IAAIpb,EAAKiiB,UAAU,GAAGyP,WAG3EqgD,EAAY32D,EAAM,WAAYrV,EAAAA,GAC9BgsE,EAAY32D,EAAM,MAAYsK,KAE9BqsD,EAAY32D,EAAM,KAAOnY,KAAKmhC,IAC9B2tC,EAAY32D,EAAM,MAAiB,EAAVnY,KAAKmhC,IAC9B2tC,EAAY32D,EAAM,IAAOnY,KAAK8jC,GAC9BgrC,EAAY32D,EAAM,MAAO,mBAGzB22D,EAAY32D,EAAM,IAAeA,EAAKlX,GACtC6tE,EAAY32D,EAAM,MAAenY,KAAKm7B,KACtC2zC,EAAY32D,EAAM,OAAenY,KAAK4D,MACtCkrE,EAAY32D,EAAM,QAAenY,KAAKo7B,OACtC0zC,EAAY32D,EAAM,SAAenY,KAAKq7B,QACtCyzC,EAAY32D,EAAM,KAAeA,EAAKrP,IACtCgmE,EAAY32D,EAAM,UAAenY,KAAKs7B,SACtCwzC,EAAY32D,EAAM,QAAenY,KAAKu7B,QAIxCuzC,EAAY32D,EAAM,IAAKpb,EAAKgiB,QAAQia,GAGpC81C,EAAY32D,EAAM,UAAWld,EAAoB,OAgBnDR,EAAQqT,MAAO,EACfrT,EAAQ0d,MAAO,GAIT,SAAUzd,EAAQD,GAExBC,EAAOD,QAAU,SAOX,SAAUC,EAAQD,EAASQ,GAEjCP,EAAOD,SAGLQ,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KAEpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,OAMhB,SAAUP,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,eACZ16B,QACE,gBAEFyyB,YACI,+CACJC,UACE,YACA,kCACA,mBACA,uBACA,8BAEFiI,SACE,UAAW,UAAW,WAAY,QAAS,SAAU,SAAU,UAO7D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,eACZ16B,QACE,IACA,cAEFyyB,YACI,6CACJC,UACE,aACA,aACA,aACA,kBACA,mBACA,yBAEFiI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO7D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,eACZ16B,QACE,YACA,kBACA,mBAEFyyB,YACI,2BACJC,UACE,YACA,gBACA,qBAEFiI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO7D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,aACRywC,SAAY,eACZ16B,QACE,0BACA,gCAEFyyB,YACI,iEACJC,UACE,oBACA,uFACA,oCAEFiI,SACE,OAAQ,eAON,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,eACZ16B,QACE,gBACA,qBAEFyyB,YACE,uEACFC,UACE,kBACA,mCAEFiI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO9D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,UACA,cACA,mBACA,yBACA,kCACA,+CAEFyyB,YACI,yDACJC,UACE,KACA,YACA,yBACA,UACA,eACA,4BAEFiI,SACE,YAAa,UAAW,UAAW,UAAW,SAAU,QAAS,SAAU,UAOzE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,eACZ16B,QACE,KACA,6BACA,WACA,kBACA,iBAEFyyB,YACI,mBACJC,UACE,KACA,YACA,qBACA,WACA,iBACA,iCACA,4CAEFiI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,OAAQ,YAOtE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,eACZ16B,QACE,IACA,YACA,+BAEFyyB,YACI,gEACJC,UACE,IACA,MACA,OACA,YACA,gBACA,eACA,oCACA,6BAEFiI,SACE,YAAa,UAAW,UAAW,WAAY,QAAS,SAAU,SAAU,UAO1E,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,eACZ16B,QACE,WACA,qCACA,gDAEFyyB,YACA,0BACAC,UACE,WACA,uBACA,kCAEFiI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,OAAQ,YAOtE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,eACZ16B,QACE,wCAEFyyB,YACI,6EACJC,UACE,oCAEFiI,SACE,OAAQ,gBAON,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,eACZ16B,QACE,SACA,aAEFyyB,YACI,iDACJC,UACE,iBACA,cACA,kBAEFiI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO9D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,aACA,oBACA,gBAEFyyB,YACI,iBACJC,UACE,SACA,SACA,wBACA,kBAEFiI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,YAO9D,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,YACZ16B,QACE,SAEFyyB,YAAe,sBACfC,UACE,SAEFiI,SAAY,UAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,IACRywC,SAAY,YACZ16B,QACE,KAEFyyB,YAAe,sIACfC,UACE,IACA,QACA,YAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,YACZ16B,QACE,YAEFyyB,YAAe,6GACfC,UACE,WACA,SAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,OAEFyyB,YAAe,mEACfC,UACE,MACA,UAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,YACZ16B,QACE,QAEFyyB,YAAe,oEACfC,UACE,OACA,WAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,YACZ16B,QACE,SAEFyyB,YAAe,kEACfC,UACE,QACA,aAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,YACZ16B,QACE,UAEFyyB,YAAe,mEACfC,UACE,SACA,cAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,OAEFyyB,YAAe,eACfC,UACE,MACA,SAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,YACZ16B,QACE,QAEFyyB,YAAe,aACfC,UACE,QAEFiI,SAAY,OAAQ,WAMhB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,OAEFyyB,YAAe,mOACfC,UACE,OAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,YACZ16B,QACE,WAEFyyB,YAAe,+DACfC,UACE,UACA,aAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,YACZ16B,QACE,SAEFyyB,YAAe,6DACfC,UACE,QACA,WAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,OAEFyyB,YAAe,0GACfC,UACE,MACA,UAEFiI,SAAY,QAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,YACZ16B,QACE,QAEFyyB,YAAe,qBACfC,UACE,QAEFiI,SAAY,WAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,YACZ16B,QACE,WAEFyyB,YAAe,8CACfC,UACE,WAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,aACRywC,SAAY,UACZ16B,QACE,6BACA,mDAEFyyB,YAAe,4OACfC,UACE,0BACA,6CACA,mCACA,6BACA,uBACA,iBACA,wBACA,mBAEFiI,SACE,WAAY,QAAS,UAOnB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,UACZ16B,QACE,kBAEFyyB,YACA,iHACAC,UACE,oBACA,cACA,oBAEFiI,SACE,MAAO,UAAW,SAAU,SAAU,YAOpC,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UAEFyyB,YACA,sIACAC,UACE,wBACA,gCACA,iCAEFiI,SACE,UAAW,SAAU,SAAU,SAAU,SAAU,MAAO,QAOxD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,UACZ16B,QACE,kBACA,oBAEFyyB,YAAe,gGACfC,UACE,oBACA,cACA,qBAEFiI,SACE,MAAO,MAAO,SAAU,SAAU,SAAU,YAO1C,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,UACZ16B,QACE,iBACA,yBAEFyyB,YAAe,+BACfC,UACE,wBACA,qBACA,+BACA,2BACA,2BAEFiI,SACE,aAAc,QAAS,UAOrB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,UACZ16B,QACE,oBACA,2BACA,sCAEFyyB,YAAe,mPACfC,UACE,gCACA,uCAEFiI,SACE,cAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,4BAEFyyB,YAAe,wKACfC,UACE,2FAEFiI,SACE,UAAW,SAAU,SAAU,SAAU,SAAU,MAAO,QAOxD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,UACZ16B,QACE,kBAEFyyB,YACA,iHACAC,UACE,oFAEFiI,SACE,MAAO,UAAW,SAAU,SAAU,YAOpC,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SAEFyyB,YACA,uKACAC,UACE,4DAEFiI,SACE,MAAO,MAAO,YAOZ,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,UAEFyyB,YAAe,8BACfC,UACE,WACA,aAEFiI,SAAY,UAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,QACA,aAEFyyB,YAAe,kBACfC,UACE,gBACA,UACA,SACA,gBACA,eAEFiI,SACE,cAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,UACA,qBAEFyyB,YACI,iQACJC,UACE,WACA,UACA,WACA,eACA,WACA,iBACA,gBAEFiI,SACE,SACA,OACA,OACA,cAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,WAEFyyB,YACI,wHACJC,UACE,YACA,YACA,cAEFiI,SAAY,QAAS,MAAO,WAMxB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,WAEFyyB,YAAe,2DACfC,UACE,UACA,MACA,aAEFiI,SACE,WACA,SACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,YACZ16B,QACE,QACA,gBAEFyyB,YAAe,qBACfC,UACE,YACA,QACA,UACA,YACA,cACA,eAEFiI,SACE,cAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,YACZ16B,QACE,SACA,mBAEFyyB,YAAe,kCACfC,UACE,yBACA,yBACA,UAEFiI,SACE,WACA,cACA,YAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,YACZ16B,QACE,SACA,qBAEFyyB,YAAe,oCACfC,UACE,yBACA,yBACA,UAEFiI,SACE,WACA,SACA,eAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,YACZ16B,QACE,SACA,gBAEFyyB,YACI,+CACJC,UACE,yBACA,UAEFiI,SACE,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,UAEFyyB,YAAe,qCACfC,UACE,WACA,UACA,gBACA,UACA,uDAEFiI,SACE,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,UAEFyyB,YACI,sGACJC,UACE,WACA,WACA,YACA,aAEFiI,SAAY,OAAQ,QAAS,WAMzB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,YAEFyyB,YACI,yHACJC,UACE,aACA,aACA,eAEFiI,SAAY,OAAQ,MAAO,WAMvB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,YACA,qBAEFyyB,YAAe,uCACfC,UACE,aACA,aACA,oBAEFiI,SAAa,MAAO,UAMhB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,sBACA,yBAEFyyB,YAAe,mDACfC,UACE,cACA,kBACA,YACA,oBAEFiI,SAAa,MAAO,UAMhB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,aAEFyyB,YAAe,qCACfC,UACE,YACA,aACA,iBAEFiI,SAAa,SAMT,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,SACA,gBAEFyyB,YAAe,8NACfC,UACE,WACA,eACA,SACA,SACA,iBACA,uBACA,mBACA,SAEFiI,SACE,MACA,WAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,YAEFyyB,YAAe,4CACfC,UACE,iBACA,eACA,SACA,uBACA,kBAEFiI,SACE,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,QACA,UACA,aAEFyyB,YACI,gEACJC,UACE,QACA,SACA,WACA,mBACA,WACA,YAEFiI,SAAY,YAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,YACZ16B,QACE,QACA,kBAEFyyB,YAAe,uBACfC,UACE,gBACA,UACA,YACA,cACA,cAEFiI,SACE,YAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,UACA,cAEFyyB,YAAe,oDACfC,UACE,YACA,aACA,eACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOE,SAAUxpC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,aACZ16B,QACE,aACA,oBAEFyyB,YAAe,qJAGfC,UACE,QACA,iBACA,gBACA,WAEFiI,SACE,OACA,SAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,YACZ16B,QACE,QACA,aAEFyyB,YACI,uCACJC,UACE,MACA,QACA,oBAEFiI,SAAa,cAMT,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,WACA,eAE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aACRywC,SAAY,gBACZ16B,QACE,oBAEFyyB,YAAe,kRACfC,UACE,oBAEFiI,SAAY,iBAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,OACZ16B,QACE,WACA,mBAEFyyB,YAAe,6CACfC,UACE,WACA,YACA,+BACA,aAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,OACZ16B,QACE,oBACA,8BAEFyyB,YAAe,gDACfC,UACE,4CACA,UACA,cAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,OACZ16B,QACE,oBACA,2BAEFyyB,YAAe,2BACfC,UACE,iDACA,YACA,mBAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UAEFyyB,YACI,iGACJC,UACE,cACA,cACA,eAEFiI,SACE,KACA,KACA,OACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,UACZ16B,QACE,WAEFyyB,YACI,gGACJC,UACE,eACA,eACA,eAEFiI,SACE,KACA,KACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SAEFyyB,YAAe,yCACfC,UACE,aACA,aACA,YACA,WAEFiI,SACE,KACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SAEFyyB,YAAe,8CACfC,UACE,aACA,aACA,YACA,WAEFiI,SACE,KACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,mBACA,oCAEFyyB,YAAe,uDACfC,UACE,gBACA,2BAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,eACA,gBAEFyyB,YAAe,oDACfC,UACE,aACA,mBAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,WACZ16B,QACE,+BACA,iCAEFyyB,YAAe,wDACfC,UACE,yBACA,4BAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,WACZ16B,QACE,wCACA,kCAEFyyB,YAAe,0DACfC,UACE,gDACA,mDAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UACA,aAEFyyB,YAAe,uFACfC,UACE,iBACA,gBACA,WAEFiI,SACE,MAAO,KAAM,SAOX,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,QACA,UAEFyyB,YAAe,0DACfC,UACE,WACA,YACA,QACA,SAEFiI,SACE,MAAO,KAAM,SAOX,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,KACRywC,SAAY,UACZ16B,QACE,SACA,YAEFyyB,YAAe,mFACfC,UACE,gBACA,iBACA,UAEFiI,SACE,MAAO,MAAO,SAOZ,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UACA,aAEFyyB,YAAe,2GACfC,UACE,iBACA,kBACA,gBACA,WAEFiI,SACE,MAAO,MAAO,QAOZ,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,SACZ16B,QACE,uBACA,6BAEFyyB,YAAe,iKACfC,UACE,mBACA,mBACA,eACA,kBACA,mBAEFiI,SACE,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAO/F,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,SACZ16B,QACE,eAEFyyB,YAAe,0EACfC,UACE,+BACA,+BACA,gCAEFiI,SACE,WACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,SACZ16B,QACE,UAEFyyB,YAAe,wCACfC,UACE,oBACA,uCAEFiI,SACE,SAAU,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,SACZ16B,QACE,UACA,cAEFyyB,YAAe,4aACfC,UACE,YACA,eACA,kCACA,WAEFiI,SACE,SAAU,MAAO,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOjG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,SACZ16B,QACE,YACA,SAEFyyB,YAAe,6LAGfC,UACE,4BACA,yBAEFiI,SACE,WACA,WAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,SACZ16B,QACE,SACA,YACA,eAEFyyB,YAAe,yGACfC,UACE,SACA,YACA,yBACA,gBAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,SACZ16B,QACE,mBAEFyyB,YAAe,4BACfC,UACE,wBACA,wCACA,oCAEFiI,SAAY,OAAQ,MAAO,aAMvB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,SACZ16B,QACE,cAEFyyB,YAAe,uEACfC,UACE,yBACA,UACA,iBACA,WAEFiI,SACE,SAAU,SAAU,OAAQ,aAO1B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,SACZ16B,QACE,wBAEFyyB,YAAe,0FACfC,UACE,0DAEFiI,SAAY,MAAO,OAAQ,YAMvB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,SACZ16B,QACE,UAEFyyB,YAAe,oCACfC,UACE,oBACA,SACA,SAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,SACZ16B,QACE,cAEFyyB,YAAe,6DACfC,UACE,2CACA,wBAEFiI,SACE,WAAY,MAAO,WAOjB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,SACZ16B,QACE,oBAEFyyB,YAAe,qHACfC,UACE,0BAEFiI,SAAY,SAAU,aAMlB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,SACZ16B,QACE,UACA,aACA,qBACA,YACA,eACA,wBAEFyyB,YAAe,mCACfC,UACE,UACA,aACA,oBACA,yBACA,iBAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOjG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,kBACRywC,SAAY,SACZ16B,QACE,wBACA,kCAEFyyB,YAAe,uIACfC,UACE,iCACA,4CAEFiI,SAAY,UAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,OACZ16B,QACE,YACA,iBACA,oBACA,0BACA,iBAEFyyB,YACI,iFACJC,UACE,MACA,UACA,cACA,kBACA,gBACA,+BACA,eAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOhG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,SACZ16B,QACE,kBACA,iCAEFyyB,YAAe,mBACfC,UACE,2BACA,uBACA,2BACA,oBACA,6BAEFiI,SACE,OAAQ,SAAU,UAAW,aAO3B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,SACZ16B,QACE,qBAEFyyB,YAAe,qEACfC,UACE,sCACA,oCACA,kCAEFiI,SACE,OAAQ,UAAW,YAOjB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,SACZ16B,QACE,WAEFyyB,YAAe,kCACfC,UACE,YACA,sBACA,yBACA,UACA,aAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,UAAW,SAAU,QAAS,YAAa,WAOjG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,SACZ16B,QACE,UACA,oBAEFyyB,YAAe,2GACfC,UACE,mBACA,6BACA,+CACA,iDACA,qCAEFiI,SAAY,MAAO,SAAU,aAMzB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,SACZ16B,QACE,cAEFyyB,YAAe,6DACfC,UACE,mBACA,mBACA,mBACA,oBAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,SAAU,QAAS,YAAa,WAO9F,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,SACZ16B,QACE,eACA,6BACA,yBACA,uCAEFyyB,YAAe,8HAGfC,UACE,mBACA,SACA,qBACA,mBACA,YACA,UACA,WAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,QAAS,YAAa,WAO/F,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,SACZ16B,QACE,YAEFyyB,YAAe,oGACfC,UACE,mCACA,YAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,YAAa,WAOhG,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,SACZ16B,QACE,KACA,gBAEFyyB,YAAe,qBACfC,UACE,yBACA,KACA,gBAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,WAO5F,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,SACZ16B,QACE,WACA,cACA,sBACA,aACA,gBACA,yBAEFyyB,YAAe,oCACfC,UACE,WACA,cACA,yBACA,kBAEFiI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,eAO5F,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,eACRywC,SAAY,cACZ16B,QACE,sBAEFyyB,YAAe,kEACfC,UACE,sBAEFiI,SAAY,eAAgB,eAMxB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,cACZ16B,QACE,KACA,gBAEFyyB,YAAe,mCACfC,UACE,KACA,oBACA,MAEFiI,SAAY,eAAgB,eAAgB,WAMxC,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,cACZ16B,QACE,YAEFyyB,YAAe,6IACfC,UACE,WACA,KACA,aACA,YAEFiI,SAAY,eAMR,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,eACRywC,SAAY,cACZ16B,QACE,sBAEFyyB,YAAe,6EACfC,UACE,8CAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,cACZ16B,QACE,kBAEFyyB,YAAe,4OACfC,UACE,0BAEFiI,SAAY,eAAgB,eAKxB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,eACRywC,SAAY,cACZ16B,QACE,kBACA,sBAEFyyB,YAAe,kEACfC,UACE,kBACA,sBAEFiI,SAAY,eAAgB,eAMxB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,aACRywC,SAAY,cACZ16B,QACE,oBACA,4BACA,6BACA,qCACA,sCAEFyyB,YACI,0CACJC,UACE,mBACA,2BACA,8BACA,yCACA,4CACA,6CAEFiI,SAAY,SAAU,eAMlB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,cACZ16B,QACE,WACA,cACA,mBACA,eACA,oBACA,0BAEFyyB,YACI,0BACJC,UACE,WACA,iBACA,kBAEFiI,SAAY,aAAc,eAMtB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,cACZ16B,QACE,iBACA,sBACA,kBACA,uBACA,6BAEFyyB,YACI,iCACJC,UACE,oBACA,yBAEFiI,SAAY,aAAc,YAKtB,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,aACZ16B,QACE,iBAEFyyB,YACI,8GACJC,UACE,gBACA,gBACA,gBACA,qBACA,yBAEFiI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,oBAOtD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,iBACRywC,SAAY,aACZ16B,QACE,wBAEFyyB,YAAe,kEACfC,UACE,uBACA,uBACA,uBACA,4BACA,4BACA,iCACA,uCACA,oCACA,iCACA,kCAEFiI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOtD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,aACZ16B,QACE,mBAEFyyB,YACI,+IACJC,UACE,8BACA,6BAEFiI,SACE,QAAS,UAAW,UAAW,SAAU,YAAa,WAAY,aAOhE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,aACZ16B,QACE,SACA,eAEFyyB,YACI,wFACJC,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFiI,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOlE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,aACZ16B,QACE,QACA,gBAEFyyB,YACI,2FACJC,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFiI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOtD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,aACZ16B,QACE,SACA,kBAEFyyB,YACI,yGACJC,UACE,WACA,UACA,UACA,YACA,YAEFiI,SACE,QAAS,UAAW,YAAa,UAAW,aAO1C,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,aACZ16B,QACE,QACA,iBAEFyyB,YACI,mGACJC,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFiI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOrD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,YACRywC,SAAY,aACZ16B,QACE,SACA,mBAEFyyB,YACI,0GACJC,UACE,WACA,UACA,UACA,YACA,YAEFiI,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOnD,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,aACZ16B,QACE,SACA,iBAEFyyB,YACI,uGACJC,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFiI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOhE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,eACRywC,SAAY,MACZ16B,QACE,4BAEFyyB,YACI,6IACJC,UACE,gCAEFiI,SACE,WAAY,eAAgB,gBAAiB,iBAO3C,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,gBACRywC,SAAY,MACZ16B,QACE,6BAEFyyB,YACI,8LACJC,UACE,4CACA,qDAEFiI,SACE,WAAY,eAAgB,sBAO1B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,MACZ16B,QACE,oBAEFyyB,YACI,2IACJC,UACE,mCAEFiI,SACE,qBAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,eACRywC,SAAY,MACZ16B,QACE,4BAEFyyB,YACI,wIACJC,UACE,2CACA,oDAEFiI,SACE,WAAY,mBAOV,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,MACZ16B,QACE,2BAEFyyB,YACI,wMACJC,UACE,oCACA,qCAEFiI,SACE,WAAY,eAAgB,mBAO1B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,kBACRywC,SAAY,MACZ16B,QACE,iCAEFyyB,YACI,kJACJC,UACE,mCACA,oCAEFiI,SACE,cAAe,aAOb,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,MACZ16B,QACE,oBAEFyyB,YACI,gMACJC,UACE,0BAEFiI,SACE,kBAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,UACRywC,SAAY,MACZ16B,QACE,eACA,wBAEFyyB,YACI,sNACJC,UACE,wBACA,+BAEFiI,SACE,WAAY,eAAgB,mBAO1B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,mBACRywC,SAAY,MACZ16B,QACE,gCAEFyyB,YACI,gJACJC,UACE,+CACA,wDAEFiI,SACE,WAAY,eAAgB,mBAO1B,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,WACRywC,SAAY,MACZ16B,QACE,wBAEFyyB,YACI,iIACJC,UACE,uCACA,gDAEFiI,SACE,eAAgB,mBAOd,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,UACZ16B,QACE,UAEFyyB,YAAe,6GACfC,UACE,WACA,YACA,UAEFiI,aAMI,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,UAEFyyB,YAAe,8KACfC,UACE,kBACA,kBAEFiI,SACE,OACA,SACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,eAEFyyB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,UACA,gBAEFyyB,YAAe,mDACfC,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFiI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRywC,SAAY,aACZ16B,QACE,uBACA,aAEFyyB,YAAe,mLACfC,UACE,kBACA,yBAEFiI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,MACA,iBAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,eAEFyyB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,UACA,4BAEFyyB,YAAe,2HACfC,UACE,sBACA,8BACA,uBAEFiI,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,aACZ16B,QACE,qBACA,WAEFyyB,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRywC,SAAY,aACZ16B,QACE,iCACA,gDACA,+BAEFyyB,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEFiI,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,yBAEFyyB,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,UAEFyyB,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEFiI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,aACZ16B,QACE,oBACA,SACA,yBAEFyyB,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,oDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,6FACfC,UACE,cAEFiI,SACE,OACA,QACA,WAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,8CACfC,UACE,YACA,iBACA,WAEFiI,SACE,MACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,6GACfC,UACE,WACA,cAEFiI,SACE,QACA,WAME,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,8CACfC,UACE,UACA,iBACA,aAEFiI,SACE,MACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,sGACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,2CACfC,UACE,YACA,iBACA,WAEFiI,SACE,OACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,2CACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,kDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,8FACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,qDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,YAEFyyB,YAAe,mGACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRywC,SAAY,eACZ16B,QACE,eAEFyyB,YACI,qEACJC,UACE,mBACA,wBACA,iBACA,iBACA,eAEFiI,SACE,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,eACZ16B,QACE,UAEFyyB,YAAe,sCACfC,UACE,SACA,kBACA,eACA,cACA,2BAEFiI,SACE,OACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,iDACfC,UACE,aAEFiI,SACE,OACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,eACZ16B,QACE,UAEFyyB,YAAe,6DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,oDACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,eACZ16B,QACE,UAEFyyB,YAAe,4DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,wEACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,eACZ16B,QACE,UAEFyyB,YAAe,0DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRywC,SAAY,eACZ16B,QACE,WAEFyyB,YAAe,sEACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAUzxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRywC,SAAY,eA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","file":"math.js"} \ No newline at end of file diff --git a/docs/reference/functions/isPrime.md b/docs/reference/functions/isPrime.md index d154965cc..a0a260728 100644 --- a/docs/reference/functions/isPrime.md +++ b/docs/reference/functions/isPrime.md @@ -36,7 +36,7 @@ math.isPrime(0); // returns false math.isPrime(-0); // returns false math.isPrime(0.5); // returns false math.isPrime('2'); // returns true -math.isPrime([2, 17, 100]'); // returns [true, true, false] +math.isPrime([2, 17, 100]); // returns [true, true, false] ``` diff --git a/lib/version.js b/lib/version.js index 16fcbba48..10a53e67f 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1,3 +1,3 @@ -module.exports = '4.0.0'; +module.exports = '4.0.1'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. diff --git a/package-lock.json b/package-lock.json index fb6fda5dd..f0b2ad491 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "4.0.0", + "version": "4.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -5812,9 +5812,9 @@ } }, "typed-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-1.0.1.tgz", - "integrity": "sha512-Ie5d+HS39FU+sKj5nzcSV9pucMOtHsomaZPaxX9CWnxeqcdBkGl0cGKx1xd5v+b1czUd1iVa/RMZbsN8wnfGPg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-1.0.3.tgz", + "integrity": "sha512-sVC/1pm70oELDFMdYtFXMFqyawenLoaDiAXA3QvOAwKF/WvFNTSJN23cY2lFNL8iP0kh3T0PPKewrboO8XUVGQ==" }, "typedarray-pool": { "version": "1.1.0", diff --git a/package.json b/package.json index b882b97a0..e4b8be37c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "4.0.0", + "version": "4.0.1", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.", "author": "Jos de Jong (https://github.com/josdejong)", "contributors": [ From c5fb3bcbc5e6f020c98936eba19abb9483cf54d4 Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 19 Mar 2018 22:03:00 +0100 Subject: [PATCH 4/8] More clear docs on the `number` configuration, see #1064 --- docs/core/configuration.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/core/configuration.md b/docs/core/configuration.md index 5e208f204..65f783142 100644 --- a/docs/core/configuration.md +++ b/docs/core/configuration.md @@ -23,17 +23,23 @@ The following configuration options are available: determined by the option `matrix`. In case of mixed matrix inputs, a matrix will be returned always. -- `number`. The default type of numbers. This setting is used by functions - like `eval` which cannot determine the correct type of output from the - functions input. For most functions though, the type of output is determined - from the the input: a number as input will return a number as output, +- `number`. The type of numeric output for functions which cannot + determine the numeric type from the inputs. For most functions though, + the type of output is determined from the the input: + a number as input will return a number as output, a BigNumber as input returns a BigNumber as output. + + For example the functions `math.eval('2+3')`, `math.parse('2+3')`, + `math.range('1:10')`, and `math.unit('5cm')` use the `number` configuration + setting. But `math.sqrt(4)` will always return the number `2` + regardless of the `number` configuration, because the input is a number. + Available values are: `'number'` (default), `'BigNumber'`, or `'Fraction'`. [BigNumbers](../datatypes/bignumbers.js) have higher precision than the default numbers of JavaScript, and [`Fractions`](../datatypes/fractions.js) store values in terms of a numerator and denominator. -- `precision`. The maximum number of significant digits for bigNumbers. +- `precision`. The maximum number of significant digits for BigNumbers. This setting only applies to BigNumbers, not to numbers. Default value is `64`. From c591c073474b248f9b34b6dc8ead3b226216197b Mon Sep 17 00:00:00 2001 From: Dakota Blair Date: Wed, 7 Mar 2018 18:56:15 +0000 Subject: [PATCH 5/8] Fixed #851: More consistent behavior of sqrt, nthRoot, and pow --- .../function/arithmetic/nthRoot.js | 7 ++-- .../function/arithmetic/nthRoots.js | 23 ++++++++++++ .../embeddedDocs/function/arithmetic/pow.js | 7 +++- .../embeddedDocs/function/arithmetic/sqrt.js | 5 ++- lib/expression/embeddedDocs/index.js | 1 + lib/function/arithmetic/index.js | 1 + lib/function/arithmetic/nthRoot.js | 26 +++----------- lib/function/arithmetic/nthRoots.js | 35 +++++++++++++++++++ test/function/arithmetic/nthRoot.test.js | 17 ++------- test/function/arithmetic/nthRoots.test.js | 25 +++++++++++++ test/function/arithmetic/pow.test.js | 4 ++- 11 files changed, 108 insertions(+), 43 deletions(-) create mode 100644 lib/expression/embeddedDocs/function/arithmetic/nthRoots.js create mode 100644 lib/function/arithmetic/nthRoots.js create mode 100644 test/function/arithmetic/nthRoots.test.js diff --git a/lib/expression/embeddedDocs/function/arithmetic/nthRoot.js b/lib/expression/embeddedDocs/function/arithmetic/nthRoot.js index 0b8abf3de..9b3fa0570 100644 --- a/lib/expression/embeddedDocs/function/arithmetic/nthRoot.js +++ b/lib/expression/embeddedDocs/function/arithmetic/nthRoot.js @@ -15,7 +15,8 @@ module.exports = { 'sqrt(9)' ], 'seealso': [ - 'sqrt', - 'pow' + 'nthRoots', + 'pow', + 'sqrt' ] -}; \ No newline at end of file +}; diff --git a/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js b/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js new file mode 100644 index 000000000..41d297e4c --- /dev/null +++ b/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js @@ -0,0 +1,23 @@ +module.exports = { + 'name': 'nthRoots', + 'category': 'Arithmetic', + 'syntax': [ + 'nthRoots(A)', + 'nthRoots(A, root)' + ], + 'description': ('' + + 'Calculate the nth roots of a value. ' + + 'An nth root of a positive real number A, ' + + 'is a positive real solution of the equation "x^root = A". ' + + 'This function returns a list of complex values in polar form.' + ), + 'examples': [ + 'nthRoots(1) == [ { r: 1, phi: 0 }, { r: 1, phi: 3.141592653589793 } ]', + 'nthRoots(1, 3) == [ { r: 1, phi: 0 }, { r: 1, phi: 2.0943951023931953 }, { r: 1, phi: 4.1887902047863905 } ]' + ], + 'seealso': [ + 'sqrt', + 'pow', + 'nthRoot' + ] +}; diff --git a/lib/expression/embeddedDocs/function/arithmetic/pow.js b/lib/expression/embeddedDocs/function/arithmetic/pow.js index 866fdebaf..c9b85633a 100644 --- a/lib/expression/embeddedDocs/function/arithmetic/pow.js +++ b/lib/expression/embeddedDocs/function/arithmetic/pow.js @@ -12,5 +12,10 @@ module.exports = { '2*2*2', '1 + e ^ (pi * i)' ], - 'seealso': [ 'multiply' ] + 'seealso': [ + 'multiply', + 'nthRoot', + 'nthRoots', + 'sqrt' + ] }; diff --git a/lib/expression/embeddedDocs/function/arithmetic/sqrt.js b/lib/expression/embeddedDocs/function/arithmetic/sqrt.js index d2d6d1cea..d540be591 100644 --- a/lib/expression/embeddedDocs/function/arithmetic/sqrt.js +++ b/lib/expression/embeddedDocs/function/arithmetic/sqrt.js @@ -13,6 +13,9 @@ module.exports = { ], 'seealso': [ 'square', - 'multiply' + 'multiply', + 'nthRoot', + 'nthRoots', + 'pow' ] }; diff --git a/lib/expression/embeddedDocs/index.js b/lib/expression/embeddedDocs/index.js index a21a7e2c7..4b9966af8 100644 --- a/lib/expression/embeddedDocs/index.js +++ b/lib/expression/embeddedDocs/index.js @@ -130,6 +130,7 @@ function factory (construction, config, load, typed) { docs.multiply = require('./function/arithmetic/multiply'); docs.norm = require('./function/arithmetic/norm'); docs.nthRoot = require('./function/arithmetic/nthRoot'); + docs.nthRoots = require('./function/arithmetic/nthRoots'); docs.pow = require('./function/arithmetic/pow'); docs.round = require('./function/arithmetic/round'); docs.sign = require('./function/arithmetic/sign'); diff --git a/lib/function/arithmetic/index.js b/lib/function/arithmetic/index.js index cca4cd9d5..dfa1b7c5e 100644 --- a/lib/function/arithmetic/index.js +++ b/lib/function/arithmetic/index.js @@ -21,6 +21,7 @@ module.exports = [ require('./multiply'), require('./norm'), require('./nthRoot'), + require('./nthRoots'), require('./pow'), require('./round'), require('./sign'), diff --git a/lib/function/arithmetic/nthRoot.js b/lib/function/arithmetic/nthRoot.js index fb7140ba0..a8a7d1e8d 100644 --- a/lib/function/arithmetic/nthRoot.js +++ b/lib/function/arithmetic/nthRoot.js @@ -51,9 +51,11 @@ function factory (type, config, load, typed) { return _bigNthRoot(x, new type.BigNumber(2)); }, 'Complex' : function(x) { - return _nthComplexRoot(x, 2); + throw new Error('Argument must not be type Complex'); }, - 'Complex, number' : _nthComplexRoot, + 'Complex, number' : function(x, y) { + throw new Error('Argument must not be type Complex'); + }, 'BigNumber, BigNumber': _bigNthRoot, 'Array | Matrix': function (x) { @@ -245,25 +247,5 @@ function _nthRoot(a, root) { */ } -/** - * Calculate the nth root of a Complex Number a using De Moviers Theorem. - * @param {Complex} a - * @param {number} root - * @return {Array} array or n Complex Roots in Polar Form. - */ -function _nthComplexRoot(a, root) { - if (root < 0) throw new Error('Root must be greater than zero'); - if (root === 0) throw new Error('Root must be non-zero'); - if (root % 1 !== 0) throw new Error('Root must be an integer'); - var arg = a.arg(); - var abs = a.abs(); - var roots = []; - var r = Math.pow(abs, 1/root); - for(var k = 0; k < root; k++) { - roots.push({r: r, phi: (arg + 2 * Math.PI * k)/root}); - } - return roots; -} - exports.name = 'nthRoot'; exports.factory = factory; diff --git a/lib/function/arithmetic/nthRoots.js b/lib/function/arithmetic/nthRoots.js new file mode 100644 index 000000000..ba8b79391 --- /dev/null +++ b/lib/function/arithmetic/nthRoots.js @@ -0,0 +1,35 @@ +'use strict'; + +function factory (type, config, load, typed) { + var nthRoots = typed('nthRoots', { + 'Complex' : function(x) { + return _nthComplexRoots(x, 2); + }, + 'Complex, number' : _nthComplexRoots, + }); + nthRoots.toTex = {2: '\\{y : $y^{args[1]} = {${args[0]}}\\}'}; + return nthRoots; +} + +/** + * Calculate the nth root of a Complex Number a using De Moviers Theorem. + * @param {Complex} a + * @param {number} root + * @return {Array} array or n Complex Roots in Polar Form. + */ +function _nthComplexRoots(a, root) { + if (root < 0) throw new Error('Root must be greater than zero'); + if (root === 0) throw new Error('Root must be non-zero'); + if (root % 1 !== 0) throw new Error('Root must be an integer'); + var arg = a.arg(); + var abs = a.abs(); + var roots = []; + var r = Math.pow(abs, 1/root); + for(var k = 0; k < root; k++) { + roots.push({r: r, phi: (arg + 2 * Math.PI * k)/root}); + } + return roots; +} + +exports.name = 'nthRoots'; +exports.factory = factory; diff --git a/test/function/arithmetic/nthRoot.test.js b/test/function/arithmetic/nthRoot.test.js index 531a97400..ba80af7fc 100644 --- a/test/function/arithmetic/nthRoot.test.js +++ b/test/function/arithmetic/nthRoot.test.js @@ -110,21 +110,8 @@ describe('nthRoot', function() { assert.deepEqual(nthRoot(big(Infinity), big(-3)), big(0)); }); - it('should return an array of Complex Roots in Polar form', function() { - var roots = nthRoot(complex("-1"), 6); - var roots1 = [ - {r: 1, phi: Math.PI/6}, - {r: 1, phi: Math.PI/2}, - {r: 1, phi: (5 * Math.PI)/6}, - {r: 1, phi: (7 * Math.PI)/6}, - {r: 1, phi: (9 * Math.PI)/6}, - {r: 1, phi: (11 * Math.PI)/6} - ]; - - roots.forEach(function (value, index, array) { - assert.equal(value.r, roots1[index].r); - assert.equal(value.phi, roots1[index].phi); - }); + it('should throw an error when used with a complex number', function() { + assert.throws(function () {nthRoot(complex("-8"), 3);}); }); it('should throw an error when used with a complex number and root is less than 0', function() { diff --git a/test/function/arithmetic/nthRoots.test.js b/test/function/arithmetic/nthRoots.test.js new file mode 100644 index 000000000..c266428f3 --- /dev/null +++ b/test/function/arithmetic/nthRoots.test.js @@ -0,0 +1,25 @@ +// test nthRoots +var assert = require('assert'); +var math = require('../../../index'); +var complex = math.complex; +var nthRoots = math.nthRoots; + +describe('nthRoots', function() { + it('should return an array of Complex Roots in Polar form', function() { + var roots = nthRoots(complex("-1"), 6); + var roots1 = [ + {r: 1, phi: Math.PI/6}, + {r: 1, phi: Math.PI/2}, + {r: 1, phi: (5 * Math.PI)/6}, + {r: 1, phi: (7 * Math.PI)/6}, + {r: 1, phi: (9 * Math.PI)/6}, + {r: 1, phi: (11 * Math.PI)/6} + ]; + + roots.forEach(function (value, index, array) { + assert.equal(value.r, roots1[index].r); + assert.equal(value.phi, roots1[index].phi); + }); + }); + +}); diff --git a/test/function/arithmetic/pow.test.js b/test/function/arithmetic/pow.test.js index e2438d22a..adb604602 100644 --- a/test/function/arithmetic/pow.test.js +++ b/test/function/arithmetic/pow.test.js @@ -28,12 +28,14 @@ describe('pow', function() { it('should exponentiate a negative number to a non-integer power', function() { approx.deepEqual(pow(-2,1.5), complex(0, -2.82842712474619)); + approx.deepEqual(pow(-8, 1/3), complex(1, 1.732050807568877)); }); it('should exponentiate a negative number to a non-integer power with predictable:true', function() { var res = mathPredictable.pow(-2,1.5); assert.equal(typeof res, 'number'); assert(isNaN(res)); + assert.strictEqual(mathPredictable.pow(-8, 1/3), -2); }); it('should return a real-valued root if one exists with predictable:true', function() { @@ -130,7 +132,7 @@ describe('pow', function() { assert.throws(function () {pow(null, 2);}, /TypeError: Unexpected type of argument/); }); - it('should handle infitie exponents', function() { + it('should handle infinite exponents', function() { var Ptbl = mathPredictable; // TODO replace isNaN with complexInfinity when complex.js updates From cbcf27282e5bc661744278cf86775f4126bd6d81 Mon Sep 17 00:00:00 2001 From: Dakota Blair Date: Thu, 15 Mar 2018 15:37:37 +0000 Subject: [PATCH 6/8] Updated behavior of nthRoots --- .../function/arithmetic/nthRoots.js | 6 +- lib/function/arithmetic/nthRoot.js | 8 ++- lib/function/arithmetic/nthRoots.js | 42 +++++++++++++- test/function/arithmetic/nthRoots.test.js | 56 ++++++++++++++++--- 4 files changed, 95 insertions(+), 17 deletions(-) diff --git a/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js b/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js index 41d297e4c..48b4dab90 100644 --- a/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js +++ b/lib/expression/embeddedDocs/function/arithmetic/nthRoots.js @@ -9,11 +9,11 @@ module.exports = { + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation "x^root = A". ' - + 'This function returns a list of complex values in polar form.' + + 'This function returns an array of complex values.' ), 'examples': [ - 'nthRoots(1) == [ { r: 1, phi: 0 }, { r: 1, phi: 3.141592653589793 } ]', - 'nthRoots(1, 3) == [ { r: 1, phi: 0 }, { r: 1, phi: 2.0943951023931953 }, { r: 1, phi: 4.1887902047863905 } ]' + 'nthRoots(1) == [ { re: 1, im: 0 }, { re: -1, im: 0 } ]', + 'nthRoots(1, 3) == [ { re: 1, im: 0 }, { re: -0.4999999999999998, im: 0.8660254037844387 }, { re: -0.5000000000000004, im: -0.8660254037844385 } ] ]' ], 'seealso': [ 'sqrt', diff --git a/lib/function/arithmetic/nthRoot.js b/lib/function/arithmetic/nthRoot.js index a8a7d1e8d..bed7c3dcf 100644 --- a/lib/function/arithmetic/nthRoot.js +++ b/lib/function/arithmetic/nthRoot.js @@ -40,6 +40,10 @@ function factory (type, config, load, typed) { * @param {number | BigNumber} [root=2] The root. * @return {number | Complex | Array | Matrix} Returns the nth root of `a` */ + var complex_err = ('' + + 'Complex number not supported in function nthRoot. ' + + 'Use nthRoots instead.' + ); var nthRoot = typed('nthRoot', { 'number': function (x) { @@ -51,10 +55,10 @@ function factory (type, config, load, typed) { return _bigNthRoot(x, new type.BigNumber(2)); }, 'Complex' : function(x) { - throw new Error('Argument must not be type Complex'); + throw new Error(complex_err); }, 'Complex, number' : function(x, y) { - throw new Error('Argument must not be type Complex'); + throw new Error(complex_err); }, 'BigNumber, BigNumber': _bigNthRoot, diff --git a/lib/function/arithmetic/nthRoots.js b/lib/function/arithmetic/nthRoots.js index ba8b79391..4c5e44e98 100644 --- a/lib/function/arithmetic/nthRoots.js +++ b/lib/function/arithmetic/nthRoots.js @@ -1,5 +1,11 @@ 'use strict'; +var Complex = require('../../type/complex/Complex'); +var typed = require('../../core/typed'); +var complex = Complex.factory( + 'Complex', {}, '', typed, {on: function(x, y){}} +); + function factory (type, config, load, typed) { var nthRoots = typed('nthRoots', { 'Complex' : function(x) { @@ -12,21 +18,51 @@ function factory (type, config, load, typed) { } /** - * Calculate the nth root of a Complex Number a using De Moviers Theorem. + * If val is an integer multiple of a power of i, return that power. + * @param {Complex} val + * @return {number} n where val = abs(val)*i^n or undefined if no n exists + */ +function _onRay(val) { + var valIsNumeric = typeof(val) === 'number'; + if (!valIsNumeric && !(val.re === 0 || val.im === 0)) { return; } + if (valIsNumeric) { + return 2*(+(val < 0)); + } + if (val.im === 0) { + return 2*(+(val.re < 0)); + } + return 2*(+(val.im < 0)) + 1; +} + +/** + * Calculate the nth root of a Complex Number a using De Movire's Theorem. * @param {Complex} a * @param {number} root - * @return {Array} array or n Complex Roots in Polar Form. + * @return {Array} array of n Complex Roots */ function _nthComplexRoots(a, root) { if (root < 0) throw new Error('Root must be greater than zero'); if (root === 0) throw new Error('Root must be non-zero'); if (root % 1 !== 0) throw new Error('Root must be an integer'); + if (a === 0 || a.abs() === 0) return [complex(0)]; var arg = a.arg(); var abs = a.abs(); var roots = []; + // This is used to fix float artifacts for zero-valued components. + var rays = [ + function realPos(val){return complex(val);}, + function imagPos(val){return complex(0, val);}, + function realNeg(val){return complex(-val);}, + function imagNeg(val){return complex(0, -val);} + ]; var r = Math.pow(abs, 1/root); for(var k = 0; k < root; k++) { - roots.push({r: r, phi: (arg + 2 * Math.PI * k)/root}); + var ray = (_onRay(a) + 4*k)/root; + if (ray === Math.round(ray)) { + roots.push(rays[ray % 4](r)); + continue; + } + roots.push(complex({r: r, phi: (arg + 2 * Math.PI * k)/root})); } return roots; } diff --git a/test/function/arithmetic/nthRoots.test.js b/test/function/arithmetic/nthRoots.test.js index c266428f3..aeca804ba 100644 --- a/test/function/arithmetic/nthRoots.test.js +++ b/test/function/arithmetic/nthRoots.test.js @@ -5,21 +5,59 @@ var complex = math.complex; var nthRoots = math.nthRoots; describe('nthRoots', function() { - it('should return an array of Complex Roots in Polar form', function() { + it('should return an array of Complex roots', function() { var roots = nthRoots(complex("-1"), 6); var roots1 = [ - {r: 1, phi: Math.PI/6}, - {r: 1, phi: Math.PI/2}, - {r: 1, phi: (5 * Math.PI)/6}, - {r: 1, phi: (7 * Math.PI)/6}, - {r: 1, phi: (9 * Math.PI)/6}, - {r: 1, phi: (11 * Math.PI)/6} + complex({r: 1, phi: Math.PI/6}), + complex(0, 1), + complex({r: 1, phi: (5 * Math.PI)/6}), + complex({r: 1, phi: (7 * Math.PI)/6}), + complex(0, -1), + complex({r: 1, phi: (11 * Math.PI)/6}) ]; roots.forEach(function (value, index, array) { - assert.equal(value.r, roots1[index].r); - assert.equal(value.phi, roots1[index].phi); + assert.deepEqual(value, roots1[index]); }); }); + var twos = [ + complex(2, 0), + complex(0, 2), + complex(-2, 0), + complex(0, -2), + ]; + it('should return pure roots without artifacts', function() { + var roots = nthRoots(complex("16"), 4); + + roots.forEach(function (value, index, array) { + assert.deepEqual(value, twos[index]); + }); + }); + + it('should return roots for numeric arguments', function() { + var roots = nthRoots(16, 4); + + roots.forEach(function (value, index, array) { + assert.deepEqual(value, twos[index]); + }); + }); + + it('should return roots for string arguments', function() { + var roots = nthRoots("16", 4); + + roots.forEach(function (value, index, array) { + assert.deepEqual(value, twos[index]); + }); + }); + + it('should return zero exactly once', function() { + var roots2 = nthRoots(0); + var roots4 = nthRoots(0, 4); + var roots8 = nthRoots(0, 8); + assert.deepEqual(roots2, [complex(0)]); + assert.deepEqual(roots4, [complex(0)]); + assert.deepEqual(roots8, [complex(0)]); + }); + }); From 13d1ad7a6a7ae1914bf52f2f1bcc6420d2bb4563 Mon Sep 17 00:00:00 2001 From: Dakota Blair Date: Wed, 21 Mar 2018 19:04:32 +0000 Subject: [PATCH 7/8] Updated _nthComplexRoots based on feedback. --- lib/function/arithmetic/nthRoots.js | 53 ++++++++++++++++------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/lib/function/arithmetic/nthRoots.js b/lib/function/arithmetic/nthRoots.js index 4c5e44e98..04941fb23 100644 --- a/lib/function/arithmetic/nthRoots.js +++ b/lib/function/arithmetic/nthRoots.js @@ -18,21 +18,17 @@ function factory (type, config, load, typed) { } /** - * If val is an integer multiple of a power of i, return that power. - * @param {Complex} val - * @return {number} n where val = abs(val)*i^n or undefined if no n exists + * Each function here returns a real multiple of i as a Complex value. + * @param {number} val + * @return {Complex} val, i*val, -val or -i*val for index 0, 1, 2, 3 */ -function _onRay(val) { - var valIsNumeric = typeof(val) === 'number'; - if (!valIsNumeric && !(val.re === 0 || val.im === 0)) { return; } - if (valIsNumeric) { - return 2*(+(val < 0)); - } - if (val.im === 0) { - return 2*(+(val.re < 0)); - } - return 2*(+(val.im < 0)) + 1; -} +// This is used to fix float artifacts for zero-valued components. +var _calculateExactResult = [ + function realPos(val){return complex(val);}, + function imagPos(val){return complex(0, val);}, + function realNeg(val){return complex(-val);}, + function imagNeg(val){return complex(0, -val);} +]; /** * Calculate the nth root of a Complex Number a using De Movire's Theorem. @@ -45,21 +41,30 @@ function _nthComplexRoots(a, root) { if (root === 0) throw new Error('Root must be non-zero'); if (root % 1 !== 0) throw new Error('Root must be an integer'); if (a === 0 || a.abs() === 0) return [complex(0)]; + var aIsNumeric = typeof(a) === 'number'; + var offset = 0; + // determine the offset (argument of a)/(pi/2) + if (aIsNumeric || a.re === 0 || a.im === 0) { + if (aIsNumeric) { + offset = 2*(+(a < 0)); // numeric value on the real axis + } else if (a.im === 0) { + offset = 2*(+(a.re < 0)); // complex value on the real axis + } else { + offset = 2*(+(a.im < 0)) + 1; // complex value on the imaginary axis + } + } var arg = a.arg(); var abs = a.abs(); var roots = []; - // This is used to fix float artifacts for zero-valued components. - var rays = [ - function realPos(val){return complex(val);}, - function imagPos(val){return complex(0, val);}, - function realNeg(val){return complex(-val);}, - function imagNeg(val){return complex(0, -val);} - ]; var r = Math.pow(abs, 1/root); for(var k = 0; k < root; k++) { - var ray = (_onRay(a) + 4*k)/root; - if (ray === Math.round(ray)) { - roots.push(rays[ray % 4](r)); + var halfPiFactor = (offset + 4*k)/root; + /** + * If (offset + 4*k)/root is an integral multiple of pi/2 + * then we can produce a more exact result. + */ + if (halfPiFactor === Math.round(halfPiFactor)) { + roots.push(_calculateExactResult[halfPiFactor % 4](r)); continue; } roots.push(complex({r: r, phi: (arg + 2 * Math.PI * k)/root})); From c2917dca525979f923fc8e53e8fe15532ec08802 Mon Sep 17 00:00:00 2001 From: Dakota Blair Date: Wed, 21 Mar 2018 19:46:31 +0000 Subject: [PATCH 8/8] Fixed offset bug. --- lib/function/arithmetic/nthRoots.js | 2 +- test/function/arithmetic/nthRoots.test.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/function/arithmetic/nthRoots.js b/lib/function/arithmetic/nthRoots.js index 04941fb23..4ac81205c 100644 --- a/lib/function/arithmetic/nthRoots.js +++ b/lib/function/arithmetic/nthRoots.js @@ -42,7 +42,7 @@ function _nthComplexRoots(a, root) { if (root % 1 !== 0) throw new Error('Root must be an integer'); if (a === 0 || a.abs() === 0) return [complex(0)]; var aIsNumeric = typeof(a) === 'number'; - var offset = 0; + var offset; // determine the offset (argument of a)/(pi/2) if (aIsNumeric || a.re === 0 || a.im === 0) { if (aIsNumeric) { diff --git a/test/function/arithmetic/nthRoots.test.js b/test/function/arithmetic/nthRoots.test.js index aeca804ba..80cebc277 100644 --- a/test/function/arithmetic/nthRoots.test.js +++ b/test/function/arithmetic/nthRoots.test.js @@ -21,6 +21,17 @@ describe('nthRoots', function() { }); }); + it('should return the correct answer for Complex values', function() { + var roots = nthRoots(complex(3, 4), 2); + var roots1 = [ + { re: 2, im: 1 }, + { re: -2.0000000000000004, im: -0.9999999999999999} + ]; + roots.forEach(function (value, index, array) { + assert.deepEqual(value, roots1[index]); + }); + }); + var twos = [ complex(2, 0), complex(0, 2),