diff --git a/js/html5-qrcode.js b/js/html5-qrcode.js
new file mode 100644
index 0000000..c53f681
--- /dev/null
+++ b/js/html5-qrcode.js
@@ -0,0 +1,15221 @@
+/*! For license information please see html5-qrcode.min.js.LICENSE.txt */
+var __Html5QrcodeLibrary__;
+(() => {
+ var t = {
+ 449: function(t, e, r) {
+ !function(t) {
+ "use strict";
+ var e = Object.setPrototypeOf || {
+ __proto__: []
+ } instanceof Array && function(t, e) {
+ t.__proto__ = e
+ } || function(t, e) {
+ for (var r in e)
+ e.hasOwnProperty(r) && (t[r] = e[r])
+ };
+ var n,
+ i = function(t) {
+ function r(e) {
+ var r,
+ n,
+ i,
+ o = this.constructor,
+ s = t.call(this, e) || this;
+ return Object.defineProperty(s, "name", {
+ value: o.name,
+ enumerable: !1
+ }), r = s, n = o.prototype, (i = Object.setPrototypeOf) ? i(r, n) : r.__proto__ = n, function(t, e) {
+ void 0 === e && (e = t.constructor);
+ var r = Error.captureStackTrace;
+ r && r(t, e)
+ }(s), s
+ }
+ return function(t, r) {
+ function n() {
+ this.constructor = t
+ }
+ e(t, r),
+ t.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n)
+ }(r, t), r
+ }(Error);
+ class o extends i {
+ constructor(t)
+ {
+ super(t),
+ this.message = t
+ }
+ getKind()
+ {
+ return this.constructor.kind
+ }
+ }
+ o.kind = "Exception";
+ class s extends o {}
+ s.kind = "ArgumentException";
+ class a extends o {}
+ a.kind = "IllegalArgumentException";
+ class l {
+ constructor(t)
+ {
+ if (this.binarizer = t, null === t)
+ throw new a("Binarizer must be non-null.")
+ }
+ getWidth()
+ {
+ return this.binarizer.getWidth()
+ }
+ getHeight()
+ {
+ return this.binarizer.getHeight()
+ }
+ getBlackRow(t, e)
+ {
+ return this.binarizer.getBlackRow(t, e)
+ }
+ getBlackMatrix()
+ {
+ return null !== this.matrix && void 0 !== this.matrix || (this.matrix = this.binarizer.getBlackMatrix()), this.matrix
+ }
+ isCropSupported()
+ {
+ return this.binarizer.getLuminanceSource().isCropSupported()
+ }
+ crop(t, e, r, n)
+ {
+ const i = this.binarizer.getLuminanceSource().crop(t, e, r, n);
+ return new l(this.binarizer.createBinarizer(i))
+ }
+ isRotateSupported()
+ {
+ return this.binarizer.getLuminanceSource().isRotateSupported()
+ }
+ rotateCounterClockwise()
+ {
+ const t = this.binarizer.getLuminanceSource().rotateCounterClockwise();
+ return new l(this.binarizer.createBinarizer(t))
+ }
+ rotateCounterClockwise45()
+ {
+ const t = this.binarizer.getLuminanceSource().rotateCounterClockwise45();
+ return new l(this.binarizer.createBinarizer(t))
+ }
+ toString()
+ {
+ try {
+ return this.getBlackMatrix().toString()
+ } catch (t) {
+ return ""
+ }
+ }
+ }
+ class c extends o {
+ static getChecksumInstance()
+ {
+ return new c
+ }
+ }
+ c.kind = "ChecksumException";
+ class h {
+ constructor(t)
+ {
+ this.source = t
+ }
+ getLuminanceSource()
+ {
+ return this.source
+ }
+ getWidth()
+ {
+ return this.source.getWidth()
+ }
+ getHeight()
+ {
+ return this.source.getHeight()
+ }
+ }
+ class u {
+ static arraycopy(t, e, r, n, i)
+ {
+ for (; i--;)
+ r[n++] = t[e++]
+ }
+ static currentTimeMillis()
+ {
+ return Date.now()
+ }
+ }
+ class d extends o {}
+ d.kind = "IndexOutOfBoundsException";
+ class g extends d {
+ constructor(t, e)
+ {
+ super(e),
+ this.index = t,
+ this.message = e
+ }
+ }
+ g.kind = "ArrayIndexOutOfBoundsException";
+ class f {
+ static fill(t, e)
+ {
+ for (let r = 0, n = t.length; r < n; r++)
+ t[r] = e
+ }
+ static fillWithin(t, e, r, n)
+ {
+ f.rangeCheck(t.length, e, r);
+ for (let i = e; i < r; i++)
+ t[i] = n
+ }
+ static rangeCheck(t, e, r)
+ {
+ if (e > r)
+ throw new a("fromIndex(" + e + ") > toIndex(" + r + ")");
+ if (e < 0)
+ throw new g(e);
+ if (r > t)
+ throw new g(r)
+ }
+ static asList(...t)
+ {
+ return t
+ }
+ static create(t, e, r)
+ {
+ return Array.from({
+ length: t
+ }).map((t => Array.from({
+ length: e
+ }).fill(r)))
+ }
+ static createInt32Array(t, e, r)
+ {
+ return Array.from({
+ length: t
+ }).map((t => Int32Array.from({
+ length: e
+ }).fill(r)))
+ }
+ static equals(t, e)
+ {
+ if (!t)
+ return !1;
+ if (!e)
+ return !1;
+ if (!t.length)
+ return !1;
+ if (!e.length)
+ return !1;
+ if (t.length !== e.length)
+ return !1;
+ for (let r = 0, n = t.length; r < n; r++)
+ if (t[r] !== e[r])
+ return !1;
+ return !0
+ }
+ static hashCode(t)
+ {
+ if (null === t)
+ return 0;
+ let e = 1;
+ for (const r of t)
+ e = 31 * e + r;
+ return e
+ }
+ static fillUint8Array(t, e)
+ {
+ for (let r = 0; r !== t.length; r++)
+ t[r] = e
+ }
+ static copyOf(t, e)
+ {
+ return t.slice(0, e)
+ }
+ static copyOfUint8Array(t, e)
+ {
+ if (t.length <= e) {
+ const r = new Uint8Array(e);
+ return r.set(t), r
+ }
+ return t.slice(0, e)
+ }
+ static copyOfRange(t, e, r)
+ {
+ const n = r - e,
+ i = new Int32Array(n);
+ return u.arraycopy(t, e, i, 0, n), i
+ }
+ static binarySearch(t, e, r)
+ {
+ void 0 === r && (r = f.numberComparator);
+ let n = 0,
+ i = t.length - 1;
+ for (; n <= i;) {
+ const o = i + n >> 1,
+ s = r(e, t[o]);
+ if (s > 0)
+ n = o + 1;
+ else {
+ if (!(s < 0))
+ return o;
+ i = o - 1
+ }
+ }
+ return -n - 1
+ }
+ static numberComparator(t, e)
+ {
+ return t - e
+ }
+ }
+ class w {
+ static numberOfTrailingZeros(t)
+ {
+ let e;
+ if (0 === t)
+ return 32;
+ let r = 31;
+ return e = t << 16, 0 !== e && (r -= 16, t = e), e = t << 8, 0 !== e && (r -= 8, t = e), e = t << 4, 0 !== e && (r -= 4, t = e), e = t << 2, 0 !== e && (r -= 2, t = e), r - (t << 1 >>> 31)
+ }
+ static numberOfLeadingZeros(t)
+ {
+ if (0 === t)
+ return 32;
+ let e = 1;
+ return t >>> 16 == 0 && (e += 16, t <<= 16), t >>> 24 == 0 && (e += 8, t <<= 8), t >>> 28 == 0 && (e += 4, t <<= 4), t >>> 30 == 0 && (e += 2, t <<= 2), e -= t >>> 31, e
+ }
+ static toHexString(t)
+ {
+ return t.toString(16)
+ }
+ static toBinaryString(t)
+ {
+ return String(parseInt(String(t), 2))
+ }
+ static bitCount(t)
+ {
+ return t = (t = (858993459 & (t -= t >>> 1 & 1431655765)) + (t >>> 2 & 858993459)) + (t >>> 4) & 252645135, 63 & (t += t >>> 8) + (t >>> 16)
+ }
+ static truncDivision(t, e)
+ {
+ return Math.trunc(t / e)
+ }
+ static parseInt(t, e)
+ {
+ return parseInt(t, e)
+ }
+ }
+ w.MIN_VALUE_32_BITS = -2147483648,
+ w.MAX_VALUE = Number.MAX_SAFE_INTEGER;
+ class A {
+ constructor(t, e)
+ {
+ void 0 === t ? (this.size = 0, this.bits = new Int32Array(1)) : (this.size = t, this.bits = null == e ? A.makeArray(t) : e)
+ }
+ getSize()
+ {
+ return this.size
+ }
+ getSizeInBytes()
+ {
+ return Math.floor((this.size + 7) / 8)
+ }
+ ensureCapacity(t)
+ {
+ if (t > 32 * this.bits.length) {
+ const e = A.makeArray(t);
+ u.arraycopy(this.bits, 0, e, 0, this.bits.length),
+ this.bits = e
+ }
+ }
+ get(t)
+ {
+ return 0 != (this.bits[Math.floor(t / 32)] & 1 << (31 & t))
+ }
+ set(t)
+ {
+ this.bits[Math.floor(t / 32)] |= 1 << (31 & t)
+ }
+ flip(t)
+ {
+ this.bits[Math.floor(t / 32)] ^= 1 << (31 & t)
+ }
+ getNextSet(t)
+ {
+ const e = this.size;
+ if (t >= e)
+ return e;
+ const r = this.bits;
+ let n = Math.floor(t / 32),
+ i = r[n];
+ i &= ~((1 << (31 & t)) - 1);
+ const o = r.length;
+ for (; 0 === i;) {
+ if (++n === o)
+ return e;
+ i = r[n]
+ }
+ const s = 32 * n + w.numberOfTrailingZeros(i);
+ return s > e ? e : s
+ }
+ getNextUnset(t)
+ {
+ const e = this.size;
+ if (t >= e)
+ return e;
+ const r = this.bits;
+ let n = Math.floor(t / 32),
+ i = ~r[n];
+ i &= ~((1 << (31 & t)) - 1);
+ const o = r.length;
+ for (; 0 === i;) {
+ if (++n === o)
+ return e;
+ i = ~r[n]
+ }
+ const s = 32 * n + w.numberOfTrailingZeros(i);
+ return s > e ? e : s
+ }
+ setBulk(t, e)
+ {
+ this.bits[Math.floor(t / 32)] = e
+ }
+ setRange(t, e)
+ {
+ if (e < t || t < 0 || e > this.size)
+ throw new a;
+ if (e === t)
+ return;
+ e--;
+ const r = Math.floor(t / 32),
+ n = Math.floor(e / 32),
+ i = this.bits;
+ for (let o = r; o <= n; o++) {
+ const s = (2 << (o < n ? 31 : 31 & e)) - (1 << (o > r ? 0 : 31 & t));
+ i[o] |= s
+ }
+ }
+ clear()
+ {
+ const t = this.bits.length,
+ e = this.bits;
+ for (let r = 0; r < t; r++)
+ e[r] = 0
+ }
+ isRange(t, e, r)
+ {
+ if (e < t || t < 0 || e > this.size)
+ throw new a;
+ if (e === t)
+ return !0;
+ e--;
+ const n = Math.floor(t / 32),
+ i = Math.floor(e / 32),
+ o = this.bits;
+ for (let s = n; s <= i; s++) {
+ const a = (2 << (s < i ? 31 : 31 & e)) - (1 << (s > n ? 0 : 31 & t)) & 4294967295;
+ if ((o[s] & a) !== (r ? a : 0))
+ return !1
+ }
+ return !0
+ }
+ appendBit(t)
+ {
+ this.ensureCapacity(this.size + 1),
+ t && (this.bits[Math.floor(this.size / 32)] |= 1 << (31 & this.size)),
+ this.size++
+ }
+ appendBits(t, e)
+ {
+ if (e < 0 || e > 32)
+ throw new a("Num bits must be between 0 and 32");
+ this.ensureCapacity(this.size + e);
+ for (let r = e; r > 0; r--)
+ this.appendBit(1 == (t >> r - 1 & 1))
+ }
+ appendBitArray(t)
+ {
+ const e = t.size;
+ this.ensureCapacity(this.size + e);
+ for (let r = 0; r < e; r++)
+ this.appendBit(t.get(r))
+ }
+ xor(t)
+ {
+ if (this.size !== t.size)
+ throw new a("Sizes don't match");
+ const e = this.bits;
+ for (let r = 0, n = e.length; r < n; r++)
+ e[r] ^= t.bits[r]
+ }
+ toBytes(t, e, r, n)
+ {
+ for (let i = 0; i < n; i++) {
+ let n = 0;
+ for (let e = 0; e < 8; e++)
+ this.get(t) && (n |= 1 << 7 - e),
+ t++;
+ e[r + i] = n
+ }
+ }
+ getBitArray()
+ {
+ return this.bits
+ }
+ reverse()
+ {
+ const t = new Int32Array(this.bits.length),
+ e = Math.floor((this.size - 1) / 32),
+ r = e + 1,
+ n = this.bits;
+ for (let i = 0; i < r; i++) {
+ let r = n[i];
+ r = r >> 1 & 1431655765 | (1431655765 & r) << 1,
+ r = r >> 2 & 858993459 | (858993459 & r) << 2,
+ r = r >> 4 & 252645135 | (252645135 & r) << 4,
+ r = r >> 8 & 16711935 | (16711935 & r) << 8,
+ r = r >> 16 & 65535 | (65535 & r) << 16,
+ t[e - i] = r
+ }
+ if (this.size !== 32 * r) {
+ const e = 32 * r - this.size;
+ let n = t[0] >>> e;
+ for (let i = 1; i < r; i++) {
+ const r = t[i];
+ n |= r << 32 - e,
+ t[i - 1] = n,
+ n = r >>> e
+ }
+ t[r - 1] = n
+ }
+ this.bits = t
+ }
+ static makeArray(t)
+ {
+ return new Int32Array(Math.floor((t + 31) / 32))
+ }
+ equals(t)
+ {
+ if (!(t instanceof A))
+ return !1;
+ const e = t;
+ return this.size === e.size && f.equals(this.bits, e.bits)
+ }
+ hashCode()
+ {
+ return 31 * this.size + f.hashCode(this.bits)
+ }
+ toString()
+ {
+ let t = "";
+ for (let e = 0, r = this.size; e < r; e++)
+ 0 == (7 & e) && (t += " "),
+ t += this.get(e) ? "X" : ".";
+ return t
+ }
+ clone()
+ {
+ return new A(this.size, this.bits.slice())
+ }
+ }
+ !function(t) {
+ t[t.OTHER = 0] = "OTHER",
+ t[t.PURE_BARCODE = 1] = "PURE_BARCODE",
+ t[t.POSSIBLE_FORMATS = 2] = "POSSIBLE_FORMATS",
+ t[t.TRY_HARDER = 3] = "TRY_HARDER",
+ t[t.CHARACTER_SET = 4] = "CHARACTER_SET",
+ t[t.ALLOWED_LENGTHS = 5] = "ALLOWED_LENGTHS",
+ t[t.ASSUME_CODE_39_CHECK_DIGIT = 6] = "ASSUME_CODE_39_CHECK_DIGIT",
+ t[t.ASSUME_GS1 = 7] = "ASSUME_GS1",
+ t[t.RETURN_CODABAR_START_END = 8] = "RETURN_CODABAR_START_END",
+ t[t.NEED_RESULT_POINT_CALLBACK = 9] = "NEED_RESULT_POINT_CALLBACK",
+ t[t.ALLOWED_EAN_EXTENSIONS = 10] = "ALLOWED_EAN_EXTENSIONS"
+ }(n || (n = {}));
+ var m,
+ E = n;
+ class C extends o {
+ static getFormatInstance()
+ {
+ return new C
+ }
+ }
+ C.kind = "FormatException",
+ function(t) {
+ t[t.Cp437 = 0] = "Cp437",
+ t[t.ISO8859_1 = 1] = "ISO8859_1",
+ t[t.ISO8859_2 = 2] = "ISO8859_2",
+ t[t.ISO8859_3 = 3] = "ISO8859_3",
+ t[t.ISO8859_4 = 4] = "ISO8859_4",
+ t[t.ISO8859_5 = 5] = "ISO8859_5",
+ t[t.ISO8859_6 = 6] = "ISO8859_6",
+ t[t.ISO8859_7 = 7] = "ISO8859_7",
+ t[t.ISO8859_8 = 8] = "ISO8859_8",
+ t[t.ISO8859_9 = 9] = "ISO8859_9",
+ t[t.ISO8859_10 = 10] = "ISO8859_10",
+ t[t.ISO8859_11 = 11] = "ISO8859_11",
+ t[t.ISO8859_13 = 12] = "ISO8859_13",
+ t[t.ISO8859_14 = 13] = "ISO8859_14",
+ t[t.ISO8859_15 = 14] = "ISO8859_15",
+ t[t.ISO8859_16 = 15] = "ISO8859_16",
+ t[t.SJIS = 16] = "SJIS",
+ t[t.Cp1250 = 17] = "Cp1250",
+ t[t.Cp1251 = 18] = "Cp1251",
+ t[t.Cp1252 = 19] = "Cp1252",
+ t[t.Cp1256 = 20] = "Cp1256",
+ t[t.UnicodeBigUnmarked = 21] = "UnicodeBigUnmarked",
+ t[t.UTF8 = 22] = "UTF8",
+ t[t.ASCII = 23] = "ASCII",
+ t[t.Big5 = 24] = "Big5",
+ t[t.GB18030 = 25] = "GB18030",
+ t[t.EUC_KR = 26] = "EUC_KR"
+ }(m || (m = {}));
+ class I {
+ constructor(t, e, r, ...n)
+ {
+ this.valueIdentifier = t,
+ this.name = r,
+ this.values = "number" == typeof e ? Int32Array.from([e]) : e,
+ this.otherEncodingNames = n,
+ I.VALUE_IDENTIFIER_TO_ECI.set(t, this),
+ I.NAME_TO_ECI.set(r, this);
+ const i = this.values;
+ for (let t = 0, e = i.length; t !== e; t++) {
+ const e = i[t];
+ I.VALUES_TO_ECI.set(e, this)
+ }
+ for (const t of n)
+ I.NAME_TO_ECI.set(t, this)
+ }
+ getValueIdentifier()
+ {
+ return this.valueIdentifier
+ }
+ getName()
+ {
+ return this.name
+ }
+ getValue()
+ {
+ return this.values[0]
+ }
+ static getCharacterSetECIByValue(t)
+ {
+ if (t < 0 || t >= 900)
+ throw new C("incorect value");
+ const e = I.VALUES_TO_ECI.get(t);
+ if (void 0 === e)
+ throw new C("incorect value");
+ return e
+ }
+ static getCharacterSetECIByName(t)
+ {
+ const e = I.NAME_TO_ECI.get(t);
+ if (void 0 === e)
+ throw new C("incorect value");
+ return e
+ }
+ equals(t)
+ {
+ if (!(t instanceof I))
+ return !1;
+ const e = t;
+ return this.getName() === e.getName()
+ }
+ }
+ I.VALUE_IDENTIFIER_TO_ECI = new Map,
+ I.VALUES_TO_ECI = new Map,
+ I.NAME_TO_ECI = new Map,
+ I.Cp437 = new I(m.Cp437, Int32Array.from([0, 2]), "Cp437"),
+ I.ISO8859_1 = new I(m.ISO8859_1, Int32Array.from([1, 3]), "ISO-8859-1", "ISO88591", "ISO8859_1"),
+ I.ISO8859_2 = new I(m.ISO8859_2, 4, "ISO-8859-2", "ISO88592", "ISO8859_2"),
+ I.ISO8859_3 = new I(m.ISO8859_3, 5, "ISO-8859-3", "ISO88593", "ISO8859_3"),
+ I.ISO8859_4 = new I(m.ISO8859_4, 6, "ISO-8859-4", "ISO88594", "ISO8859_4"),
+ I.ISO8859_5 = new I(m.ISO8859_5, 7, "ISO-8859-5", "ISO88595", "ISO8859_5"),
+ I.ISO8859_6 = new I(m.ISO8859_6, 8, "ISO-8859-6", "ISO88596", "ISO8859_6"),
+ I.ISO8859_7 = new I(m.ISO8859_7, 9, "ISO-8859-7", "ISO88597", "ISO8859_7"),
+ I.ISO8859_8 = new I(m.ISO8859_8, 10, "ISO-8859-8", "ISO88598", "ISO8859_8"),
+ I.ISO8859_9 = new I(m.ISO8859_9, 11, "ISO-8859-9", "ISO88599", "ISO8859_9"),
+ I.ISO8859_10 = new I(m.ISO8859_10, 12, "ISO-8859-10", "ISO885910", "ISO8859_10"),
+ I.ISO8859_11 = new I(m.ISO8859_11, 13, "ISO-8859-11", "ISO885911", "ISO8859_11"),
+ I.ISO8859_13 = new I(m.ISO8859_13, 15, "ISO-8859-13", "ISO885913", "ISO8859_13"),
+ I.ISO8859_14 = new I(m.ISO8859_14, 16, "ISO-8859-14", "ISO885914", "ISO8859_14"),
+ I.ISO8859_15 = new I(m.ISO8859_15, 17, "ISO-8859-15", "ISO885915", "ISO8859_15"),
+ I.ISO8859_16 = new I(m.ISO8859_16, 18, "ISO-8859-16", "ISO885916", "ISO8859_16"),
+ I.SJIS = new I(m.SJIS, 20, "SJIS", "Shift_JIS"),
+ I.Cp1250 = new I(m.Cp1250, 21, "Cp1250", "windows-1250"),
+ I.Cp1251 = new I(m.Cp1251, 22, "Cp1251", "windows-1251"),
+ I.Cp1252 = new I(m.Cp1252, 23, "Cp1252", "windows-1252"),
+ I.Cp1256 = new I(m.Cp1256, 24, "Cp1256", "windows-1256"),
+ I.UnicodeBigUnmarked = new I(m.UnicodeBigUnmarked, 25, "UnicodeBigUnmarked", "UTF-16BE", "UnicodeBig"),
+ I.UTF8 = new I(m.UTF8, 26, "UTF8", "UTF-8"),
+ I.ASCII = new I(m.ASCII, Int32Array.from([27, 170]), "ASCII", "US-ASCII"),
+ I.Big5 = new I(m.Big5, 28, "Big5"),
+ I.GB18030 = new I(m.GB18030, 29, "GB18030", "GB2312", "EUC_CN", "GBK"),
+ I.EUC_KR = new I(m.EUC_KR, 30, "EUC_KR", "EUC-KR");
+ class p extends o {}
+ p.kind = "UnsupportedOperationException";
+ class S {
+ static decode(t, e)
+ {
+ const r = this.encodingName(e);
+ return this.customDecoder ? this.customDecoder(t, r) : "undefined" == typeof TextDecoder || this.shouldDecodeOnFallback(r) ? this.decodeFallback(t, r) : new TextDecoder(r).decode(t)
+ }
+ static shouldDecodeOnFallback(t)
+ {
+ return !S.isBrowser() && "ISO-8859-1" === t
+ }
+ static encode(t, e)
+ {
+ const r = this.encodingName(e);
+ return this.customEncoder ? this.customEncoder(t, r) : "undefined" == typeof TextEncoder ? this.encodeFallback(t) : (new TextEncoder).encode(t)
+ }
+ static isBrowser()
+ {
+ return "undefined" != typeof window && "[object Window]" === {}.toString.call(window)
+ }
+ static encodingName(t)
+ {
+ return "string" == typeof t ? t : t.getName()
+ }
+ static encodingCharacterSet(t)
+ {
+ return t instanceof I ? t : I.getCharacterSetECIByName(t)
+ }
+ static decodeFallback(t, e)
+ {
+ const r = this.encodingCharacterSet(e);
+ if (S.isDecodeFallbackSupported(r)) {
+ let e = "";
+ for (let r = 0, n = t.length; r < n; r++) {
+ let n = t[r].toString(16);
+ n.length < 2 && (n = "0" + n),
+ e += "%" + n
+ }
+ return decodeURIComponent(e)
+ }
+ if (r.equals(I.UnicodeBigUnmarked))
+ return String.fromCharCode.apply(null, new Uint16Array(t.buffer));
+ throw new p(`Encoding ${this.encodingName(e)} not supported by fallback.`)
+ }
+ static isDecodeFallbackSupported(t)
+ {
+ return t.equals(I.UTF8) || t.equals(I.ISO8859_1) || t.equals(I.ASCII)
+ }
+ static encodeFallback(t)
+ {
+ const e = btoa(unescape(encodeURIComponent(t))).split(""),
+ r = [];
+ for (let t = 0; t < e.length; t++)
+ r.push(e[t].charCodeAt(0));
+ return new Uint8Array(r)
+ }
+ }
+ class _ {
+ static castAsNonUtf8Char(t, e=null)
+ {
+ const r = e ? e.getName() : this.ISO88591;
+ return S.decode(new Uint8Array([t]), r)
+ }
+ static guessEncoding(t, e)
+ {
+ if (null != e && void 0 !== e.get(E.CHARACTER_SET))
+ return e.get(E.CHARACTER_SET).toString();
+ const r = t.length;
+ let n = !0,
+ i = !0,
+ o = !0,
+ s = 0,
+ a = 0,
+ l = 0,
+ c = 0,
+ h = 0,
+ u = 0,
+ d = 0,
+ g = 0,
+ f = 0,
+ w = 0,
+ A = 0;
+ const m = t.length > 3 && 239 === t[0] && 187 === t[1] && 191 === t[2];
+ for (let e = 0; e < r && (n || i || o); e++) {
+ const r = 255 & t[e];
+ o && (s > 0 ? 0 == (128 & r) ? o = !1 : s-- : 0 != (128 & r) && (0 == (64 & r) ? o = !1 : (s++, 0 == (32 & r) ? a++ : (s++, 0 == (16 & r) ? l++ : (s++, 0 == (8 & r) ? c++ : o = !1))))),
+ n && (r > 127 && r < 160 ? n = !1 : r > 159 && (r < 192 || 215 === r || 247 === r) && A++),
+ i && (h > 0 ? r < 64 || 127 === r || r > 252 ? i = !1 : h-- : 128 === r || 160 === r || r > 239 ? i = !1 : r > 160 && r < 224 ? (u++, g = 0, d++, d > f && (f = d)) : r > 127 ? (h++, d = 0, g++, g > w && (w = g)) : (d = 0, g = 0))
+ }
+ return o && s > 0 && (o = !1), i && h > 0 && (i = !1), o && (m || a + l + c > 0) ? _.UTF8 : i && (_.ASSUME_SHIFT_JIS || f >= 3 || w >= 3) ? _.SHIFT_JIS : n && i ? 2 === f && 2 === u || 10 * A >= r ? _.SHIFT_JIS : _.ISO88591 : n ? _.ISO88591 : i ? _.SHIFT_JIS : o ? _.UTF8 : _.PLATFORM_DEFAULT_ENCODING
+ }
+ static format(t, ...e)
+ {
+ let r = -1;
+ return t.replace(/%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g, (function(t, n, i, o, s, a) {
+ if ("%%" === t)
+ return "%";
+ if (void 0 === e[++r])
+ return;
+ t = o ? parseInt(o.substr(1)) : void 0;
+ let l,
+ c = s ? parseInt(s.substr(1)) : void 0;
+ switch (a) {
+ case "s":
+ l = e[r];
+ break;
+ case "c":
+ l = e[r][0];
+ break;
+ case "f":
+ l = parseFloat(e[r]).toFixed(t);
+ break;
+ case "p":
+ l = parseFloat(e[r]).toPrecision(t);
+ break;
+ case "e":
+ l = parseFloat(e[r]).toExponential(t);
+ break;
+ case "x":
+ l = parseInt(e[r]).toString(c || 16);
+ break;
+ case "d":
+ l = parseFloat(parseInt(e[r], c || 10).toPrecision(t)).toFixed(0)
+ }
+ l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(c);
+ let h = parseInt(i),
+ u = i && i[0] + "" == "0" ? "0" : " ";
+ for (; l.length < h;)
+ l = void 0 !== n ? l + u : u + l;
+ return l
+ }))
+ }
+ static getBytes(t, e)
+ {
+ return S.encode(t, e)
+ }
+ static getCharCode(t, e=0)
+ {
+ return t.charCodeAt(e)
+ }
+ static getCharAt(t)
+ {
+ return String.fromCharCode(t)
+ }
+ }
+ _.SHIFT_JIS = I.SJIS.getName(),
+ _.GB2312 = "GB2312",
+ _.ISO88591 = I.ISO8859_1.getName(),
+ _.EUC_JP = "EUC_JP",
+ _.UTF8 = I.UTF8.getName(),
+ _.PLATFORM_DEFAULT_ENCODING = _.UTF8,
+ _.ASSUME_SHIFT_JIS = !1;
+ class T {
+ constructor(t="")
+ {
+ this.value = t
+ }
+ enableDecoding(t)
+ {
+ return this.encoding = t, this
+ }
+ append(t)
+ {
+ return "string" == typeof t ? this.value += t.toString() : this.encoding ? this.value += _.castAsNonUtf8Char(t, this.encoding) : this.value += String.fromCharCode(t), this
+ }
+ appendChars(t, e, r)
+ {
+ for (let n = e; e < e + r; n++)
+ this.append(t[n]);
+ return this
+ }
+ length()
+ {
+ return this.value.length
+ }
+ charAt(t)
+ {
+ return this.value.charAt(t)
+ }
+ deleteCharAt(t)
+ {
+ this.value = this.value.substr(0, t) + this.value.substring(t + 1)
+ }
+ setCharAt(t, e)
+ {
+ this.value = this.value.substr(0, t) + e + this.value.substr(t + 1)
+ }
+ substring(t, e)
+ {
+ return this.value.substring(t, e)
+ }
+ setLengthToZero()
+ {
+ this.value = ""
+ }
+ toString()
+ {
+ return this.value
+ }
+ insert(t, e)
+ {
+ this.value = this.value.substr(0, t) + e + this.value.substr(t + e.length)
+ }
+ }
+ class y {
+ constructor(t, e, r, n)
+ {
+ if (this.width = t, this.height = e, this.rowSize = r, this.bits = n, null == e && (e = t), this.height = e, t < 1 || e < 1)
+ throw new a("Both dimensions must be greater than 0");
+ null == r && (r = Math.floor((t + 31) / 32)),
+ this.rowSize = r,
+ null == n && (this.bits = new Int32Array(this.rowSize * this.height))
+ }
+ static parseFromBooleanArray(t)
+ {
+ const e = t.length,
+ r = t[0].length,
+ n = new y(r, e);
+ for (let i = 0; i < e; i++) {
+ const e = t[i];
+ for (let t = 0; t < r; t++)
+ e[t] && n.set(t, i)
+ }
+ return n
+ }
+ static parseFromString(t, e, r)
+ {
+ if (null === t)
+ throw new a("stringRepresentation cannot be null");
+ const n = new Array(t.length);
+ let i = 0,
+ o = 0,
+ s = -1,
+ l = 0,
+ c = 0;
+ for (; c < t.length;)
+ if ("\n" === t.charAt(c) || "\r" === t.charAt(c)) {
+ if (i > o) {
+ if (-1 === s)
+ s = i - o;
+ else if (i - o !== s)
+ throw new a("row lengths do not match");
+ o = i,
+ l++
+ }
+ c++
+ } else if (t.substring(c, c + e.length) === e)
+ c += e.length,
+ n[i] = !0,
+ i++;
+ else {
+ if (t.substring(c, c + r.length) !== r)
+ throw new a("illegal character encountered: " + t.substring(c));
+ c += r.length,
+ n[i] = !1,
+ i++
+ }
+ if (i > o) {
+ if (-1 === s)
+ s = i - o;
+ else if (i - o !== s)
+ throw new a("row lengths do not match");
+ l++
+ }
+ const h = new y(s, l);
+ for (let t = 0; t < i; t++)
+ n[t] && h.set(Math.floor(t % s), Math.floor(t / s));
+ return h
+ }
+ get(t, e)
+ {
+ const r = e * this.rowSize + Math.floor(t / 32);
+ return 0 != (this.bits[r] >>> (31 & t) & 1)
+ }
+ set(t, e)
+ {
+ const r = e * this.rowSize + Math.floor(t / 32);
+ this.bits[r] |= 1 << (31 & t) & 4294967295
+ }
+ unset(t, e)
+ {
+ const r = e * this.rowSize + Math.floor(t / 32);
+ this.bits[r] &= ~(1 << (31 & t) & 4294967295)
+ }
+ flip(t, e)
+ {
+ const r = e * this.rowSize + Math.floor(t / 32);
+ this.bits[r] ^= 1 << (31 & t) & 4294967295
+ }
+ xor(t)
+ {
+ if (this.width !== t.getWidth() || this.height !== t.getHeight() || this.rowSize !== t.getRowSize())
+ throw new a("input matrix dimensions do not match");
+ const e = new A(Math.floor(this.width / 32) + 1),
+ r = this.rowSize,
+ n = this.bits;
+ for (let i = 0, o = this.height; i < o; i++) {
+ const o = i * r,
+ s = t.getRow(i, e).getBitArray();
+ for (let t = 0; t < r; t++)
+ n[o + t] ^= s[t]
+ }
+ }
+ clear()
+ {
+ const t = this.bits,
+ e = t.length;
+ for (let r = 0; r < e; r++)
+ t[r] = 0
+ }
+ setRegion(t, e, r, n)
+ {
+ if (e < 0 || t < 0)
+ throw new a("Left and top must be nonnegative");
+ if (n < 1 || r < 1)
+ throw new a("Height and width must be at least 1");
+ const i = t + r,
+ o = e + n;
+ if (o > this.height || i > this.width)
+ throw new a("The region must fit inside the matrix");
+ const s = this.rowSize,
+ l = this.bits;
+ for (let r = e; r < o; r++) {
+ const e = r * s;
+ for (let r = t; r < i; r++)
+ l[e + Math.floor(r / 32)] |= 1 << (31 & r) & 4294967295
+ }
+ }
+ getRow(t, e)
+ {
+ null == e || e.getSize() < this.width ? e = new A(this.width) : e.clear();
+ const r = this.rowSize,
+ n = this.bits,
+ i = t * r;
+ for (let t = 0; t < r; t++)
+ e.setBulk(32 * t, n[i + t]);
+ return e
+ }
+ setRow(t, e)
+ {
+ u.arraycopy(e.getBitArray(), 0, this.bits, t * this.rowSize, this.rowSize)
+ }
+ rotate180()
+ {
+ const t = this.getWidth(),
+ e = this.getHeight();
+ let r = new A(t),
+ n = new A(t);
+ for (let t = 0, i = Math.floor((e + 1) / 2); t < i; t++)
+ r = this.getRow(t, r),
+ n = this.getRow(e - 1 - t, n),
+ r.reverse(),
+ n.reverse(),
+ this.setRow(t, n),
+ this.setRow(e - 1 - t, r)
+ }
+ getEnclosingRectangle()
+ {
+ const t = this.width,
+ e = this.height,
+ r = this.rowSize,
+ n = this.bits;
+ let i = t,
+ o = e,
+ s = -1,
+ a = -1;
+ for (let t = 0; t < e; t++)
+ for (let e = 0; e < r; e++) {
+ const l = n[t * r + e];
+ if (0 !== l) {
+ if (t < o && (o = t), t > a && (a = t), 32 * e < i) {
+ let t = 0;
+ for (; 0 == (l << 31 - t & 4294967295);)
+ t++;
+ 32 * e + t < i && (i = 32 * e + t)
+ }
+ if (32 * e + 31 > s) {
+ let t = 31;
+ for (; l >>> t == 0;)
+ t--;
+ 32 * e + t > s && (s = 32 * e + t)
+ }
+ }
+ }
+ return s < i || a < o ? null : Int32Array.from([i, o, s - i + 1, a - o + 1])
+ }
+ getTopLeftOnBit()
+ {
+ const t = this.rowSize,
+ e = this.bits;
+ let r = 0;
+ for (; r < e.length && 0 === e[r];)
+ r++;
+ if (r === e.length)
+ return null;
+ const n = r / t;
+ let i = r % t * 32;
+ const o = e[r];
+ let s = 0;
+ for (; 0 == (o << 31 - s & 4294967295);)
+ s++;
+ return i += s, Int32Array.from([i, n])
+ }
+ getBottomRightOnBit()
+ {
+ const t = this.rowSize,
+ e = this.bits;
+ let r = e.length - 1;
+ for (; r >= 0 && 0 === e[r];)
+ r--;
+ if (r < 0)
+ return null;
+ const n = Math.floor(r / t);
+ let i = 32 * Math.floor(r % t);
+ const o = e[r];
+ let s = 31;
+ for (; o >>> s == 0;)
+ s--;
+ return i += s, Int32Array.from([i, n])
+ }
+ getWidth()
+ {
+ return this.width
+ }
+ getHeight()
+ {
+ return this.height
+ }
+ getRowSize()
+ {
+ return this.rowSize
+ }
+ equals(t)
+ {
+ if (!(t instanceof y))
+ return !1;
+ const e = t;
+ return this.width === e.width && this.height === e.height && this.rowSize === e.rowSize && f.equals(this.bits, e.bits)
+ }
+ hashCode()
+ {
+ let t = this.width;
+ return t = 31 * t + this.width, t = 31 * t + this.height, t = 31 * t + this.rowSize, t = 31 * t + f.hashCode(this.bits), t
+ }
+ toString(t="X ", e=" ", r="\n")
+ {
+ return this.buildToString(t, e, r)
+ }
+ buildToString(t, e, r)
+ {
+ let n = new T;
+ for (let i = 0, o = this.height; i < o; i++) {
+ for (let r = 0, o = this.width; r < o; r++)
+ n.append(this.get(r, i) ? t : e);
+ n.append(r)
+ }
+ return n.toString()
+ }
+ clone()
+ {
+ return new y(this.width, this.height, this.rowSize, this.bits.slice())
+ }
+ }
+ class N extends o {
+ static getNotFoundInstance()
+ {
+ return new N
+ }
+ }
+ N.kind = "NotFoundException";
+ class M extends h {
+ constructor(t)
+ {
+ super(t),
+ this.luminances = M.EMPTY,
+ this.buckets = new Int32Array(M.LUMINANCE_BUCKETS)
+ }
+ getBlackRow(t, e)
+ {
+ const r = this.getLuminanceSource(),
+ n = r.getWidth();
+ null == e || e.getSize() < n ? e = new A(n) : e.clear(),
+ this.initArrays(n);
+ const i = r.getRow(t, this.luminances),
+ o = this.buckets;
+ for (let t = 0; t < n; t++)
+ o[(255 & i[t]) >> M.LUMINANCE_SHIFT]++;
+ const s = M.estimateBlackPoint(o);
+ if (n < 3)
+ for (let t = 0; t < n; t++)
+ (255 & i[t]) < s && e.set(t);
+ else {
+ let t = 255 & i[0],
+ r = 255 & i[1];
+ for (let o = 1; o < n - 1; o++) {
+ const n = 255 & i[o + 1];
+ (4 * r - t - n) / 2 < s && e.set(o),
+ t = r,
+ r = n
+ }
+ }
+ return e
+ }
+ getBlackMatrix()
+ {
+ const t = this.getLuminanceSource(),
+ e = t.getWidth(),
+ r = t.getHeight(),
+ n = new y(e, r);
+ this.initArrays(e);
+ const i = this.buckets;
+ for (let n = 1; n < 5; n++) {
+ const o = Math.floor(r * n / 5),
+ s = t.getRow(o, this.luminances),
+ a = Math.floor(4 * e / 5);
+ for (let t = Math.floor(e / 5); t < a; t++)
+ i[(255 & s[t]) >> M.LUMINANCE_SHIFT]++
+ }
+ const o = M.estimateBlackPoint(i),
+ s = t.getMatrix();
+ for (let t = 0; t < r; t++) {
+ const r = t * e;
+ for (let i = 0; i < e; i++)
+ (255 & s[r + i]) < o && n.set(i, t)
+ }
+ return n
+ }
+ createBinarizer(t)
+ {
+ return new M(t)
+ }
+ initArrays(t)
+ {
+ this.luminances.length < t && (this.luminances = new Uint8ClampedArray(t));
+ const e = this.buckets;
+ for (let t = 0; t < M.LUMINANCE_BUCKETS; t++)
+ e[t] = 0
+ }
+ static estimateBlackPoint(t)
+ {
+ const e = t.length;
+ let r = 0,
+ n = 0,
+ i = 0;
+ for (let o = 0; o < e; o++)
+ t[o] > i && (n = o, i = t[o]),
+ t[o] > r && (r = t[o]);
+ let o = 0,
+ s = 0;
+ for (let r = 0; r < e; r++) {
+ const e = r - n,
+ i = t[r] * e * e;
+ i > s && (o = r, s = i)
+ }
+ if (n > o) {
+ const t = n;
+ n = o,
+ o = t
+ }
+ if (o - n <= e / 16)
+ throw new N;
+ let a = o - 1,
+ l = -1;
+ for (let e = o - 1; e > n; e--) {
+ const i = e - n,
+ s = i * i * (o - e) * (r - t[e]);
+ s > l && (a = e, l = s)
+ }
+ return a << M.LUMINANCE_SHIFT
+ }
+ }
+ M.LUMINANCE_BITS = 5,
+ M.LUMINANCE_SHIFT = 8 - M.LUMINANCE_BITS,
+ M.LUMINANCE_BUCKETS = 1 << M.LUMINANCE_BITS,
+ M.EMPTY = Uint8ClampedArray.from([0]);
+ class D extends M {
+ constructor(t)
+ {
+ super(t),
+ this.matrix = null
+ }
+ getBlackMatrix()
+ {
+ if (null !== this.matrix)
+ return this.matrix;
+ const t = this.getLuminanceSource(),
+ e = t.getWidth(),
+ r = t.getHeight();
+ if (e >= D.MINIMUM_DIMENSION && r >= D.MINIMUM_DIMENSION) {
+ const n = t.getMatrix();
+ let i = e >> D.BLOCK_SIZE_POWER;
+ 0 != (e & D.BLOCK_SIZE_MASK) && i++;
+ let o = r >> D.BLOCK_SIZE_POWER;
+ 0 != (r & D.BLOCK_SIZE_MASK) && o++;
+ const s = D.calculateBlackPoints(n, i, o, e, r),
+ a = new y(e, r);
+ D.calculateThresholdForBlock(n, i, o, e, r, s, a),
+ this.matrix = a
+ } else
+ this.matrix = super.getBlackMatrix();
+ return this.matrix
+ }
+ createBinarizer(t)
+ {
+ return new D(t)
+ }
+ static calculateThresholdForBlock(t, e, r, n, i, o, s)
+ {
+ const a = i - D.BLOCK_SIZE,
+ l = n - D.BLOCK_SIZE;
+ for (let i = 0; i < r; i++) {
+ let c = i << D.BLOCK_SIZE_POWER;
+ c > a && (c = a);
+ const h = D.cap(i, 2, r - 3);
+ for (let r = 0; r < e; r++) {
+ let i = r << D.BLOCK_SIZE_POWER;
+ i > l && (i = l);
+ const a = D.cap(r, 2, e - 3);
+ let u = 0;
+ for (let t = -2; t <= 2; t++) {
+ const e = o[h + t];
+ u += e[a - 2] + e[a - 1] + e[a] + e[a + 1] + e[a + 2]
+ }
+ const d = u / 25;
+ D.thresholdBlock(t, i, c, d, n, s)
+ }
+ }
+ }
+ static cap(t, e, r)
+ {
+ return t < e ? e : t > r ? r : t
+ }
+ static thresholdBlock(t, e, r, n, i, o)
+ {
+ for (let s = 0, a = r * i + e; s < D.BLOCK_SIZE; s++, a += i)
+ for (let i = 0; i < D.BLOCK_SIZE; i++)
+ (255 & t[a + i]) <= n && o.set(e + i, r + s)
+ }
+ static calculateBlackPoints(t, e, r, n, i)
+ {
+ const o = i - D.BLOCK_SIZE,
+ s = n - D.BLOCK_SIZE,
+ a = new Array(r);
+ for (let i = 0; i < r; i++) {
+ a[i] = new Int32Array(e);
+ let r = i << D.BLOCK_SIZE_POWER;
+ r > o && (r = o);
+ for (let o = 0; o < e; o++) {
+ let e = o << D.BLOCK_SIZE_POWER;
+ e > s && (e = s);
+ let l = 0,
+ c = 255,
+ h = 0;
+ for (let i = 0, o = r * n + e; i < D.BLOCK_SIZE; i++, o += n) {
+ for (let e = 0; e < D.BLOCK_SIZE; e++) {
+ const r = 255 & t[o + e];
+ l += r,
+ r < c && (c = r),
+ r > h && (h = r)
+ }
+ if (h - c > D.MIN_DYNAMIC_RANGE)
+ for (i++, o += n; i < D.BLOCK_SIZE; i++, o += n)
+ for (let e = 0; e < D.BLOCK_SIZE; e++)
+ l += 255 & t[o + e]
+ }
+ let u = l >> 2 * D.BLOCK_SIZE_POWER;
+ if (h - c <= D.MIN_DYNAMIC_RANGE && (u = c / 2, i > 0 && o > 0)) {
+ const t = (a[i - 1][o] + 2 * a[i][o - 1] + a[i - 1][o - 1]) / 4;
+ c < t && (u = t)
+ }
+ a[i][o] = u
+ }
+ }
+ return a
+ }
+ }
+ D.BLOCK_SIZE_POWER = 3,
+ D.BLOCK_SIZE = 1 << D.BLOCK_SIZE_POWER,
+ D.BLOCK_SIZE_MASK = D.BLOCK_SIZE - 1,
+ D.MINIMUM_DIMENSION = 5 * D.BLOCK_SIZE,
+ D.MIN_DYNAMIC_RANGE = 24;
+ class R {
+ constructor(t, e)
+ {
+ this.width = t,
+ this.height = e
+ }
+ getWidth()
+ {
+ return this.width
+ }
+ getHeight()
+ {
+ return this.height
+ }
+ isCropSupported()
+ {
+ return !1
+ }
+ crop(t, e, r, n)
+ {
+ throw new p("This luminance source does not support cropping.")
+ }
+ isRotateSupported()
+ {
+ return !1
+ }
+ rotateCounterClockwise()
+ {
+ throw new p("This luminance source does not support rotation by 90 degrees.")
+ }
+ rotateCounterClockwise45()
+ {
+ throw new p("This luminance source does not support rotation by 45 degrees.")
+ }
+ toString()
+ {
+ const t = new Uint8ClampedArray(this.width);
+ let e = new T;
+ for (let r = 0; r < this.height; r++) {
+ const n = this.getRow(r, t);
+ for (let t = 0; t < this.width; t++) {
+ const r = 255 & n[t];
+ let i;
+ i = r < 64 ? "#" : r < 128 ? "+" : r < 192 ? "." : " ",
+ e.append(i)
+ }
+ e.append("\n")
+ }
+ return e.toString()
+ }
+ }
+ class O extends R {
+ constructor(t)
+ {
+ super(t.getWidth(), t.getHeight()),
+ this.delegate = t
+ }
+ getRow(t, e)
+ {
+ const r = this.delegate.getRow(t, e),
+ n = this.getWidth();
+ for (let t = 0; t < n; t++)
+ r[t] = 255 - (255 & r[t]);
+ return r
+ }
+ getMatrix()
+ {
+ const t = this.delegate.getMatrix(),
+ e = this.getWidth() * this.getHeight(),
+ r = new Uint8ClampedArray(e);
+ for (let n = 0; n < e; n++)
+ r[n] = 255 - (255 & t[n]);
+ return r
+ }
+ isCropSupported()
+ {
+ return this.delegate.isCropSupported()
+ }
+ crop(t, e, r, n)
+ {
+ return new O(this.delegate.crop(t, e, r, n))
+ }
+ isRotateSupported()
+ {
+ return this.delegate.isRotateSupported()
+ }
+ invert()
+ {
+ return this.delegate
+ }
+ rotateCounterClockwise()
+ {
+ return new O(this.delegate.rotateCounterClockwise())
+ }
+ rotateCounterClockwise45()
+ {
+ return new O(this.delegate.rotateCounterClockwise45())
+ }
+ }
+ class b extends R {
+ constructor(t)
+ {
+ super(t.width, t.height),
+ this.canvas = t,
+ this.tempCanvasElement = null,
+ this.buffer = b.makeBufferFromCanvasImageData(t)
+ }
+ static makeBufferFromCanvasImageData(t)
+ {
+ const e = t.getContext("2d").getImageData(0, 0, t.width, t.height);
+ return b.toGrayscaleBuffer(e.data, t.width, t.height)
+ }
+ static toGrayscaleBuffer(t, e, r)
+ {
+ const n = new Uint8ClampedArray(e * r);
+ for (let e = 0, r = 0, i = t.length; e < i; e += 4, r++) {
+ let i;
+ i = 0 === t[e + 3] ? 255 : 306 * t[e] + 601 * t[e + 1] + 117 * t[e + 2] + 512 >> 10,
+ n[r] = i
+ }
+ return n
+ }
+ getRow(t, e)
+ {
+ if (t < 0 || t >= this.getHeight())
+ throw new a("Requested row is outside the image: " + t);
+ const r = this.getWidth(),
+ n = t * r;
+ return null === e ? e = this.buffer.slice(n, n + r) : (e.length < r && (e = new Uint8ClampedArray(r)), e.set(this.buffer.slice(n, n + r))), e
+ }
+ getMatrix()
+ {
+ return this.buffer
+ }
+ isCropSupported()
+ {
+ return !0
+ }
+ crop(t, e, r, n)
+ {
+ return super.crop(t, e, r, n), this
+ }
+ isRotateSupported()
+ {
+ return !0
+ }
+ rotateCounterClockwise()
+ {
+ return this.rotate(-90), this
+ }
+ rotateCounterClockwise45()
+ {
+ return this.rotate(-45), this
+ }
+ getTempCanvasElement()
+ {
+ if (null === this.tempCanvasElement) {
+ const t = this.canvas.ownerDocument.createElement("canvas");
+ t.width = this.canvas.width,
+ t.height = this.canvas.height,
+ this.tempCanvasElement = t
+ }
+ return this.tempCanvasElement
+ }
+ rotate(t)
+ {
+ const e = this.getTempCanvasElement(),
+ r = e.getContext("2d"),
+ n = t * b.DEGREE_TO_RADIANS,
+ i = this.canvas.width,
+ o = this.canvas.height,
+ s = Math.ceil(Math.abs(Math.cos(n)) * i + Math.abs(Math.sin(n)) * o),
+ a = Math.ceil(Math.abs(Math.sin(n)) * i + Math.abs(Math.cos(n)) * o);
+ return e.width = s, e.height = a, r.translate(s / 2, a / 2), r.rotate(n), r.drawImage(this.canvas, i / -2, o / -2), this.buffer = b.makeBufferFromCanvasImageData(e), this
+ }
+ invert()
+ {
+ return new O(this)
+ }
+ }
+ b.DEGREE_TO_RADIANS = Math.PI / 180;
+ class B {
+ constructor(t, e, r)
+ {
+ this.deviceId = t,
+ this.label = e,
+ this.kind = "videoinput",
+ this.groupId = r || void 0
+ }
+ toJSON()
+ {
+ return {
+ kind: this.kind,
+ groupId: this.groupId,
+ deviceId: this.deviceId,
+ label: this.label
+ }
+ }
+ }
+ var L,
+ P = (globalThis || r.g || self || window ? (globalThis || r.g || self || window || void 0).__awaiter : void 0) || function(t, e, r, n) {
+ return new (r || (r = Promise))((function(i, o) {
+ function s(t) {
+ try {
+ l(n.next(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function a(t) {
+ try {
+ l(n.throw(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function l(t) {
+ var e;
+ t.done ? i(t.value) : (e = t.value, e instanceof r ? e : new r((function(t) {
+ t(e)
+ }))).then(s, a)
+ }
+ l((n = n.apply(t, e || [])).next())
+ }))
+ };
+ class v {
+ constructor(t, e=500, r)
+ {
+ this.reader = t,
+ this.timeBetweenScansMillis = e,
+ this._hints = r,
+ this._stopContinuousDecode = !1,
+ this._stopAsyncDecode = !1,
+ this._timeBetweenDecodingAttempts = 0
+ }
+ get hasNavigator()
+ {
+ return "undefined" != typeof navigator
+ }
+ get isMediaDevicesSuported()
+ {
+ return this.hasNavigator && !!navigator.mediaDevices
+ }
+ get canEnumerateDevices()
+ {
+ return !(!this.isMediaDevicesSuported || !navigator.mediaDevices.enumerateDevices)
+ }
+ get timeBetweenDecodingAttempts()
+ {
+ return this._timeBetweenDecodingAttempts
+ }
+ set timeBetweenDecodingAttempts(t)
+ {
+ this._timeBetweenDecodingAttempts = t < 0 ? 0 : t
+ }
+ set hints(t)
+ {
+ this._hints = t || null
+ }
+ get hints()
+ {
+ return this._hints
+ }
+ listVideoInputDevices()
+ {
+ return P(this, void 0, void 0, (function* () {
+ if (!this.hasNavigator)
+ throw new Error("Can't enumerate devices, navigator is not present.");
+ if (!this.canEnumerateDevices)
+ throw new Error("Can't enumerate devices, method not supported.");
+ const t = yield navigator.mediaDevices.enumerateDevices(),
+ e = [];
+ for (const r of t) {
+ const t = "video" === r.kind ? "videoinput" : r.kind;
+ if ("videoinput" !== t)
+ continue;
+ const n = {
+ deviceId: r.deviceId || r.id,
+ label: r.label || `Video device ${e.length + 1}`,
+ kind: t,
+ groupId: r.groupId
+ };
+ e.push(n)
+ }
+ return e
+ }))
+ }
+ getVideoInputDevices()
+ {
+ return P(this, void 0, void 0, (function* () {
+ return (yield this.listVideoInputDevices()).map((t => new B(t.deviceId, t.label)))
+ }))
+ }
+ findDeviceById(t)
+ {
+ return P(this, void 0, void 0, (function* () {
+ const e = yield this.listVideoInputDevices();
+ return e ? e.find((e => e.deviceId === t)) : null
+ }))
+ }
+ decodeFromInputVideoDevice(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ return yield this.decodeOnceFromVideoDevice(t, e)
+ }))
+ }
+ decodeOnceFromVideoDevice(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ let r;
+ this.reset(),
+ r = t ? {
+ deviceId: {
+ exact: t
+ }
+ } : {
+ facingMode: "environment"
+ };
+ const n = {
+ video: r
+ };
+ return yield this.decodeOnceFromConstraints(n, e)
+ }))
+ }
+ decodeOnceFromConstraints(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ const r = yield navigator.mediaDevices.getUserMedia(t);
+ return yield this.decodeOnceFromStream(r, e)
+ }))
+ }
+ decodeOnceFromStream(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ this.reset();
+ const r = yield this.attachStreamToVideo(t, e);
+ return yield this.decodeOnce(r)
+ }))
+ }
+ decodeFromInputVideoDeviceContinuously(t, e, r)
+ {
+ return P(this, void 0, void 0, (function* () {
+ return yield this.decodeFromVideoDevice(t, e, r)
+ }))
+ }
+ decodeFromVideoDevice(t, e, r)
+ {
+ return P(this, void 0, void 0, (function* () {
+ let n;
+ n = t ? {
+ deviceId: {
+ exact: t
+ }
+ } : {
+ facingMode: "environment"
+ };
+ const i = {
+ video: n
+ };
+ return yield this.decodeFromConstraints(i, e, r)
+ }))
+ }
+ decodeFromConstraints(t, e, r)
+ {
+ return P(this, void 0, void 0, (function* () {
+ const n = yield navigator.mediaDevices.getUserMedia(t);
+ return yield this.decodeFromStream(n, e, r)
+ }))
+ }
+ decodeFromStream(t, e, r)
+ {
+ return P(this, void 0, void 0, (function* () {
+ this.reset();
+ const n = yield this.attachStreamToVideo(t, e);
+ return yield this.decodeContinuously(n, r)
+ }))
+ }
+ stopAsyncDecode()
+ {
+ this._stopAsyncDecode = !0
+ }
+ stopContinuousDecode()
+ {
+ this._stopContinuousDecode = !0
+ }
+ attachStreamToVideo(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ const r = this.prepareVideoElement(e);
+ return this.addVideoSource(r, t), this.videoElement = r, this.stream = t, yield this.playVideoOnLoadAsync(r), r
+ }))
+ }
+ playVideoOnLoadAsync(t)
+ {
+ return new Promise(((e, r) => this.playVideoOnLoad(t, (() => e()))))
+ }
+ playVideoOnLoad(t, e)
+ {
+ this.videoEndedListener = () => this.stopStreams(),
+ this.videoCanPlayListener = () => this.tryPlayVideo(t),
+ t.addEventListener("ended", this.videoEndedListener),
+ t.addEventListener("canplay", this.videoCanPlayListener),
+ t.addEventListener("playing", e),
+ this.tryPlayVideo(t)
+ }
+ isVideoPlaying(t)
+ {
+ return t.currentTime > 0 && !t.paused && !t.ended && t.readyState > 2
+ }
+ tryPlayVideo(t)
+ {
+ return P(this, void 0, void 0, (function* () {
+ if (this.isVideoPlaying(t))
+ console.warn("Trying to play video that is already playing.");
+ else
+ try {
+ yield t.play()
+ } catch (t) {
+ console.warn("It was not possible to play the video.")
+ }
+ }))
+ }
+ getMediaElement(t, e)
+ {
+ const r = document.getElementById(t);
+ if (!r)
+ throw new s(`element with id '${t}' not found`);
+ if (r.nodeName.toLowerCase() !== e.toLowerCase())
+ throw new s(`element with id '${t}' must be an ${e} element`);
+ return r
+ }
+ decodeFromImage(t, e)
+ {
+ if (!t && !e)
+ throw new s("either imageElement with a src set or an url must be provided");
+ return e && !t ? this.decodeFromImageUrl(e) : this.decodeFromImageElement(t)
+ }
+ decodeFromVideo(t, e)
+ {
+ if (!t && !e)
+ throw new s("Either an element with a src set or an URL must be provided");
+ return e && !t ? this.decodeFromVideoUrl(e) : this.decodeFromVideoElement(t)
+ }
+ decodeFromVideoContinuously(t, e, r)
+ {
+ if (void 0 === t && void 0 === e)
+ throw new s("Either an element with a src set or an URL must be provided");
+ return e && !t ? this.decodeFromVideoUrlContinuously(e, r) : this.decodeFromVideoElementContinuously(t, r)
+ }
+ decodeFromImageElement(t)
+ {
+ if (!t)
+ throw new s("An image element must be provided.");
+ this.reset();
+ const e = this.prepareImageElement(t);
+ let r;
+ return this.imageElement = e, r = this.isImageLoaded(e) ? this.decodeOnce(e, !1, !0) : this._decodeOnLoadImage(e), r
+ }
+ decodeFromVideoElement(t)
+ {
+ const e = this._decodeFromVideoElementSetup(t);
+ return this._decodeOnLoadVideo(e)
+ }
+ decodeFromVideoElementContinuously(t, e)
+ {
+ const r = this._decodeFromVideoElementSetup(t);
+ return this._decodeOnLoadVideoContinuously(r, e)
+ }
+ _decodeFromVideoElementSetup(t)
+ {
+ if (!t)
+ throw new s("A video element must be provided.");
+ this.reset();
+ const e = this.prepareVideoElement(t);
+ return this.videoElement = e, e
+ }
+ decodeFromImageUrl(t)
+ {
+ if (!t)
+ throw new s("An URL must be provided.");
+ this.reset();
+ const e = this.prepareImageElement();
+ this.imageElement = e;
+ const r = this._decodeOnLoadImage(e);
+ return e.src = t, r
+ }
+ decodeFromVideoUrl(t)
+ {
+ if (!t)
+ throw new s("An URL must be provided.");
+ this.reset();
+ const e = this.prepareVideoElement(),
+ r = this.decodeFromVideoElement(e);
+ return e.src = t, r
+ }
+ decodeFromVideoUrlContinuously(t, e)
+ {
+ if (!t)
+ throw new s("An URL must be provided.");
+ this.reset();
+ const r = this.prepareVideoElement(),
+ n = this.decodeFromVideoElementContinuously(r, e);
+ return r.src = t, n
+ }
+ _decodeOnLoadImage(t)
+ {
+ return new Promise(((e, r) => {
+ this.imageLoadedListener = () => this.decodeOnce(t, !1, !0).then(e, r),
+ t.addEventListener("load", this.imageLoadedListener)
+ }))
+ }
+ _decodeOnLoadVideo(t)
+ {
+ return P(this, void 0, void 0, (function* () {
+ return yield this.playVideoOnLoadAsync(t), yield this.decodeOnce(t)
+ }))
+ }
+ _decodeOnLoadVideoContinuously(t, e)
+ {
+ return P(this, void 0, void 0, (function* () {
+ yield this.playVideoOnLoadAsync(t),
+ this.decodeContinuously(t, e)
+ }))
+ }
+ isImageLoaded(t)
+ {
+ return !!t.complete && 0 !== t.naturalWidth
+ }
+ prepareImageElement(t)
+ {
+ let e;
+ return void 0 === t && (e = document.createElement("img"), e.width = 200, e.height = 200), "string" == typeof t && (e = this.getMediaElement(t, "img")), t instanceof HTMLImageElement && (e = t), e
+ }
+ prepareVideoElement(t)
+ {
+ let e;
+ return t || "undefined" == typeof document || (e = document.createElement("video"), e.width = 200, e.height = 200), "string" == typeof t && (e = this.getMediaElement(t, "video")), t instanceof HTMLVideoElement && (e = t), e.setAttribute("autoplay", "true"), e.setAttribute("muted", "true"), e.setAttribute("playsinline", "true"), e
+ }
+ decodeOnce(t, e=!0, r=!0)
+ {
+ this._stopAsyncDecode = !1;
+ const n = (i, o) => {
+ if (this._stopAsyncDecode)
+ return o(new N("Video stream has ended before any code could be detected.")), void (this._stopAsyncDecode = void 0);
+ try {
+ i(this.decode(t))
+ } catch (t) {
+ const s = (t instanceof c || t instanceof C) && r;
+ if (e && t instanceof N || s)
+ return setTimeout(n, this._timeBetweenDecodingAttempts, i, o);
+ o(t)
+ }
+ };
+ return new Promise(((t, e) => n(t, e)))
+ }
+ decodeContinuously(t, e)
+ {
+ this._stopContinuousDecode = !1;
+ const r = () => {
+ if (this._stopContinuousDecode)
+ this._stopContinuousDecode = void 0;
+ else
+ try {
+ const n = this.decode(t);
+ e(n, null),
+ setTimeout(r, this.timeBetweenScansMillis)
+ } catch (t) {
+ e(null, t);
+ const n = t instanceof N;
+ (t instanceof c || t instanceof C || n) && setTimeout(r, this._timeBetweenDecodingAttempts)
+ }
+ };
+ r()
+ }
+ decode(t)
+ {
+ const e = this.createBinaryBitmap(t);
+ return this.decodeBitmap(e)
+ }
+ createBinaryBitmap(t)
+ {
+ const e = this.getCaptureCanvasContext(t);
+ this.drawImageOnCanvas(e, t);
+ const r = this.getCaptureCanvas(t),
+ n = new b(r),
+ i = new D(n);
+ return new l(i)
+ }
+ getCaptureCanvasContext(t)
+ {
+ if (!this.captureCanvasContext) {
+ const e = this.getCaptureCanvas(t).getContext("2d");
+ this.captureCanvasContext = e
+ }
+ return this.captureCanvasContext
+ }
+ getCaptureCanvas(t)
+ {
+ if (!this.captureCanvas) {
+ const e = this.createCaptureCanvas(t);
+ this.captureCanvas = e
+ }
+ return this.captureCanvas
+ }
+ drawImageOnCanvas(t, e)
+ {
+ t.drawImage(e, 0, 0)
+ }
+ decodeBitmap(t)
+ {
+ return this.reader.decode(t, this._hints)
+ }
+ createCaptureCanvas(t)
+ {
+ if ("undefined" == typeof document)
+ return this._destroyCaptureCanvas(), null;
+ const e = document.createElement("canvas");
+ let r,
+ n;
+ return void 0 !== t && (t instanceof HTMLVideoElement ? (r = t.videoWidth, n = t.videoHeight) : t instanceof HTMLImageElement && (r = t.naturalWidth || t.width, n = t.naturalHeight || t.height)), e.style.width = r + "px", e.style.height = n + "px", e.width = r, e.height = n, e
+ }
+ stopStreams()
+ {
+ this.stream && (this.stream.getVideoTracks().forEach((t => t.stop())), this.stream = void 0),
+ !1 === this._stopAsyncDecode && this.stopAsyncDecode(),
+ !1 === this._stopContinuousDecode && this.stopContinuousDecode()
+ }
+ reset()
+ {
+ this.stopStreams(),
+ this._destroyVideoElement(),
+ this._destroyImageElement(),
+ this._destroyCaptureCanvas()
+ }
+ _destroyVideoElement()
+ {
+ this.videoElement && (void 0 !== this.videoEndedListener && this.videoElement.removeEventListener("ended", this.videoEndedListener), void 0 !== this.videoPlayingEventListener && this.videoElement.removeEventListener("playing", this.videoPlayingEventListener), void 0 !== this.videoCanPlayListener && this.videoElement.removeEventListener("loadedmetadata", this.videoCanPlayListener), this.cleanVideoSource(this.videoElement), this.videoElement = void 0)
+ }
+ _destroyImageElement()
+ {
+ this.imageElement && (void 0 !== this.imageLoadedListener && this.imageElement.removeEventListener("load", this.imageLoadedListener), this.imageElement.src = void 0, this.imageElement.removeAttribute("src"), this.imageElement = void 0)
+ }
+ _destroyCaptureCanvas()
+ {
+ this.captureCanvasContext = void 0,
+ this.captureCanvas = void 0
+ }
+ addVideoSource(t, e)
+ {
+ try {
+ t.srcObject = e
+ } catch (r) {
+ t.src = URL.createObjectURL(e)
+ }
+ }
+ cleanVideoSource(t)
+ {
+ try {
+ t.srcObject = null
+ } catch (e) {
+ t.src = ""
+ }
+ this.videoElement.removeAttribute("src")
+ }
+ }
+ class F {
+ constructor(t, e, r=(null == e ? 0 : 8 * e.length), n, i, o=u.currentTimeMillis())
+ {
+ this.text = t,
+ this.rawBytes = e,
+ this.numBits = r,
+ this.resultPoints = n,
+ this.format = i,
+ this.timestamp = o,
+ this.text = t,
+ this.rawBytes = e,
+ this.numBits = null == r ? null == e ? 0 : 8 * e.length : r,
+ this.resultPoints = n,
+ this.format = i,
+ this.resultMetadata = null,
+ this.timestamp = null == o ? u.currentTimeMillis() : o
+ }
+ getText()
+ {
+ return this.text
+ }
+ getRawBytes()
+ {
+ return this.rawBytes
+ }
+ getNumBits()
+ {
+ return this.numBits
+ }
+ getResultPoints()
+ {
+ return this.resultPoints
+ }
+ getBarcodeFormat()
+ {
+ return this.format
+ }
+ getResultMetadata()
+ {
+ return this.resultMetadata
+ }
+ putMetadata(t, e)
+ {
+ null === this.resultMetadata && (this.resultMetadata = new Map),
+ this.resultMetadata.set(t, e)
+ }
+ putAllMetadata(t)
+ {
+ null !== t && (null === this.resultMetadata ? this.resultMetadata = t : this.resultMetadata = new Map(t))
+ }
+ addResultPoints(t)
+ {
+ const e = this.resultPoints;
+ if (null === e)
+ this.resultPoints = t;
+ else if (null !== t && t.length > 0) {
+ const r = new Array(e.length + t.length);
+ u.arraycopy(e, 0, r, 0, e.length),
+ u.arraycopy(t, 0, r, e.length, t.length),
+ this.resultPoints = r
+ }
+ }
+ getTimestamp()
+ {
+ return this.timestamp
+ }
+ toString()
+ {
+ return this.text
+ }
+ }
+ !function(t) {
+ t[t.AZTEC = 0] = "AZTEC",
+ t[t.CODABAR = 1] = "CODABAR",
+ t[t.CODE_39 = 2] = "CODE_39",
+ t[t.CODE_93 = 3] = "CODE_93",
+ t[t.CODE_128 = 4] = "CODE_128",
+ t[t.DATA_MATRIX = 5] = "DATA_MATRIX",
+ t[t.EAN_8 = 6] = "EAN_8",
+ t[t.EAN_13 = 7] = "EAN_13",
+ t[t.ITF = 8] = "ITF",
+ t[t.MAXICODE = 9] = "MAXICODE",
+ t[t.PDF_417 = 10] = "PDF_417",
+ t[t.QR_CODE = 11] = "QR_CODE",
+ t[t.RSS_14 = 12] = "RSS_14",
+ t[t.RSS_EXPANDED = 13] = "RSS_EXPANDED",
+ t[t.UPC_A = 14] = "UPC_A",
+ t[t.UPC_E = 15] = "UPC_E",
+ t[t.UPC_EAN_EXTENSION = 16] = "UPC_EAN_EXTENSION"
+ }(L || (L = {}));
+ var x,
+ k = L;
+ !function(t) {
+ t[t.OTHER = 0] = "OTHER",
+ t[t.ORIENTATION = 1] = "ORIENTATION",
+ t[t.BYTE_SEGMENTS = 2] = "BYTE_SEGMENTS",
+ t[t.ERROR_CORRECTION_LEVEL = 3] = "ERROR_CORRECTION_LEVEL",
+ t[t.ISSUE_NUMBER = 4] = "ISSUE_NUMBER",
+ t[t.SUGGESTED_PRICE = 5] = "SUGGESTED_PRICE",
+ t[t.POSSIBLE_COUNTRY = 6] = "POSSIBLE_COUNTRY",
+ t[t.UPC_EAN_EXTENSION = 7] = "UPC_EAN_EXTENSION",
+ t[t.PDF417_EXTRA_METADATA = 8] = "PDF417_EXTRA_METADATA",
+ t[t.STRUCTURED_APPEND_SEQUENCE = 9] = "STRUCTURED_APPEND_SEQUENCE",
+ t[t.STRUCTURED_APPEND_PARITY = 10] = "STRUCTURED_APPEND_PARITY"
+ }(x || (x = {}));
+ var U,
+ H,
+ V,
+ z,
+ G,
+ Y,
+ X = x;
+ class W {
+ constructor(t, e, r, n, i=-1, o=-1)
+ {
+ this.rawBytes = t,
+ this.text = e,
+ this.byteSegments = r,
+ this.ecLevel = n,
+ this.structuredAppendSequenceNumber = i,
+ this.structuredAppendParity = o,
+ this.numBits = null == t ? 0 : 8 * t.length
+ }
+ getRawBytes()
+ {
+ return this.rawBytes
+ }
+ getNumBits()
+ {
+ return this.numBits
+ }
+ setNumBits(t)
+ {
+ this.numBits = t
+ }
+ getText()
+ {
+ return this.text
+ }
+ getByteSegments()
+ {
+ return this.byteSegments
+ }
+ getECLevel()
+ {
+ return this.ecLevel
+ }
+ getErrorsCorrected()
+ {
+ return this.errorsCorrected
+ }
+ setErrorsCorrected(t)
+ {
+ this.errorsCorrected = t
+ }
+ getErasures()
+ {
+ return this.erasures
+ }
+ setErasures(t)
+ {
+ this.erasures = t
+ }
+ getOther()
+ {
+ return this.other
+ }
+ setOther(t)
+ {
+ this.other = t
+ }
+ hasStructuredAppend()
+ {
+ return this.structuredAppendParity >= 0 && this.structuredAppendSequenceNumber >= 0
+ }
+ getStructuredAppendParity()
+ {
+ return this.structuredAppendParity
+ }
+ getStructuredAppendSequenceNumber()
+ {
+ return this.structuredAppendSequenceNumber
+ }
+ }
+ class j {
+ exp(t)
+ {
+ return this.expTable[t]
+ }
+ log(t)
+ {
+ if (0 === t)
+ throw new a;
+ return this.logTable[t]
+ }
+ static addOrSubtract(t, e)
+ {
+ return t ^ e
+ }
+ }
+ class Z {
+ constructor(t, e)
+ {
+ if (0 === e.length)
+ throw new a;
+ this.field = t;
+ const r = e.length;
+ if (r > 1 && 0 === e[0]) {
+ let t = 1;
+ for (; t < r && 0 === e[t];)
+ t++;
+ t === r ? this.coefficients = Int32Array.from([0]) : (this.coefficients = new Int32Array(r - t), u.arraycopy(e, t, this.coefficients, 0, this.coefficients.length))
+ } else
+ this.coefficients = e
+ }
+ getCoefficients()
+ {
+ return this.coefficients
+ }
+ getDegree()
+ {
+ return this.coefficients.length - 1
+ }
+ isZero()
+ {
+ return 0 === this.coefficients[0]
+ }
+ getCoefficient(t)
+ {
+ return this.coefficients[this.coefficients.length - 1 - t]
+ }
+ evaluateAt(t)
+ {
+ if (0 === t)
+ return this.getCoefficient(0);
+ const e = this.coefficients;
+ let r;
+ if (1 === t) {
+ r = 0;
+ for (let t = 0, n = e.length; t !== n; t++) {
+ const n = e[t];
+ r = j.addOrSubtract(r, n)
+ }
+ return r
+ }
+ r = e[0];
+ const n = e.length,
+ i = this.field;
+ for (let o = 1; o < n; o++)
+ r = j.addOrSubtract(i.multiply(t, r), e[o]);
+ return r
+ }
+ addOrSubtract(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("GenericGFPolys do not have same GenericGF field");
+ if (this.isZero())
+ return t;
+ if (t.isZero())
+ return this;
+ let e = this.coefficients,
+ r = t.coefficients;
+ if (e.length > r.length) {
+ const t = e;
+ e = r,
+ r = t
+ }
+ let n = new Int32Array(r.length);
+ const i = r.length - e.length;
+ u.arraycopy(r, 0, n, 0, i);
+ for (let t = i; t < r.length; t++)
+ n[t] = j.addOrSubtract(e[t - i], r[t]);
+ return new Z(this.field, n)
+ }
+ multiply(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("GenericGFPolys do not have same GenericGF field");
+ if (this.isZero() || t.isZero())
+ return this.field.getZero();
+ const e = this.coefficients,
+ r = e.length,
+ n = t.coefficients,
+ i = n.length,
+ o = new Int32Array(r + i - 1),
+ s = this.field;
+ for (let t = 0; t < r; t++) {
+ const r = e[t];
+ for (let e = 0; e < i; e++)
+ o[t + e] = j.addOrSubtract(o[t + e], s.multiply(r, n[e]))
+ }
+ return new Z(s, o)
+ }
+ multiplyScalar(t)
+ {
+ if (0 === t)
+ return this.field.getZero();
+ if (1 === t)
+ return this;
+ const e = this.coefficients.length,
+ r = this.field,
+ n = new Int32Array(e),
+ i = this.coefficients;
+ for (let o = 0; o < e; o++)
+ n[o] = r.multiply(i[o], t);
+ return new Z(r, n)
+ }
+ multiplyByMonomial(t, e)
+ {
+ if (t < 0)
+ throw new a;
+ if (0 === e)
+ return this.field.getZero();
+ const r = this.coefficients,
+ n = r.length,
+ i = new Int32Array(n + t),
+ o = this.field;
+ for (let t = 0; t < n; t++)
+ i[t] = o.multiply(r[t], e);
+ return new Z(o, i)
+ }
+ divide(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("GenericGFPolys do not have same GenericGF field");
+ if (t.isZero())
+ throw new a("Divide by 0");
+ const e = this.field;
+ let r = e.getZero(),
+ n = this;
+ const i = t.getCoefficient(t.getDegree()),
+ o = e.inverse(i);
+ for (; n.getDegree() >= t.getDegree() && !n.isZero();) {
+ const i = n.getDegree() - t.getDegree(),
+ s = e.multiply(n.getCoefficient(n.getDegree()), o),
+ a = t.multiplyByMonomial(i, s),
+ l = e.buildMonomial(i, s);
+ r = r.addOrSubtract(l),
+ n = n.addOrSubtract(a)
+ }
+ return [r, n]
+ }
+ toString()
+ {
+ let t = "";
+ for (let e = this.getDegree(); e >= 0; e--) {
+ let r = this.getCoefficient(e);
+ if (0 !== r) {
+ if (r < 0 ? (t += " - ", r = -r) : t.length > 0 && (t += " + "), 0 === e || 1 !== r) {
+ const e = this.field.log(r);
+ 0 === e ? t += "1" : 1 === e ? t += "a" : (t += "a^", t += e)
+ }
+ 0 !== e && (1 === e ? t += "x" : (t += "x^", t += e))
+ }
+ }
+ return t
+ }
+ }
+ class Q extends o {}
+ Q.kind = "ArithmeticException";
+ class K extends j {
+ constructor(t, e, r)
+ {
+ super(),
+ this.primitive = t,
+ this.size = e,
+ this.generatorBase = r;
+ const n = new Int32Array(e);
+ let i = 1;
+ for (let r = 0; r < e; r++)
+ n[r] = i,
+ i *= 2,
+ i >= e && (i ^= t, i &= e - 1);
+ this.expTable = n;
+ const o = new Int32Array(e);
+ for (let t = 0; t < e - 1; t++)
+ o[n[t]] = t;
+ this.logTable = o,
+ this.zero = new Z(this, Int32Array.from([0])),
+ this.one = new Z(this, Int32Array.from([1]))
+ }
+ getZero()
+ {
+ return this.zero
+ }
+ getOne()
+ {
+ return this.one
+ }
+ buildMonomial(t, e)
+ {
+ if (t < 0)
+ throw new a;
+ if (0 === e)
+ return this.zero;
+ const r = new Int32Array(t + 1);
+ return r[0] = e, new Z(this, r)
+ }
+ inverse(t)
+ {
+ if (0 === t)
+ throw new Q;
+ return this.expTable[this.size - this.logTable[t] - 1]
+ }
+ multiply(t, e)
+ {
+ return 0 === t || 0 === e ? 0 : this.expTable[(this.logTable[t] + this.logTable[e]) % (this.size - 1)]
+ }
+ getSize()
+ {
+ return this.size
+ }
+ getGeneratorBase()
+ {
+ return this.generatorBase
+ }
+ toString()
+ {
+ return "GF(0x" + w.toHexString(this.primitive) + "," + this.size + ")"
+ }
+ equals(t)
+ {
+ return t === this
+ }
+ }
+ K.AZTEC_DATA_12 = new K(4201, 4096, 1),
+ K.AZTEC_DATA_10 = new K(1033, 1024, 1),
+ K.AZTEC_DATA_6 = new K(67, 64, 1),
+ K.AZTEC_PARAM = new K(19, 16, 1),
+ K.QR_CODE_FIELD_256 = new K(285, 256, 0),
+ K.DATA_MATRIX_FIELD_256 = new K(301, 256, 1),
+ K.AZTEC_DATA_8 = K.DATA_MATRIX_FIELD_256,
+ K.MAXICODE_FIELD_64 = K.AZTEC_DATA_6;
+ class q extends o {}
+ q.kind = "ReedSolomonException";
+ class J extends o {}
+ J.kind = "IllegalStateException";
+ class $ {
+ constructor(t)
+ {
+ this.field = t
+ }
+ decode(t, e)
+ {
+ const r = this.field,
+ n = new Z(r, t),
+ i = new Int32Array(e);
+ let o = !0;
+ for (let t = 0; t < e; t++) {
+ const e = n.evaluateAt(r.exp(t + r.getGeneratorBase()));
+ i[i.length - 1 - t] = e,
+ 0 !== e && (o = !1)
+ }
+ if (o)
+ return;
+ const s = new Z(r, i),
+ a = this.runEuclideanAlgorithm(r.buildMonomial(e, 1), s, e),
+ l = a[0],
+ c = a[1],
+ h = this.findErrorLocations(l),
+ u = this.findErrorMagnitudes(c, h);
+ for (let e = 0; e < h.length; e++) {
+ const n = t.length - 1 - r.log(h[e]);
+ if (n < 0)
+ throw new q("Bad error location");
+ t[n] = K.addOrSubtract(t[n], u[e])
+ }
+ }
+ runEuclideanAlgorithm(t, e, r)
+ {
+ if (t.getDegree() < e.getDegree()) {
+ const r = t;
+ t = e,
+ e = r
+ }
+ const n = this.field;
+ let i = t,
+ o = e,
+ s = n.getZero(),
+ a = n.getOne();
+ for (; o.getDegree() >= (r / 2 | 0);) {
+ let t = i,
+ e = s;
+ if (i = o, s = a, i.isZero())
+ throw new q("r_{i-1} was zero");
+ o = t;
+ let r = n.getZero();
+ const l = i.getCoefficient(i.getDegree()),
+ c = n.inverse(l);
+ for (; o.getDegree() >= i.getDegree() && !o.isZero();) {
+ const t = o.getDegree() - i.getDegree(),
+ e = n.multiply(o.getCoefficient(o.getDegree()), c);
+ r = r.addOrSubtract(n.buildMonomial(t, e)),
+ o = o.addOrSubtract(i.multiplyByMonomial(t, e))
+ }
+ if (a = r.multiply(s).addOrSubtract(e), o.getDegree() >= i.getDegree())
+ throw new J("Division algorithm failed to reduce polynomial?")
+ }
+ const l = a.getCoefficient(0);
+ if (0 === l)
+ throw new q("sigmaTilde(0) was zero");
+ const c = n.inverse(l);
+ return [a.multiplyScalar(c), o.multiplyScalar(c)]
+ }
+ findErrorLocations(t)
+ {
+ const e = t.getDegree();
+ if (1 === e)
+ return Int32Array.from([t.getCoefficient(1)]);
+ const r = new Int32Array(e);
+ let n = 0;
+ const i = this.field;
+ for (let o = 1; o < i.getSize() && n < e; o++)
+ 0 === t.evaluateAt(o) && (r[n] = i.inverse(o), n++);
+ if (n !== e)
+ throw new q("Error locator degree does not match number of roots");
+ return r
+ }
+ findErrorMagnitudes(t, e)
+ {
+ const r = e.length,
+ n = new Int32Array(r),
+ i = this.field;
+ for (let o = 0; o < r; o++) {
+ const s = i.inverse(e[o]);
+ let a = 1;
+ for (let t = 0; t < r; t++)
+ if (o !== t) {
+ const r = i.multiply(e[t], s),
+ n = 0 == (1 & r) ? 1 | r : -2 & r;
+ a = i.multiply(a, n)
+ }
+ n[o] = i.multiply(t.evaluateAt(s), i.inverse(a)),
+ 0 !== i.getGeneratorBase() && (n[o] = i.multiply(n[o], s))
+ }
+ return n
+ }
+ }
+ !function(t) {
+ t[t.UPPER = 0] = "UPPER",
+ t[t.LOWER = 1] = "LOWER",
+ t[t.MIXED = 2] = "MIXED",
+ t[t.DIGIT = 3] = "DIGIT",
+ t[t.PUNCT = 4] = "PUNCT",
+ t[t.BINARY = 5] = "BINARY"
+ }(U || (U = {}));
+ class tt {
+ decode(t)
+ {
+ this.ddata = t;
+ let e = t.getBits(),
+ r = this.extractBits(e),
+ n = this.correctBits(r),
+ i = tt.convertBoolArrayToByteArray(n),
+ o = tt.getEncodedData(n),
+ s = new W(i, o, null, null);
+ return s.setNumBits(n.length), s
+ }
+ static highLevelDecode(t)
+ {
+ return this.getEncodedData(t)
+ }
+ static getEncodedData(t)
+ {
+ let e = t.length,
+ r = U.UPPER,
+ n = U.UPPER,
+ i = "",
+ o = 0;
+ for (; o < e;)
+ if (n === U.BINARY) {
+ if (e - o < 5)
+ break;
+ let s = tt.readCode(t, o, 5);
+ if (o += 5, 0 === s) {
+ if (e - o < 11)
+ break;
+ s = tt.readCode(t, o, 11) + 31,
+ o += 11
+ }
+ for (let r = 0; r < s; r++) {
+ if (e - o < 8) {
+ o = e;
+ break
+ }
+ const r = tt.readCode(t, o, 8);
+ i += _.castAsNonUtf8Char(r),
+ o += 8
+ }
+ n = r
+ } else {
+ let s = n === U.DIGIT ? 4 : 5;
+ if (e - o < s)
+ break;
+ let a = tt.readCode(t, o, s);
+ o += s;
+ let l = tt.getCharacter(n, a);
+ l.startsWith("CTRL_") ? (r = n, n = tt.getTable(l.charAt(5)), "L" === l.charAt(6) && (r = n)) : (i += l, n = r)
+ }
+ return i
+ }
+ static getTable(t)
+ {
+ switch (t) {
+ case "L":
+ return U.LOWER;
+ case "P":
+ return U.PUNCT;
+ case "M":
+ return U.MIXED;
+ case "D":
+ return U.DIGIT;
+ case "B":
+ return U.BINARY;
+ case "U":
+ default:
+ return U.UPPER
+ }
+ }
+ static getCharacter(t, e)
+ {
+ switch (t) {
+ case U.UPPER:
+ return tt.UPPER_TABLE[e];
+ case U.LOWER:
+ return tt.LOWER_TABLE[e];
+ case U.MIXED:
+ return tt.MIXED_TABLE[e];
+ case U.PUNCT:
+ return tt.PUNCT_TABLE[e];
+ case U.DIGIT:
+ return tt.DIGIT_TABLE[e];
+ default:
+ throw new J("Bad table")
+ }
+ }
+ correctBits(t)
+ {
+ let e,
+ r;
+ this.ddata.getNbLayers() <= 2 ? (r = 6, e = K.AZTEC_DATA_6) : this.ddata.getNbLayers() <= 8 ? (r = 8, e = K.AZTEC_DATA_8) : this.ddata.getNbLayers() <= 22 ? (r = 10, e = K.AZTEC_DATA_10) : (r = 12, e = K.AZTEC_DATA_12);
+ let n = this.ddata.getNbDatablocks(),
+ i = t.length / r;
+ if (i < n)
+ throw new C;
+ let o = t.length % r,
+ s = new Int32Array(i);
+ for (let e = 0; e < i; e++, o += r)
+ s[e] = tt.readCode(t, o, r);
+ try {
+ new $(e).decode(s, i - n)
+ } catch (t) {
+ throw new C(t)
+ }
+ let a = (1 << r) - 1,
+ l = 0;
+ for (let t = 0; t < n; t++) {
+ let e = s[t];
+ if (0 === e || e === a)
+ throw new C;
+ 1 !== e && e !== a - 1 || l++
+ }
+ let c = new Array(n * r - l),
+ h = 0;
+ for (let t = 0; t < n; t++) {
+ let e = s[t];
+ if (1 === e || e === a - 1)
+ c.fill(e > 1, h, h + r - 1),
+ h += r - 1;
+ else
+ for (let t = r - 1; t >= 0; --t)
+ c[h++] = 0 != (e & 1 << t)
+ }
+ return c
+ }
+ extractBits(t)
+ {
+ let e = this.ddata.isCompact(),
+ r = this.ddata.getNbLayers(),
+ n = (e ? 11 : 14) + 4 * r,
+ i = new Int32Array(n),
+ o = new Array(this.totalBitsInLayer(r, e));
+ if (e)
+ for (let t = 0; t < i.length; t++)
+ i[t] = t;
+ else {
+ let t = n + 1 + 2 * w.truncDivision(w.truncDivision(n, 2) - 1, 15),
+ e = n / 2,
+ r = w.truncDivision(t, 2);
+ for (let t = 0; t < e; t++) {
+ let n = t + w.truncDivision(t, 15);
+ i[e - t - 1] = r - n - 1,
+ i[e + t] = r + n + 1
+ }
+ }
+ for (let s = 0, a = 0; s < r; s++) {
+ let l = 4 * (r - s) + (e ? 9 : 12),
+ c = 2 * s,
+ h = n - 1 - c;
+ for (let e = 0; e < l; e++) {
+ let r = 2 * e;
+ for (let n = 0; n < 2; n++)
+ o[a + r + n] = t.get(i[c + n], i[c + e]),
+ o[a + 2 * l + r + n] = t.get(i[c + e], i[h - n]),
+ o[a + 4 * l + r + n] = t.get(i[h - n], i[h - e]),
+ o[a + 6 * l + r + n] = t.get(i[h - e], i[c + n])
+ }
+ a += 8 * l
+ }
+ return o
+ }
+ static readCode(t, e, r)
+ {
+ let n = 0;
+ for (let i = e; i < e + r; i++)
+ n <<= 1,
+ t[i] && (n |= 1);
+ return n
+ }
+ static readByte(t, e)
+ {
+ let r = t.length - e;
+ return r >= 8 ? tt.readCode(t, e, 8) : tt.readCode(t, e, r) << 8 - r
+ }
+ static convertBoolArrayToByteArray(t)
+ {
+ let e = new Uint8Array((t.length + 7) / 8);
+ for (let r = 0; r < e.length; r++)
+ e[r] = tt.readByte(t, 8 * r);
+ return e
+ }
+ totalBitsInLayer(t, e)
+ {
+ return ((e ? 88 : 112) + 16 * t) * t
+ }
+ }
+ tt.UPPER_TABLE = ["CTRL_PS", " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "CTRL_LL", "CTRL_ML", "CTRL_DL", "CTRL_BS"],
+ tt.LOWER_TABLE = ["CTRL_PS", " ", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "CTRL_US", "CTRL_ML", "CTRL_DL", "CTRL_BS"],
+ tt.MIXED_TABLE = ["CTRL_PS", " ", "\\1", "\\2", "\\3", "\\4", "\\5", "\\6", "\\7", "\b", "\t", "\n", "\\13", "\f", "\r", "\\33", "\\34", "\\35", "\\36", "\\37", "@", "\\", "^", "_", "`", "|", "~", "\\177", "CTRL_LL", "CTRL_UL", "CTRL_PL", "CTRL_BS"],
+ tt.PUNCT_TABLE = ["", "\r", "\r\n", ". ", ", ", ": ", "!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}", "CTRL_UL"],
+ tt.DIGIT_TABLE = ["CTRL_PS", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ",", ".", "CTRL_UL", "CTRL_US"];
+ class et {
+ constructor() {}
+ static round(t)
+ {
+ return NaN === t ? 0 : t <= Number.MIN_SAFE_INTEGER ? Number.MIN_SAFE_INTEGER : t >= Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : t + (t < 0 ? -.5 : .5) | 0
+ }
+ static distance(t, e, r, n)
+ {
+ const i = t - r,
+ o = e - n;
+ return Math.sqrt(i * i + o * o)
+ }
+ static sum(t)
+ {
+ let e = 0;
+ for (let r = 0, n = t.length; r !== n; r++)
+ e += t[r];
+ return e
+ }
+ }
+ class rt {
+ static floatToIntBits(t)
+ {
+ return t
+ }
+ }
+ rt.MAX_VALUE = Number.MAX_SAFE_INTEGER;
+ class nt {
+ constructor(t, e)
+ {
+ this.x = t,
+ this.y = e
+ }
+ getX()
+ {
+ return this.x
+ }
+ getY()
+ {
+ return this.y
+ }
+ equals(t)
+ {
+ if (t instanceof nt) {
+ const e = t;
+ return this.x === e.x && this.y === e.y
+ }
+ return !1
+ }
+ hashCode()
+ {
+ return 31 * rt.floatToIntBits(this.x) + rt.floatToIntBits(this.y)
+ }
+ toString()
+ {
+ return "(" + this.x + "," + this.y + ")"
+ }
+ static orderBestPatterns(t)
+ {
+ const e = this.distance(t[0], t[1]),
+ r = this.distance(t[1], t[2]),
+ n = this.distance(t[0], t[2]);
+ let i,
+ o,
+ s;
+ if (r >= e && r >= n ? (o = t[0], i = t[1], s = t[2]) : n >= r && n >= e ? (o = t[1], i = t[0], s = t[2]) : (o = t[2], i = t[0], s = t[1]), this.crossProductZ(i, o, s) < 0) {
+ const t = i;
+ i = s,
+ s = t
+ }
+ t[0] = i,
+ t[1] = o,
+ t[2] = s
+ }
+ static distance(t, e)
+ {
+ return et.distance(t.x, t.y, e.x, e.y)
+ }
+ static crossProductZ(t, e, r)
+ {
+ const n = e.x,
+ i = e.y;
+ return (r.x - n) * (t.y - i) - (r.y - i) * (t.x - n)
+ }
+ }
+ class it {
+ constructor(t, e)
+ {
+ this.bits = t,
+ this.points = e
+ }
+ getBits()
+ {
+ return this.bits
+ }
+ getPoints()
+ {
+ return this.points
+ }
+ }
+ class ot extends it {
+ constructor(t, e, r, n, i)
+ {
+ super(t, e),
+ this.compact = r,
+ this.nbDatablocks = n,
+ this.nbLayers = i
+ }
+ getNbLayers()
+ {
+ return this.nbLayers
+ }
+ getNbDatablocks()
+ {
+ return this.nbDatablocks
+ }
+ isCompact()
+ {
+ return this.compact
+ }
+ }
+ class st {
+ constructor(t, e, r, n)
+ {
+ this.image = t,
+ this.height = t.getHeight(),
+ this.width = t.getWidth(),
+ null == e && (e = st.INIT_SIZE),
+ null == r && (r = t.getWidth() / 2 | 0),
+ null == n && (n = t.getHeight() / 2 | 0);
+ const i = e / 2 | 0;
+ if (this.leftInit = r - i, this.rightInit = r + i, this.upInit = n - i, this.downInit = n + i, this.upInit < 0 || this.leftInit < 0 || this.downInit >= this.height || this.rightInit >= this.width)
+ throw new N
+ }
+ detect()
+ {
+ let t = this.leftInit,
+ e = this.rightInit,
+ r = this.upInit,
+ n = this.downInit,
+ i = !1,
+ o = !0,
+ s = !1,
+ a = !1,
+ l = !1,
+ c = !1,
+ h = !1;
+ const u = this.width,
+ d = this.height;
+ for (; o;) {
+ o = !1;
+ let g = !0;
+ for (; (g || !a) && e < u;)
+ g = this.containsBlackPoint(r, n, e, !1),
+ g ? (e++, o = !0, a = !0) : a || e++;
+ if (e >= u) {
+ i = !0;
+ break
+ }
+ let f = !0;
+ for (; (f || !l) && n < d;)
+ f = this.containsBlackPoint(t, e, n, !0),
+ f ? (n++, o = !0, l = !0) : l || n++;
+ if (n >= d) {
+ i = !0;
+ break
+ }
+ let w = !0;
+ for (; (w || !c) && t >= 0;)
+ w = this.containsBlackPoint(r, n, t, !1),
+ w ? (t--, o = !0, c = !0) : c || t--;
+ if (t < 0) {
+ i = !0;
+ break
+ }
+ let A = !0;
+ for (; (A || !h) && r >= 0;)
+ A = this.containsBlackPoint(t, e, r, !0),
+ A ? (r--, o = !0, h = !0) : h || r--;
+ if (r < 0) {
+ i = !0;
+ break
+ }
+ o && (s = !0)
+ }
+ if (!i && s) {
+ const i = e - t;
+ let o = null;
+ for (let e = 1; null === o && e < i; e++)
+ o = this.getBlackPointOnSegment(t, n - e, t + e, n);
+ if (null == o)
+ throw new N;
+ let s = null;
+ for (let e = 1; null === s && e < i; e++)
+ s = this.getBlackPointOnSegment(t, r + e, t + e, r);
+ if (null == s)
+ throw new N;
+ let a = null;
+ for (let t = 1; null === a && t < i; t++)
+ a = this.getBlackPointOnSegment(e, r + t, e - t, r);
+ if (null == a)
+ throw new N;
+ let l = null;
+ for (let t = 1; null === l && t < i; t++)
+ l = this.getBlackPointOnSegment(e, n - t, e - t, n);
+ if (null == l)
+ throw new N;
+ return this.centerEdges(l, o, a, s)
+ }
+ throw new N
+ }
+ getBlackPointOnSegment(t, e, r, n)
+ {
+ const i = et.round(et.distance(t, e, r, n)),
+ o = (r - t) / i,
+ s = (n - e) / i,
+ a = this.image;
+ for (let r = 0; r < i; r++) {
+ const n = et.round(t + r * o),
+ i = et.round(e + r * s);
+ if (a.get(n, i))
+ return new nt(n, i)
+ }
+ return null
+ }
+ centerEdges(t, e, r, n)
+ {
+ const i = t.getX(),
+ o = t.getY(),
+ s = e.getX(),
+ a = e.getY(),
+ l = r.getX(),
+ c = r.getY(),
+ h = n.getX(),
+ u = n.getY(),
+ d = st.CORR;
+ return i < this.width / 2 ? [new nt(h - d, u + d), new nt(s + d, a + d), new nt(l - d, c - d), new nt(i + d, o - d)] : [new nt(h + d, u + d), new nt(s + d, a - d), new nt(l - d, c + d), new nt(i - d, o - d)]
+ }
+ containsBlackPoint(t, e, r, n)
+ {
+ const i = this.image;
+ if (n) {
+ for (let n = t; n <= e; n++)
+ if (i.get(n, r))
+ return !0
+ } else
+ for (let n = t; n <= e; n++)
+ if (i.get(r, n))
+ return !0;
+ return !1
+ }
+ }
+ st.INIT_SIZE = 10,
+ st.CORR = 1;
+ class at {
+ static checkAndNudgePoints(t, e)
+ {
+ const r = t.getWidth(),
+ n = t.getHeight();
+ let i = !0;
+ for (let t = 0; t < e.length && i; t += 2) {
+ const o = Math.floor(e[t]),
+ s = Math.floor(e[t + 1]);
+ if (o < -1 || o > r || s < -1 || s > n)
+ throw new N;
+ i = !1,
+ -1 === o ? (e[t] = 0, i = !0) : o === r && (e[t] = r - 1, i = !0),
+ -1 === s ? (e[t + 1] = 0, i = !0) : s === n && (e[t + 1] = n - 1, i = !0)
+ }
+ i = !0;
+ for (let t = e.length - 2; t >= 0 && i; t -= 2) {
+ const o = Math.floor(e[t]),
+ s = Math.floor(e[t + 1]);
+ if (o < -1 || o > r || s < -1 || s > n)
+ throw new N;
+ i = !1,
+ -1 === o ? (e[t] = 0, i = !0) : o === r && (e[t] = r - 1, i = !0),
+ -1 === s ? (e[t + 1] = 0, i = !0) : s === n && (e[t + 1] = n - 1, i = !0)
+ }
+ }
+ }
+ class lt {
+ constructor(t, e, r, n, i, o, s, a, l)
+ {
+ this.a11 = t,
+ this.a21 = e,
+ this.a31 = r,
+ this.a12 = n,
+ this.a22 = i,
+ this.a32 = o,
+ this.a13 = s,
+ this.a23 = a,
+ this.a33 = l
+ }
+ static quadrilateralToQuadrilateral(t, e, r, n, i, o, s, a, l, c, h, u, d, g, f, w)
+ {
+ const A = lt.quadrilateralToSquare(t, e, r, n, i, o, s, a);
+ return lt.squareToQuadrilateral(l, c, h, u, d, g, f, w).times(A)
+ }
+ transformPoints(t)
+ {
+ const e = t.length,
+ r = this.a11,
+ n = this.a12,
+ i = this.a13,
+ o = this.a21,
+ s = this.a22,
+ a = this.a23,
+ l = this.a31,
+ c = this.a32,
+ h = this.a33;
+ for (let u = 0; u < e; u += 2) {
+ const e = t[u],
+ d = t[u + 1],
+ g = i * e + a * d + h;
+ t[u] = (r * e + o * d + l) / g,
+ t[u + 1] = (n * e + s * d + c) / g
+ }
+ }
+ transformPointsWithValues(t, e)
+ {
+ const r = this.a11,
+ n = this.a12,
+ i = this.a13,
+ o = this.a21,
+ s = this.a22,
+ a = this.a23,
+ l = this.a31,
+ c = this.a32,
+ h = this.a33,
+ u = t.length;
+ for (let d = 0; d < u; d++) {
+ const u = t[d],
+ g = e[d],
+ f = i * u + a * g + h;
+ t[d] = (r * u + o * g + l) / f,
+ e[d] = (n * u + s * g + c) / f
+ }
+ }
+ static squareToQuadrilateral(t, e, r, n, i, o, s, a)
+ {
+ const l = t - r + i - s,
+ c = e - n + o - a;
+ if (0 === l && 0 === c)
+ return new lt(r - t, i - r, t, n - e, o - n, e, 0, 0, 1);
+ {
+ const h = r - i,
+ u = s - i,
+ d = n - o,
+ g = a - o,
+ f = h * g - u * d,
+ w = (l * g - u * c) / f,
+ A = (h * c - l * d) / f;
+ return new lt(r - t + w * r, s - t + A * s, t, n - e + w * n, a - e + A * a, e, w, A, 1)
+ }
+ }
+ static quadrilateralToSquare(t, e, r, n, i, o, s, a)
+ {
+ return lt.squareToQuadrilateral(t, e, r, n, i, o, s, a).buildAdjoint()
+ }
+ buildAdjoint()
+ {
+ return new lt(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21)
+ }
+ times(t)
+ {
+ return new lt(this.a11 * t.a11 + this.a21 * t.a12 + this.a31 * t.a13, this.a11 * t.a21 + this.a21 * t.a22 + this.a31 * t.a23, this.a11 * t.a31 + this.a21 * t.a32 + this.a31 * t.a33, this.a12 * t.a11 + this.a22 * t.a12 + this.a32 * t.a13, this.a12 * t.a21 + this.a22 * t.a22 + this.a32 * t.a23, this.a12 * t.a31 + this.a22 * t.a32 + this.a32 * t.a33, this.a13 * t.a11 + this.a23 * t.a12 + this.a33 * t.a13, this.a13 * t.a21 + this.a23 * t.a22 + this.a33 * t.a23, this.a13 * t.a31 + this.a23 * t.a32 + this.a33 * t.a33)
+ }
+ }
+ class ct extends at {
+ sampleGrid(t, e, r, n, i, o, s, a, l, c, h, u, d, g, f, w, A, m, E)
+ {
+ const C = lt.quadrilateralToQuadrilateral(n, i, o, s, a, l, c, h, u, d, g, f, w, A, m, E);
+ return this.sampleGridWithTransform(t, e, r, C)
+ }
+ sampleGridWithTransform(t, e, r, n)
+ {
+ if (e <= 0 || r <= 0)
+ throw new N;
+ const i = new y(e, r),
+ o = new Float32Array(2 * e);
+ for (let e = 0; e < r; e++) {
+ const r = o.length,
+ s = e + .5;
+ for (let t = 0; t < r; t += 2)
+ o[t] = t / 2 + .5,
+ o[t + 1] = s;
+ n.transformPoints(o),
+ at.checkAndNudgePoints(t, o);
+ try {
+ for (let n = 0; n < r; n += 2)
+ t.get(Math.floor(o[n]), Math.floor(o[n + 1])) && i.set(n / 2, e)
+ } catch (t) {
+ throw new N
+ }
+ }
+ return i
+ }
+ }
+ class ht {
+ static setGridSampler(t)
+ {
+ ht.gridSampler = t
+ }
+ static getInstance()
+ {
+ return ht.gridSampler
+ }
+ }
+ ht.gridSampler = new ct;
+ class ut {
+ constructor(t, e)
+ {
+ this.x = t,
+ this.y = e
+ }
+ toResultPoint()
+ {
+ return new nt(this.getX(), this.getY())
+ }
+ getX()
+ {
+ return this.x
+ }
+ getY()
+ {
+ return this.y
+ }
+ }
+ class dt {
+ constructor(t)
+ {
+ this.EXPECTED_CORNER_BITS = new Int32Array([3808, 476, 2107, 1799]),
+ this.image = t
+ }
+ detect()
+ {
+ return this.detectMirror(!1)
+ }
+ detectMirror(t)
+ {
+ let e = this.getMatrixCenter(),
+ r = this.getBullsEyeCorners(e);
+ if (t) {
+ let t = r[0];
+ r[0] = r[2],
+ r[2] = t
+ }
+ this.extractParameters(r);
+ let n = this.sampleGrid(this.image, r[this.shift % 4], r[(this.shift + 1) % 4], r[(this.shift + 2) % 4], r[(this.shift + 3) % 4]),
+ i = this.getMatrixCornerPoints(r);
+ return new ot(n, i, this.compact, this.nbDataBlocks, this.nbLayers)
+ }
+ extractParameters(t)
+ {
+ if (!(this.isValidPoint(t[0]) && this.isValidPoint(t[1]) && this.isValidPoint(t[2]) && this.isValidPoint(t[3])))
+ throw new N;
+ let e = 2 * this.nbCenterLayers,
+ r = new Int32Array([this.sampleLine(t[0], t[1], e), this.sampleLine(t[1], t[2], e), this.sampleLine(t[2], t[3], e), this.sampleLine(t[3], t[0], e)]);
+ this.shift = this.getRotation(r, e);
+ let n = 0;
+ for (let t = 0; t < 4; t++) {
+ let e = r[(this.shift + t) % 4];
+ this.compact ? (n <<= 7, n += e >> 1 & 127) : (n <<= 10, n += (e >> 2 & 992) + (e >> 1 & 31))
+ }
+ let i = this.getCorrectedParameterData(n, this.compact);
+ this.compact ? (this.nbLayers = 1 + (i >> 6), this.nbDataBlocks = 1 + (63 & i)) : (this.nbLayers = 1 + (i >> 11), this.nbDataBlocks = 1 + (2047 & i))
+ }
+ getRotation(t, e)
+ {
+ let r = 0;
+ t.forEach(((t, n, i) => {
+ r = (t >> e - 2 << 1) + (1 & t) + (r << 3)
+ })),
+ r = ((1 & r) << 11) + (r >> 1);
+ for (let t = 0; t < 4; t++)
+ if (w.bitCount(r ^ this.EXPECTED_CORNER_BITS[t]) <= 2)
+ return t;
+ throw new N
+ }
+ getCorrectedParameterData(t, e)
+ {
+ let r,
+ n;
+ e ? (r = 7, n = 2) : (r = 10, n = 4);
+ let i = r - n,
+ o = new Int32Array(r);
+ for (let e = r - 1; e >= 0; --e)
+ o[e] = 15 & t,
+ t >>= 4;
+ try {
+ new $(K.AZTEC_PARAM).decode(o, i)
+ } catch (t) {
+ throw new N
+ }
+ let s = 0;
+ for (let t = 0; t < n; t++)
+ s = (s << 4) + o[t];
+ return s
+ }
+ getBullsEyeCorners(t)
+ {
+ let e = t,
+ r = t,
+ n = t,
+ i = t,
+ o = !0;
+ for (this.nbCenterLayers = 1; this.nbCenterLayers < 9; this.nbCenterLayers++) {
+ let t = this.getFirstDifferent(e, o, 1, -1),
+ s = this.getFirstDifferent(r, o, 1, 1),
+ a = this.getFirstDifferent(n, o, -1, 1),
+ l = this.getFirstDifferent(i, o, -1, -1);
+ if (this.nbCenterLayers > 2) {
+ let r = this.distancePoint(l, t) * this.nbCenterLayers / (this.distancePoint(i, e) * (this.nbCenterLayers + 2));
+ if (r < .75 || r > 1.25 || !this.isWhiteOrBlackRectangle(t, s, a, l))
+ break
+ }
+ e = t,
+ r = s,
+ n = a,
+ i = l,
+ o = !o
+ }
+ if (5 !== this.nbCenterLayers && 7 !== this.nbCenterLayers)
+ throw new N;
+ this.compact = 5 === this.nbCenterLayers;
+ let s = new nt(e.getX() + .5, e.getY() - .5),
+ a = new nt(r.getX() + .5, r.getY() + .5),
+ l = new nt(n.getX() - .5, n.getY() + .5),
+ c = new nt(i.getX() - .5, i.getY() - .5);
+ return this.expandSquare([s, a, l, c], 2 * this.nbCenterLayers - 3, 2 * this.nbCenterLayers)
+ }
+ getMatrixCenter()
+ {
+ let t,
+ e,
+ r,
+ n;
+ try {
+ let i = new st(this.image).detect();
+ t = i[0],
+ e = i[1],
+ r = i[2],
+ n = i[3]
+ } catch (i) {
+ let o = this.image.getWidth() / 2,
+ s = this.image.getHeight() / 2;
+ t = this.getFirstDifferent(new ut(o + 7, s - 7), !1, 1, -1).toResultPoint(),
+ e = this.getFirstDifferent(new ut(o + 7, s + 7), !1, 1, 1).toResultPoint(),
+ r = this.getFirstDifferent(new ut(o - 7, s + 7), !1, -1, 1).toResultPoint(),
+ n = this.getFirstDifferent(new ut(o - 7, s - 7), !1, -1, -1).toResultPoint()
+ }
+ let i = et.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4),
+ o = et.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4);
+ try {
+ let s = new st(this.image, 15, i, o).detect();
+ t = s[0],
+ e = s[1],
+ r = s[2],
+ n = s[3]
+ } catch (s) {
+ t = this.getFirstDifferent(new ut(i + 7, o - 7), !1, 1, -1).toResultPoint(),
+ e = this.getFirstDifferent(new ut(i + 7, o + 7), !1, 1, 1).toResultPoint(),
+ r = this.getFirstDifferent(new ut(i - 7, o + 7), !1, -1, 1).toResultPoint(),
+ n = this.getFirstDifferent(new ut(i - 7, o - 7), !1, -1, -1).toResultPoint()
+ }
+ return i = et.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4), o = et.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4), new ut(i, o)
+ }
+ getMatrixCornerPoints(t)
+ {
+ return this.expandSquare(t, 2 * this.nbCenterLayers, this.getDimension())
+ }
+ sampleGrid(t, e, r, n, i)
+ {
+ let o = ht.getInstance(),
+ s = this.getDimension(),
+ a = s / 2 - this.nbCenterLayers,
+ l = s / 2 + this.nbCenterLayers;
+ return o.sampleGrid(t, s, s, a, a, l, a, l, l, a, l, e.getX(), e.getY(), r.getX(), r.getY(), n.getX(), n.getY(), i.getX(), i.getY())
+ }
+ sampleLine(t, e, r)
+ {
+ let n = 0,
+ i = this.distanceResultPoint(t, e),
+ o = i / r,
+ s = t.getX(),
+ a = t.getY(),
+ l = o * (e.getX() - t.getX()) / i,
+ c = o * (e.getY() - t.getY()) / i;
+ for (let t = 0; t < r; t++)
+ this.image.get(et.round(s + t * l), et.round(a + t * c)) && (n |= 1 << r - t - 1);
+ return n
+ }
+ isWhiteOrBlackRectangle(t, e, r, n)
+ {
+ t = new ut(t.getX() - 3, t.getY() + 3),
+ e = new ut(e.getX() - 3, e.getY() - 3),
+ r = new ut(r.getX() + 3, r.getY() - 3),
+ n = new ut(n.getX() + 3, n.getY() + 3);
+ let i = this.getColor(n, t);
+ if (0 === i)
+ return !1;
+ let o = this.getColor(t, e);
+ return o === i && (o = this.getColor(e, r), o === i && (o = this.getColor(r, n), o === i))
+ }
+ getColor(t, e)
+ {
+ let r = this.distancePoint(t, e),
+ n = (e.getX() - t.getX()) / r,
+ i = (e.getY() - t.getY()) / r,
+ o = 0,
+ s = t.getX(),
+ a = t.getY(),
+ l = this.image.get(t.getX(), t.getY()),
+ c = Math.ceil(r);
+ for (let t = 0; t < c; t++)
+ s += n,
+ a += i,
+ this.image.get(et.round(s), et.round(a)) !== l && o++;
+ let h = o / r;
+ return h > .1 && h < .9 ? 0 : h <= .1 === l ? 1 : -1
+ }
+ getFirstDifferent(t, e, r, n)
+ {
+ let i = t.getX() + r,
+ o = t.getY() + n;
+ for (; this.isValid(i, o) && this.image.get(i, o) === e;)
+ i += r,
+ o += n;
+ for (i -= r, o -= n; this.isValid(i, o) && this.image.get(i, o) === e;)
+ i += r;
+ for (i -= r; this.isValid(i, o) && this.image.get(i, o) === e;)
+ o += n;
+ return o -= n, new ut(i, o)
+ }
+ expandSquare(t, e, r)
+ {
+ let n = r / (2 * e),
+ i = t[0].getX() - t[2].getX(),
+ o = t[0].getY() - t[2].getY(),
+ s = (t[0].getX() + t[2].getX()) / 2,
+ a = (t[0].getY() + t[2].getY()) / 2,
+ l = new nt(s + n * i, a + n * o),
+ c = new nt(s - n * i, a - n * o);
+ return i = t[1].getX() - t[3].getX(), o = t[1].getY() - t[3].getY(), s = (t[1].getX() + t[3].getX()) / 2, a = (t[1].getY() + t[3].getY()) / 2, [l, new nt(s + n * i, a + n * o), c, new nt(s - n * i, a - n * o)]
+ }
+ isValid(t, e)
+ {
+ return t >= 0 && t < this.image.getWidth() && e > 0 && e < this.image.getHeight()
+ }
+ isValidPoint(t)
+ {
+ let e = et.round(t.getX()),
+ r = et.round(t.getY());
+ return this.isValid(e, r)
+ }
+ distancePoint(t, e)
+ {
+ return et.distance(t.getX(), t.getY(), e.getX(), e.getY())
+ }
+ distanceResultPoint(t, e)
+ {
+ return et.distance(t.getX(), t.getY(), e.getX(), e.getY())
+ }
+ getDimension()
+ {
+ return this.compact ? 4 * this.nbLayers + 11 : this.nbLayers <= 4 ? 4 * this.nbLayers + 15 : 4 * this.nbLayers + 2 * (w.truncDivision(this.nbLayers - 4, 8) + 1) + 15
+ }
+ }
+ class gt {
+ decode(t, e=null)
+ {
+ let r = null,
+ n = new dt(t.getBlackMatrix()),
+ i = null,
+ o = null;
+ try {
+ let t = n.detectMirror(!1);
+ i = t.getPoints(),
+ this.reportFoundResultPoints(e, i),
+ o = (new tt).decode(t)
+ } catch (t) {
+ r = t
+ }
+ if (null == o)
+ try {
+ let t = n.detectMirror(!0);
+ i = t.getPoints(),
+ this.reportFoundResultPoints(e, i),
+ o = (new tt).decode(t)
+ } catch (t) {
+ if (null != r)
+ throw r;
+ throw t
+ }
+ let s = new F(o.getText(), o.getRawBytes(), o.getNumBits(), i, k.AZTEC, u.currentTimeMillis()),
+ a = o.getByteSegments();
+ null != a && s.putMetadata(X.BYTE_SEGMENTS, a);
+ let l = o.getECLevel();
+ return null != l && s.putMetadata(X.ERROR_CORRECTION_LEVEL, l), s
+ }
+ reportFoundResultPoints(t, e)
+ {
+ if (null != t) {
+ let r = t.get(E.NEED_RESULT_POINT_CALLBACK);
+ null != r && e.forEach(((t, e, n) => {
+ r.foundPossibleResultPoint(t)
+ }))
+ }
+ }
+ reset() {}
+ }
+ class ft {
+ decode(t, e)
+ {
+ try {
+ return this.doDecode(t, e)
+ } catch (r) {
+ if (e && !0 === e.get(E.TRY_HARDER) && t.isRotateSupported()) {
+ const r = t.rotateCounterClockwise(),
+ n = this.doDecode(r, e),
+ i = n.getResultMetadata();
+ let o = 270;
+ null !== i && !0 === i.get(X.ORIENTATION) && (o += i.get(X.ORIENTATION) % 360),
+ n.putMetadata(X.ORIENTATION, o);
+ const s = n.getResultPoints();
+ if (null !== s) {
+ const t = r.getHeight();
+ for (let e = 0; e < s.length; e++)
+ s[e] = new nt(t - s[e].getY() - 1, s[e].getX())
+ }
+ return n
+ }
+ throw new N
+ }
+ }
+ reset() {}
+ doDecode(t, e)
+ {
+ const r = t.getWidth(),
+ n = t.getHeight();
+ let i = new A(r);
+ const o = e && !0 === e.get(E.TRY_HARDER),
+ s = Math.max(1, n >> (o ? 8 : 5));
+ let a;
+ a = o ? n : 15;
+ const l = Math.trunc(n / 2);
+ for (let o = 0; o < a; o++) {
+ const a = Math.trunc((o + 1) / 2),
+ c = l + s * (0 == (1 & o) ? a : -a);
+ if (c < 0 || c >= n)
+ break;
+ try {
+ i = t.getBlackRow(c, i)
+ } catch (t) {
+ continue
+ }
+ for (let t = 0; t < 2; t++) {
+ if (1 === t && (i.reverse(), e && !0 === e.get(E.NEED_RESULT_POINT_CALLBACK))) {
+ const t = new Map;
+ e.forEach(((e, r) => t.set(r, e))),
+ t.delete(E.NEED_RESULT_POINT_CALLBACK),
+ e = t
+ }
+ try {
+ const n = this.decodeRow(c, i, e);
+ if (1 === t) {
+ n.putMetadata(X.ORIENTATION, 180);
+ const t = n.getResultPoints();
+ null !== t && (t[0] = new nt(r - t[0].getX() - 1, t[0].getY()), t[1] = new nt(r - t[1].getX() - 1, t[1].getY()))
+ }
+ return n
+ } catch (t) {}
+ }
+ }
+ throw new N
+ }
+ static recordPattern(t, e, r)
+ {
+ const n = r.length;
+ for (let t = 0; t < n; t++)
+ r[t] = 0;
+ const i = t.getSize();
+ if (e >= i)
+ throw new N;
+ let o = !t.get(e),
+ s = 0,
+ a = e;
+ for (; a < i;) {
+ if (t.get(a) !== o)
+ r[s]++;
+ else {
+ if (++s === n)
+ break;
+ r[s] = 1,
+ o = !o
+ }
+ a++
+ }
+ if (s !== n && (s !== n - 1 || a !== i))
+ throw new N
+ }
+ static recordPatternInReverse(t, e, r)
+ {
+ let n = r.length,
+ i = t.get(e);
+ for (; e > 0 && n >= 0;)
+ t.get(--e) !== i && (n--, i = !i);
+ if (n >= 0)
+ throw new N;
+ ft.recordPattern(t, e + 1, r)
+ }
+ static patternMatchVariance(t, e, r)
+ {
+ const n = t.length;
+ let i = 0,
+ o = 0;
+ for (let r = 0; r < n; r++)
+ i += t[r],
+ o += e[r];
+ if (i < o)
+ return Number.POSITIVE_INFINITY;
+ const s = i / o;
+ r *= s;
+ let a = 0;
+ for (let i = 0; i < n; i++) {
+ const n = t[i],
+ o = e[i] * s,
+ l = n > o ? n - o : o - n;
+ if (l > r)
+ return Number.POSITIVE_INFINITY;
+ a += l
+ }
+ return a / i
+ }
+ }
+ class wt extends ft {
+ static findStartPattern(t)
+ {
+ const e = t.getSize(),
+ r = t.getNextSet(0);
+ let n = 0,
+ i = Int32Array.from([0, 0, 0, 0, 0, 0]),
+ o = r,
+ s = !1;
+ for (let a = r; a < e; a++)
+ if (t.get(a) !== s)
+ i[n]++;
+ else {
+ if (5 === n) {
+ let e = wt.MAX_AVG_VARIANCE,
+ r = -1;
+ for (let t = wt.CODE_START_A; t <= wt.CODE_START_C; t++) {
+ const n = ft.patternMatchVariance(i, wt.CODE_PATTERNS[t], wt.MAX_INDIVIDUAL_VARIANCE);
+ n < e && (e = n, r = t)
+ }
+ if (r >= 0 && t.isRange(Math.max(0, o - (a - o) / 2), o, !1))
+ return Int32Array.from([o, a, r]);
+ o += i[0] + i[1],
+ i = i.slice(2, i.length - 1),
+ i[n - 1] = 0,
+ i[n] = 0,
+ n--
+ } else
+ n++;
+ i[n] = 1,
+ s = !s
+ }
+ throw new N
+ }
+ static decodeCode(t, e, r)
+ {
+ ft.recordPattern(t, r, e);
+ let n = wt.MAX_AVG_VARIANCE,
+ i = -1;
+ for (let t = 0; t < wt.CODE_PATTERNS.length; t++) {
+ const r = wt.CODE_PATTERNS[t],
+ o = this.patternMatchVariance(e, r, wt.MAX_INDIVIDUAL_VARIANCE);
+ o < n && (n = o, i = t)
+ }
+ if (i >= 0)
+ return i;
+ throw new N
+ }
+ decodeRow(t, e, r)
+ {
+ const n = r && !0 === r.get(E.ASSUME_GS1),
+ i = wt.findStartPattern(e),
+ o = i[2];
+ let s = 0;
+ const a = new Uint8Array(20);
+ let l;
+ switch (a[s++] = o, o) {
+ case wt.CODE_START_A:
+ l = wt.CODE_CODE_A;
+ break;
+ case wt.CODE_START_B:
+ l = wt.CODE_CODE_B;
+ break;
+ case wt.CODE_START_C:
+ l = wt.CODE_CODE_C;
+ break;
+ default:
+ throw new C
+ }
+ let h = !1,
+ u = !1,
+ d = "",
+ g = i[0],
+ f = i[1];
+ const w = Int32Array.from([0, 0, 0, 0, 0, 0]);
+ let A = 0,
+ m = 0,
+ I = o,
+ p = 0,
+ S = !0,
+ _ = !1,
+ T = !1;
+ for (; !h;) {
+ const t = u;
+ switch (u = !1, A = m, m = wt.decodeCode(e, w, f), a[s++] = m, m !== wt.CODE_STOP && (S = !0), m !== wt.CODE_STOP && (p++, I += p * m), g = f, f += w.reduce(((t, e) => t + e), 0), m) {
+ case wt.CODE_START_A:
+ case wt.CODE_START_B:
+ case wt.CODE_START_C:
+ throw new C
+ }
+ switch (l) {
+ case wt.CODE_CODE_A:
+ if (m < 64)
+ d += T === _ ? String.fromCharCode(" ".charCodeAt(0) + m) : String.fromCharCode(" ".charCodeAt(0) + m + 128),
+ T = !1;
+ else if (m < 96)
+ d += T === _ ? String.fromCharCode(m - 64) : String.fromCharCode(m + 64),
+ T = !1;
+ else
+ switch (m !== wt.CODE_STOP && (S = !1), m) {
+ case wt.CODE_FNC_1:
+ n && (0 === d.length ? d += "]C1" : d += String.fromCharCode(29));
+ break;
+ case wt.CODE_FNC_2:
+ case wt.CODE_FNC_3:
+ break;
+ case wt.CODE_FNC_4_A:
+ !_ && T ? (_ = !0, T = !1) : _ && T ? (_ = !1, T = !1) : T = !0;
+ break;
+ case wt.CODE_SHIFT:
+ u = !0,
+ l = wt.CODE_CODE_B;
+ break;
+ case wt.CODE_CODE_B:
+ l = wt.CODE_CODE_B;
+ break;
+ case wt.CODE_CODE_C:
+ l = wt.CODE_CODE_C;
+ break;
+ case wt.CODE_STOP:
+ h = !0
+ }
+ break;
+ case wt.CODE_CODE_B:
+ if (m < 96)
+ d += T === _ ? String.fromCharCode(" ".charCodeAt(0) + m) : String.fromCharCode(" ".charCodeAt(0) + m + 128),
+ T = !1;
+ else
+ switch (m !== wt.CODE_STOP && (S = !1), m) {
+ case wt.CODE_FNC_1:
+ n && (0 === d.length ? d += "]C1" : d += String.fromCharCode(29));
+ break;
+ case wt.CODE_FNC_2:
+ case wt.CODE_FNC_3:
+ break;
+ case wt.CODE_FNC_4_B:
+ !_ && T ? (_ = !0, T = !1) : _ && T ? (_ = !1, T = !1) : T = !0;
+ break;
+ case wt.CODE_SHIFT:
+ u = !0,
+ l = wt.CODE_CODE_A;
+ break;
+ case wt.CODE_CODE_A:
+ l = wt.CODE_CODE_A;
+ break;
+ case wt.CODE_CODE_C:
+ l = wt.CODE_CODE_C;
+ break;
+ case wt.CODE_STOP:
+ h = !0
+ }
+ break;
+ case wt.CODE_CODE_C:
+ if (m < 100)
+ m < 10 && (d += "0"),
+ d += m;
+ else
+ switch (m !== wt.CODE_STOP && (S = !1), m) {
+ case wt.CODE_FNC_1:
+ n && (0 === d.length ? d += "]C1" : d += String.fromCharCode(29));
+ break;
+ case wt.CODE_CODE_A:
+ l = wt.CODE_CODE_A;
+ break;
+ case wt.CODE_CODE_B:
+ l = wt.CODE_CODE_B;
+ break;
+ case wt.CODE_STOP:
+ h = !0
+ }
+ }
+ t && (l = l === wt.CODE_CODE_A ? wt.CODE_CODE_B : wt.CODE_CODE_A)
+ }
+ const y = f - g;
+ if (f = e.getNextUnset(f), !e.isRange(f, Math.min(e.getSize(), f + (f - g) / 2), !1))
+ throw new N;
+ if (I -= p * A, I % 103 !== A)
+ throw new c;
+ const M = d.length;
+ if (0 === M)
+ throw new N;
+ M > 0 && S && (d = l === wt.CODE_CODE_C ? d.substring(0, M - 2) : d.substring(0, M - 1));
+ const D = (i[1] + i[0]) / 2,
+ R = g + y / 2,
+ O = a.length,
+ b = new Uint8Array(O);
+ for (let t = 0; t < O; t++)
+ b[t] = a[t];
+ const B = [new nt(D, t), new nt(R, t)];
+ return new F(d, b, 0, B, k.CODE_128, (new Date).getTime())
+ }
+ }
+ wt.CODE_PATTERNS = [Int32Array.from([2, 1, 2, 2, 2, 2]), Int32Array.from([2, 2, 2, 1, 2, 2]), Int32Array.from([2, 2, 2, 2, 2, 1]), Int32Array.from([1, 2, 1, 2, 2, 3]), Int32Array.from([1, 2, 1, 3, 2, 2]), Int32Array.from([1, 3, 1, 2, 2, 2]), Int32Array.from([1, 2, 2, 2, 1, 3]), Int32Array.from([1, 2, 2, 3, 1, 2]), Int32Array.from([1, 3, 2, 2, 1, 2]), Int32Array.from([2, 2, 1, 2, 1, 3]), Int32Array.from([2, 2, 1, 3, 1, 2]), Int32Array.from([2, 3, 1, 2, 1, 2]), Int32Array.from([1, 1, 2, 2, 3, 2]), Int32Array.from([1, 2, 2, 1, 3, 2]), Int32Array.from([1, 2, 2, 2, 3, 1]), Int32Array.from([1, 1, 3, 2, 2, 2]), Int32Array.from([1, 2, 3, 1, 2, 2]), Int32Array.from([1, 2, 3, 2, 2, 1]), Int32Array.from([2, 2, 3, 2, 1, 1]), Int32Array.from([2, 2, 1, 1, 3, 2]), Int32Array.from([2, 2, 1, 2, 3, 1]), Int32Array.from([2, 1, 3, 2, 1, 2]), Int32Array.from([2, 2, 3, 1, 1, 2]), Int32Array.from([3, 1, 2, 1, 3, 1]), Int32Array.from([3, 1, 1, 2, 2, 2]), Int32Array.from([3, 2, 1, 1, 2, 2]), Int32Array.from([3, 2, 1, 2, 2, 1]), Int32Array.from([3, 1, 2, 2, 1, 2]), Int32Array.from([3, 2, 2, 1, 1, 2]), Int32Array.from([3, 2, 2, 2, 1, 1]), Int32Array.from([2, 1, 2, 1, 2, 3]), Int32Array.from([2, 1, 2, 3, 2, 1]), Int32Array.from([2, 3, 2, 1, 2, 1]), Int32Array.from([1, 1, 1, 3, 2, 3]), Int32Array.from([1, 3, 1, 1, 2, 3]), Int32Array.from([1, 3, 1, 3, 2, 1]), Int32Array.from([1, 1, 2, 3, 1, 3]), Int32Array.from([1, 3, 2, 1, 1, 3]), Int32Array.from([1, 3, 2, 3, 1, 1]), Int32Array.from([2, 1, 1, 3, 1, 3]), Int32Array.from([2, 3, 1, 1, 1, 3]), Int32Array.from([2, 3, 1, 3, 1, 1]), Int32Array.from([1, 1, 2, 1, 3, 3]), Int32Array.from([1, 1, 2, 3, 3, 1]), Int32Array.from([1, 3, 2, 1, 3, 1]), Int32Array.from([1, 1, 3, 1, 2, 3]), Int32Array.from([1, 1, 3, 3, 2, 1]), Int32Array.from([1, 3, 3, 1, 2, 1]), Int32Array.from([3, 1, 3, 1, 2, 1]), Int32Array.from([2, 1, 1, 3, 3, 1]), Int32Array.from([2, 3, 1, 1, 3, 1]), Int32Array.from([2, 1, 3, 1, 1, 3]), Int32Array.from([2, 1, 3, 3, 1, 1]), Int32Array.from([2, 1, 3, 1, 3, 1]), Int32Array.from([3, 1, 1, 1, 2, 3]), Int32Array.from([3, 1, 1, 3, 2, 1]), Int32Array.from([3, 3, 1, 1, 2, 1]), Int32Array.from([3, 1, 2, 1, 1, 3]), Int32Array.from([3, 1, 2, 3, 1, 1]), Int32Array.from([3, 3, 2, 1, 1, 1]), Int32Array.from([3, 1, 4, 1, 1, 1]), Int32Array.from([2, 2, 1, 4, 1, 1]), Int32Array.from([4, 3, 1, 1, 1, 1]), Int32Array.from([1, 1, 1, 2, 2, 4]), Int32Array.from([1, 1, 1, 4, 2, 2]), Int32Array.from([1, 2, 1, 1, 2, 4]), Int32Array.from([1, 2, 1, 4, 2, 1]), Int32Array.from([1, 4, 1, 1, 2, 2]), Int32Array.from([1, 4, 1, 2, 2, 1]), Int32Array.from([1, 1, 2, 2, 1, 4]), Int32Array.from([1, 1, 2, 4, 1, 2]), Int32Array.from([1, 2, 2, 1, 1, 4]), Int32Array.from([1, 2, 2, 4, 1, 1]), Int32Array.from([1, 4, 2, 1, 1, 2]), Int32Array.from([1, 4, 2, 2, 1, 1]), Int32Array.from([2, 4, 1, 2, 1, 1]), Int32Array.from([2, 2, 1, 1, 1, 4]), Int32Array.from([4, 1, 3, 1, 1, 1]), Int32Array.from([2, 4, 1, 1, 1, 2]), Int32Array.from([1, 3, 4, 1, 1, 1]), Int32Array.from([1, 1, 1, 2, 4, 2]), Int32Array.from([1, 2, 1, 1, 4, 2]), Int32Array.from([1, 2, 1, 2, 4, 1]), Int32Array.from([1, 1, 4, 2, 1, 2]), Int32Array.from([1, 2, 4, 1, 1, 2]), Int32Array.from([1, 2, 4, 2, 1, 1]), Int32Array.from([4, 1, 1, 2, 1, 2]), Int32Array.from([4, 2, 1, 1, 1, 2]), Int32Array.from([4, 2, 1, 2, 1, 1]), Int32Array.from([2, 1, 2, 1, 4, 1]), Int32Array.from([2, 1, 4, 1, 2, 1]), Int32Array.from([4, 1, 2, 1, 2, 1]), Int32Array.from([1, 1, 1, 1, 4, 3]), Int32Array.from([1, 1, 1, 3, 4, 1]), Int32Array.from([1, 3, 1, 1, 4, 1]), Int32Array.from([1, 1, 4, 1, 1, 3]), Int32Array.from([1, 1, 4, 3, 1, 1]), Int32Array.from([4, 1, 1, 1, 1, 3]), Int32Array.from([4, 1, 1, 3, 1, 1]), Int32Array.from([1, 1, 3, 1, 4, 1]), Int32Array.from([1, 1, 4, 1, 3, 1]), Int32Array.from([3, 1, 1, 1, 4, 1]), Int32Array.from([4, 1, 1, 1, 3, 1]), Int32Array.from([2, 1, 1, 4, 1, 2]), Int32Array.from([2, 1, 1, 2, 1, 4]), Int32Array.from([2, 1, 1, 2, 3, 2]), Int32Array.from([2, 3, 3, 1, 1, 1, 2])],
+ wt.MAX_AVG_VARIANCE = .25,
+ wt.MAX_INDIVIDUAL_VARIANCE = .7,
+ wt.CODE_SHIFT = 98,
+ wt.CODE_CODE_C = 99,
+ wt.CODE_CODE_B = 100,
+ wt.CODE_CODE_A = 101,
+ wt.CODE_FNC_1 = 102,
+ wt.CODE_FNC_2 = 97,
+ wt.CODE_FNC_3 = 96,
+ wt.CODE_FNC_4_A = 101,
+ wt.CODE_FNC_4_B = 100,
+ wt.CODE_START_A = 103,
+ wt.CODE_START_B = 104,
+ wt.CODE_START_C = 105,
+ wt.CODE_STOP = 106;
+ class At extends ft {
+ constructor(t=!1, e=!1)
+ {
+ super(),
+ this.usingCheckDigit = t,
+ this.extendedMode = e,
+ this.decodeRowResult = "",
+ this.counters = new Int32Array(9)
+ }
+ decodeRow(t, e, r)
+ {
+ let n = this.counters;
+ n.fill(0),
+ this.decodeRowResult = "";
+ let i,
+ o,
+ s = At.findAsteriskPattern(e, n),
+ a = e.getNextSet(s[1]),
+ l = e.getSize();
+ do {
+ At.recordPattern(e, a, n);
+ let t = At.toNarrowWidePattern(n);
+ if (t < 0)
+ throw new N;
+ i = At.patternToChar(t),
+ this.decodeRowResult += i,
+ o = a;
+ for (let t of n)
+ a += t;
+ a = e.getNextSet(a)
+ } while ("*" !== i);
+ this.decodeRowResult = this.decodeRowResult.substring(0, this.decodeRowResult.length - 1);
+ let h,
+ u = 0;
+ for (let t of n)
+ u += t;
+ if (a !== l && 2 * (a - o - u) < u)
+ throw new N;
+ if (this.usingCheckDigit) {
+ let t = this.decodeRowResult.length - 1,
+ e = 0;
+ for (let r = 0; r < t; r++)
+ e += At.ALPHABET_STRING.indexOf(this.decodeRowResult.charAt(r));
+ if (this.decodeRowResult.charAt(t) !== At.ALPHABET_STRING.charAt(e % 43))
+ throw new c;
+ this.decodeRowResult = this.decodeRowResult.substring(0, t)
+ }
+ if (0 === this.decodeRowResult.length)
+ throw new N;
+ h = this.extendedMode ? At.decodeExtended(this.decodeRowResult) : this.decodeRowResult;
+ let d = (s[1] + s[0]) / 2,
+ g = o + u / 2;
+ return new F(h, null, 0, [new nt(d, t), new nt(g, t)], k.CODE_39, (new Date).getTime())
+ }
+ static findAsteriskPattern(t, e)
+ {
+ let r = t.getSize(),
+ n = t.getNextSet(0),
+ i = 0,
+ o = n,
+ s = !1,
+ a = e.length;
+ for (let l = n; l < r; l++)
+ if (t.get(l) !== s)
+ e[i]++;
+ else {
+ if (i === a - 1) {
+ if (this.toNarrowWidePattern(e) === At.ASTERISK_ENCODING && t.isRange(Math.max(0, o - Math.floor((l - o) / 2)), o, !1))
+ return [o, l];
+ o += e[0] + e[1],
+ e.copyWithin(0, 2, 2 + i - 1),
+ e[i - 1] = 0,
+ e[i] = 0,
+ i--
+ } else
+ i++;
+ e[i] = 1,
+ s = !s
+ }
+ throw new N
+ }
+ static toNarrowWidePattern(t)
+ {
+ let e,
+ r = t.length,
+ n = 0;
+ do {
+ let i = 2147483647;
+ for (let e of t)
+ e < i && e > n && (i = e);
+ n = i,
+ e = 0;
+ let o = 0,
+ s = 0;
+ for (let i = 0; i < r; i++) {
+ let a = t[i];
+ a > n && (s |= 1 << r - 1 - i, e++, o += a)
+ }
+ if (3 === e) {
+ for (let i = 0; i < r && e > 0; i++) {
+ let r = t[i];
+ if (r > n && (e--, 2 * r >= o))
+ return -1
+ }
+ return s
+ }
+ } while (e > 3);
+ return -1
+ }
+ static patternToChar(t)
+ {
+ for (let e = 0; e < At.CHARACTER_ENCODINGS.length; e++)
+ if (At.CHARACTER_ENCODINGS[e] === t)
+ return At.ALPHABET_STRING.charAt(e);
+ if (t === At.ASTERISK_ENCODING)
+ return "*";
+ throw new N
+ }
+ static decodeExtended(t)
+ {
+ let e = t.length,
+ r = "";
+ for (let n = 0; n < e; n++) {
+ let e = t.charAt(n);
+ if ("+" === e || "$" === e || "%" === e || "/" === e) {
+ let i = t.charAt(n + 1),
+ o = "\0";
+ switch (e) {
+ case "+":
+ if (!(i >= "A" && i <= "Z"))
+ throw new C;
+ o = String.fromCharCode(i.charCodeAt(0) + 32);
+ break;
+ case "$":
+ if (!(i >= "A" && i <= "Z"))
+ throw new C;
+ o = String.fromCharCode(i.charCodeAt(0) - 64);
+ break;
+ case "%":
+ if (i >= "A" && i <= "E")
+ o = String.fromCharCode(i.charCodeAt(0) - 38);
+ else if (i >= "F" && i <= "J")
+ o = String.fromCharCode(i.charCodeAt(0) - 11);
+ else if (i >= "K" && i <= "O")
+ o = String.fromCharCode(i.charCodeAt(0) + 16);
+ else if (i >= "P" && i <= "T")
+ o = String.fromCharCode(i.charCodeAt(0) + 43);
+ else if ("U" === i)
+ o = "\0";
+ else if ("V" === i)
+ o = "@";
+ else if ("W" === i)
+ o = "`";
+ else {
+ if ("X" !== i && "Y" !== i && "Z" !== i)
+ throw new C;
+ o = ""
+ }
+ break;
+ case "/":
+ if (i >= "A" && i <= "O")
+ o = String.fromCharCode(i.charCodeAt(0) - 32);
+ else {
+ if ("Z" !== i)
+ throw new C;
+ o = ":"
+ }
+ }
+ r += o,
+ n++
+ } else
+ r += e
+ }
+ return r
+ }
+ }
+ At.ALPHABET_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%",
+ At.CHARACTER_ENCODINGS = [52, 289, 97, 352, 49, 304, 112, 37, 292, 100, 265, 73, 328, 25, 280, 88, 13, 268, 76, 28, 259, 67, 322, 19, 274, 82, 7, 262, 70, 22, 385, 193, 448, 145, 400, 208, 133, 388, 196, 168, 162, 138, 42],
+ At.ASTERISK_ENCODING = 148;
+ class mt extends ft {
+ constructor()
+ {
+ super(...arguments),
+ this.narrowLineWidth = -1
+ }
+ decodeRow(t, e, r)
+ {
+ let n = this.decodeStart(e),
+ i = this.decodeEnd(e),
+ o = new T;
+ mt.decodeMiddle(e, n[1], i[0], o);
+ let s = o.toString(),
+ a = null;
+ null != r && (a = r.get(E.ALLOWED_LENGTHS)),
+ null == a && (a = mt.DEFAULT_ALLOWED_LENGTHS);
+ let l = s.length,
+ c = !1,
+ h = 0;
+ for (let t of a) {
+ if (l === t) {
+ c = !0;
+ break
+ }
+ t > h && (h = t)
+ }
+ if (!c && l > h && (c = !0), !c)
+ throw new C;
+ const u = [new nt(n[1], t), new nt(i[0], t)];
+ return new F(s, null, 0, u, k.ITF, (new Date).getTime())
+ }
+ static decodeMiddle(t, e, r, n)
+ {
+ let i = new Int32Array(10),
+ o = new Int32Array(5),
+ s = new Int32Array(5);
+ for (i.fill(0), o.fill(0), s.fill(0); e < r;) {
+ ft.recordPattern(t, e, i);
+ for (let t = 0; t < 5; t++) {
+ let e = 2 * t;
+ o[t] = i[e],
+ s[t] = i[e + 1]
+ }
+ let r = mt.decodeDigit(o);
+ n.append(r.toString()),
+ r = this.decodeDigit(s),
+ n.append(r.toString()),
+ i.forEach((function(t) {
+ e += t
+ }))
+ }
+ }
+ decodeStart(t)
+ {
+ let e = mt.skipWhiteSpace(t),
+ r = mt.findGuardPattern(t, e, mt.START_PATTERN);
+ return this.narrowLineWidth = (r[1] - r[0]) / 4, this.validateQuietZone(t, r[0]), r
+ }
+ validateQuietZone(t, e)
+ {
+ let r = 10 * this.narrowLineWidth;
+ r = r < e ? r : e;
+ for (let n = e - 1; r > 0 && n >= 0 && !t.get(n); n--)
+ r--;
+ if (0 !== r)
+ throw new N
+ }
+ static skipWhiteSpace(t)
+ {
+ const e = t.getSize(),
+ r = t.getNextSet(0);
+ if (r === e)
+ throw new N;
+ return r
+ }
+ decodeEnd(t)
+ {
+ t.reverse();
+ try {
+ let e,
+ r = mt.skipWhiteSpace(t);
+ try {
+ e = mt.findGuardPattern(t, r, mt.END_PATTERN_REVERSED[0])
+ } catch (n) {
+ n instanceof N && (e = mt.findGuardPattern(t, r, mt.END_PATTERN_REVERSED[1]))
+ }
+ this.validateQuietZone(t, e[0]);
+ let n = e[0];
+ return e[0] = t.getSize() - e[1], e[1] = t.getSize() - n, e
+ } finally {
+ t.reverse()
+ }
+ }
+ static findGuardPattern(t, e, r)
+ {
+ let n = r.length,
+ i = new Int32Array(n),
+ o = t.getSize(),
+ s = !1,
+ a = 0,
+ l = e;
+ i.fill(0);
+ for (let c = e; c < o; c++)
+ if (t.get(c) !== s)
+ i[a]++;
+ else {
+ if (a === n - 1) {
+ if (ft.patternMatchVariance(i, r, mt.MAX_INDIVIDUAL_VARIANCE) < mt.MAX_AVG_VARIANCE)
+ return [l, c];
+ l += i[0] + i[1],
+ u.arraycopy(i, 2, i, 0, a - 1),
+ i[a - 1] = 0,
+ i[a] = 0,
+ a--
+ } else
+ a++;
+ i[a] = 1,
+ s = !s
+ }
+ throw new N
+ }
+ static decodeDigit(t)
+ {
+ let e = mt.MAX_AVG_VARIANCE,
+ r = -1,
+ n = mt.PATTERNS.length;
+ for (let i = 0; i < n; i++) {
+ let n = mt.PATTERNS[i],
+ o = ft.patternMatchVariance(t, n, mt.MAX_INDIVIDUAL_VARIANCE);
+ o < e ? (e = o, r = i) : o === e && (r = -1)
+ }
+ if (r >= 0)
+ return r % 10;
+ throw new N
+ }
+ }
+ mt.PATTERNS = [Int32Array.from([1, 1, 2, 2, 1]), Int32Array.from([2, 1, 1, 1, 2]), Int32Array.from([1, 2, 1, 1, 2]), Int32Array.from([2, 2, 1, 1, 1]), Int32Array.from([1, 1, 2, 1, 2]), Int32Array.from([2, 1, 2, 1, 1]), Int32Array.from([1, 2, 2, 1, 1]), Int32Array.from([1, 1, 1, 2, 2]), Int32Array.from([2, 1, 1, 2, 1]), Int32Array.from([1, 2, 1, 2, 1]), Int32Array.from([1, 1, 3, 3, 1]), Int32Array.from([3, 1, 1, 1, 3]), Int32Array.from([1, 3, 1, 1, 3]), Int32Array.from([3, 3, 1, 1, 1]), Int32Array.from([1, 1, 3, 1, 3]), Int32Array.from([3, 1, 3, 1, 1]), Int32Array.from([1, 3, 3, 1, 1]), Int32Array.from([1, 1, 1, 3, 3]), Int32Array.from([3, 1, 1, 3, 1]), Int32Array.from([1, 3, 1, 3, 1])],
+ mt.MAX_AVG_VARIANCE = .38,
+ mt.MAX_INDIVIDUAL_VARIANCE = .5,
+ mt.DEFAULT_ALLOWED_LENGTHS = [6, 8, 10, 12, 14],
+ mt.START_PATTERN = Int32Array.from([1, 1, 1, 1]),
+ mt.END_PATTERN_REVERSED = [Int32Array.from([1, 1, 2]), Int32Array.from([1, 1, 3])];
+ class Et extends ft {
+ constructor()
+ {
+ super(...arguments),
+ this.decodeRowStringBuffer = ""
+ }
+ static findStartGuardPattern(t)
+ {
+ let e,
+ r = !1,
+ n = 0,
+ i = Int32Array.from([0, 0, 0]);
+ for (; !r;) {
+ i = Int32Array.from([0, 0, 0]),
+ e = Et.findGuardPattern(t, n, !1, this.START_END_PATTERN, i);
+ let o = e[0];
+ n = e[1];
+ let s = o - (n - o);
+ s >= 0 && (r = t.isRange(s, o, !1))
+ }
+ return e
+ }
+ static checkChecksum(t)
+ {
+ return Et.checkStandardUPCEANChecksum(t)
+ }
+ static checkStandardUPCEANChecksum(t)
+ {
+ let e = t.length;
+ if (0 === e)
+ return !1;
+ let r = parseInt(t.charAt(e - 1), 10);
+ return Et.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r
+ }
+ static getStandardUPCEANChecksum(t)
+ {
+ let e = t.length,
+ r = 0;
+ for (let n = e - 1; n >= 0; n -= 2) {
+ let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ if (e < 0 || e > 9)
+ throw new C;
+ r += e
+ }
+ r *= 3;
+ for (let n = e - 2; n >= 0; n -= 2) {
+ let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ if (e < 0 || e > 9)
+ throw new C;
+ r += e
+ }
+ return (1e3 - r) % 10
+ }
+ static decodeEnd(t, e)
+ {
+ return Et.findGuardPattern(t, e, !1, Et.START_END_PATTERN, new Int32Array(Et.START_END_PATTERN.length).fill(0))
+ }
+ static findGuardPatternWithoutCounters(t, e, r, n)
+ {
+ return this.findGuardPattern(t, e, r, n, new Int32Array(n.length))
+ }
+ static findGuardPattern(t, e, r, n, i)
+ {
+ let o = t.getSize(),
+ s = 0,
+ a = e = r ? t.getNextUnset(e) : t.getNextSet(e),
+ l = n.length,
+ c = r;
+ for (let r = e; r < o; r++)
+ if (t.get(r) !== c)
+ i[s]++;
+ else {
+ if (s === l - 1) {
+ if (ft.patternMatchVariance(i, n, Et.MAX_INDIVIDUAL_VARIANCE) < Et.MAX_AVG_VARIANCE)
+ return Int32Array.from([a, r]);
+ a += i[0] + i[1];
+ let t = i.slice(2, i.length - 1);
+ for (let e = 0; e < s - 1; e++)
+ i[e] = t[e];
+ i[s - 1] = 0,
+ i[s] = 0,
+ s--
+ } else
+ s++;
+ i[s] = 1,
+ c = !c
+ }
+ throw new N
+ }
+ static decodeDigit(t, e, r, n)
+ {
+ this.recordPattern(t, r, e);
+ let i = this.MAX_AVG_VARIANCE,
+ o = -1,
+ s = n.length;
+ for (let t = 0; t < s; t++) {
+ let r = n[t],
+ s = ft.patternMatchVariance(e, r, Et.MAX_INDIVIDUAL_VARIANCE);
+ s < i && (i = s, o = t)
+ }
+ if (o >= 0)
+ return o;
+ throw new N
+ }
+ }
+ Et.MAX_AVG_VARIANCE = .48,
+ Et.MAX_INDIVIDUAL_VARIANCE = .7,
+ Et.START_END_PATTERN = Int32Array.from([1, 1, 1]),
+ Et.MIDDLE_PATTERN = Int32Array.from([1, 1, 1, 1, 1]),
+ Et.END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1]),
+ Et.L_PATTERNS = [Int32Array.from([3, 2, 1, 1]), Int32Array.from([2, 2, 2, 1]), Int32Array.from([2, 1, 2, 2]), Int32Array.from([1, 4, 1, 1]), Int32Array.from([1, 1, 3, 2]), Int32Array.from([1, 2, 3, 1]), Int32Array.from([1, 1, 1, 4]), Int32Array.from([1, 3, 1, 2]), Int32Array.from([1, 2, 1, 3]), Int32Array.from([3, 1, 1, 2])];
+ class Ct {
+ constructor()
+ {
+ this.CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5],
+ this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]),
+ this.decodeRowStringBuffer = ""
+ }
+ decodeRow(t, e, r)
+ {
+ let n = this.decodeRowStringBuffer,
+ i = this.decodeMiddle(e, r, n),
+ o = n.toString(),
+ s = Ct.parseExtensionString(o),
+ a = [new nt((r[0] + r[1]) / 2, t), new nt(i, t)],
+ l = new F(o, null, 0, a, k.UPC_EAN_EXTENSION, (new Date).getTime());
+ return null != s && l.putAllMetadata(s), l
+ }
+ decodeMiddle(t, e, r)
+ {
+ let n = this.decodeMiddleCounters;
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ let i = t.getSize(),
+ o = e[1],
+ s = 0;
+ for (let e = 0; e < 5 && o < i; e++) {
+ let i = Et.decodeDigit(t, n, o, Et.L_AND_G_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + i % 10);
+ for (let t of n)
+ o += t;
+ i >= 10 && (s |= 1 << 4 - e),
+ 4 !== e && (o = t.getNextSet(o), o = t.getNextUnset(o))
+ }
+ if (5 !== r.length)
+ throw new N;
+ let a = this.determineCheckDigit(s);
+ if (Ct.extensionChecksum(r.toString()) !== a)
+ throw new N;
+ return o
+ }
+ static extensionChecksum(t)
+ {
+ let e = t.length,
+ r = 0;
+ for (let n = e - 2; n >= 0; n -= 2)
+ r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ r *= 3;
+ for (let n = e - 1; n >= 0; n -= 2)
+ r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ return r *= 3, r % 10
+ }
+ determineCheckDigit(t)
+ {
+ for (let e = 0; e < 10; e++)
+ if (t === this.CHECK_DIGIT_ENCODINGS[e])
+ return e;
+ throw new N
+ }
+ static parseExtensionString(t)
+ {
+ if (5 !== t.length)
+ return null;
+ let e = Ct.parseExtension5String(t);
+ return null == e ? null : new Map([[X.SUGGESTED_PRICE, e]])
+ }
+ static parseExtension5String(t)
+ {
+ let e;
+ switch (t.charAt(0)) {
+ case "0":
+ e = "£";
+ break;
+ case "5":
+ e = "$";
+ break;
+ case "9":
+ switch (t) {
+ case "90000":
+ return null;
+ case "99991":
+ return "0.00";
+ case "99990":
+ return "Used"
+ }
+ e = "";
+ break;
+ default:
+ e = ""
+ }
+ let r = parseInt(t.substring(1)),
+ n = r % 100;
+ return e + (r / 100).toString() + "." + (n < 10 ? "0" + n : n.toString())
+ }
+ }
+ class It {
+ constructor()
+ {
+ this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]),
+ this.decodeRowStringBuffer = ""
+ }
+ decodeRow(t, e, r)
+ {
+ let n = this.decodeRowStringBuffer,
+ i = this.decodeMiddle(e, r, n),
+ o = n.toString(),
+ s = It.parseExtensionString(o),
+ a = [new nt((r[0] + r[1]) / 2, t), new nt(i, t)],
+ l = new F(o, null, 0, a, k.UPC_EAN_EXTENSION, (new Date).getTime());
+ return null != s && l.putAllMetadata(s), l
+ }
+ decodeMiddle(t, e, r)
+ {
+ let n = this.decodeMiddleCounters;
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ let i = t.getSize(),
+ o = e[1],
+ s = 0;
+ for (let e = 0; e < 2 && o < i; e++) {
+ let i = Et.decodeDigit(t, n, o, Et.L_AND_G_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + i % 10);
+ for (let t of n)
+ o += t;
+ i >= 10 && (s |= 1 << 1 - e),
+ 1 !== e && (o = t.getNextSet(o), o = t.getNextUnset(o))
+ }
+ if (2 !== r.length)
+ throw new N;
+ if (parseInt(r.toString()) % 4 !== s)
+ throw new N;
+ return o
+ }
+ static parseExtensionString(t)
+ {
+ return 2 !== t.length ? null : new Map([[X.ISSUE_NUMBER, parseInt(t)]])
+ }
+ }
+ class pt {
+ static decodeRow(t, e, r)
+ {
+ let n = Et.findGuardPattern(e, r, !1, this.EXTENSION_START_PATTERN, new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0));
+ try {
+ return (new Ct).decodeRow(t, e, n)
+ } catch (r) {
+ return (new It).decodeRow(t, e, n)
+ }
+ }
+ }
+ pt.EXTENSION_START_PATTERN = Int32Array.from([1, 1, 2]);
+ class St extends Et {
+ constructor()
+ {
+ super(),
+ this.decodeRowStringBuffer = "",
+ St.L_AND_G_PATTERNS = St.L_PATTERNS.map((t => Int32Array.from(t)));
+ for (let t = 10; t < 20; t++) {
+ let e = St.L_PATTERNS[t - 10],
+ r = new Int32Array(e.length);
+ for (let t = 0; t < e.length; t++)
+ r[t] = e[e.length - t - 1];
+ St.L_AND_G_PATTERNS[t] = r
+ }
+ }
+ decodeRow(t, e, r)
+ {
+ let n = St.findStartGuardPattern(e),
+ i = null == r ? null : r.get(E.NEED_RESULT_POINT_CALLBACK);
+ if (null != i) {
+ const e = new nt((n[0] + n[1]) / 2, t);
+ i.foundPossibleResultPoint(e)
+ }
+ let o = this.decodeMiddle(e, n, this.decodeRowStringBuffer),
+ s = o.rowOffset,
+ a = o.resultString;
+ if (null != i) {
+ const e = new nt(s, t);
+ i.foundPossibleResultPoint(e)
+ }
+ let l = St.decodeEnd(e, s);
+ if (null != i) {
+ const e = new nt((l[0] + l[1]) / 2, t);
+ i.foundPossibleResultPoint(e)
+ }
+ let h = l[1],
+ u = h + (h - l[0]);
+ if (u >= e.getSize() || !e.isRange(h, u, !1))
+ throw new N;
+ let d = a.toString();
+ if (d.length < 8)
+ throw new C;
+ if (!St.checkChecksum(d))
+ throw new c;
+ let g = (n[1] + n[0]) / 2,
+ f = (l[1] + l[0]) / 2,
+ w = this.getBarcodeFormat(),
+ A = [new nt(g, t), new nt(f, t)],
+ m = new F(d, null, 0, A, w, (new Date).getTime()),
+ I = 0;
+ try {
+ let r = pt.decodeRow(t, e, l[1]);
+ m.putMetadata(X.UPC_EAN_EXTENSION, r.getText()),
+ m.putAllMetadata(r.getResultMetadata()),
+ m.addResultPoints(r.getResultPoints()),
+ I = r.getText().length
+ } catch (t) {}
+ let p = null == r ? null : r.get(E.ALLOWED_EAN_EXTENSIONS);
+ if (null != p) {
+ let t = !1;
+ for (let e in p)
+ if (I.toString() === e) {
+ t = !0;
+ break
+ }
+ if (!t)
+ throw new N
+ }
+ return w === k.EAN_13 || k.UPC_A, m
+ }
+ static checkChecksum(t)
+ {
+ return St.checkStandardUPCEANChecksum(t)
+ }
+ static checkStandardUPCEANChecksum(t)
+ {
+ let e = t.length;
+ if (0 === e)
+ return !1;
+ let r = parseInt(t.charAt(e - 1), 10);
+ return St.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r
+ }
+ static getStandardUPCEANChecksum(t)
+ {
+ let e = t.length,
+ r = 0;
+ for (let n = e - 1; n >= 0; n -= 2) {
+ let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ if (e < 0 || e > 9)
+ throw new C;
+ r += e
+ }
+ r *= 3;
+ for (let n = e - 2; n >= 0; n -= 2) {
+ let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
+ if (e < 0 || e > 9)
+ throw new C;
+ r += e
+ }
+ return (1e3 - r) % 10
+ }
+ static decodeEnd(t, e)
+ {
+ return St.findGuardPattern(t, e, !1, St.START_END_PATTERN, new Int32Array(St.START_END_PATTERN.length).fill(0))
+ }
+ }
+ class _t extends St {
+ constructor()
+ {
+ super(),
+ this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])
+ }
+ decodeMiddle(t, e, r)
+ {
+ let n = this.decodeMiddleCounters;
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ let i = t.getSize(),
+ o = e[1],
+ s = 0;
+ for (let e = 0; e < 6 && o < i; e++) {
+ let i = St.decodeDigit(t, n, o, St.L_AND_G_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + i % 10);
+ for (let t of n)
+ o += t;
+ i >= 10 && (s |= 1 << 5 - e)
+ }
+ r = _t.determineFirstDigit(r, s),
+ o = St.findGuardPattern(t, o, !0, St.MIDDLE_PATTERN, new Int32Array(St.MIDDLE_PATTERN.length).fill(0))[1];
+ for (let e = 0; e < 6 && o < i; e++) {
+ let e = St.decodeDigit(t, n, o, St.L_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + e);
+ for (let t of n)
+ o += t
+ }
+ return {
+ rowOffset: o,
+ resultString: r
+ }
+ }
+ getBarcodeFormat()
+ {
+ return k.EAN_13
+ }
+ static determineFirstDigit(t, e)
+ {
+ for (let r = 0; r < 10; r++)
+ if (e === this.FIRST_DIGIT_ENCODINGS[r])
+ return String.fromCharCode("0".charCodeAt(0) + r) + t;
+ throw new N
+ }
+ }
+ _t.FIRST_DIGIT_ENCODINGS = [0, 11, 13, 14, 19, 25, 28, 21, 22, 26];
+ class Tt extends St {
+ constructor()
+ {
+ super(),
+ this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])
+ }
+ decodeMiddle(t, e, r)
+ {
+ const n = this.decodeMiddleCounters;
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ let i = t.getSize(),
+ o = e[1];
+ for (let e = 0; e < 4 && o < i; e++) {
+ let e = St.decodeDigit(t, n, o, St.L_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + e);
+ for (let t of n)
+ o += t
+ }
+ o = St.findGuardPattern(t, o, !0, St.MIDDLE_PATTERN, new Int32Array(St.MIDDLE_PATTERN.length).fill(0))[1];
+ for (let e = 0; e < 4 && o < i; e++) {
+ let e = St.decodeDigit(t, n, o, St.L_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + e);
+ for (let t of n)
+ o += t
+ }
+ return {
+ rowOffset: o,
+ resultString: r
+ }
+ }
+ getBarcodeFormat()
+ {
+ return k.EAN_8
+ }
+ }
+ class yt extends St {
+ constructor()
+ {
+ super(...arguments),
+ this.ean13Reader = new _t
+ }
+ getBarcodeFormat()
+ {
+ return k.UPC_A
+ }
+ decode(t, e)
+ {
+ return this.maybeReturnResult(this.ean13Reader.decode(t))
+ }
+ decodeRow(t, e, r)
+ {
+ return this.maybeReturnResult(this.ean13Reader.decodeRow(t, e, r))
+ }
+ decodeMiddle(t, e, r)
+ {
+ return this.ean13Reader.decodeMiddle(t, e, r)
+ }
+ maybeReturnResult(t)
+ {
+ let e = t.getText();
+ if ("0" === e.charAt(0)) {
+ let r = new F(e.substring(1), null, null, t.getResultPoints(), k.UPC_A);
+ return null != t.getResultMetadata() && r.putAllMetadata(t.getResultMetadata()), r
+ }
+ throw new N
+ }
+ reset()
+ {
+ this.ean13Reader.reset()
+ }
+ }
+ class Nt extends St {
+ constructor()
+ {
+ super(),
+ this.decodeMiddleCounters = new Int32Array(4)
+ }
+ decodeMiddle(t, e, r)
+ {
+ const n = this.decodeMiddleCounters.map((t => t));
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ const i = t.getSize();
+ let o = e[1],
+ s = 0;
+ for (let e = 0; e < 6 && o < i; e++) {
+ const i = Nt.decodeDigit(t, n, o, Nt.L_AND_G_PATTERNS);
+ r += String.fromCharCode("0".charCodeAt(0) + i % 10);
+ for (let t of n)
+ o += t;
+ i >= 10 && (s |= 1 << 5 - e)
+ }
+ return Nt.determineNumSysAndCheckDigit(new T(r), s), o
+ }
+ decodeEnd(t, e)
+ {
+ return Nt.findGuardPatternWithoutCounters(t, e, !0, Nt.MIDDLE_END_PATTERN)
+ }
+ checkChecksum(t)
+ {
+ return St.checkChecksum(Nt.convertUPCEtoUPCA(t))
+ }
+ static determineNumSysAndCheckDigit(t, e)
+ {
+ for (let r = 0; r <= 1; r++)
+ for (let n = 0; n < 10; n++)
+ if (e === this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[r][n])
+ return t.insert(0, "0" + r), void t.append("0" + n);
+ throw N.getNotFoundInstance()
+ }
+ getBarcodeFormat()
+ {
+ return k.UPC_E
+ }
+ static convertUPCEtoUPCA(t)
+ {
+ const e = t.slice(1, 7).split("").map((t => t.charCodeAt(0))),
+ r = new T;
+ r.append(t.charAt(0));
+ let n = e[5];
+ switch (n) {
+ case 0:
+ case 1:
+ case 2:
+ r.appendChars(e, 0, 2),
+ r.append(n),
+ r.append("0000"),
+ r.appendChars(e, 2, 3);
+ break;
+ case 3:
+ r.appendChars(e, 0, 3),
+ r.append("00000"),
+ r.appendChars(e, 3, 2);
+ break;
+ case 4:
+ r.appendChars(e, 0, 4),
+ r.append("00000"),
+ r.append(e[4]);
+ break;
+ default:
+ r.appendChars(e, 0, 5),
+ r.append("0000"),
+ r.append(n)
+ }
+ return t.length >= 8 && r.append(t.charAt(7)), r.toString()
+ }
+ }
+ Nt.MIDDLE_END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1]),
+ Nt.NUMSYS_AND_CHECK_DIGIT_PATTERNS = [Int32Array.from([56, 52, 50, 49, 44, 38, 35, 42, 41, 37]), Int32Array.from([7, 11, 13, 14, 19, 25, 28, 21, 22, 1])];
+ class Mt extends ft {
+ constructor(t)
+ {
+ super();
+ let e = null == t ? null : t.get(E.POSSIBLE_FORMATS),
+ r = [];
+ null != e && (e.indexOf(k.EAN_13) > -1 ? r.push(new _t) : e.indexOf(k.UPC_A) > -1 && r.push(new yt), e.indexOf(k.EAN_8) > -1 && r.push(new Tt), e.indexOf(k.UPC_E) > -1 && r.push(new Nt)),
+ 0 === r.length && (r.push(new _t), r.push(new Tt), r.push(new Nt)),
+ this.readers = r
+ }
+ decodeRow(t, e, r)
+ {
+ for (let n of this.readers)
+ try {
+ const i = n.decodeRow(t, e, r),
+ o = i.getBarcodeFormat() === k.EAN_13 && "0" === i.getText().charAt(0),
+ s = null == r ? null : r.get(E.POSSIBLE_FORMATS),
+ a = null == s || s.includes(k.UPC_A);
+ if (o && a) {
+ const t = i.getRawBytes(),
+ e = new F(i.getText().substring(1), t, t.length, i.getResultPoints(), k.UPC_A);
+ return e.putAllMetadata(i.getResultMetadata()), e
+ }
+ return i
+ } catch (t) {}
+ throw new N
+ }
+ reset()
+ {
+ for (let t of this.readers)
+ t.reset()
+ }
+ }
+ class Dt extends ft {
+ constructor()
+ {
+ super(),
+ this.decodeFinderCounters = new Int32Array(4),
+ this.dataCharacterCounters = new Int32Array(8),
+ this.oddRoundingErrors = new Array(4),
+ this.evenRoundingErrors = new Array(4),
+ this.oddCounts = new Array(this.dataCharacterCounters.length / 2),
+ this.evenCounts = new Array(this.dataCharacterCounters.length / 2)
+ }
+ getDecodeFinderCounters()
+ {
+ return this.decodeFinderCounters
+ }
+ getDataCharacterCounters()
+ {
+ return this.dataCharacterCounters
+ }
+ getOddRoundingErrors()
+ {
+ return this.oddRoundingErrors
+ }
+ getEvenRoundingErrors()
+ {
+ return this.evenRoundingErrors
+ }
+ getOddCounts()
+ {
+ return this.oddCounts
+ }
+ getEvenCounts()
+ {
+ return this.evenCounts
+ }
+ parseFinderValue(t, e)
+ {
+ for (let r = 0; r < e.length; r++)
+ if (ft.patternMatchVariance(t, e[r], Dt.MAX_INDIVIDUAL_VARIANCE) < Dt.MAX_AVG_VARIANCE)
+ return r;
+ throw new N
+ }
+ static count(t)
+ {
+ return et.sum(new Int32Array(t))
+ }
+ static increment(t, e)
+ {
+ let r = 0,
+ n = e[0];
+ for (let i = 1; i < t.length; i++)
+ e[i] > n && (n = e[i], r = i);
+ t[r]++
+ }
+ static decrement(t, e)
+ {
+ let r = 0,
+ n = e[0];
+ for (let i = 1; i < t.length; i++)
+ e[i] < n && (n = e[i], r = i);
+ t[r]--
+ }
+ static isFinderPattern(t)
+ {
+ let e = t[0] + t[1],
+ r = e / (e + t[2] + t[3]);
+ if (r >= Dt.MIN_FINDER_PATTERN_RATIO && r <= Dt.MAX_FINDER_PATTERN_RATIO) {
+ let e = Number.MAX_SAFE_INTEGER,
+ r = Number.MIN_SAFE_INTEGER;
+ for (let n of t)
+ n > r && (r = n),
+ n < e && (e = n);
+ return r < 10 * e
+ }
+ return !1
+ }
+ }
+ Dt.MAX_AVG_VARIANCE = .2,
+ Dt.MAX_INDIVIDUAL_VARIANCE = .45,
+ Dt.MIN_FINDER_PATTERN_RATIO = 9.5 / 12,
+ Dt.MAX_FINDER_PATTERN_RATIO = 12.5 / 14;
+ class Rt {
+ constructor(t, e)
+ {
+ this.value = t,
+ this.checksumPortion = e
+ }
+ getValue()
+ {
+ return this.value
+ }
+ getChecksumPortion()
+ {
+ return this.checksumPortion
+ }
+ toString()
+ {
+ return this.value + "(" + this.checksumPortion + ")"
+ }
+ equals(t)
+ {
+ if (!(t instanceof Rt))
+ return !1;
+ const e = t;
+ return this.value === e.value && this.checksumPortion === e.checksumPortion
+ }
+ hashCode()
+ {
+ return this.value ^ this.checksumPortion
+ }
+ }
+ class Ot {
+ constructor(t, e, r, n, i)
+ {
+ this.value = t,
+ this.startEnd = e,
+ this.value = t,
+ this.startEnd = e,
+ this.resultPoints = new Array,
+ this.resultPoints.push(new nt(r, i)),
+ this.resultPoints.push(new nt(n, i))
+ }
+ getValue()
+ {
+ return this.value
+ }
+ getStartEnd()
+ {
+ return this.startEnd
+ }
+ getResultPoints()
+ {
+ return this.resultPoints
+ }
+ equals(t)
+ {
+ if (!(t instanceof Ot))
+ return !1;
+ const e = t;
+ return this.value === e.value
+ }
+ hashCode()
+ {
+ return this.value
+ }
+ }
+ class bt {
+ constructor() {}
+ static getRSSvalue(t, e, r)
+ {
+ let n = 0;
+ for (let e of t)
+ n += e;
+ let i = 0,
+ o = 0,
+ s = t.length;
+ for (let a = 0; a < s - 1; a++) {
+ let l;
+ for (l = 1, o |= 1 << a; l < t[a]; l++, o &= ~(1 << a)) {
+ let t = bt.combins(n - l - 1, s - a - 2);
+ if (r && 0 === o && n - l - (s - a - 1) >= s - a - 1 && (t -= bt.combins(n - l - (s - a), s - a - 2)), s - a - 1 > 1) {
+ let r = 0;
+ for (let t = n - l - (s - a - 2); t > e; t--)
+ r += bt.combins(n - l - t - 1, s - a - 3);
+ t -= r * (s - 1 - a)
+ } else
+ n - l > e && t--;
+ i += t
+ }
+ n -= l
+ }
+ return i
+ }
+ static combins(t, e)
+ {
+ let r,
+ n;
+ t - e > e ? (n = e, r = t - e) : (n = t - e, r = e);
+ let i = 1,
+ o = 1;
+ for (let e = t; e > r; e--)
+ i *= e,
+ o <= n && (i /= o, o++);
+ for (; o <= n;)
+ i /= o,
+ o++;
+ return i
+ }
+ }
+ class Bt {
+ constructor(t, e)
+ {
+ e ? this.decodedInformation = null : (this.finished = t, this.decodedInformation = e)
+ }
+ getDecodedInformation()
+ {
+ return this.decodedInformation
+ }
+ isFinished()
+ {
+ return this.finished
+ }
+ }
+ class Lt {
+ constructor(t)
+ {
+ this.newPosition = t
+ }
+ getNewPosition()
+ {
+ return this.newPosition
+ }
+ }
+ class Pt extends Lt {
+ constructor(t, e)
+ {
+ super(t),
+ this.value = e
+ }
+ getValue()
+ {
+ return this.value
+ }
+ isFNC1()
+ {
+ return this.value === Pt.FNC1
+ }
+ }
+ Pt.FNC1 = "$";
+ class vt extends Lt {
+ constructor(t, e, r)
+ {
+ super(t),
+ r ? (this.remaining = !0, this.remainingValue = this.remainingValue) : (this.remaining = !1, this.remainingValue = 0),
+ this.newString = e
+ }
+ getNewString()
+ {
+ return this.newString
+ }
+ isRemaining()
+ {
+ return this.remaining
+ }
+ getRemainingValue()
+ {
+ return this.remainingValue
+ }
+ }
+ class Ft extends Lt {
+ constructor(t, e, r)
+ {
+ if (super(t), e < 0 || e > 10 || r < 0 || r > 10)
+ throw new C;
+ this.firstDigit = e,
+ this.secondDigit = r
+ }
+ getFirstDigit()
+ {
+ return this.firstDigit
+ }
+ getSecondDigit()
+ {
+ return this.secondDigit
+ }
+ getValue()
+ {
+ return 10 * this.firstDigit + this.secondDigit
+ }
+ isFirstDigitFNC1()
+ {
+ return this.firstDigit === Ft.FNC1
+ }
+ isSecondDigitFNC1()
+ {
+ return this.secondDigit === Ft.FNC1
+ }
+ isAnyFNC1()
+ {
+ return this.firstDigit === Ft.FNC1 || this.secondDigit === Ft.FNC1
+ }
+ }
+ Ft.FNC1 = 10;
+ class xt {
+ constructor() {}
+ static parseFieldsInGeneralPurpose(t)
+ {
+ if (!t)
+ return null;
+ if (t.length < 2)
+ throw new N;
+ let e = t.substring(0, 2);
+ for (let r of xt.TWO_DIGIT_DATA_LENGTH)
+ if (r[0] === e)
+ return r[1] === xt.VARIABLE_LENGTH ? xt.processVariableAI(2, r[2], t) : xt.processFixedAI(2, r[1], t);
+ if (t.length < 3)
+ throw new N;
+ let r = t.substring(0, 3);
+ for (let e of xt.THREE_DIGIT_DATA_LENGTH)
+ if (e[0] === r)
+ return e[1] === xt.VARIABLE_LENGTH ? xt.processVariableAI(3, e[2], t) : xt.processFixedAI(3, e[1], t);
+ for (let e of xt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH)
+ if (e[0] === r)
+ return e[1] === xt.VARIABLE_LENGTH ? xt.processVariableAI(4, e[2], t) : xt.processFixedAI(4, e[1], t);
+ if (t.length < 4)
+ throw new N;
+ let n = t.substring(0, 4);
+ for (let e of xt.FOUR_DIGIT_DATA_LENGTH)
+ if (e[0] === n)
+ return e[1] === xt.VARIABLE_LENGTH ? xt.processVariableAI(4, e[2], t) : xt.processFixedAI(4, e[1], t);
+ throw new N
+ }
+ static processFixedAI(t, e, r)
+ {
+ if (r.length < t)
+ throw new N;
+ let n = r.substring(0, t);
+ if (r.length < t + e)
+ throw new N;
+ let i = r.substring(t, t + e),
+ o = r.substring(t + e),
+ s = "(" + n + ")" + i,
+ a = xt.parseFieldsInGeneralPurpose(o);
+ return null == a ? s : s + a
+ }
+ static processVariableAI(t, e, r)
+ {
+ let n,
+ i = r.substring(0, t);
+ n = r.length < t + e ? r.length : t + e;
+ let o = r.substring(t, n),
+ s = r.substring(n),
+ a = "(" + i + ")" + o,
+ l = xt.parseFieldsInGeneralPurpose(s);
+ return null == l ? a : a + l
+ }
+ }
+ xt.VARIABLE_LENGTH = [],
+ xt.TWO_DIGIT_DATA_LENGTH = [["00", 18], ["01", 14], ["02", 14], ["10", xt.VARIABLE_LENGTH, 20], ["11", 6], ["12", 6], ["13", 6], ["15", 6], ["17", 6], ["20", 2], ["21", xt.VARIABLE_LENGTH, 20], ["22", xt.VARIABLE_LENGTH, 29], ["30", xt.VARIABLE_LENGTH, 8], ["37", xt.VARIABLE_LENGTH, 8], ["90", xt.VARIABLE_LENGTH, 30], ["91", xt.VARIABLE_LENGTH, 30], ["92", xt.VARIABLE_LENGTH, 30], ["93", xt.VARIABLE_LENGTH, 30], ["94", xt.VARIABLE_LENGTH, 30], ["95", xt.VARIABLE_LENGTH, 30], ["96", xt.VARIABLE_LENGTH, 30], ["97", xt.VARIABLE_LENGTH, 3], ["98", xt.VARIABLE_LENGTH, 30], ["99", xt.VARIABLE_LENGTH, 30]],
+ xt.THREE_DIGIT_DATA_LENGTH = [["240", xt.VARIABLE_LENGTH, 30], ["241", xt.VARIABLE_LENGTH, 30], ["242", xt.VARIABLE_LENGTH, 6], ["250", xt.VARIABLE_LENGTH, 30], ["251", xt.VARIABLE_LENGTH, 30], ["253", xt.VARIABLE_LENGTH, 17], ["254", xt.VARIABLE_LENGTH, 20], ["400", xt.VARIABLE_LENGTH, 30], ["401", xt.VARIABLE_LENGTH, 30], ["402", 17], ["403", xt.VARIABLE_LENGTH, 30], ["410", 13], ["411", 13], ["412", 13], ["413", 13], ["414", 13], ["420", xt.VARIABLE_LENGTH, 20], ["421", xt.VARIABLE_LENGTH, 15], ["422", 3], ["423", xt.VARIABLE_LENGTH, 15], ["424", 3], ["425", 3], ["426", 3]],
+ xt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH = [["310", 6], ["311", 6], ["312", 6], ["313", 6], ["314", 6], ["315", 6], ["316", 6], ["320", 6], ["321", 6], ["322", 6], ["323", 6], ["324", 6], ["325", 6], ["326", 6], ["327", 6], ["328", 6], ["329", 6], ["330", 6], ["331", 6], ["332", 6], ["333", 6], ["334", 6], ["335", 6], ["336", 6], ["340", 6], ["341", 6], ["342", 6], ["343", 6], ["344", 6], ["345", 6], ["346", 6], ["347", 6], ["348", 6], ["349", 6], ["350", 6], ["351", 6], ["352", 6], ["353", 6], ["354", 6], ["355", 6], ["356", 6], ["357", 6], ["360", 6], ["361", 6], ["362", 6], ["363", 6], ["364", 6], ["365", 6], ["366", 6], ["367", 6], ["368", 6], ["369", 6], ["390", xt.VARIABLE_LENGTH, 15], ["391", xt.VARIABLE_LENGTH, 18], ["392", xt.VARIABLE_LENGTH, 15], ["393", xt.VARIABLE_LENGTH, 18], ["703", xt.VARIABLE_LENGTH, 30]],
+ xt.FOUR_DIGIT_DATA_LENGTH = [["7001", 13], ["7002", xt.VARIABLE_LENGTH, 30], ["7003", 10], ["8001", 14], ["8002", xt.VARIABLE_LENGTH, 20], ["8003", xt.VARIABLE_LENGTH, 30], ["8004", xt.VARIABLE_LENGTH, 30], ["8005", 6], ["8006", 18], ["8007", xt.VARIABLE_LENGTH, 30], ["8008", xt.VARIABLE_LENGTH, 12], ["8018", 18], ["8020", xt.VARIABLE_LENGTH, 25], ["8100", 6], ["8101", 10], ["8102", 2], ["8110", xt.VARIABLE_LENGTH, 70], ["8200", xt.VARIABLE_LENGTH, 70]];
+ class kt {
+ constructor(t)
+ {
+ this.buffer = new T,
+ this.information = t
+ }
+ decodeAllCodes(t, e)
+ {
+ let r = e,
+ n = null;
+ for (;;) {
+ let e = this.decodeGeneralPurposeField(r, n),
+ i = xt.parseFieldsInGeneralPurpose(e.getNewString());
+ if (null != i && t.append(i), n = e.isRemaining() ? "" + e.getRemainingValue() : null, r === e.getNewPosition())
+ break;
+ r = e.getNewPosition()
+ }
+ return t.toString()
+ }
+ isStillNumeric(t)
+ {
+ if (t + 7 > this.information.getSize())
+ return t + 4 <= this.information.getSize();
+ for (let e = t; e < t + 3; ++e)
+ if (this.information.get(e))
+ return !0;
+ return this.information.get(t + 3)
+ }
+ decodeNumeric(t)
+ {
+ if (t + 7 > this.information.getSize()) {
+ let e = this.extractNumericValueFromBitArray(t, 4);
+ return new Ft(this.information.getSize(), 0 === e ? Ft.FNC1 : e - 1, Ft.FNC1)
+ }
+ let e = this.extractNumericValueFromBitArray(t, 7);
+ return new Ft(t + 7, (e - 8) / 11, (e - 8) % 11)
+ }
+ extractNumericValueFromBitArray(t, e)
+ {
+ return kt.extractNumericValueFromBitArray(this.information, t, e)
+ }
+ static extractNumericValueFromBitArray(t, e, r)
+ {
+ let n = 0;
+ for (let i = 0; i < r; ++i)
+ t.get(e + i) && (n |= 1 << r - i - 1);
+ return n
+ }
+ decodeGeneralPurposeField(t, e)
+ {
+ this.buffer.setLengthToZero(),
+ null != e && this.buffer.append(e),
+ this.current.setPosition(t);
+ let r = this.parseBlocks();
+ return null != r && r.isRemaining() ? new vt(this.current.getPosition(), this.buffer.toString(), r.getRemainingValue()) : new vt(this.current.getPosition(), this.buffer.toString())
+ }
+ parseBlocks()
+ {
+ let t,
+ e;
+ do {
+ let r = this.current.getPosition();
+ if (this.current.isAlpha() ? (e = this.parseAlphaBlock(), t = e.isFinished()) : this.current.isIsoIec646() ? (e = this.parseIsoIec646Block(), t = e.isFinished()) : (e = this.parseNumericBlock(), t = e.isFinished()), r === this.current.getPosition() && !t)
+ break
+ } while (!t);
+ return e.getDecodedInformation()
+ }
+ parseNumericBlock()
+ {
+ for (; this.isStillNumeric(this.current.getPosition());) {
+ let t = this.decodeNumeric(this.current.getPosition());
+ if (this.current.setPosition(t.getNewPosition()), t.isFirstDigitFNC1()) {
+ let e;
+ return e = t.isSecondDigitFNC1() ? new vt(this.current.getPosition(), this.buffer.toString()) : new vt(this.current.getPosition(), this.buffer.toString(), t.getSecondDigit()), new Bt(!0, e)
+ }
+ if (this.buffer.append(t.getFirstDigit()), t.isSecondDigitFNC1()) {
+ let t = new vt(this.current.getPosition(), this.buffer.toString());
+ return new Bt(!0, t)
+ }
+ this.buffer.append(t.getSecondDigit())
+ }
+ return this.isNumericToAlphaNumericLatch(this.current.getPosition()) && (this.current.setAlpha(), this.current.incrementPosition(4)), new Bt(!1)
+ }
+ parseIsoIec646Block()
+ {
+ for (; this.isStillIsoIec646(this.current.getPosition());) {
+ let t = this.decodeIsoIec646(this.current.getPosition());
+ if (this.current.setPosition(t.getNewPosition()), t.isFNC1()) {
+ let t = new vt(this.current.getPosition(), this.buffer.toString());
+ return new Bt(!0, t)
+ }
+ this.buffer.append(t.getValue())
+ }
+ return this.isAlphaOr646ToNumericLatch(this.current.getPosition()) ? (this.current.incrementPosition(3), this.current.setNumeric()) : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) && (this.current.getPosition() + 5 < this.information.getSize() ? this.current.incrementPosition(5) : this.current.setPosition(this.information.getSize()), this.current.setAlpha()), new Bt(!1)
+ }
+ parseAlphaBlock()
+ {
+ for (; this.isStillAlpha(this.current.getPosition());) {
+ let t = this.decodeAlphanumeric(this.current.getPosition());
+ if (this.current.setPosition(t.getNewPosition()), t.isFNC1()) {
+ let t = new vt(this.current.getPosition(), this.buffer.toString());
+ return new Bt(!0, t)
+ }
+ this.buffer.append(t.getValue())
+ }
+ return this.isAlphaOr646ToNumericLatch(this.current.getPosition()) ? (this.current.incrementPosition(3), this.current.setNumeric()) : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) && (this.current.getPosition() + 5 < this.information.getSize() ? this.current.incrementPosition(5) : this.current.setPosition(this.information.getSize()), this.current.setIsoIec646()), new Bt(!1)
+ }
+ isStillIsoIec646(t)
+ {
+ if (t + 5 > this.information.getSize())
+ return !1;
+ let e = this.extractNumericValueFromBitArray(t, 5);
+ if (e >= 5 && e < 16)
+ return !0;
+ if (t + 7 > this.information.getSize())
+ return !1;
+ let r = this.extractNumericValueFromBitArray(t, 7);
+ if (r >= 64 && r < 116)
+ return !0;
+ if (t + 8 > this.information.getSize())
+ return !1;
+ let n = this.extractNumericValueFromBitArray(t, 8);
+ return n >= 232 && n < 253
+ }
+ decodeIsoIec646(t)
+ {
+ let e = this.extractNumericValueFromBitArray(t, 5);
+ if (15 === e)
+ return new Pt(t + 5, Pt.FNC1);
+ if (e >= 5 && e < 15)
+ return new Pt(t + 5, "0" + (e - 5));
+ let r,
+ n = this.extractNumericValueFromBitArray(t, 7);
+ if (n >= 64 && n < 90)
+ return new Pt(t + 7, "" + (n + 1));
+ if (n >= 90 && n < 116)
+ return new Pt(t + 7, "" + (n + 7));
+ switch (this.extractNumericValueFromBitArray(t, 8)) {
+ case 232:
+ r = "!";
+ break;
+ case 233:
+ r = '"';
+ break;
+ case 234:
+ r = "%";
+ break;
+ case 235:
+ r = "&";
+ break;
+ case 236:
+ r = "'";
+ break;
+ case 237:
+ r = "(";
+ break;
+ case 238:
+ r = ")";
+ break;
+ case 239:
+ r = "*";
+ break;
+ case 240:
+ r = "+";
+ break;
+ case 241:
+ r = ",";
+ break;
+ case 242:
+ r = "-";
+ break;
+ case 243:
+ r = ".";
+ break;
+ case 244:
+ r = "/";
+ break;
+ case 245:
+ r = ":";
+ break;
+ case 246:
+ r = ";";
+ break;
+ case 247:
+ r = "<";
+ break;
+ case 248:
+ r = "=";
+ break;
+ case 249:
+ r = ">";
+ break;
+ case 250:
+ r = "?";
+ break;
+ case 251:
+ r = "_";
+ break;
+ case 252:
+ r = " ";
+ break;
+ default:
+ throw new C
+ }
+ return new Pt(t + 8, r)
+ }
+ isStillAlpha(t)
+ {
+ if (t + 5 > this.information.getSize())
+ return !1;
+ let e = this.extractNumericValueFromBitArray(t, 5);
+ if (e >= 5 && e < 16)
+ return !0;
+ if (t + 6 > this.information.getSize())
+ return !1;
+ let r = this.extractNumericValueFromBitArray(t, 6);
+ return r >= 16 && r < 63
+ }
+ decodeAlphanumeric(t)
+ {
+ let e = this.extractNumericValueFromBitArray(t, 5);
+ if (15 === e)
+ return new Pt(t + 5, Pt.FNC1);
+ if (e >= 5 && e < 15)
+ return new Pt(t + 5, "0" + (e - 5));
+ let r,
+ n = this.extractNumericValueFromBitArray(t, 6);
+ if (n >= 32 && n < 58)
+ return new Pt(t + 6, "" + (n + 33));
+ switch (n) {
+ case 58:
+ r = "*";
+ break;
+ case 59:
+ r = ",";
+ break;
+ case 60:
+ r = "-";
+ break;
+ case 61:
+ r = ".";
+ break;
+ case 62:
+ r = "/";
+ break;
+ default:
+ throw new J("Decoding invalid alphanumeric value: " + n)
+ }
+ return new Pt(t + 6, r)
+ }
+ isAlphaTo646ToAlphaLatch(t)
+ {
+ if (t + 1 > this.information.getSize())
+ return !1;
+ for (let e = 0; e < 5 && e + t < this.information.getSize(); ++e)
+ if (2 === e) {
+ if (!this.information.get(t + 2))
+ return !1
+ } else if (this.information.get(t + e))
+ return !1;
+ return !0
+ }
+ isAlphaOr646ToNumericLatch(t)
+ {
+ if (t + 3 > this.information.getSize())
+ return !1;
+ for (let e = t; e < t + 3; ++e)
+ if (this.information.get(e))
+ return !1;
+ return !0
+ }
+ isNumericToAlphaNumericLatch(t)
+ {
+ if (t + 1 > this.information.getSize())
+ return !1;
+ for (let e = 0; e < 4 && e + t < this.information.getSize(); ++e)
+ if (this.information.get(t + e))
+ return !1;
+ return !0
+ }
+ }
+ class Ut {
+ constructor(t)
+ {
+ this.information = t,
+ this.generalDecoder = new kt(t)
+ }
+ getInformation()
+ {
+ return this.information
+ }
+ getGeneralDecoder()
+ {
+ return this.generalDecoder
+ }
+ }
+ class Ht extends Ut {
+ constructor(t)
+ {
+ super(t)
+ }
+ encodeCompressedGtin(t, e)
+ {
+ t.append("(01)");
+ let r = t.length();
+ t.append("9"),
+ this.encodeCompressedGtinWithoutAI(t, e, r)
+ }
+ encodeCompressedGtinWithoutAI(t, e, r)
+ {
+ for (let r = 0; r < 4; ++r) {
+ let n = this.getGeneralDecoder().extractNumericValueFromBitArray(e + 10 * r, 10);
+ n / 100 == 0 && t.append("0"),
+ n / 10 == 0 && t.append("0"),
+ t.append(n)
+ }
+ Ht.appendCheckDigit(t, r)
+ }
+ static appendCheckDigit(t, e)
+ {
+ let r = 0;
+ for (let n = 0; n < 13; n++) {
+ let i = t.charAt(n + e).charCodeAt(0) - "0".charCodeAt(0);
+ r += 0 == (1 & n) ? 3 * i : i
+ }
+ r = 10 - r % 10,
+ 10 === r && (r = 0),
+ t.append(r)
+ }
+ }
+ Ht.GTIN_SIZE = 40;
+ class Vt extends Ht {
+ constructor(t)
+ {
+ super(t)
+ }
+ parseInformation()
+ {
+ let t = new T;
+ t.append("(01)");
+ let e = t.length(),
+ r = this.getGeneralDecoder().extractNumericValueFromBitArray(Vt.HEADER_SIZE, 4);
+ return t.append(r), this.encodeCompressedGtinWithoutAI(t, Vt.HEADER_SIZE + 4, e), this.getGeneralDecoder().decodeAllCodes(t, Vt.HEADER_SIZE + 44)
+ }
+ }
+ Vt.HEADER_SIZE = 4;
+ class zt extends Ut {
+ constructor(t)
+ {
+ super(t)
+ }
+ parseInformation()
+ {
+ let t = new T;
+ return this.getGeneralDecoder().decodeAllCodes(t, zt.HEADER_SIZE)
+ }
+ }
+ zt.HEADER_SIZE = 5;
+ class Gt extends Ht {
+ constructor(t)
+ {
+ super(t)
+ }
+ encodeCompressedWeight(t, e, r)
+ {
+ let n = this.getGeneralDecoder().extractNumericValueFromBitArray(e, r);
+ this.addWeightCode(t, n);
+ let i = this.checkWeight(n),
+ o = 1e5;
+ for (let e = 0; e < 5; ++e)
+ i / o == 0 && t.append("0"),
+ o /= 10;
+ t.append(i)
+ }
+ }
+ class Yt extends Gt {
+ constructor(t)
+ {
+ super(t)
+ }
+ parseInformation()
+ {
+ if (this.getInformation().getSize() != Yt.HEADER_SIZE + Gt.GTIN_SIZE + Yt.WEIGHT_SIZE)
+ throw new N;
+ let t = new T;
+ return this.encodeCompressedGtin(t, Yt.HEADER_SIZE), this.encodeCompressedWeight(t, Yt.HEADER_SIZE + Gt.GTIN_SIZE, Yt.WEIGHT_SIZE), t.toString()
+ }
+ }
+ Yt.HEADER_SIZE = 5,
+ Yt.WEIGHT_SIZE = 15;
+ class Xt extends Yt {
+ constructor(t)
+ {
+ super(t)
+ }
+ addWeightCode(t, e)
+ {
+ t.append("(3103)")
+ }
+ checkWeight(t)
+ {
+ return t
+ }
+ }
+ class Wt extends Yt {
+ constructor(t)
+ {
+ super(t)
+ }
+ addWeightCode(t, e)
+ {
+ e < 1e4 ? t.append("(3202)") : t.append("(3203)")
+ }
+ checkWeight(t)
+ {
+ return t < 1e4 ? t : t - 1e4
+ }
+ }
+ class jt extends Ht {
+ constructor(t)
+ {
+ super(t)
+ }
+ parseInformation()
+ {
+ if (this.getInformation().getSize() < jt.HEADER_SIZE + Ht.GTIN_SIZE)
+ throw new N;
+ let t = new T;
+ this.encodeCompressedGtin(t, jt.HEADER_SIZE);
+ let e = this.getGeneralDecoder().extractNumericValueFromBitArray(jt.HEADER_SIZE + Ht.GTIN_SIZE, jt.LAST_DIGIT_SIZE);
+ t.append("(392"),
+ t.append(e),
+ t.append(")");
+ let r = this.getGeneralDecoder().decodeGeneralPurposeField(jt.HEADER_SIZE + Ht.GTIN_SIZE + jt.LAST_DIGIT_SIZE, null);
+ return t.append(r.getNewString()), t.toString()
+ }
+ }
+ jt.HEADER_SIZE = 8,
+ jt.LAST_DIGIT_SIZE = 2;
+ class Zt extends Ht {
+ constructor(t)
+ {
+ super(t)
+ }
+ parseInformation()
+ {
+ if (this.getInformation().getSize() < Zt.HEADER_SIZE + Ht.GTIN_SIZE)
+ throw new N;
+ let t = new T;
+ this.encodeCompressedGtin(t, Zt.HEADER_SIZE);
+ let e = this.getGeneralDecoder().extractNumericValueFromBitArray(Zt.HEADER_SIZE + Ht.GTIN_SIZE, Zt.LAST_DIGIT_SIZE);
+ t.append("(393"),
+ t.append(e),
+ t.append(")");
+ let r = this.getGeneralDecoder().extractNumericValueFromBitArray(Zt.HEADER_SIZE + Ht.GTIN_SIZE + Zt.LAST_DIGIT_SIZE, Zt.FIRST_THREE_DIGITS_SIZE);
+ r / 100 == 0 && t.append("0"),
+ r / 10 == 0 && t.append("0"),
+ t.append(r);
+ let n = this.getGeneralDecoder().decodeGeneralPurposeField(Zt.HEADER_SIZE + Ht.GTIN_SIZE + Zt.LAST_DIGIT_SIZE + Zt.FIRST_THREE_DIGITS_SIZE, null);
+ return t.append(n.getNewString()), t.toString()
+ }
+ }
+ Zt.HEADER_SIZE = 8,
+ Zt.LAST_DIGIT_SIZE = 2,
+ Zt.FIRST_THREE_DIGITS_SIZE = 10;
+ class Qt extends Gt {
+ constructor(t, e, r)
+ {
+ super(t),
+ this.dateCode = r,
+ this.firstAIdigits = e
+ }
+ parseInformation()
+ {
+ if (this.getInformation().getSize() != Qt.HEADER_SIZE + Qt.GTIN_SIZE + Qt.WEIGHT_SIZE + Qt.DATE_SIZE)
+ throw new N;
+ let t = new T;
+ return this.encodeCompressedGtin(t, Qt.HEADER_SIZE), this.encodeCompressedWeight(t, Qt.HEADER_SIZE + Qt.GTIN_SIZE, Qt.WEIGHT_SIZE), this.encodeCompressedDate(t, Qt.HEADER_SIZE + Qt.GTIN_SIZE + Qt.WEIGHT_SIZE), t.toString()
+ }
+ encodeCompressedDate(t, e)
+ {
+ let r = this.getGeneralDecoder().extractNumericValueFromBitArray(e, Qt.DATE_SIZE);
+ if (38400 == r)
+ return;
+ t.append("("),
+ t.append(this.dateCode),
+ t.append(")");
+ let n = r % 32;
+ r /= 32;
+ let i = r % 12 + 1;
+ r /= 12;
+ let o = r;
+ o / 10 == 0 && t.append("0"),
+ t.append(o),
+ i / 10 == 0 && t.append("0"),
+ t.append(i),
+ n / 10 == 0 && t.append("0"),
+ t.append(n)
+ }
+ addWeightCode(t, e)
+ {
+ t.append("("),
+ t.append(this.firstAIdigits),
+ t.append(e / 1e5),
+ t.append(")")
+ }
+ checkWeight(t)
+ {
+ return t % 1e5
+ }
+ }
+ Qt.HEADER_SIZE = 8,
+ Qt.WEIGHT_SIZE = 20,
+ Qt.DATE_SIZE = 16;
+ class Kt {
+ constructor(t, e, r, n)
+ {
+ this.leftchar = t,
+ this.rightchar = e,
+ this.finderpattern = r,
+ this.maybeLast = n
+ }
+ mayBeLast()
+ {
+ return this.maybeLast
+ }
+ getLeftChar()
+ {
+ return this.leftchar
+ }
+ getRightChar()
+ {
+ return this.rightchar
+ }
+ getFinderPattern()
+ {
+ return this.finderpattern
+ }
+ mustBeLast()
+ {
+ return null == this.rightchar
+ }
+ toString()
+ {
+ return "[ " + this.leftchar + ", " + this.rightchar + " : " + (null == this.finderpattern ? "null" : this.finderpattern.getValue()) + " ]"
+ }
+ static equals(t, e)
+ {
+ return t instanceof Kt && Kt.equalsOrNull(t.leftchar, e.leftchar) && Kt.equalsOrNull(t.rightchar, e.rightchar) && Kt.equalsOrNull(t.finderpattern, e.finderpattern)
+ }
+ static equalsOrNull(t, e)
+ {
+ return null === t ? null === e : Kt.equals(t, e)
+ }
+ hashCode()
+ {
+ return this.leftchar.getValue() ^ this.rightchar.getValue() ^ this.finderpattern.getValue()
+ }
+ }
+ class qt {
+ constructor(t, e, r)
+ {
+ this.pairs = t,
+ this.rowNumber = e,
+ this.wasReversed = r
+ }
+ getPairs()
+ {
+ return this.pairs
+ }
+ getRowNumber()
+ {
+ return this.rowNumber
+ }
+ isReversed()
+ {
+ return this.wasReversed
+ }
+ isEquivalent(t)
+ {
+ return this.checkEqualitity(this, t)
+ }
+ toString()
+ {
+ return "{ " + this.pairs + " }"
+ }
+ equals(t, e)
+ {
+ return t instanceof qt && this.checkEqualitity(t, e) && t.wasReversed === e.wasReversed
+ }
+ checkEqualitity(t, e)
+ {
+ if (!t || !e)
+ return;
+ let r;
+ return t.forEach(((t, n) => {
+ e.forEach((e => {
+ t.getLeftChar().getValue() === e.getLeftChar().getValue() && t.getRightChar().getValue() === e.getRightChar().getValue() && t.getFinderPatter().getValue() === e.getFinderPatter().getValue() && (r = !0)
+ }))
+ })), r
+ }
+ }
+ class Jt extends Dt {
+ constructor(t)
+ {
+ super(...arguments),
+ this.pairs = new Array(Jt.MAX_PAIRS),
+ this.rows = new Array,
+ this.startEnd = [2],
+ this.verbose = !0 === t
+ }
+ decodeRow(t, e, r)
+ {
+ this.pairs.length = 0,
+ this.startFromEven = !1;
+ try {
+ return Jt.constructResult(this.decodeRow2pairs(t, e))
+ } catch (t) {
+ this.verbose && console.log(t)
+ }
+ return this.pairs.length = 0, this.startFromEven = !0, Jt.constructResult(this.decodeRow2pairs(t, e))
+ }
+ reset()
+ {
+ this.pairs.length = 0,
+ this.rows.length = 0
+ }
+ decodeRow2pairs(t, e)
+ {
+ let r,
+ n = !1;
+ for (; !n;)
+ try {
+ this.pairs.push(this.retrieveNextPair(e, this.pairs, t))
+ } catch (t) {
+ if (t instanceof N) {
+ if (!this.pairs.length)
+ throw new N;
+ n = !0
+ }
+ }
+ if (this.checkChecksum())
+ return this.pairs;
+ if (r = !!this.rows.length, this.storeRow(t, !1), r) {
+ let t = this.checkRowsBoolean(!1);
+ if (null != t)
+ return t;
+ if (t = this.checkRowsBoolean(!0), null != t)
+ return t
+ }
+ throw new N
+ }
+ checkRowsBoolean(t)
+ {
+ if (this.rows.length > 25)
+ return this.rows.length = 0, null;
+ this.pairs.length = 0,
+ t && (this.rows = this.rows.reverse());
+ let e = null;
+ try {
+ e = this.checkRows(new Array, 0)
+ } catch (t) {
+ this.verbose && console.log(t)
+ }
+ return t && (this.rows = this.rows.reverse()), e
+ }
+ checkRows(t, e)
+ {
+ for (let r = e; r < this.rows.length; r++) {
+ let e = this.rows[r];
+ this.pairs.length = 0;
+ for (let e of t)
+ this.pairs.push(e.getPairs());
+ if (this.pairs.push(e.getPairs()), !Jt.isValidSequence(this.pairs))
+ continue;
+ if (this.checkChecksum())
+ return this.pairs;
+ let n = new Array(t);
+ n.push(e);
+ try {
+ return this.checkRows(n, r + 1)
+ } catch (t) {
+ this.verbose && console.log(t)
+ }
+ }
+ throw new N
+ }
+ static isValidSequence(t)
+ {
+ for (let e of Jt.FINDER_PATTERN_SEQUENCES) {
+ if (t.length > e.length)
+ continue;
+ let r = !0;
+ for (let n = 0; n < t.length; n++)
+ if (t[n].getFinderPattern().getValue() != e[n]) {
+ r = !1;
+ break
+ }
+ if (r)
+ return !0
+ }
+ return !1
+ }
+ storeRow(t, e)
+ {
+ let r = 0,
+ n = !1,
+ i = !1;
+ for (; r < this.rows.length;) {
+ let e = this.rows[r];
+ if (e.getRowNumber() > t) {
+ i = e.isEquivalent(this.pairs);
+ break
+ }
+ n = e.isEquivalent(this.pairs),
+ r++
+ }
+ i || n || Jt.isPartialRow(this.pairs, this.rows) || (this.rows.push(r, new qt(this.pairs, t, e)), this.removePartialRows(this.pairs, this.rows))
+ }
+ removePartialRows(t, e)
+ {
+ for (let r of e)
+ if (r.getPairs().length !== t.length)
+ for (let e of r.getPairs())
+ for (let r of t)
+ if (Kt.equals(e, r))
+ break
+ }
+ static isPartialRow(t, e)
+ {
+ for (let r of e) {
+ let e = !0;
+ for (let n of t) {
+ let t = !1;
+ for (let e of r.getPairs())
+ if (n.equals(e)) {
+ t = !0;
+ break
+ }
+ if (!t) {
+ e = !1;
+ break
+ }
+ }
+ if (e)
+ return !0
+ }
+ return !1
+ }
+ getRows()
+ {
+ return this.rows
+ }
+ static constructResult(t)
+ {
+ let e = function(t) {
+ try {
+ if (t.get(1))
+ return new Vt(t);
+ if (!t.get(2))
+ return new zt(t);
+ switch (kt.extractNumericValueFromBitArray(t, 1, 4)) {
+ case 4:
+ return new Xt(t);
+ case 5:
+ return new Wt(t)
+ }
+ switch (kt.extractNumericValueFromBitArray(t, 1, 5)) {
+ case 12:
+ return new jt(t);
+ case 13:
+ return new Zt(t)
+ }
+ switch (kt.extractNumericValueFromBitArray(t, 1, 7)) {
+ case 56:
+ return new Qt(t, "310", "11");
+ case 57:
+ return new Qt(t, "320", "11");
+ case 58:
+ return new Qt(t, "310", "13");
+ case 59:
+ return new Qt(t, "320", "13");
+ case 60:
+ return new Qt(t, "310", "15");
+ case 61:
+ return new Qt(t, "320", "15");
+ case 62:
+ return new Qt(t, "310", "17");
+ case 63:
+ return new Qt(t, "320", "17")
+ }
+ } catch (e) {
+ throw console.log(e), new J("unknown decoder: " + t)
+ }
+ }(class {
+ static buildBitArray(t)
+ {
+ let e = 2 * t.length - 1;
+ null == t[t.length - 1].getRightChar() && (e -= 1);
+ let r = new A(12 * e),
+ n = 0,
+ i = t[0].getRightChar().getValue();
+ for (let t = 11; t >= 0; --t)
+ 0 != (i & 1 << t) && r.set(n),
+ n++;
+ for (let e = 1; e < t.length; ++e) {
+ let i = t[e],
+ o = i.getLeftChar().getValue();
+ for (let t = 11; t >= 0; --t)
+ 0 != (o & 1 << t) && r.set(n),
+ n++;
+ if (null != i.getRightChar()) {
+ let t = i.getRightChar().getValue();
+ for (let e = 11; e >= 0; --e)
+ 0 != (t & 1 << e) && r.set(n),
+ n++
+ }
+ }
+ return r
+ }
+ }
+ .buildBitArray(t)).parseInformation(),
+ r = t[0].getFinderPattern().getResultPoints(),
+ n = t[t.length - 1].getFinderPattern().getResultPoints(),
+ i = [r[0], r[1], n[0], n[1]];
+ return new F(e, null, null, i, k.RSS_EXPANDED, null)
+ }
+ checkChecksum()
+ {
+ let t = this.pairs.get(0),
+ e = t.getLeftChar(),
+ r = t.getRightChar();
+ if (null == r)
+ return !1;
+ let n = r.getChecksumPortion(),
+ i = 2;
+ for (let t = 1; t < this.pairs.size(); ++t) {
+ let e = this.pairs.get(t);
+ n += e.getLeftChar().getChecksumPortion(),
+ i++;
+ let r = e.getRightChar();
+ null != r && (n += r.getChecksumPortion(), i++)
+ }
+ return n %= 211, 211 * (i - 4) + n == e.getValue()
+ }
+ static getNextSecondBar(t, e)
+ {
+ let r;
+ return t.get(e) ? (r = t.getNextUnset(e), r = t.getNextSet(r)) : (r = t.getNextSet(e), r = t.getNextUnset(r)), r
+ }
+ retrieveNextPair(t, e, r)
+ {
+ let n,
+ i = e.length % 2 == 0;
+ this.startFromEven && (i = !i);
+ let o = !0,
+ s = -1;
+ do {
+ this.findNextPair(t, e, s),
+ n = this.parseFoundFinderPattern(t, r, i),
+ null == n ? s = Jt.getNextSecondBar(t, this.startEnd[0]) : o = !1
+ } while (o);
+ let a,
+ l = this.decodeDataCharacter(t, n, i, !0);
+ if (!this.isEmptyPair(e) && e[e.length - 1].mustBeLast())
+ throw new N;
+ try {
+ a = this.decodeDataCharacter(t, n, i, !1)
+ } catch (t) {
+ a = null,
+ this.verbose && console.log(t)
+ }
+ return new Kt(l, a, n, !0)
+ }
+ isEmptyPair(t)
+ {
+ return 0 === t.length
+ }
+ findNextPair(t, e, r)
+ {
+ let n = this.getDecodeFinderCounters();
+ n[0] = 0,
+ n[1] = 0,
+ n[2] = 0,
+ n[3] = 0;
+ let i,
+ o = t.getSize();
+ i = r >= 0 ? r : this.isEmptyPair(e) ? 0 : e[e.length - 1].getFinderPattern().getStartEnd()[1];
+ let s = e.length % 2 != 0;
+ this.startFromEven && (s = !s);
+ let a = !1;
+ for (; i < o && (a = !t.get(i), a);)
+ i++;
+ let l = 0,
+ c = i;
+ for (let e = i; e < o; e++)
+ if (t.get(e) != a)
+ n[l]++;
+ else {
+ if (3 == l) {
+ if (s && Jt.reverseCounters(n), Jt.isFinderPattern(n))
+ return this.startEnd[0] = c, void (this.startEnd[1] = e);
+ s && Jt.reverseCounters(n),
+ c += n[0] + n[1],
+ n[0] = n[2],
+ n[1] = n[3],
+ n[2] = 0,
+ n[3] = 0,
+ l--
+ } else
+ l++;
+ n[l] = 1,
+ a = !a
+ }
+ throw new N
+ }
+ static reverseCounters(t)
+ {
+ let e = t.length;
+ for (let r = 0; r < e / 2; ++r) {
+ let n = t[r];
+ t[r] = t[e - r - 1],
+ t[e - r - 1] = n
+ }
+ }
+ parseFoundFinderPattern(t, e, r)
+ {
+ let n,
+ i,
+ o;
+ if (r) {
+ let e = this.startEnd[0] - 1;
+ for (; e >= 0 && !t.get(e);)
+ e--;
+ e++,
+ n = this.startEnd[0] - e,
+ i = e,
+ o = this.startEnd[1]
+ } else
+ i = this.startEnd[0],
+ o = t.getNextUnset(this.startEnd[1] + 1),
+ n = o - this.startEnd[1];
+ let s,
+ a = this.getDecodeFinderCounters();
+ u.arraycopy(a, 0, a, 1, a.length - 1),
+ a[0] = n;
+ try {
+ s = this.parseFinderValue(a, Jt.FINDER_PATTERNS)
+ } catch (t) {
+ return null
+ }
+ return new Ot(s, [i, o], i, o, e)
+ }
+ decodeDataCharacter(t, e, r, n)
+ {
+ let i = this.getDataCharacterCounters();
+ for (let t = 0; t < i.length; t++)
+ i[t] = 0;
+ if (n)
+ Jt.recordPatternInReverse(t, e.getStartEnd()[0], i);
+ else {
+ Jt.recordPattern(t, e.getStartEnd()[1], i);
+ for (let t = 0, e = i.length - 1; t < e; t++, e--) {
+ let r = i[t];
+ i[t] = i[e],
+ i[e] = r
+ }
+ }
+ let o = et.sum(new Int32Array(i)) / 17,
+ s = (e.getStartEnd()[1] - e.getStartEnd()[0]) / 15;
+ if (Math.abs(o - s) / s > .3)
+ throw new N;
+ let a = this.getOddCounts(),
+ l = this.getEvenCounts(),
+ c = this.getOddRoundingErrors(),
+ h = this.getEvenRoundingErrors();
+ for (let t = 0; t < i.length; t++) {
+ let e = 1 * i[t] / o,
+ r = e + .5;
+ if (r < 1) {
+ if (e < .3)
+ throw new N;
+ r = 1
+ } else if (r > 8) {
+ if (e > 8.7)
+ throw new N;
+ r = 8
+ }
+ let n = t / 2;
+ 0 == (1 & t) ? (a[n] = r, c[n] = e - r) : (l[n] = r, h[n] = e - r)
+ }
+ this.adjustOddEvenCounts(17);
+ let u = 4 * e.getValue() + (r ? 0 : 2) + (n ? 0 : 1) - 1,
+ d = 0,
+ g = 0;
+ for (let t = a.length - 1; t >= 0; t--) {
+ if (Jt.isNotA1left(e, r, n)) {
+ let e = Jt.WEIGHTS[u][2 * t];
+ g += a[t] * e
+ }
+ d += a[t]
+ }
+ let f = 0;
+ for (let t = l.length - 1; t >= 0; t--)
+ if (Jt.isNotA1left(e, r, n)) {
+ let e = Jt.WEIGHTS[u][2 * t + 1];
+ f += l[t] * e
+ }
+ let w = g + f;
+ if (0 != (1 & d) || d > 13 || d < 4)
+ throw new N;
+ let A = (13 - d) / 2,
+ m = Jt.SYMBOL_WIDEST[A],
+ E = 9 - m,
+ C = bt.getRSSvalue(a, m, !0),
+ I = bt.getRSSvalue(l, E, !1),
+ p = Jt.EVEN_TOTAL_SUBSET[A],
+ S = Jt.GSUM[A];
+ return new Rt(C * p + I + S, w)
+ }
+ static isNotA1left(t, e, r)
+ {
+ return !(0 == t.getValue() && e && r)
+ }
+ adjustOddEvenCounts(t)
+ {
+ let e = et.sum(new Int32Array(this.getOddCounts())),
+ r = et.sum(new Int32Array(this.getEvenCounts())),
+ n = !1,
+ i = !1;
+ e > 13 ? i = !0 : e < 4 && (n = !0);
+ let o = !1,
+ s = !1;
+ r > 13 ? s = !0 : r < 4 && (o = !0);
+ let a = e + r - t,
+ l = 1 == (1 & e),
+ c = 0 == (1 & r);
+ if (1 == a)
+ if (l) {
+ if (c)
+ throw new N;
+ i = !0
+ } else {
+ if (!c)
+ throw new N;
+ s = !0
+ }
+ else if (-1 == a)
+ if (l) {
+ if (c)
+ throw new N;
+ n = !0
+ } else {
+ if (!c)
+ throw new N;
+ o = !0
+ }
+ else {
+ if (0 != a)
+ throw new N;
+ if (l) {
+ if (!c)
+ throw new N;
+ e < r ? (n = !0, s = !0) : (i = !0, o = !0)
+ } else if (c)
+ throw new N
+ }
+ if (n) {
+ if (i)
+ throw new N;
+ Jt.increment(this.getOddCounts(), this.getOddRoundingErrors())
+ }
+ if (i && Jt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), o) {
+ if (s)
+ throw new N;
+ Jt.increment(this.getEvenCounts(), this.getOddRoundingErrors())
+ }
+ s && Jt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors())
+ }
+ }
+ Jt.SYMBOL_WIDEST = [7, 5, 4, 3, 1],
+ Jt.EVEN_TOTAL_SUBSET = [4, 20, 52, 104, 204],
+ Jt.GSUM = [0, 348, 1388, 2948, 3988],
+ Jt.FINDER_PATTERNS = [Int32Array.from([1, 8, 4, 1]), Int32Array.from([3, 6, 4, 1]), Int32Array.from([3, 4, 6, 1]), Int32Array.from([3, 2, 8, 1]), Int32Array.from([2, 6, 5, 1]), Int32Array.from([2, 2, 9, 1])],
+ Jt.WEIGHTS = [[1, 3, 9, 27, 81, 32, 96, 77], [20, 60, 180, 118, 143, 7, 21, 63], [189, 145, 13, 39, 117, 140, 209, 205], [193, 157, 49, 147, 19, 57, 171, 91], [62, 186, 136, 197, 169, 85, 44, 132], [185, 133, 188, 142, 4, 12, 36, 108], [113, 128, 173, 97, 80, 29, 87, 50], [150, 28, 84, 41, 123, 158, 52, 156], [46, 138, 203, 187, 139, 206, 196, 166], [76, 17, 51, 153, 37, 111, 122, 155], [43, 129, 176, 106, 107, 110, 119, 146], [16, 48, 144, 10, 30, 90, 59, 177], [109, 116, 137, 200, 178, 112, 125, 164], [70, 210, 208, 202, 184, 130, 179, 115], [134, 191, 151, 31, 93, 68, 204, 190], [148, 22, 66, 198, 172, 94, 71, 2], [6, 18, 54, 162, 64, 192, 154, 40], [120, 149, 25, 75, 14, 42, 126, 167], [79, 26, 78, 23, 69, 207, 199, 175], [103, 98, 83, 38, 114, 131, 182, 124], [161, 61, 183, 127, 170, 88, 53, 159], [55, 165, 73, 8, 24, 72, 5, 15], [45, 135, 194, 160, 58, 174, 100, 89]],
+ Jt.FINDER_PAT_A = 0,
+ Jt.FINDER_PAT_B = 1,
+ Jt.FINDER_PAT_C = 2,
+ Jt.FINDER_PAT_D = 3,
+ Jt.FINDER_PAT_E = 4,
+ Jt.FINDER_PAT_F = 5,
+ Jt.FINDER_PATTERN_SEQUENCES = [[Jt.FINDER_PAT_A, Jt.FINDER_PAT_A], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_C, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_C], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D, Jt.FINDER_PAT_F], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_E], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F]],
+ Jt.MAX_PAIRS = 11;
+ class $t extends Rt {
+ constructor(t, e, r)
+ {
+ super(t, e),
+ this.count = 0,
+ this.finderPattern = r
+ }
+ getFinderPattern()
+ {
+ return this.finderPattern
+ }
+ getCount()
+ {
+ return this.count
+ }
+ incrementCount()
+ {
+ this.count++
+ }
+ }
+ class te extends Dt {
+ constructor()
+ {
+ super(...arguments),
+ this.possibleLeftPairs = [],
+ this.possibleRightPairs = []
+ }
+ decodeRow(t, e, r)
+ {
+ const n = this.decodePair(e, !1, t, r);
+ te.addOrTally(this.possibleLeftPairs, n),
+ e.reverse();
+ let i = this.decodePair(e, !0, t, r);
+ te.addOrTally(this.possibleRightPairs, i),
+ e.reverse();
+ for (let t of this.possibleLeftPairs)
+ if (t.getCount() > 1)
+ for (let e of this.possibleRightPairs)
+ if (e.getCount() > 1 && te.checkChecksum(t, e))
+ return te.constructResult(t, e);
+ throw new N
+ }
+ static addOrTally(t, e)
+ {
+ if (null == e)
+ return;
+ let r = !1;
+ for (let n of t)
+ if (n.getValue() === e.getValue()) {
+ n.incrementCount(),
+ r = !0;
+ break
+ }
+ r || t.push(e)
+ }
+ reset()
+ {
+ this.possibleLeftPairs.length = 0,
+ this.possibleRightPairs.length = 0
+ }
+ static constructResult(t, e)
+ {
+ let r = 4537077 * t.getValue() + e.getValue(),
+ n = new String(r).toString(),
+ i = new T;
+ for (let t = 13 - n.length; t > 0; t--)
+ i.append("0");
+ i.append(n);
+ let o = 0;
+ for (let t = 0; t < 13; t++) {
+ let e = i.charAt(t).charCodeAt(0) - "0".charCodeAt(0);
+ o += 0 == (1 & t) ? 3 * e : e
+ }
+ o = 10 - o % 10,
+ 10 === o && (o = 0),
+ i.append(o.toString());
+ let s = t.getFinderPattern().getResultPoints(),
+ a = e.getFinderPattern().getResultPoints();
+ return new F(i.toString(), null, 0, [s[0], s[1], a[0], a[1]], k.RSS_14, (new Date).getTime())
+ }
+ static checkChecksum(t, e)
+ {
+ let r = (t.getChecksumPortion() + 16 * e.getChecksumPortion()) % 79,
+ n = 9 * t.getFinderPattern().getValue() + e.getFinderPattern().getValue();
+ return n > 72 && n--, n > 8 && n--, r === n
+ }
+ decodePair(t, e, r, n)
+ {
+ try {
+ let i = this.findFinderPattern(t, e),
+ o = this.parseFoundFinderPattern(t, r, e, i),
+ s = null == n ? null : n.get(E.NEED_RESULT_POINT_CALLBACK);
+ if (null != s) {
+ let n = (i[0] + i[1]) / 2;
+ e && (n = t.getSize() - 1 - n),
+ s.foundPossibleResultPoint(new nt(n, r))
+ }
+ let a = this.decodeDataCharacter(t, o, !0),
+ l = this.decodeDataCharacter(t, o, !1);
+ return new $t(1597 * a.getValue() + l.getValue(), a.getChecksumPortion() + 4 * l.getChecksumPortion(), o)
+ } catch (t) {
+ return null
+ }
+ }
+ decodeDataCharacter(t, e, r)
+ {
+ let n = this.getDataCharacterCounters();
+ for (let t = 0; t < n.length; t++)
+ n[t] = 0;
+ if (r)
+ ft.recordPatternInReverse(t, e.getStartEnd()[0], n);
+ else {
+ ft.recordPattern(t, e.getStartEnd()[1] + 1, n);
+ for (let t = 0, e = n.length - 1; t < e; t++, e--) {
+ let r = n[t];
+ n[t] = n[e],
+ n[e] = r
+ }
+ }
+ let i = r ? 16 : 15,
+ o = et.sum(new Int32Array(n)) / i,
+ s = this.getOddCounts(),
+ a = this.getEvenCounts(),
+ l = this.getOddRoundingErrors(),
+ c = this.getEvenRoundingErrors();
+ for (let t = 0; t < n.length; t++) {
+ let e = n[t] / o,
+ r = Math.floor(e + .5);
+ r < 1 ? r = 1 : r > 8 && (r = 8);
+ let i = Math.floor(t / 2);
+ 0 == (1 & t) ? (s[i] = r, l[i] = e - r) : (a[i] = r, c[i] = e - r)
+ }
+ this.adjustOddEvenCounts(r, i);
+ let h = 0,
+ u = 0;
+ for (let t = s.length - 1; t >= 0; t--)
+ u *= 9,
+ u += s[t],
+ h += s[t];
+ let d = 0,
+ g = 0;
+ for (let t = a.length - 1; t >= 0; t--)
+ d *= 9,
+ d += a[t],
+ g += a[t];
+ let f = u + 3 * d;
+ if (r) {
+ if (0 != (1 & h) || h > 12 || h < 4)
+ throw new N;
+ let t = (12 - h) / 2,
+ e = te.OUTSIDE_ODD_WIDEST[t],
+ r = 9 - e,
+ n = bt.getRSSvalue(s, e, !1),
+ i = bt.getRSSvalue(a, r, !0),
+ o = te.OUTSIDE_EVEN_TOTAL_SUBSET[t],
+ l = te.OUTSIDE_GSUM[t];
+ return new Rt(n * o + i + l, f)
+ }
+ {
+ if (0 != (1 & g) || g > 10 || g < 4)
+ throw new N;
+ let t = (10 - g) / 2,
+ e = te.INSIDE_ODD_WIDEST[t],
+ r = 9 - e,
+ n = bt.getRSSvalue(s, e, !0),
+ i = bt.getRSSvalue(a, r, !1),
+ o = te.INSIDE_ODD_TOTAL_SUBSET[t],
+ l = te.INSIDE_GSUM[t];
+ return new Rt(i * o + n + l, f)
+ }
+ }
+ findFinderPattern(t, e)
+ {
+ let r = this.getDecodeFinderCounters();
+ r[0] = 0,
+ r[1] = 0,
+ r[2] = 0,
+ r[3] = 0;
+ let n = t.getSize(),
+ i = !1,
+ o = 0;
+ for (; o < n && (i = !t.get(o), e !== i);)
+ o++;
+ let s = 0,
+ a = o;
+ for (let e = o; e < n; e++)
+ if (t.get(e) !== i)
+ r[s]++;
+ else {
+ if (3 === s) {
+ if (Dt.isFinderPattern(r))
+ return [a, e];
+ a += r[0] + r[1],
+ r[0] = r[2],
+ r[1] = r[3],
+ r[2] = 0,
+ r[3] = 0,
+ s--
+ } else
+ s++;
+ r[s] = 1,
+ i = !i
+ }
+ throw new N
+ }
+ parseFoundFinderPattern(t, e, r, n)
+ {
+ let i = t.get(n[0]),
+ o = n[0] - 1;
+ for (; o >= 0 && i !== t.get(o);)
+ o--;
+ o++;
+ const s = n[0] - o,
+ a = this.getDecodeFinderCounters(),
+ l = new Int32Array(a.length);
+ u.arraycopy(a, 0, l, 1, a.length - 1),
+ l[0] = s;
+ const c = this.parseFinderValue(l, te.FINDER_PATTERNS);
+ let h = o,
+ d = n[1];
+ return r && (h = t.getSize() - 1 - h, d = t.getSize() - 1 - d), new Ot(c, [o, n[1]], h, d, e)
+ }
+ adjustOddEvenCounts(t, e)
+ {
+ let r = et.sum(new Int32Array(this.getOddCounts())),
+ n = et.sum(new Int32Array(this.getEvenCounts())),
+ i = !1,
+ o = !1,
+ s = !1,
+ a = !1;
+ t ? (r > 12 ? o = !0 : r < 4 && (i = !0), n > 12 ? a = !0 : n < 4 && (s = !0)) : (r > 11 ? o = !0 : r < 5 && (i = !0), n > 10 ? a = !0 : n < 4 && (s = !0));
+ let l = r + n - e,
+ c = (1 & r) == (t ? 1 : 0),
+ h = 1 == (1 & n);
+ if (1 === l)
+ if (c) {
+ if (h)
+ throw new N;
+ o = !0
+ } else {
+ if (!h)
+ throw new N;
+ a = !0
+ }
+ else if (-1 === l)
+ if (c) {
+ if (h)
+ throw new N;
+ i = !0
+ } else {
+ if (!h)
+ throw new N;
+ s = !0
+ }
+ else {
+ if (0 !== l)
+ throw new N;
+ if (c) {
+ if (!h)
+ throw new N;
+ r < n ? (i = !0, a = !0) : (o = !0, s = !0)
+ } else if (h)
+ throw new N
+ }
+ if (i) {
+ if (o)
+ throw new N;
+ Dt.increment(this.getOddCounts(), this.getOddRoundingErrors())
+ }
+ if (o && Dt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), s) {
+ if (a)
+ throw new N;
+ Dt.increment(this.getEvenCounts(), this.getOddRoundingErrors())
+ }
+ a && Dt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors())
+ }
+ }
+ te.OUTSIDE_EVEN_TOTAL_SUBSET = [1, 10, 34, 70, 126],
+ te.INSIDE_ODD_TOTAL_SUBSET = [4, 20, 48, 81],
+ te.OUTSIDE_GSUM = [0, 161, 961, 2015, 2715],
+ te.INSIDE_GSUM = [0, 336, 1036, 1516],
+ te.OUTSIDE_ODD_WIDEST = [8, 6, 4, 3, 1],
+ te.INSIDE_ODD_WIDEST = [2, 4, 6, 8],
+ te.FINDER_PATTERNS = [Int32Array.from([3, 8, 2, 1]), Int32Array.from([3, 5, 5, 1]), Int32Array.from([3, 3, 7, 1]), Int32Array.from([3, 1, 9, 1]), Int32Array.from([2, 7, 4, 1]), Int32Array.from([2, 5, 6, 1]), Int32Array.from([2, 3, 8, 1]), Int32Array.from([1, 5, 7, 1]), Int32Array.from([1, 3, 9, 1])];
+ class ee extends ft {
+ constructor(t, e)
+ {
+ super(),
+ this.readers = [],
+ this.verbose = !0 === e;
+ const r = t ? t.get(E.POSSIBLE_FORMATS) : null,
+ n = t && void 0 !== t.get(E.ASSUME_CODE_39_CHECK_DIGIT);
+ r && ((r.includes(k.EAN_13) || r.includes(k.UPC_A) || r.includes(k.EAN_8) || r.includes(k.UPC_E)) && this.readers.push(new Mt(t)), r.includes(k.CODE_39) && this.readers.push(new At(n)), r.includes(k.CODE_128) && this.readers.push(new wt), r.includes(k.ITF) && this.readers.push(new mt), r.includes(k.RSS_14) && this.readers.push(new te), r.includes(k.RSS_EXPANDED) && this.readers.push(new Jt(this.verbose))),
+ 0 === this.readers.length && (this.readers.push(new Mt(t)), this.readers.push(new At), this.readers.push(new Mt(t)), this.readers.push(new wt), this.readers.push(new mt), this.readers.push(new te), this.readers.push(new Jt(this.verbose)))
+ }
+ decodeRow(t, e, r)
+ {
+ for (let n = 0; n < this.readers.length; n++)
+ try {
+ return this.readers[n].decodeRow(t, e, r)
+ } catch (t) {}
+ throw new N
+ }
+ reset()
+ {
+ this.readers.forEach((t => t.reset()))
+ }
+ }
+ class re {
+ constructor(t, e, r)
+ {
+ this.ecCodewords = t,
+ this.ecBlocks = [e],
+ r && this.ecBlocks.push(r)
+ }
+ getECCodewords()
+ {
+ return this.ecCodewords
+ }
+ getECBlocks()
+ {
+ return this.ecBlocks
+ }
+ }
+ class ne {
+ constructor(t, e)
+ {
+ this.count = t,
+ this.dataCodewords = e
+ }
+ getCount()
+ {
+ return this.count
+ }
+ getDataCodewords()
+ {
+ return this.dataCodewords
+ }
+ }
+ class ie {
+ constructor(t, e, r, n, i, o)
+ {
+ this.versionNumber = t,
+ this.symbolSizeRows = e,
+ this.symbolSizeColumns = r,
+ this.dataRegionSizeRows = n,
+ this.dataRegionSizeColumns = i,
+ this.ecBlocks = o;
+ let s = 0;
+ const a = o.getECCodewords(),
+ l = o.getECBlocks();
+ for (let t of l)
+ s += t.getCount() * (t.getDataCodewords() + a);
+ this.totalCodewords = s
+ }
+ getVersionNumber()
+ {
+ return this.versionNumber
+ }
+ getSymbolSizeRows()
+ {
+ return this.symbolSizeRows
+ }
+ getSymbolSizeColumns()
+ {
+ return this.symbolSizeColumns
+ }
+ getDataRegionSizeRows()
+ {
+ return this.dataRegionSizeRows
+ }
+ getDataRegionSizeColumns()
+ {
+ return this.dataRegionSizeColumns
+ }
+ getTotalCodewords()
+ {
+ return this.totalCodewords
+ }
+ getECBlocks()
+ {
+ return this.ecBlocks
+ }
+ static getVersionForDimensions(t, e)
+ {
+ if (0 != (1 & t) || 0 != (1 & e))
+ throw new C;
+ for (let r of ie.VERSIONS)
+ if (r.symbolSizeRows === t && r.symbolSizeColumns === e)
+ return r;
+ throw new C
+ }
+ toString()
+ {
+ return "" + this.versionNumber
+ }
+ static buildVersions()
+ {
+ return [new ie(1, 10, 10, 8, 8, new re(5, new ne(1, 3))), new ie(2, 12, 12, 10, 10, new re(7, new ne(1, 5))), new ie(3, 14, 14, 12, 12, new re(10, new ne(1, 8))), new ie(4, 16, 16, 14, 14, new re(12, new ne(1, 12))), new ie(5, 18, 18, 16, 16, new re(14, new ne(1, 18))), new ie(6, 20, 20, 18, 18, new re(18, new ne(1, 22))), new ie(7, 22, 22, 20, 20, new re(20, new ne(1, 30))), new ie(8, 24, 24, 22, 22, new re(24, new ne(1, 36))), new ie(9, 26, 26, 24, 24, new re(28, new ne(1, 44))), new ie(10, 32, 32, 14, 14, new re(36, new ne(1, 62))), new ie(11, 36, 36, 16, 16, new re(42, new ne(1, 86))), new ie(12, 40, 40, 18, 18, new re(48, new ne(1, 114))), new ie(13, 44, 44, 20, 20, new re(56, new ne(1, 144))), new ie(14, 48, 48, 22, 22, new re(68, new ne(1, 174))), new ie(15, 52, 52, 24, 24, new re(42, new ne(2, 102))), new ie(16, 64, 64, 14, 14, new re(56, new ne(2, 140))), new ie(17, 72, 72, 16, 16, new re(36, new ne(4, 92))), new ie(18, 80, 80, 18, 18, new re(48, new ne(4, 114))), new ie(19, 88, 88, 20, 20, new re(56, new ne(4, 144))), new ie(20, 96, 96, 22, 22, new re(68, new ne(4, 174))), new ie(21, 104, 104, 24, 24, new re(56, new ne(6, 136))), new ie(22, 120, 120, 18, 18, new re(68, new ne(6, 175))), new ie(23, 132, 132, 20, 20, new re(62, new ne(8, 163))), new ie(24, 144, 144, 22, 22, new re(62, new ne(8, 156), new ne(2, 155))), new ie(25, 8, 18, 6, 16, new re(7, new ne(1, 5))), new ie(26, 8, 32, 6, 14, new re(11, new ne(1, 10))), new ie(27, 12, 26, 10, 24, new re(14, new ne(1, 16))), new ie(28, 12, 36, 10, 16, new re(18, new ne(1, 22))), new ie(29, 16, 36, 14, 16, new re(24, new ne(1, 32))), new ie(30, 16, 48, 14, 22, new re(28, new ne(1, 49)))]
+ }
+ }
+ ie.VERSIONS = ie.buildVersions();
+ class oe {
+ constructor(t)
+ {
+ const e = t.getHeight();
+ if (e < 8 || e > 144 || 0 != (1 & e))
+ throw new C;
+ this.version = oe.readVersion(t),
+ this.mappingBitMatrix = this.extractDataRegion(t),
+ this.readMappingMatrix = new y(this.mappingBitMatrix.getWidth(), this.mappingBitMatrix.getHeight())
+ }
+ getVersion()
+ {
+ return this.version
+ }
+ static readVersion(t)
+ {
+ const e = t.getHeight(),
+ r = t.getWidth();
+ return ie.getVersionForDimensions(e, r)
+ }
+ readCodewords()
+ {
+ const t = new Int8Array(this.version.getTotalCodewords());
+ let e = 0,
+ r = 4,
+ n = 0;
+ const i = this.mappingBitMatrix.getHeight(),
+ o = this.mappingBitMatrix.getWidth();
+ let s = !1,
+ a = !1,
+ l = !1,
+ c = !1;
+ do {
+ if (r !== i || 0 !== n || s)
+ if (r !== i - 2 || 0 !== n || 0 == (3 & o) || a)
+ if (r !== i + 4 || 2 !== n || 0 != (7 & o) || l)
+ if (r !== i - 2 || 0 !== n || 4 != (7 & o) || c) {
+ do {
+ r < i && n >= 0 && !this.readMappingMatrix.get(n, r) && (t[e++] = 255 & this.readUtah(r, n, i, o)),
+ r -= 2,
+ n += 2
+ } while (r >= 0 && n < o);
+ r += 1,
+ n += 3;
+ do {
+ r >= 0 && n < o && !this.readMappingMatrix.get(n, r) && (t[e++] = 255 & this.readUtah(r, n, i, o)),
+ r += 2,
+ n -= 2
+ } while (r < i && n >= 0);
+ r += 3,
+ n += 1
+ } else
+ t[e++] = 255 & this.readCorner4(i, o),
+ r -= 2,
+ n += 2,
+ c = !0;
+ else
+ t[e++] = 255 & this.readCorner3(i, o),
+ r -= 2,
+ n += 2,
+ l = !0;
+ else
+ t[e++] = 255 & this.readCorner2(i, o),
+ r -= 2,
+ n += 2,
+ a = !0;
+ else
+ t[e++] = 255 & this.readCorner1(i, o),
+ r -= 2,
+ n += 2,
+ s = !0
+ } while (r < i || n < o);
+ if (e !== this.version.getTotalCodewords())
+ throw new C;
+ return t
+ }
+ readModule(t, e, r, n)
+ {
+ return t < 0 && (t += r, e += 4 - (r + 4 & 7)), e < 0 && (e += n, t += 4 - (n + 4 & 7)), this.readMappingMatrix.set(e, t), this.mappingBitMatrix.get(e, t)
+ }
+ readUtah(t, e, r, n)
+ {
+ let i = 0;
+ return this.readModule(t - 2, e - 2, r, n) && (i |= 1), i <<= 1, this.readModule(t - 2, e - 1, r, n) && (i |= 1), i <<= 1, this.readModule(t - 1, e - 2, r, n) && (i |= 1), i <<= 1, this.readModule(t - 1, e - 1, r, n) && (i |= 1), i <<= 1, this.readModule(t - 1, e, r, n) && (i |= 1), i <<= 1, this.readModule(t, e - 2, r, n) && (i |= 1), i <<= 1, this.readModule(t, e - 1, r, n) && (i |= 1), i <<= 1, this.readModule(t, e, r, n) && (i |= 1), i
+ }
+ readCorner1(t, e)
+ {
+ let r = 0;
+ return this.readModule(t - 1, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 1, 1, t, e) && (r |= 1), r <<= 1, this.readModule(t - 1, 2, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 2, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(2, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(3, e - 1, t, e) && (r |= 1), r
+ }
+ readCorner2(t, e)
+ {
+ let r = 0;
+ return this.readModule(t - 3, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 2, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 1, 0, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 4, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 3, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 2, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 1, t, e) && (r |= 1), r
+ }
+ readCorner3(t, e)
+ {
+ let r = 0;
+ return this.readModule(t - 1, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 1, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 3, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 2, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 3, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 2, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 1, t, e) && (r |= 1), r
+ }
+ readCorner4(t, e)
+ {
+ let r = 0;
+ return this.readModule(t - 3, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 2, 0, t, e) && (r |= 1), r <<= 1, this.readModule(t - 1, 0, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 2, t, e) && (r |= 1), r <<= 1, this.readModule(0, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(1, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(2, e - 1, t, e) && (r |= 1), r <<= 1, this.readModule(3, e - 1, t, e) && (r |= 1), r
+ }
+ extractDataRegion(t)
+ {
+ const e = this.version.getSymbolSizeRows(),
+ r = this.version.getSymbolSizeColumns();
+ if (t.getHeight() !== e)
+ throw new a("Dimension of bitMatrix must match the version size");
+ const n = this.version.getDataRegionSizeRows(),
+ i = this.version.getDataRegionSizeColumns(),
+ o = e / n | 0,
+ s = r / i | 0,
+ l = new y(s * i, o * n);
+ for (let e = 0; e < o; ++e) {
+ const r = e * n;
+ for (let o = 0; o < s; ++o) {
+ const s = o * i;
+ for (let a = 0; a < n; ++a) {
+ const c = e * (n + 2) + 1 + a,
+ h = r + a;
+ for (let e = 0; e < i; ++e) {
+ const r = o * (i + 2) + 1 + e;
+ if (t.get(r, c)) {
+ const t = s + e;
+ l.set(t, h)
+ }
+ }
+ }
+ }
+ }
+ return l
+ }
+ }
+ class se {
+ constructor(t, e)
+ {
+ this.numDataCodewords = t,
+ this.codewords = e
+ }
+ static getDataBlocks(t, e)
+ {
+ const r = e.getECBlocks();
+ let n = 0;
+ const i = r.getECBlocks();
+ for (let t of i)
+ n += t.getCount();
+ const o = new Array(n);
+ let s = 0;
+ for (let t of i)
+ for (let e = 0; e < t.getCount(); e++) {
+ const e = t.getDataCodewords(),
+ n = r.getECCodewords() + e;
+ o[s++] = new se(e, new Uint8Array(n))
+ }
+ const l = o[0].codewords.length - r.getECCodewords(),
+ c = l - 1;
+ let h = 0;
+ for (let e = 0; e < c; e++)
+ for (let r = 0; r < s; r++)
+ o[r].codewords[e] = t[h++];
+ const u = 24 === e.getVersionNumber(),
+ d = u ? 8 : s;
+ for (let e = 0; e < d; e++)
+ o[e].codewords[l - 1] = t[h++];
+ const g = o[0].codewords.length;
+ for (let e = l; e < g; e++)
+ for (let r = 0; r < s; r++) {
+ const n = u ? (r + 8) % s : r,
+ i = u && n > 7 ? e - 1 : e;
+ o[n].codewords[i] = t[h++]
+ }
+ if (h !== t.length)
+ throw new a;
+ return o
+ }
+ getNumDataCodewords()
+ {
+ return this.numDataCodewords
+ }
+ getCodewords()
+ {
+ return this.codewords
+ }
+ }
+ class ae {
+ constructor(t)
+ {
+ this.bytes = t,
+ this.byteOffset = 0,
+ this.bitOffset = 0
+ }
+ getBitOffset()
+ {
+ return this.bitOffset
+ }
+ getByteOffset()
+ {
+ return this.byteOffset
+ }
+ readBits(t)
+ {
+ if (t < 1 || t > 32 || t > this.available())
+ throw new a("" + t);
+ let e = 0,
+ r = this.bitOffset,
+ n = this.byteOffset;
+ const i = this.bytes;
+ if (r > 0) {
+ const o = 8 - r,
+ s = t < o ? t : o,
+ a = o - s,
+ l = 255 >> 8 - s << a;
+ e = (i[n] & l) >> a,
+ t -= s,
+ r += s,
+ 8 === r && (r = 0, n++)
+ }
+ if (t > 0) {
+ for (; t >= 8;)
+ e = e << 8 | 255 & i[n],
+ n++,
+ t -= 8;
+ if (t > 0) {
+ const o = 8 - t,
+ s = 255 >> o << o;
+ e = e << t | (i[n] & s) >> o,
+ r += t
+ }
+ }
+ return this.bitOffset = r, this.byteOffset = n, e
+ }
+ available()
+ {
+ return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset
+ }
+ }
+ !function(t) {
+ t[t.PAD_ENCODE = 0] = "PAD_ENCODE",
+ t[t.ASCII_ENCODE = 1] = "ASCII_ENCODE",
+ t[t.C40_ENCODE = 2] = "C40_ENCODE",
+ t[t.TEXT_ENCODE = 3] = "TEXT_ENCODE",
+ t[t.ANSIX12_ENCODE = 4] = "ANSIX12_ENCODE",
+ t[t.EDIFACT_ENCODE = 5] = "EDIFACT_ENCODE",
+ t[t.BASE256_ENCODE = 6] = "BASE256_ENCODE"
+ }(H || (H = {}));
+ class le {
+ static decode(t)
+ {
+ const e = new ae(t),
+ r = new T,
+ n = new T,
+ i = new Array;
+ let o = H.ASCII_ENCODE;
+ do {
+ if (o === H.ASCII_ENCODE)
+ o = this.decodeAsciiSegment(e, r, n);
+ else {
+ switch (o) {
+ case H.C40_ENCODE:
+ this.decodeC40Segment(e, r);
+ break;
+ case H.TEXT_ENCODE:
+ this.decodeTextSegment(e, r);
+ break;
+ case H.ANSIX12_ENCODE:
+ this.decodeAnsiX12Segment(e, r);
+ break;
+ case H.EDIFACT_ENCODE:
+ this.decodeEdifactSegment(e, r);
+ break;
+ case H.BASE256_ENCODE:
+ this.decodeBase256Segment(e, r, i);
+ break;
+ default:
+ throw new C
+ }
+ o = H.ASCII_ENCODE
+ }
+ } while (o !== H.PAD_ENCODE && e.available() > 0);
+ return n.length() > 0 && r.append(n.toString()), new W(t, r.toString(), 0 === i.length ? null : i, null)
+ }
+ static decodeAsciiSegment(t, e, r)
+ {
+ let n = !1;
+ do {
+ let i = t.readBits(8);
+ if (0 === i)
+ throw new C;
+ if (i <= 128)
+ return n && (i += 128), e.append(String.fromCharCode(i - 1)), H.ASCII_ENCODE;
+ if (129 === i)
+ return H.PAD_ENCODE;
+ if (i <= 229) {
+ const t = i - 130;
+ t < 10 && e.append("0"),
+ e.append("" + t)
+ } else
+ switch (i) {
+ case 230:
+ return H.C40_ENCODE;
+ case 231:
+ return H.BASE256_ENCODE;
+ case 232:
+ e.append(String.fromCharCode(29));
+ break;
+ case 233:
+ case 234:
+ break;
+ case 235:
+ n = !0;
+ break;
+ case 236:
+ e.append("[)>05"),
+ r.insert(0, "");
+ break;
+ case 237:
+ e.append("[)>06"),
+ r.insert(0, "");
+ break;
+ case 238:
+ return H.ANSIX12_ENCODE;
+ case 239:
+ return H.TEXT_ENCODE;
+ case 240:
+ return H.EDIFACT_ENCODE;
+ case 241:
+ break;
+ default:
+ if (254 !== i || 0 !== t.available())
+ throw new C
+ }
+ } while (t.available() > 0);
+ return H.ASCII_ENCODE
+ }
+ static decodeC40Segment(t, e)
+ {
+ let r = !1;
+ const n = [];
+ let i = 0;
+ do {
+ if (8 === t.available())
+ return;
+ const o = t.readBits(8);
+ if (254 === o)
+ return;
+ this.parseTwoBytes(o, t.readBits(8), n);
+ for (let t = 0; t < 3; t++) {
+ const o = n[t];
+ switch (i) {
+ case 0:
+ if (o < 3)
+ i = o + 1;
+ else {
+ if (!(o < this.C40_BASIC_SET_CHARS.length))
+ throw new C;
+ {
+ const t = this.C40_BASIC_SET_CHARS[o];
+ r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), r = !1) : e.append(t)
+ }
+ }
+ break;
+ case 1:
+ r ? (e.append(String.fromCharCode(o + 128)), r = !1) : e.append(String.fromCharCode(o)),
+ i = 0;
+ break;
+ case 2:
+ if (o < this.C40_SHIFT2_SET_CHARS.length) {
+ const t = this.C40_SHIFT2_SET_CHARS[o];
+ r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), r = !1) : e.append(t)
+ } else
+ switch (o) {
+ case 27:
+ e.append(String.fromCharCode(29));
+ break;
+ case 30:
+ r = !0;
+ break;
+ default:
+ throw new C
+ }
+ i = 0;
+ break;
+ case 3:
+ r ? (e.append(String.fromCharCode(o + 224)), r = !1) : e.append(String.fromCharCode(o + 96)),
+ i = 0;
+ break;
+ default:
+ throw new C
+ }
+ }
+ } while (t.available() > 0)
+ }
+ static decodeTextSegment(t, e)
+ {
+ let r = !1,
+ n = [],
+ i = 0;
+ do {
+ if (8 === t.available())
+ return;
+ const o = t.readBits(8);
+ if (254 === o)
+ return;
+ this.parseTwoBytes(o, t.readBits(8), n);
+ for (let t = 0; t < 3; t++) {
+ const o = n[t];
+ switch (i) {
+ case 0:
+ if (o < 3)
+ i = o + 1;
+ else {
+ if (!(o < this.TEXT_BASIC_SET_CHARS.length))
+ throw new C;
+ {
+ const t = this.TEXT_BASIC_SET_CHARS[o];
+ r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), r = !1) : e.append(t)
+ }
+ }
+ break;
+ case 1:
+ r ? (e.append(String.fromCharCode(o + 128)), r = !1) : e.append(String.fromCharCode(o)),
+ i = 0;
+ break;
+ case 2:
+ if (o < this.TEXT_SHIFT2_SET_CHARS.length) {
+ const t = this.TEXT_SHIFT2_SET_CHARS[o];
+ r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), r = !1) : e.append(t)
+ } else
+ switch (o) {
+ case 27:
+ e.append(String.fromCharCode(29));
+ break;
+ case 30:
+ r = !0;
+ break;
+ default:
+ throw new C
+ }
+ i = 0;
+ break;
+ case 3:
+ if (!(o < this.TEXT_SHIFT3_SET_CHARS.length))
+ throw new C;
+ {
+ const t = this.TEXT_SHIFT3_SET_CHARS[o];
+ r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), r = !1) : e.append(t),
+ i = 0
+ }break;
+ default:
+ throw new C
+ }
+ }
+ } while (t.available() > 0)
+ }
+ static decodeAnsiX12Segment(t, e)
+ {
+ const r = [];
+ do {
+ if (8 === t.available())
+ return;
+ const n = t.readBits(8);
+ if (254 === n)
+ return;
+ this.parseTwoBytes(n, t.readBits(8), r);
+ for (let t = 0; t < 3; t++) {
+ const n = r[t];
+ switch (n) {
+ case 0:
+ e.append("\r");
+ break;
+ case 1:
+ e.append("*");
+ break;
+ case 2:
+ e.append(">");
+ break;
+ case 3:
+ e.append(" ");
+ break;
+ default:
+ if (n < 14)
+ e.append(String.fromCharCode(n + 44));
+ else {
+ if (!(n < 40))
+ throw new C;
+ e.append(String.fromCharCode(n + 51))
+ }
+ }
+ }
+ } while (t.available() > 0)
+ }
+ static parseTwoBytes(t, e, r)
+ {
+ let n = (t << 8) + e - 1,
+ i = Math.floor(n / 1600);
+ r[0] = i,
+ n -= 1600 * i,
+ i = Math.floor(n / 40),
+ r[1] = i,
+ r[2] = n - 40 * i
+ }
+ static decodeEdifactSegment(t, e)
+ {
+ do {
+ if (t.available() <= 16)
+ return;
+ for (let r = 0; r < 4; r++) {
+ let r = t.readBits(6);
+ if (31 === r) {
+ const e = 8 - t.getBitOffset();
+ return void (8 !== e && t.readBits(e))
+ }
+ 0 == (32 & r) && (r |= 64),
+ e.append(String.fromCharCode(r))
+ }
+ } while (t.available() > 0)
+ }
+ static decodeBase256Segment(t, e, r)
+ {
+ let n = 1 + t.getByteOffset();
+ const i = this.unrandomize255State(t.readBits(8), n++);
+ let o;
+ if (o = 0 === i ? t.available() / 8 | 0 : i < 250 ? i : 250 * (i - 249) + this.unrandomize255State(t.readBits(8), n++), o < 0)
+ throw new C;
+ const s = new Uint8Array(o);
+ for (let e = 0; e < o; e++) {
+ if (t.available() < 8)
+ throw new C;
+ s[e] = this.unrandomize255State(t.readBits(8), n++)
+ }
+ r.push(s);
+ try {
+ e.append(S.decode(s, _.ISO88591))
+ } catch (t) {
+ throw new J("Platform does not support required encoding: " + t.message)
+ }
+ }
+ static unrandomize255State(t, e)
+ {
+ const r = t - (149 * e % 255 + 1);
+ return r >= 0 ? r : r + 256
+ }
+ }
+ le.C40_BASIC_SET_CHARS = ["*", "*", "*", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"],
+ le.C40_SHIFT2_SET_CHARS = ["!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "\\", "]", "^", "_"],
+ le.TEXT_BASIC_SET_CHARS = ["*", "*", "*", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"],
+ le.TEXT_SHIFT2_SET_CHARS = le.C40_SHIFT2_SET_CHARS,
+ le.TEXT_SHIFT3_SET_CHARS = ["`", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "{", "|", "}", "~", String.fromCharCode(127)];
+ class ce {
+ constructor()
+ {
+ this.rsDecoder = new $(K.DATA_MATRIX_FIELD_256)
+ }
+ decode(t)
+ {
+ const e = new oe(t),
+ r = e.getVersion(),
+ n = e.readCodewords(),
+ i = se.getDataBlocks(n, r);
+ let o = 0;
+ for (let t of i)
+ o += t.getNumDataCodewords();
+ const s = new Uint8Array(o),
+ a = i.length;
+ for (let t = 0; t < a; t++) {
+ const e = i[t],
+ r = e.getCodewords(),
+ n = e.getNumDataCodewords();
+ this.correctErrors(r, n);
+ for (let e = 0; e < n; e++)
+ s[e * a + t] = r[e]
+ }
+ return le.decode(s)
+ }
+ correctErrors(t, e)
+ {
+ const r = new Int32Array(t);
+ try {
+ this.rsDecoder.decode(r, t.length - e)
+ } catch (t) {
+ throw new c
+ }
+ for (let n = 0; n < e; n++)
+ t[n] = r[n]
+ }
+ }
+ class he {
+ constructor(t)
+ {
+ this.image = t,
+ this.rectangleDetector = new st(this.image)
+ }
+ detect()
+ {
+ const t = this.rectangleDetector.detect();
+ let e = this.detectSolid1(t);
+ if (e = this.detectSolid2(e), e[3] = this.correctTopRight(e), !e[3])
+ throw new N;
+ e = this.shiftToModuleCenter(e);
+ const r = e[0],
+ n = e[1],
+ i = e[2],
+ o = e[3];
+ let s = this.transitionsBetween(r, o) + 1,
+ a = this.transitionsBetween(i, o) + 1;
+ 1 == (1 & s) && (s += 1),
+ 1 == (1 & a) && (a += 1),
+ 4 * s < 7 * a && 4 * a < 7 * s && (s = a = Math.max(s, a));
+ let l = he.sampleGrid(this.image, r, n, i, o, s, a);
+ return new it(l, [r, n, i, o])
+ }
+ static shiftPoint(t, e, r)
+ {
+ let n = (e.getX() - t.getX()) / (r + 1),
+ i = (e.getY() - t.getY()) / (r + 1);
+ return new nt(t.getX() + n, t.getY() + i)
+ }
+ static moveAway(t, e, r)
+ {
+ let n = t.getX(),
+ i = t.getY();
+ return n < e ? n -= 1 : n += 1, i < r ? i -= 1 : i += 1, new nt(n, i)
+ }
+ detectSolid1(t)
+ {
+ let e = t[0],
+ r = t[1],
+ n = t[3],
+ i = t[2],
+ o = this.transitionsBetween(e, r),
+ s = this.transitionsBetween(r, n),
+ a = this.transitionsBetween(n, i),
+ l = this.transitionsBetween(i, e),
+ c = o,
+ h = [i, e, r, n];
+ return c > s && (c = s, h[0] = e, h[1] = r, h[2] = n, h[3] = i), c > a && (c = a, h[0] = r, h[1] = n, h[2] = i, h[3] = e), c > l && (h[0] = n, h[1] = i, h[2] = e, h[3] = r), h
+ }
+ detectSolid2(t)
+ {
+ let e = t[0],
+ r = t[1],
+ n = t[2],
+ i = t[3],
+ o = this.transitionsBetween(e, i),
+ s = he.shiftPoint(r, n, 4 * (o + 1)),
+ a = he.shiftPoint(n, r, 4 * (o + 1));
+ return this.transitionsBetween(s, e) < this.transitionsBetween(a, i) ? (t[0] = e, t[1] = r, t[2] = n, t[3] = i) : (t[0] = r, t[1] = n, t[2] = i, t[3] = e), t
+ }
+ correctTopRight(t)
+ {
+ let e = t[0],
+ r = t[1],
+ n = t[2],
+ i = t[3],
+ o = this.transitionsBetween(e, i),
+ s = this.transitionsBetween(r, i),
+ a = he.shiftPoint(e, r, 4 * (s + 1)),
+ l = he.shiftPoint(n, r, 4 * (o + 1));
+ o = this.transitionsBetween(a, i),
+ s = this.transitionsBetween(l, i);
+ let c = new nt(i.getX() + (n.getX() - r.getX()) / (o + 1), i.getY() + (n.getY() - r.getY()) / (o + 1)),
+ h = new nt(i.getX() + (e.getX() - r.getX()) / (s + 1), i.getY() + (e.getY() - r.getY()) / (s + 1));
+ return this.isValid(c) ? this.isValid(h) ? this.transitionsBetween(a, c) + this.transitionsBetween(l, c) > this.transitionsBetween(a, h) + this.transitionsBetween(l, h) ? c : h : c : this.isValid(h) ? h : null
+ }
+ shiftToModuleCenter(t)
+ {
+ let e = t[0],
+ r = t[1],
+ n = t[2],
+ i = t[3],
+ o = this.transitionsBetween(e, i) + 1,
+ s = this.transitionsBetween(n, i) + 1,
+ a = he.shiftPoint(e, r, 4 * s),
+ l = he.shiftPoint(n, r, 4 * o);
+ o = this.transitionsBetween(a, i) + 1,
+ s = this.transitionsBetween(l, i) + 1,
+ 1 == (1 & o) && (o += 1),
+ 1 == (1 & s) && (s += 1);
+ let c,
+ h,
+ u = (e.getX() + r.getX() + n.getX() + i.getX()) / 4,
+ d = (e.getY() + r.getY() + n.getY() + i.getY()) / 4;
+ return e = he.moveAway(e, u, d), r = he.moveAway(r, u, d), n = he.moveAway(n, u, d), i = he.moveAway(i, u, d), a = he.shiftPoint(e, r, 4 * s), a = he.shiftPoint(a, i, 4 * o), c = he.shiftPoint(r, e, 4 * s), c = he.shiftPoint(c, n, 4 * o), l = he.shiftPoint(n, i, 4 * s), l = he.shiftPoint(l, r, 4 * o), h = he.shiftPoint(i, n, 4 * s), h = he.shiftPoint(h, e, 4 * o), [a, c, l, h]
+ }
+ isValid(t)
+ {
+ return t.getX() >= 0 && t.getX() < this.image.getWidth() && t.getY() > 0 && t.getY() < this.image.getHeight()
+ }
+ static sampleGrid(t, e, r, n, i, o, s)
+ {
+ return ht.getInstance().sampleGrid(t, o, s, .5, .5, o - .5, .5, o - .5, s - .5, .5, s - .5, e.getX(), e.getY(), i.getX(), i.getY(), n.getX(), n.getY(), r.getX(), r.getY())
+ }
+ transitionsBetween(t, e)
+ {
+ let r = Math.trunc(t.getX()),
+ n = Math.trunc(t.getY()),
+ i = Math.trunc(e.getX()),
+ o = Math.trunc(e.getY()),
+ s = Math.abs(o - n) > Math.abs(i - r);
+ if (s) {
+ let t = r;
+ r = n,
+ n = t,
+ t = i,
+ i = o,
+ o = t
+ }
+ let a = Math.abs(i - r),
+ l = Math.abs(o - n),
+ c = -a / 2,
+ h = n < o ? 1 : -1,
+ u = r < i ? 1 : -1,
+ d = 0,
+ g = this.image.get(s ? n : r, s ? r : n);
+ for (let t = r, e = n; t !== i; t += u) {
+ let r = this.image.get(s ? e : t, s ? t : e);
+ if (r !== g && (d++, g = r), c += l, c > 0) {
+ if (e === o)
+ break;
+ e += h,
+ c -= a
+ }
+ }
+ return d
+ }
+ }
+ class ue {
+ constructor()
+ {
+ this.decoder = new ce
+ }
+ decode(t, e=null)
+ {
+ let r,
+ n;
+ if (null != e && e.has(E.PURE_BARCODE)) {
+ const e = ue.extractPureBits(t.getBlackMatrix());
+ r = this.decoder.decode(e),
+ n = ue.NO_POINTS
+ } else {
+ const e = new he(t.getBlackMatrix()).detect();
+ r = this.decoder.decode(e.getBits()),
+ n = e.getPoints()
+ }
+ const i = r.getRawBytes(),
+ o = new F(r.getText(), i, 8 * i.length, n, k.DATA_MATRIX, u.currentTimeMillis()),
+ s = r.getByteSegments();
+ null != s && o.putMetadata(X.BYTE_SEGMENTS, s);
+ const a = r.getECLevel();
+ return null != a && o.putMetadata(X.ERROR_CORRECTION_LEVEL, a), o
+ }
+ reset() {}
+ static extractPureBits(t)
+ {
+ const e = t.getTopLeftOnBit(),
+ r = t.getBottomRightOnBit();
+ if (null == e || null == r)
+ throw new N;
+ const n = this.moduleSize(e, t);
+ let i = e[1];
+ const o = r[1];
+ let s = e[0];
+ const a = (r[0] - s + 1) / n,
+ l = (o - i + 1) / n;
+ if (a <= 0 || l <= 0)
+ throw new N;
+ const c = n / 2;
+ i += c,
+ s += c;
+ const h = new y(a, l);
+ for (let e = 0; e < l; e++) {
+ const r = i + e * n;
+ for (let i = 0; i < a; i++)
+ t.get(s + i * n, r) && h.set(i, e)
+ }
+ return h
+ }
+ static moduleSize(t, e)
+ {
+ const r = e.getWidth();
+ let n = t[0];
+ const i = t[1];
+ for (; n < r && e.get(n, i);)
+ n++;
+ if (n === r)
+ throw new N;
+ const o = n - t[0];
+ if (0 === o)
+ throw new N;
+ return o
+ }
+ }
+ ue.NO_POINTS = [];
+ !function(t) {
+ t[t.L = 0] = "L",
+ t[t.M = 1] = "M",
+ t[t.Q = 2] = "Q",
+ t[t.H = 3] = "H"
+ }(V || (V = {}));
+ class de {
+ constructor(t, e, r)
+ {
+ this.value = t,
+ this.stringValue = e,
+ this.bits = r,
+ de.FOR_BITS.set(r, this),
+ de.FOR_VALUE.set(t, this)
+ }
+ getValue()
+ {
+ return this.value
+ }
+ getBits()
+ {
+ return this.bits
+ }
+ static fromString(t)
+ {
+ switch (t) {
+ case "L":
+ return de.L;
+ case "M":
+ return de.M;
+ case "Q":
+ return de.Q;
+ case "H":
+ return de.H;
+ default:
+ throw new s(t + "not available")
+ }
+ }
+ toString()
+ {
+ return this.stringValue
+ }
+ equals(t)
+ {
+ if (!(t instanceof de))
+ return !1;
+ const e = t;
+ return this.value === e.value
+ }
+ static forBits(t)
+ {
+ if (t < 0 || t >= de.FOR_BITS.size)
+ throw new a;
+ return de.FOR_BITS.get(t)
+ }
+ }
+ de.FOR_BITS = new Map,
+ de.FOR_VALUE = new Map,
+ de.L = new de(V.L, "L", 1),
+ de.M = new de(V.M, "M", 0),
+ de.Q = new de(V.Q, "Q", 3),
+ de.H = new de(V.H, "H", 2);
+ class ge {
+ constructor(t)
+ {
+ this.errorCorrectionLevel = de.forBits(t >> 3 & 3),
+ this.dataMask = 7 & t
+ }
+ static numBitsDiffering(t, e)
+ {
+ return w.bitCount(t ^ e)
+ }
+ static decodeFormatInformation(t, e)
+ {
+ const r = ge.doDecodeFormatInformation(t, e);
+ return null !== r ? r : ge.doDecodeFormatInformation(t ^ ge.FORMAT_INFO_MASK_QR, e ^ ge.FORMAT_INFO_MASK_QR)
+ }
+ static doDecodeFormatInformation(t, e)
+ {
+ let r = Number.MAX_SAFE_INTEGER,
+ n = 0;
+ for (const i of ge.FORMAT_INFO_DECODE_LOOKUP) {
+ const o = i[0];
+ if (o === t || o === e)
+ return new ge(i[1]);
+ let s = ge.numBitsDiffering(t, o);
+ s < r && (n = i[1], r = s),
+ t !== e && (s = ge.numBitsDiffering(e, o), s < r && (n = i[1], r = s))
+ }
+ return r <= 3 ? new ge(n) : null
+ }
+ getErrorCorrectionLevel()
+ {
+ return this.errorCorrectionLevel
+ }
+ getDataMask()
+ {
+ return this.dataMask
+ }
+ hashCode()
+ {
+ return this.errorCorrectionLevel.getBits() << 3 | this.dataMask
+ }
+ equals(t)
+ {
+ if (!(t instanceof ge))
+ return !1;
+ const e = t;
+ return this.errorCorrectionLevel === e.errorCorrectionLevel && this.dataMask === e.dataMask
+ }
+ }
+ ge.FORMAT_INFO_MASK_QR = 21522,
+ ge.FORMAT_INFO_DECODE_LOOKUP = [Int32Array.from([21522, 0]), Int32Array.from([20773, 1]), Int32Array.from([24188, 2]), Int32Array.from([23371, 3]), Int32Array.from([17913, 4]), Int32Array.from([16590, 5]), Int32Array.from([20375, 6]), Int32Array.from([19104, 7]), Int32Array.from([30660, 8]), Int32Array.from([29427, 9]), Int32Array.from([32170, 10]), Int32Array.from([30877, 11]), Int32Array.from([26159, 12]), Int32Array.from([25368, 13]), Int32Array.from([27713, 14]), Int32Array.from([26998, 15]), Int32Array.from([5769, 16]), Int32Array.from([5054, 17]), Int32Array.from([7399, 18]), Int32Array.from([6608, 19]), Int32Array.from([1890, 20]), Int32Array.from([597, 21]), Int32Array.from([3340, 22]), Int32Array.from([2107, 23]), Int32Array.from([13663, 24]), Int32Array.from([12392, 25]), Int32Array.from([16177, 26]), Int32Array.from([14854, 27]), Int32Array.from([9396, 28]), Int32Array.from([8579, 29]), Int32Array.from([11994, 30]), Int32Array.from([11245, 31])];
+ class fe {
+ constructor(t, ...e)
+ {
+ this.ecCodewordsPerBlock = t,
+ this.ecBlocks = e
+ }
+ getECCodewordsPerBlock()
+ {
+ return this.ecCodewordsPerBlock
+ }
+ getNumBlocks()
+ {
+ let t = 0;
+ const e = this.ecBlocks;
+ for (const r of e)
+ t += r.getCount();
+ return t
+ }
+ getTotalECCodewords()
+ {
+ return this.ecCodewordsPerBlock * this.getNumBlocks()
+ }
+ getECBlocks()
+ {
+ return this.ecBlocks
+ }
+ }
+ class we {
+ constructor(t, e)
+ {
+ this.count = t,
+ this.dataCodewords = e
+ }
+ getCount()
+ {
+ return this.count
+ }
+ getDataCodewords()
+ {
+ return this.dataCodewords
+ }
+ }
+ class Ae {
+ constructor(t, e, ...r)
+ {
+ this.versionNumber = t,
+ this.alignmentPatternCenters = e,
+ this.ecBlocks = r;
+ let n = 0;
+ const i = r[0].getECCodewordsPerBlock(),
+ o = r[0].getECBlocks();
+ for (const t of o)
+ n += t.getCount() * (t.getDataCodewords() + i);
+ this.totalCodewords = n
+ }
+ getVersionNumber()
+ {
+ return this.versionNumber
+ }
+ getAlignmentPatternCenters()
+ {
+ return this.alignmentPatternCenters
+ }
+ getTotalCodewords()
+ {
+ return this.totalCodewords
+ }
+ getDimensionForVersion()
+ {
+ return 17 + 4 * this.versionNumber
+ }
+ getECBlocksForLevel(t)
+ {
+ return this.ecBlocks[t.getValue()]
+ }
+ static getProvisionalVersionForDimension(t)
+ {
+ if (t % 4 != 1)
+ throw new C;
+ try {
+ return this.getVersionForNumber((t - 17) / 4)
+ } catch (t) {
+ throw new C
+ }
+ }
+ static getVersionForNumber(t)
+ {
+ if (t < 1 || t > 40)
+ throw new a;
+ return Ae.VERSIONS[t - 1]
+ }
+ static decodeVersionInformation(t)
+ {
+ let e = Number.MAX_SAFE_INTEGER,
+ r = 0;
+ for (let n = 0; n < Ae.VERSION_DECODE_INFO.length; n++) {
+ const i = Ae.VERSION_DECODE_INFO[n];
+ if (i === t)
+ return Ae.getVersionForNumber(n + 7);
+ const o = ge.numBitsDiffering(t, i);
+ o < e && (r = n + 7, e = o)
+ }
+ return e <= 3 ? Ae.getVersionForNumber(r) : null
+ }
+ buildFunctionPattern()
+ {
+ const t = this.getDimensionForVersion(),
+ e = new y(t);
+ e.setRegion(0, 0, 9, 9),
+ e.setRegion(t - 8, 0, 8, 9),
+ e.setRegion(0, t - 8, 9, 8);
+ const r = this.alignmentPatternCenters.length;
+ for (let t = 0; t < r; t++) {
+ const n = this.alignmentPatternCenters[t] - 2;
+ for (let i = 0; i < r; i++)
+ 0 === t && (0 === i || i === r - 1) || t === r - 1 && 0 === i || e.setRegion(this.alignmentPatternCenters[i] - 2, n, 5, 5)
+ }
+ return e.setRegion(6, 9, 1, t - 17), e.setRegion(9, 6, t - 17, 1), this.versionNumber > 6 && (e.setRegion(t - 11, 0, 3, 6), e.setRegion(0, t - 11, 6, 3)), e
+ }
+ toString()
+ {
+ return "" + this.versionNumber
+ }
+ }
+ Ae.VERSION_DECODE_INFO = Int32Array.from([31892, 34236, 39577, 42195, 48118, 51042, 55367, 58893, 63784, 68472, 70749, 76311, 79154, 84390, 87683, 92361, 96236, 102084, 102881, 110507, 110734, 117786, 119615, 126325, 127568, 133589, 136944, 141498, 145311, 150283, 152622, 158308, 161089, 167017]),
+ Ae.VERSIONS = [new Ae(1, new Int32Array(0), new fe(7, new we(1, 19)), new fe(10, new we(1, 16)), new fe(13, new we(1, 13)), new fe(17, new we(1, 9))), new Ae(2, Int32Array.from([6, 18]), new fe(10, new we(1, 34)), new fe(16, new we(1, 28)), new fe(22, new we(1, 22)), new fe(28, new we(1, 16))), new Ae(3, Int32Array.from([6, 22]), new fe(15, new we(1, 55)), new fe(26, new we(1, 44)), new fe(18, new we(2, 17)), new fe(22, new we(2, 13))), new Ae(4, Int32Array.from([6, 26]), new fe(20, new we(1, 80)), new fe(18, new we(2, 32)), new fe(26, new we(2, 24)), new fe(16, new we(4, 9))), new Ae(5, Int32Array.from([6, 30]), new fe(26, new we(1, 108)), new fe(24, new we(2, 43)), new fe(18, new we(2, 15), new we(2, 16)), new fe(22, new we(2, 11), new we(2, 12))), new Ae(6, Int32Array.from([6, 34]), new fe(18, new we(2, 68)), new fe(16, new we(4, 27)), new fe(24, new we(4, 19)), new fe(28, new we(4, 15))), new Ae(7, Int32Array.from([6, 22, 38]), new fe(20, new we(2, 78)), new fe(18, new we(4, 31)), new fe(18, new we(2, 14), new we(4, 15)), new fe(26, new we(4, 13), new we(1, 14))), new Ae(8, Int32Array.from([6, 24, 42]), new fe(24, new we(2, 97)), new fe(22, new we(2, 38), new we(2, 39)), new fe(22, new we(4, 18), new we(2, 19)), new fe(26, new we(4, 14), new we(2, 15))), new Ae(9, Int32Array.from([6, 26, 46]), new fe(30, new we(2, 116)), new fe(22, new we(3, 36), new we(2, 37)), new fe(20, new we(4, 16), new we(4, 17)), new fe(24, new we(4, 12), new we(4, 13))), new Ae(10, Int32Array.from([6, 28, 50]), new fe(18, new we(2, 68), new we(2, 69)), new fe(26, new we(4, 43), new we(1, 44)), new fe(24, new we(6, 19), new we(2, 20)), new fe(28, new we(6, 15), new we(2, 16))), new Ae(11, Int32Array.from([6, 30, 54]), new fe(20, new we(4, 81)), new fe(30, new we(1, 50), new we(4, 51)), new fe(28, new we(4, 22), new we(4, 23)), new fe(24, new we(3, 12), new we(8, 13))), new Ae(12, Int32Array.from([6, 32, 58]), new fe(24, new we(2, 92), new we(2, 93)), new fe(22, new we(6, 36), new we(2, 37)), new fe(26, new we(4, 20), new we(6, 21)), new fe(28, new we(7, 14), new we(4, 15))), new Ae(13, Int32Array.from([6, 34, 62]), new fe(26, new we(4, 107)), new fe(22, new we(8, 37), new we(1, 38)), new fe(24, new we(8, 20), new we(4, 21)), new fe(22, new we(12, 11), new we(4, 12))), new Ae(14, Int32Array.from([6, 26, 46, 66]), new fe(30, new we(3, 115), new we(1, 116)), new fe(24, new we(4, 40), new we(5, 41)), new fe(20, new we(11, 16), new we(5, 17)), new fe(24, new we(11, 12), new we(5, 13))), new Ae(15, Int32Array.from([6, 26, 48, 70]), new fe(22, new we(5, 87), new we(1, 88)), new fe(24, new we(5, 41), new we(5, 42)), new fe(30, new we(5, 24), new we(7, 25)), new fe(24, new we(11, 12), new we(7, 13))), new Ae(16, Int32Array.from([6, 26, 50, 74]), new fe(24, new we(5, 98), new we(1, 99)), new fe(28, new we(7, 45), new we(3, 46)), new fe(24, new we(15, 19), new we(2, 20)), new fe(30, new we(3, 15), new we(13, 16))), new Ae(17, Int32Array.from([6, 30, 54, 78]), new fe(28, new we(1, 107), new we(5, 108)), new fe(28, new we(10, 46), new we(1, 47)), new fe(28, new we(1, 22), new we(15, 23)), new fe(28, new we(2, 14), new we(17, 15))), new Ae(18, Int32Array.from([6, 30, 56, 82]), new fe(30, new we(5, 120), new we(1, 121)), new fe(26, new we(9, 43), new we(4, 44)), new fe(28, new we(17, 22), new we(1, 23)), new fe(28, new we(2, 14), new we(19, 15))), new Ae(19, Int32Array.from([6, 30, 58, 86]), new fe(28, new we(3, 113), new we(4, 114)), new fe(26, new we(3, 44), new we(11, 45)), new fe(26, new we(17, 21), new we(4, 22)), new fe(26, new we(9, 13), new we(16, 14))), new Ae(20, Int32Array.from([6, 34, 62, 90]), new fe(28, new we(3, 107), new we(5, 108)), new fe(26, new we(3, 41), new we(13, 42)), new fe(30, new we(15, 24), new we(5, 25)), new fe(28, new we(15, 15), new we(10, 16))), new Ae(21, Int32Array.from([6, 28, 50, 72, 94]), new fe(28, new we(4, 116), new we(4, 117)), new fe(26, new we(17, 42)), new fe(28, new we(17, 22), new we(6, 23)), new fe(30, new we(19, 16), new we(6, 17))), new Ae(22, Int32Array.from([6, 26, 50, 74, 98]), new fe(28, new we(2, 111), new we(7, 112)), new fe(28, new we(17, 46)), new fe(30, new we(7, 24), new we(16, 25)), new fe(24, new we(34, 13))), new Ae(23, Int32Array.from([6, 30, 54, 78, 102]), new fe(30, new we(4, 121), new we(5, 122)), new fe(28, new we(4, 47), new we(14, 48)), new fe(30, new we(11, 24), new we(14, 25)), new fe(30, new we(16, 15), new we(14, 16))), new Ae(24, Int32Array.from([6, 28, 54, 80, 106]), new fe(30, new we(6, 117), new we(4, 118)), new fe(28, new we(6, 45), new we(14, 46)), new fe(30, new we(11, 24), new we(16, 25)), new fe(30, new we(30, 16), new we(2, 17))), new Ae(25, Int32Array.from([6, 32, 58, 84, 110]), new fe(26, new we(8, 106), new we(4, 107)), new fe(28, new we(8, 47), new we(13, 48)), new fe(30, new we(7, 24), new we(22, 25)), new fe(30, new we(22, 15), new we(13, 16))), new Ae(26, Int32Array.from([6, 30, 58, 86, 114]), new fe(28, new we(10, 114), new we(2, 115)), new fe(28, new we(19, 46), new we(4, 47)), new fe(28, new we(28, 22), new we(6, 23)), new fe(30, new we(33, 16), new we(4, 17))), new Ae(27, Int32Array.from([6, 34, 62, 90, 118]), new fe(30, new we(8, 122), new we(4, 123)), new fe(28, new we(22, 45), new we(3, 46)), new fe(30, new we(8, 23), new we(26, 24)), new fe(30, new we(12, 15), new we(28, 16))), new Ae(28, Int32Array.from([6, 26, 50, 74, 98, 122]), new fe(30, new we(3, 117), new we(10, 118)), new fe(28, new we(3, 45), new we(23, 46)), new fe(30, new we(4, 24), new we(31, 25)), new fe(30, new we(11, 15), new we(31, 16))), new Ae(29, Int32Array.from([6, 30, 54, 78, 102, 126]), new fe(30, new we(7, 116), new we(7, 117)), new fe(28, new we(21, 45), new we(7, 46)), new fe(30, new we(1, 23), new we(37, 24)), new fe(30, new we(19, 15), new we(26, 16))), new Ae(30, Int32Array.from([6, 26, 52, 78, 104, 130]), new fe(30, new we(5, 115), new we(10, 116)), new fe(28, new we(19, 47), new we(10, 48)), new fe(30, new we(15, 24), new we(25, 25)), new fe(30, new we(23, 15), new we(25, 16))), new Ae(31, Int32Array.from([6, 30, 56, 82, 108, 134]), new fe(30, new we(13, 115), new we(3, 116)), new fe(28, new we(2, 46), new we(29, 47)), new fe(30, new we(42, 24), new we(1, 25)), new fe(30, new we(23, 15), new we(28, 16))), new Ae(32, Int32Array.from([6, 34, 60, 86, 112, 138]), new fe(30, new we(17, 115)), new fe(28, new we(10, 46), new we(23, 47)), new fe(30, new we(10, 24), new we(35, 25)), new fe(30, new we(19, 15), new we(35, 16))), new Ae(33, Int32Array.from([6, 30, 58, 86, 114, 142]), new fe(30, new we(17, 115), new we(1, 116)), new fe(28, new we(14, 46), new we(21, 47)), new fe(30, new we(29, 24), new we(19, 25)), new fe(30, new we(11, 15), new we(46, 16))), new Ae(34, Int32Array.from([6, 34, 62, 90, 118, 146]), new fe(30, new we(13, 115), new we(6, 116)), new fe(28, new we(14, 46), new we(23, 47)), new fe(30, new we(44, 24), new we(7, 25)), new fe(30, new we(59, 16), new we(1, 17))), new Ae(35, Int32Array.from([6, 30, 54, 78, 102, 126, 150]), new fe(30, new we(12, 121), new we(7, 122)), new fe(28, new we(12, 47), new we(26, 48)), new fe(30, new we(39, 24), new we(14, 25)), new fe(30, new we(22, 15), new we(41, 16))), new Ae(36, Int32Array.from([6, 24, 50, 76, 102, 128, 154]), new fe(30, new we(6, 121), new we(14, 122)), new fe(28, new we(6, 47), new we(34, 48)), new fe(30, new we(46, 24), new we(10, 25)), new fe(30, new we(2, 15), new we(64, 16))), new Ae(37, Int32Array.from([6, 28, 54, 80, 106, 132, 158]), new fe(30, new we(17, 122), new we(4, 123)), new fe(28, new we(29, 46), new we(14, 47)), new fe(30, new we(49, 24), new we(10, 25)), new fe(30, new we(24, 15), new we(46, 16))), new Ae(38, Int32Array.from([6, 32, 58, 84, 110, 136, 162]), new fe(30, new we(4, 122), new we(18, 123)), new fe(28, new we(13, 46), new we(32, 47)), new fe(30, new we(48, 24), new we(14, 25)), new fe(30, new we(42, 15), new we(32, 16))), new Ae(39, Int32Array.from([6, 26, 54, 82, 110, 138, 166]), new fe(30, new we(20, 117), new we(4, 118)), new fe(28, new we(40, 47), new we(7, 48)), new fe(30, new we(43, 24), new we(22, 25)), new fe(30, new we(10, 15), new we(67, 16))), new Ae(40, Int32Array.from([6, 30, 58, 86, 114, 142, 170]), new fe(30, new we(19, 118), new we(6, 119)), new fe(28, new we(18, 47), new we(31, 48)), new fe(30, new we(34, 24), new we(34, 25)), new fe(30, new we(20, 15), new we(61, 16)))],
+ function(t) {
+ t[t.DATA_MASK_000 = 0] = "DATA_MASK_000",
+ t[t.DATA_MASK_001 = 1] = "DATA_MASK_001",
+ t[t.DATA_MASK_010 = 2] = "DATA_MASK_010",
+ t[t.DATA_MASK_011 = 3] = "DATA_MASK_011",
+ t[t.DATA_MASK_100 = 4] = "DATA_MASK_100",
+ t[t.DATA_MASK_101 = 5] = "DATA_MASK_101",
+ t[t.DATA_MASK_110 = 6] = "DATA_MASK_110",
+ t[t.DATA_MASK_111 = 7] = "DATA_MASK_111"
+ }(z || (z = {}));
+ class me {
+ constructor(t, e)
+ {
+ this.value = t,
+ this.isMasked = e
+ }
+ unmaskBitMatrix(t, e)
+ {
+ for (let r = 0; r < e; r++)
+ for (let n = 0; n < e; n++)
+ this.isMasked(r, n) && t.flip(n, r)
+ }
+ }
+ me.values = new Map([[z.DATA_MASK_000, new me(z.DATA_MASK_000, ((t, e) => 0 == (t + e & 1)))], [z.DATA_MASK_001, new me(z.DATA_MASK_001, ((t, e) => 0 == (1 & t)))], [z.DATA_MASK_010, new me(z.DATA_MASK_010, ((t, e) => e % 3 == 0))], [z.DATA_MASK_011, new me(z.DATA_MASK_011, ((t, e) => (t + e) % 3 == 0))], [z.DATA_MASK_100, new me(z.DATA_MASK_100, ((t, e) => 0 == (Math.floor(t / 2) + Math.floor(e / 3) & 1)))], [z.DATA_MASK_101, new me(z.DATA_MASK_101, ((t, e) => t * e % 6 == 0))], [z.DATA_MASK_110, new me(z.DATA_MASK_110, ((t, e) => t * e % 6 < 3))], [z.DATA_MASK_111, new me(z.DATA_MASK_111, ((t, e) => 0 == (t + e + t * e % 3 & 1)))]]);
+ class Ee {
+ constructor(t)
+ {
+ const e = t.getHeight();
+ if (e < 21 || 1 != (3 & e))
+ throw new C;
+ this.bitMatrix = t
+ }
+ readFormatInformation()
+ {
+ if (null !== this.parsedFormatInfo && void 0 !== this.parsedFormatInfo)
+ return this.parsedFormatInfo;
+ let t = 0;
+ for (let e = 0; e < 6; e++)
+ t = this.copyBit(e, 8, t);
+ t = this.copyBit(7, 8, t),
+ t = this.copyBit(8, 8, t),
+ t = this.copyBit(8, 7, t);
+ for (let e = 5; e >= 0; e--)
+ t = this.copyBit(8, e, t);
+ const e = this.bitMatrix.getHeight();
+ let r = 0;
+ const n = e - 7;
+ for (let t = e - 1; t >= n; t--)
+ r = this.copyBit(8, t, r);
+ for (let t = e - 8; t < e; t++)
+ r = this.copyBit(t, 8, r);
+ if (this.parsedFormatInfo = ge.decodeFormatInformation(t, r), null !== this.parsedFormatInfo)
+ return this.parsedFormatInfo;
+ throw new C
+ }
+ readVersion()
+ {
+ if (null !== this.parsedVersion && void 0 !== this.parsedVersion)
+ return this.parsedVersion;
+ const t = this.bitMatrix.getHeight(),
+ e = Math.floor((t - 17) / 4);
+ if (e <= 6)
+ return Ae.getVersionForNumber(e);
+ let r = 0;
+ const n = t - 11;
+ for (let e = 5; e >= 0; e--)
+ for (let i = t - 9; i >= n; i--)
+ r = this.copyBit(i, e, r);
+ let i = Ae.decodeVersionInformation(r);
+ if (null !== i && i.getDimensionForVersion() === t)
+ return this.parsedVersion = i, i;
+ r = 0;
+ for (let e = 5; e >= 0; e--)
+ for (let i = t - 9; i >= n; i--)
+ r = this.copyBit(e, i, r);
+ if (i = Ae.decodeVersionInformation(r), null !== i && i.getDimensionForVersion() === t)
+ return this.parsedVersion = i, i;
+ throw new C
+ }
+ copyBit(t, e, r)
+ {
+ return (this.isMirror ? this.bitMatrix.get(e, t) : this.bitMatrix.get(t, e)) ? r << 1 | 1 : r << 1
+ }
+ readCodewords()
+ {
+ const t = this.readFormatInformation(),
+ e = this.readVersion(),
+ r = me.values.get(t.getDataMask()),
+ n = this.bitMatrix.getHeight();
+ r.unmaskBitMatrix(this.bitMatrix, n);
+ const i = e.buildFunctionPattern();
+ let o = !0;
+ const s = new Uint8Array(e.getTotalCodewords());
+ let a = 0,
+ l = 0,
+ c = 0;
+ for (let t = n - 1; t > 0; t -= 2) {
+ 6 === t && t--;
+ for (let e = 0; e < n; e++) {
+ const r = o ? n - 1 - e : e;
+ for (let e = 0; e < 2; e++)
+ i.get(t - e, r) || (c++, l <<= 1, this.bitMatrix.get(t - e, r) && (l |= 1), 8 === c && (s[a++] = l, c = 0, l = 0))
+ }
+ o = !o
+ }
+ if (a !== e.getTotalCodewords())
+ throw new C;
+ return s
+ }
+ remask()
+ {
+ if (null === this.parsedFormatInfo)
+ return;
+ const t = me.values[this.parsedFormatInfo.getDataMask()],
+ e = this.bitMatrix.getHeight();
+ t.unmaskBitMatrix(this.bitMatrix, e)
+ }
+ setMirror(t)
+ {
+ this.parsedVersion = null,
+ this.parsedFormatInfo = null,
+ this.isMirror = t
+ }
+ mirror()
+ {
+ const t = this.bitMatrix;
+ for (let e = 0, r = t.getWidth(); e < r; e++)
+ for (let r = e + 1, n = t.getHeight(); r < n; r++)
+ t.get(e, r) !== t.get(r, e) && (t.flip(r, e), t.flip(e, r))
+ }
+ }
+ class Ce {
+ constructor(t, e)
+ {
+ this.numDataCodewords = t,
+ this.codewords = e
+ }
+ static getDataBlocks(t, e, r)
+ {
+ if (t.length !== e.getTotalCodewords())
+ throw new a;
+ const n = e.getECBlocksForLevel(r);
+ let i = 0;
+ const o = n.getECBlocks();
+ for (const t of o)
+ i += t.getCount();
+ const s = new Array(i);
+ let l = 0;
+ for (const t of o)
+ for (let e = 0; e < t.getCount(); e++) {
+ const e = t.getDataCodewords(),
+ r = n.getECCodewordsPerBlock() + e;
+ s[l++] = new Ce(e, new Uint8Array(r))
+ }
+ const c = s[0].codewords.length;
+ let h = s.length - 1;
+ for (; h >= 0 && s[h].codewords.length !== c;)
+ h--;
+ h++;
+ const u = c - n.getECCodewordsPerBlock();
+ let d = 0;
+ for (let e = 0; e < u; e++)
+ for (let r = 0; r < l; r++)
+ s[r].codewords[e] = t[d++];
+ for (let e = h; e < l; e++)
+ s[e].codewords[u] = t[d++];
+ const g = s[0].codewords.length;
+ for (let e = u; e < g; e++)
+ for (let r = 0; r < l; r++) {
+ const n = r < h ? e : e + 1;
+ s[r].codewords[n] = t[d++]
+ }
+ return s
+ }
+ getNumDataCodewords()
+ {
+ return this.numDataCodewords
+ }
+ getCodewords()
+ {
+ return this.codewords
+ }
+ }
+ !function(t) {
+ t[t.TERMINATOR = 0] = "TERMINATOR",
+ t[t.NUMERIC = 1] = "NUMERIC",
+ t[t.ALPHANUMERIC = 2] = "ALPHANUMERIC",
+ t[t.STRUCTURED_APPEND = 3] = "STRUCTURED_APPEND",
+ t[t.BYTE = 4] = "BYTE",
+ t[t.ECI = 5] = "ECI",
+ t[t.KANJI = 6] = "KANJI",
+ t[t.FNC1_FIRST_POSITION = 7] = "FNC1_FIRST_POSITION",
+ t[t.FNC1_SECOND_POSITION = 8] = "FNC1_SECOND_POSITION",
+ t[t.HANZI = 9] = "HANZI"
+ }(G || (G = {}));
+ class Ie {
+ constructor(t, e, r, n)
+ {
+ this.value = t,
+ this.stringValue = e,
+ this.characterCountBitsForVersions = r,
+ this.bits = n,
+ Ie.FOR_BITS.set(n, this),
+ Ie.FOR_VALUE.set(t, this)
+ }
+ static forBits(t)
+ {
+ const e = Ie.FOR_BITS.get(t);
+ if (void 0 === e)
+ throw new a;
+ return e
+ }
+ getCharacterCountBits(t)
+ {
+ const e = t.getVersionNumber();
+ let r;
+ return r = e <= 9 ? 0 : e <= 26 ? 1 : 2, this.characterCountBitsForVersions[r]
+ }
+ getValue()
+ {
+ return this.value
+ }
+ getBits()
+ {
+ return this.bits
+ }
+ equals(t)
+ {
+ if (!(t instanceof Ie))
+ return !1;
+ const e = t;
+ return this.value === e.value
+ }
+ toString()
+ {
+ return this.stringValue
+ }
+ }
+ Ie.FOR_BITS = new Map,
+ Ie.FOR_VALUE = new Map,
+ Ie.TERMINATOR = new Ie(G.TERMINATOR, "TERMINATOR", Int32Array.from([0, 0, 0]), 0),
+ Ie.NUMERIC = new Ie(G.NUMERIC, "NUMERIC", Int32Array.from([10, 12, 14]), 1),
+ Ie.ALPHANUMERIC = new Ie(G.ALPHANUMERIC, "ALPHANUMERIC", Int32Array.from([9, 11, 13]), 2),
+ Ie.STRUCTURED_APPEND = new Ie(G.STRUCTURED_APPEND, "STRUCTURED_APPEND", Int32Array.from([0, 0, 0]), 3),
+ Ie.BYTE = new Ie(G.BYTE, "BYTE", Int32Array.from([8, 16, 16]), 4),
+ Ie.ECI = new Ie(G.ECI, "ECI", Int32Array.from([0, 0, 0]), 7),
+ Ie.KANJI = new Ie(G.KANJI, "KANJI", Int32Array.from([8, 10, 12]), 8),
+ Ie.FNC1_FIRST_POSITION = new Ie(G.FNC1_FIRST_POSITION, "FNC1_FIRST_POSITION", Int32Array.from([0, 0, 0]), 5),
+ Ie.FNC1_SECOND_POSITION = new Ie(G.FNC1_SECOND_POSITION, "FNC1_SECOND_POSITION", Int32Array.from([0, 0, 0]), 9),
+ Ie.HANZI = new Ie(G.HANZI, "HANZI", Int32Array.from([8, 10, 12]), 13);
+ class pe {
+ static decode(t, e, r, n)
+ {
+ const i = new ae(t);
+ let o = new T;
+ const s = new Array;
+ let a = -1,
+ l = -1;
+ try {
+ let t,
+ r = null,
+ c = !1;
+ do {
+ if (i.available() < 4)
+ t = Ie.TERMINATOR;
+ else {
+ const e = i.readBits(4);
+ t = Ie.forBits(e)
+ }
+ switch (t) {
+ case Ie.TERMINATOR:
+ break;
+ case Ie.FNC1_FIRST_POSITION:
+ case Ie.FNC1_SECOND_POSITION:
+ c = !0;
+ break;
+ case Ie.STRUCTURED_APPEND:
+ if (i.available() < 16)
+ throw new C;
+ a = i.readBits(8),
+ l = i.readBits(8);
+ break;
+ case Ie.ECI:
+ const h = pe.parseECIValue(i);
+ if (r = I.getCharacterSetECIByValue(h), null === r)
+ throw new C;
+ break;
+ case Ie.HANZI:
+ const u = i.readBits(4),
+ d = i.readBits(t.getCharacterCountBits(e));
+ u === pe.GB2312_SUBSET && pe.decodeHanziSegment(i, o, d);
+ break;
+ default:
+ const g = i.readBits(t.getCharacterCountBits(e));
+ switch (t) {
+ case Ie.NUMERIC:
+ pe.decodeNumericSegment(i, o, g);
+ break;
+ case Ie.ALPHANUMERIC:
+ pe.decodeAlphanumericSegment(i, o, g, c);
+ break;
+ case Ie.BYTE:
+ pe.decodeByteSegment(i, o, g, r, s, n);
+ break;
+ case Ie.KANJI:
+ pe.decodeKanjiSegment(i, o, g);
+ break;
+ default:
+ throw new C
+ }
+ }
+ } while (t !== Ie.TERMINATOR)
+ } catch (t) {
+ throw new C
+ }
+ return new W(t, o.toString(), 0 === s.length ? null : s, null === r ? null : r.toString(), a, l)
+ }
+ static decodeHanziSegment(t, e, r)
+ {
+ if (13 * r > t.available())
+ throw new C;
+ const n = new Uint8Array(2 * r);
+ let i = 0;
+ for (; r > 0;) {
+ const e = t.readBits(13);
+ let o = e / 96 << 8 & 4294967295 | e % 96;
+ o += o < 959 ? 41377 : 42657,
+ n[i] = o >> 8 & 255,
+ n[i + 1] = 255 & o,
+ i += 2,
+ r--
+ }
+ try {
+ e.append(S.decode(n, _.GB2312))
+ } catch (t) {
+ throw new C(t)
+ }
+ }
+ static decodeKanjiSegment(t, e, r)
+ {
+ if (13 * r > t.available())
+ throw new C;
+ const n = new Uint8Array(2 * r);
+ let i = 0;
+ for (; r > 0;) {
+ const e = t.readBits(13);
+ let o = e / 192 << 8 & 4294967295 | e % 192;
+ o += o < 7936 ? 33088 : 49472,
+ n[i] = o >> 8,
+ n[i + 1] = o,
+ i += 2,
+ r--
+ }
+ try {
+ e.append(S.decode(n, _.SHIFT_JIS))
+ } catch (t) {
+ throw new C(t)
+ }
+ }
+ static decodeByteSegment(t, e, r, n, i, o)
+ {
+ if (8 * r > t.available())
+ throw new C;
+ const s = new Uint8Array(r);
+ for (let e = 0; e < r; e++)
+ s[e] = t.readBits(8);
+ let a;
+ a = null === n ? _.guessEncoding(s, o) : n.getName();
+ try {
+ e.append(S.decode(s, a))
+ } catch (t) {
+ throw new C(t)
+ }
+ i.push(s)
+ }
+ static toAlphaNumericChar(t)
+ {
+ if (t >= pe.ALPHANUMERIC_CHARS.length)
+ throw new C;
+ return pe.ALPHANUMERIC_CHARS[t]
+ }
+ static decodeAlphanumericSegment(t, e, r, n)
+ {
+ const i = e.length();
+ for (; r > 1;) {
+ if (t.available() < 11)
+ throw new C;
+ const n = t.readBits(11);
+ e.append(pe.toAlphaNumericChar(Math.floor(n / 45))),
+ e.append(pe.toAlphaNumericChar(n % 45)),
+ r -= 2
+ }
+ if (1 === r) {
+ if (t.available() < 6)
+ throw new C;
+ e.append(pe.toAlphaNumericChar(t.readBits(6)))
+ }
+ if (n)
+ for (let t = i; t < e.length(); t++)
+ "%" === e.charAt(t) && (t < e.length() - 1 && "%" === e.charAt(t + 1) ? e.deleteCharAt(t + 1) : e.setCharAt(t, String.fromCharCode(29)))
+ }
+ static decodeNumericSegment(t, e, r)
+ {
+ for (; r >= 3;) {
+ if (t.available() < 10)
+ throw new C;
+ const n = t.readBits(10);
+ if (n >= 1e3)
+ throw new C;
+ e.append(pe.toAlphaNumericChar(Math.floor(n / 100))),
+ e.append(pe.toAlphaNumericChar(Math.floor(n / 10) % 10)),
+ e.append(pe.toAlphaNumericChar(n % 10)),
+ r -= 3
+ }
+ if (2 === r) {
+ if (t.available() < 7)
+ throw new C;
+ const r = t.readBits(7);
+ if (r >= 100)
+ throw new C;
+ e.append(pe.toAlphaNumericChar(Math.floor(r / 10))),
+ e.append(pe.toAlphaNumericChar(r % 10))
+ } else if (1 === r) {
+ if (t.available() < 4)
+ throw new C;
+ const r = t.readBits(4);
+ if (r >= 10)
+ throw new C;
+ e.append(pe.toAlphaNumericChar(r))
+ }
+ }
+ static parseECIValue(t)
+ {
+ const e = t.readBits(8);
+ if (0 == (128 & e))
+ return 127 & e;
+ if (128 == (192 & e))
+ return (63 & e) << 8 & 4294967295 | t.readBits(8);
+ if (192 == (224 & e))
+ return (31 & e) << 16 & 4294967295 | t.readBits(16);
+ throw new C
+ }
+ }
+ pe.ALPHANUMERIC_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",
+ pe.GB2312_SUBSET = 1;
+ class Se {
+ constructor(t)
+ {
+ this.mirrored = t
+ }
+ isMirrored()
+ {
+ return this.mirrored
+ }
+ applyMirroredCorrection(t)
+ {
+ if (!this.mirrored || null === t || t.length < 3)
+ return;
+ const e = t[0];
+ t[0] = t[2],
+ t[2] = e
+ }
+ }
+ class _e {
+ constructor()
+ {
+ this.rsDecoder = new $(K.QR_CODE_FIELD_256)
+ }
+ decodeBooleanArray(t, e)
+ {
+ return this.decodeBitMatrix(y.parseFromBooleanArray(t), e)
+ }
+ decodeBitMatrix(t, e)
+ {
+ const r = new Ee(t);
+ let n = null;
+ try {
+ return this.decodeBitMatrixParser(r, e)
+ } catch (t) {
+ n = t
+ }
+ try {
+ r.remask(),
+ r.setMirror(!0),
+ r.readVersion(),
+ r.readFormatInformation(),
+ r.mirror();
+ const t = this.decodeBitMatrixParser(r, e);
+ return t.setOther(new Se(!0)), t
+ } catch (t) {
+ if (null !== n)
+ throw n;
+ throw t
+ }
+ }
+ decodeBitMatrixParser(t, e)
+ {
+ const r = t.readVersion(),
+ n = t.readFormatInformation().getErrorCorrectionLevel(),
+ i = t.readCodewords(),
+ o = Ce.getDataBlocks(i, r, n);
+ let s = 0;
+ for (const t of o)
+ s += t.getNumDataCodewords();
+ const a = new Uint8Array(s);
+ let l = 0;
+ for (const t of o) {
+ const e = t.getCodewords(),
+ r = t.getNumDataCodewords();
+ this.correctErrors(e, r);
+ for (let t = 0; t < r; t++)
+ a[l++] = e[t]
+ }
+ return pe.decode(a, r, n, e)
+ }
+ correctErrors(t, e)
+ {
+ const r = new Int32Array(t);
+ try {
+ this.rsDecoder.decode(r, t.length - e)
+ } catch (t) {
+ throw new c
+ }
+ for (let n = 0; n < e; n++)
+ t[n] = r[n]
+ }
+ }
+ class Te extends nt {
+ constructor(t, e, r)
+ {
+ super(t, e),
+ this.estimatedModuleSize = r
+ }
+ aboutEquals(t, e, r)
+ {
+ if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) {
+ const e = Math.abs(t - this.estimatedModuleSize);
+ return e <= 1 || e <= this.estimatedModuleSize
+ }
+ return !1
+ }
+ combineEstimate(t, e, r)
+ {
+ const n = (this.getX() + e) / 2,
+ i = (this.getY() + t) / 2,
+ o = (this.estimatedModuleSize + r) / 2;
+ return new Te(n, i, o)
+ }
+ }
+ class ye {
+ constructor(t, e, r, n, i, o, s)
+ {
+ this.image = t,
+ this.startX = e,
+ this.startY = r,
+ this.width = n,
+ this.height = i,
+ this.moduleSize = o,
+ this.resultPointCallback = s,
+ this.possibleCenters = [],
+ this.crossCheckStateCount = new Int32Array(3)
+ }
+ find()
+ {
+ const t = this.startX,
+ e = this.height,
+ r = t + this.width,
+ n = this.startY + e / 2,
+ i = new Int32Array(3),
+ o = this.image;
+ for (let s = 0; s < e; s++) {
+ const e = n + (0 == (1 & s) ? Math.floor((s + 1) / 2) : -Math.floor((s + 1) / 2));
+ i[0] = 0,
+ i[1] = 0,
+ i[2] = 0;
+ let a = t;
+ for (; a < r && !o.get(a, e);)
+ a++;
+ let l = 0;
+ for (; a < r;) {
+ if (o.get(a, e))
+ if (1 === l)
+ i[1]++;
+ else if (2 === l) {
+ if (this.foundPatternCross(i)) {
+ const t = this.handlePossibleCenter(i, e, a);
+ if (null !== t)
+ return t
+ }
+ i[0] = i[2],
+ i[1] = 1,
+ i[2] = 0,
+ l = 1
+ } else
+ i[++l]++;
+ else
+ 1 === l && l++,
+ i[l]++;
+ a++
+ }
+ if (this.foundPatternCross(i)) {
+ const t = this.handlePossibleCenter(i, e, r);
+ if (null !== t)
+ return t
+ }
+ }
+ if (0 !== this.possibleCenters.length)
+ return this.possibleCenters[0];
+ throw new N
+ }
+ static centerFromEnd(t, e)
+ {
+ return e - t[2] - t[1] / 2
+ }
+ foundPatternCross(t)
+ {
+ const e = this.moduleSize,
+ r = e / 2;
+ for (let n = 0; n < 3; n++)
+ if (Math.abs(e - t[n]) >= r)
+ return !1;
+ return !0
+ }
+ crossCheckVertical(t, e, r, n)
+ {
+ const i = this.image,
+ o = i.getHeight(),
+ s = this.crossCheckStateCount;
+ s[0] = 0,
+ s[1] = 0,
+ s[2] = 0;
+ let a = t;
+ for (; a >= 0 && i.get(e, a) && s[1] <= r;)
+ s[1]++,
+ a--;
+ if (a < 0 || s[1] > r)
+ return NaN;
+ for (; a >= 0 && !i.get(e, a) && s[0] <= r;)
+ s[0]++,
+ a--;
+ if (s[0] > r)
+ return NaN;
+ for (a = t + 1; a < o && i.get(e, a) && s[1] <= r;)
+ s[1]++,
+ a++;
+ if (a === o || s[1] > r)
+ return NaN;
+ for (; a < o && !i.get(e, a) && s[2] <= r;)
+ s[2]++,
+ a++;
+ if (s[2] > r)
+ return NaN;
+ const l = s[0] + s[1] + s[2];
+ return 5 * Math.abs(l - n) >= 2 * n ? NaN : this.foundPatternCross(s) ? ye.centerFromEnd(s, a) : NaN
+ }
+ handlePossibleCenter(t, e, r)
+ {
+ const n = t[0] + t[1] + t[2],
+ i = ye.centerFromEnd(t, r),
+ o = this.crossCheckVertical(e, i, 2 * t[1], n);
+ if (!isNaN(o)) {
+ const e = (t[0] + t[1] + t[2]) / 3;
+ for (const t of this.possibleCenters)
+ if (t.aboutEquals(e, o, i))
+ return t.combineEstimate(o, i, e);
+ const r = new Te(i, o, e);
+ this.possibleCenters.push(r),
+ null !== this.resultPointCallback && void 0 !== this.resultPointCallback && this.resultPointCallback.foundPossibleResultPoint(r)
+ }
+ return null
+ }
+ }
+ class Ne extends nt {
+ constructor(t, e, r, n)
+ {
+ super(t, e),
+ this.estimatedModuleSize = r,
+ this.count = n,
+ void 0 === n && (this.count = 1)
+ }
+ getEstimatedModuleSize()
+ {
+ return this.estimatedModuleSize
+ }
+ getCount()
+ {
+ return this.count
+ }
+ aboutEquals(t, e, r)
+ {
+ if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) {
+ const e = Math.abs(t - this.estimatedModuleSize);
+ return e <= 1 || e <= this.estimatedModuleSize
+ }
+ return !1
+ }
+ combineEstimate(t, e, r)
+ {
+ const n = this.count + 1,
+ i = (this.count * this.getX() + e) / n,
+ o = (this.count * this.getY() + t) / n,
+ s = (this.count * this.estimatedModuleSize + r) / n;
+ return new Ne(i, o, s, n)
+ }
+ }
+ class Me {
+ constructor(t)
+ {
+ this.bottomLeft = t[0],
+ this.topLeft = t[1],
+ this.topRight = t[2]
+ }
+ getBottomLeft()
+ {
+ return this.bottomLeft
+ }
+ getTopLeft()
+ {
+ return this.topLeft
+ }
+ getTopRight()
+ {
+ return this.topRight
+ }
+ }
+ class De {
+ constructor(t, e)
+ {
+ this.image = t,
+ this.resultPointCallback = e,
+ this.possibleCenters = [],
+ this.crossCheckStateCount = new Int32Array(5),
+ this.resultPointCallback = e
+ }
+ getImage()
+ {
+ return this.image
+ }
+ getPossibleCenters()
+ {
+ return this.possibleCenters
+ }
+ find(t)
+ {
+ const e = null != t && void 0 !== t.get(E.TRY_HARDER),
+ r = null != t && void 0 !== t.get(E.PURE_BARCODE),
+ n = this.image,
+ i = n.getHeight(),
+ o = n.getWidth();
+ let s = Math.floor(3 * i / (4 * De.MAX_MODULES));
+ (s < De.MIN_SKIP || e) && (s = De.MIN_SKIP);
+ let a = !1;
+ const l = new Int32Array(5);
+ for (let t = s - 1; t < i && !a; t += s) {
+ l[0] = 0,
+ l[1] = 0,
+ l[2] = 0,
+ l[3] = 0,
+ l[4] = 0;
+ let e = 0;
+ for (let i = 0; i < o; i++)
+ if (n.get(i, t))
+ 1 == (1 & e) && e++,
+ l[e]++;
+ else if (0 == (1 & e))
+ if (4 === e)
+ if (De.foundPatternCross(l)) {
+ if (!0 !== this.handlePossibleCenter(l, t, i, r)) {
+ l[0] = l[2],
+ l[1] = l[3],
+ l[2] = l[4],
+ l[3] = 1,
+ l[4] = 0,
+ e = 3;
+ continue
+ }
+ if (s = 2, !0 === this.hasSkipped)
+ a = this.haveMultiplyConfirmedCenters();
+ else {
+ const e = this.findRowSkip();
+ e > l[2] && (t += e - l[2] - s, i = o - 1)
+ }
+ e = 0,
+ l[0] = 0,
+ l[1] = 0,
+ l[2] = 0,
+ l[3] = 0,
+ l[4] = 0
+ } else
+ l[0] = l[2],
+ l[1] = l[3],
+ l[2] = l[4],
+ l[3] = 1,
+ l[4] = 0,
+ e = 3;
+ else
+ l[++e]++;
+ else
+ l[e]++;
+ De.foundPatternCross(l) && !0 === this.handlePossibleCenter(l, t, o, r) && (s = l[0], this.hasSkipped && (a = this.haveMultiplyConfirmedCenters()))
+ }
+ const c = this.selectBestPatterns();
+ return nt.orderBestPatterns(c), new Me(c)
+ }
+ static centerFromEnd(t, e)
+ {
+ return e - t[4] - t[3] - t[2] / 2
+ }
+ static foundPatternCross(t)
+ {
+ let e = 0;
+ for (let r = 0; r < 5; r++) {
+ const n = t[r];
+ if (0 === n)
+ return !1;
+ e += n
+ }
+ if (e < 7)
+ return !1;
+ const r = e / 7,
+ n = r / 2;
+ return Math.abs(r - t[0]) < n && Math.abs(r - t[1]) < n && Math.abs(3 * r - t[2]) < 3 * n && Math.abs(r - t[3]) < n && Math.abs(r - t[4]) < n
+ }
+ getCrossCheckStateCount()
+ {
+ const t = this.crossCheckStateCount;
+ return t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t
+ }
+ crossCheckDiagonal(t, e, r, n)
+ {
+ const i = this.getCrossCheckStateCount();
+ let o = 0;
+ const s = this.image;
+ for (; t >= o && e >= o && s.get(e - o, t - o);)
+ i[2]++,
+ o++;
+ if (t < o || e < o)
+ return !1;
+ for (; t >= o && e >= o && !s.get(e - o, t - o) && i[1] <= r;)
+ i[1]++,
+ o++;
+ if (t < o || e < o || i[1] > r)
+ return !1;
+ for (; t >= o && e >= o && s.get(e - o, t - o) && i[0] <= r;)
+ i[0]++,
+ o++;
+ if (i[0] > r)
+ return !1;
+ const a = s.getHeight(),
+ l = s.getWidth();
+ for (o = 1; t + o < a && e + o < l && s.get(e + o, t + o);)
+ i[2]++,
+ o++;
+ if (t + o >= a || e + o >= l)
+ return !1;
+ for (; t + o < a && e + o < l && !s.get(e + o, t + o) && i[3] < r;)
+ i[3]++,
+ o++;
+ if (t + o >= a || e + o >= l || i[3] >= r)
+ return !1;
+ for (; t + o < a && e + o < l && s.get(e + o, t + o) && i[4] < r;)
+ i[4]++,
+ o++;
+ if (i[4] >= r)
+ return !1;
+ const c = i[0] + i[1] + i[2] + i[3] + i[4];
+ return Math.abs(c - n) < 2 * n && De.foundPatternCross(i)
+ }
+ crossCheckVertical(t, e, r, n)
+ {
+ const i = this.image,
+ o = i.getHeight(),
+ s = this.getCrossCheckStateCount();
+ let a = t;
+ for (; a >= 0 && i.get(e, a);)
+ s[2]++,
+ a--;
+ if (a < 0)
+ return NaN;
+ for (; a >= 0 && !i.get(e, a) && s[1] <= r;)
+ s[1]++,
+ a--;
+ if (a < 0 || s[1] > r)
+ return NaN;
+ for (; a >= 0 && i.get(e, a) && s[0] <= r;)
+ s[0]++,
+ a--;
+ if (s[0] > r)
+ return NaN;
+ for (a = t + 1; a < o && i.get(e, a);)
+ s[2]++,
+ a++;
+ if (a === o)
+ return NaN;
+ for (; a < o && !i.get(e, a) && s[3] < r;)
+ s[3]++,
+ a++;
+ if (a === o || s[3] >= r)
+ return NaN;
+ for (; a < o && i.get(e, a) && s[4] < r;)
+ s[4]++,
+ a++;
+ if (s[4] >= r)
+ return NaN;
+ const l = s[0] + s[1] + s[2] + s[3] + s[4];
+ return 5 * Math.abs(l - n) >= 2 * n ? NaN : De.foundPatternCross(s) ? De.centerFromEnd(s, a) : NaN
+ }
+ crossCheckHorizontal(t, e, r, n)
+ {
+ const i = this.image,
+ o = i.getWidth(),
+ s = this.getCrossCheckStateCount();
+ let a = t;
+ for (; a >= 0 && i.get(a, e);)
+ s[2]++,
+ a--;
+ if (a < 0)
+ return NaN;
+ for (; a >= 0 && !i.get(a, e) && s[1] <= r;)
+ s[1]++,
+ a--;
+ if (a < 0 || s[1] > r)
+ return NaN;
+ for (; a >= 0 && i.get(a, e) && s[0] <= r;)
+ s[0]++,
+ a--;
+ if (s[0] > r)
+ return NaN;
+ for (a = t + 1; a < o && i.get(a, e);)
+ s[2]++,
+ a++;
+ if (a === o)
+ return NaN;
+ for (; a < o && !i.get(a, e) && s[3] < r;)
+ s[3]++,
+ a++;
+ if (a === o || s[3] >= r)
+ return NaN;
+ for (; a < o && i.get(a, e) && s[4] < r;)
+ s[4]++,
+ a++;
+ if (s[4] >= r)
+ return NaN;
+ const l = s[0] + s[1] + s[2] + s[3] + s[4];
+ return 5 * Math.abs(l - n) >= n ? NaN : De.foundPatternCross(s) ? De.centerFromEnd(s, a) : NaN
+ }
+ handlePossibleCenter(t, e, r, n)
+ {
+ const i = t[0] + t[1] + t[2] + t[3] + t[4];
+ let o = De.centerFromEnd(t, r),
+ s = this.crossCheckVertical(e, Math.floor(o), t[2], i);
+ if (!isNaN(s) && (o = this.crossCheckHorizontal(Math.floor(o), Math.floor(s), t[2], i), !isNaN(o) && (!n || this.crossCheckDiagonal(Math.floor(s), Math.floor(o), t[2], i)))) {
+ const t = i / 7;
+ let e = !1;
+ const r = this.possibleCenters;
+ for (let n = 0, i = r.length; n < i; n++) {
+ const i = r[n];
+ if (i.aboutEquals(t, s, o)) {
+ r[n] = i.combineEstimate(s, o, t),
+ e = !0;
+ break
+ }
+ }
+ if (!e) {
+ const e = new Ne(o, s, t);
+ r.push(e),
+ null !== this.resultPointCallback && void 0 !== this.resultPointCallback && this.resultPointCallback.foundPossibleResultPoint(e)
+ }
+ return !0
+ }
+ return !1
+ }
+ findRowSkip()
+ {
+ if (this.possibleCenters.length <= 1)
+ return 0;
+ let t = null;
+ for (const e of this.possibleCenters)
+ if (e.getCount() >= De.CENTER_QUORUM) {
+ if (null != t)
+ return this.hasSkipped = !0, Math.floor((Math.abs(t.getX() - e.getX()) - Math.abs(t.getY() - e.getY())) / 2);
+ t = e
+ }
+ return 0
+ }
+ haveMultiplyConfirmedCenters()
+ {
+ let t = 0,
+ e = 0;
+ const r = this.possibleCenters.length;
+ for (const r of this.possibleCenters)
+ r.getCount() >= De.CENTER_QUORUM && (t++, e += r.getEstimatedModuleSize());
+ if (t < 3)
+ return !1;
+ const n = e / r;
+ let i = 0;
+ for (const t of this.possibleCenters)
+ i += Math.abs(t.getEstimatedModuleSize() - n);
+ return i <= .05 * e
+ }
+ selectBestPatterns()
+ {
+ const t = this.possibleCenters.length;
+ if (t < 3)
+ throw new N;
+ const e = this.possibleCenters;
+ let r;
+ if (t > 3) {
+ let n = 0,
+ i = 0;
+ for (const t of this.possibleCenters) {
+ const e = t.getEstimatedModuleSize();
+ n += e,
+ i += e * e
+ }
+ r = n / t;
+ let o = Math.sqrt(i / t - r * r);
+ e.sort(((t, e) => {
+ const n = Math.abs(e.getEstimatedModuleSize() - r),
+ i = Math.abs(t.getEstimatedModuleSize() - r);
+ return n < i ? -1 : n > i ? 1 : 0
+ }));
+ const s = Math.max(.2 * r, o);
+ for (let t = 0; t < e.length && e.length > 3; t++) {
+ const n = e[t];
+ Math.abs(n.getEstimatedModuleSize() - r) > s && (e.splice(t, 1), t--)
+ }
+ }
+ if (e.length > 3) {
+ let t = 0;
+ for (const r of e)
+ t += r.getEstimatedModuleSize();
+ r = t / e.length,
+ e.sort(((t, e) => {
+ if (e.getCount() === t.getCount()) {
+ const n = Math.abs(e.getEstimatedModuleSize() - r),
+ i = Math.abs(t.getEstimatedModuleSize() - r);
+ return n < i ? 1 : n > i ? -1 : 0
+ }
+ return e.getCount() - t.getCount()
+ })),
+ e.splice(3)
+ }
+ return [e[0], e[1], e[2]]
+ }
+ }
+ De.CENTER_QUORUM = 2,
+ De.MIN_SKIP = 3,
+ De.MAX_MODULES = 57;
+ class Re {
+ constructor(t)
+ {
+ this.image = t
+ }
+ getImage()
+ {
+ return this.image
+ }
+ getResultPointCallback()
+ {
+ return this.resultPointCallback
+ }
+ detect(t)
+ {
+ this.resultPointCallback = null == t ? null : t.get(E.NEED_RESULT_POINT_CALLBACK);
+ const e = new De(this.image, this.resultPointCallback).find(t);
+ return this.processFinderPatternInfo(e)
+ }
+ processFinderPatternInfo(t)
+ {
+ const e = t.getTopLeft(),
+ r = t.getTopRight(),
+ n = t.getBottomLeft(),
+ i = this.calculateModuleSize(e, r, n);
+ if (i < 1)
+ throw new N("No pattern found in proccess finder.");
+ const o = Re.computeDimension(e, r, n, i),
+ s = Ae.getProvisionalVersionForDimension(o),
+ a = s.getDimensionForVersion() - 7;
+ let l = null;
+ if (s.getAlignmentPatternCenters().length > 0) {
+ const t = r.getX() - e.getX() + n.getX(),
+ o = r.getY() - e.getY() + n.getY(),
+ s = 1 - 3 / a,
+ c = Math.floor(e.getX() + s * (t - e.getX())),
+ h = Math.floor(e.getY() + s * (o - e.getY()));
+ for (let t = 4; t <= 16; t <<= 1)
+ try {
+ l = this.findAlignmentInRegion(i, c, h, t);
+ break
+ } catch (t) {
+ if (!(t instanceof N))
+ throw t
+ }
+ }
+ const c = Re.createTransform(e, r, n, l, o),
+ h = Re.sampleGrid(this.image, c, o);
+ let u;
+ return u = null === l ? [n, e, r] : [n, e, r, l], new it(h, u)
+ }
+ static createTransform(t, e, r, n, i)
+ {
+ const o = i - 3.5;
+ let s,
+ a,
+ l,
+ c;
+ return null !== n ? (s = n.getX(), a = n.getY(), l = o - 3, c = l) : (s = e.getX() - t.getX() + r.getX(), a = e.getY() - t.getY() + r.getY(), l = o, c = o), lt.quadrilateralToQuadrilateral(3.5, 3.5, o, 3.5, l, c, 3.5, o, t.getX(), t.getY(), e.getX(), e.getY(), s, a, r.getX(), r.getY())
+ }
+ static sampleGrid(t, e, r)
+ {
+ return ht.getInstance().sampleGridWithTransform(t, r, r, e)
+ }
+ static computeDimension(t, e, r, n)
+ {
+ const i = et.round(nt.distance(t, e) / n),
+ o = et.round(nt.distance(t, r) / n);
+ let s = Math.floor((i + o) / 2) + 7;
+ switch (3 & s) {
+ case 0:
+ s++;
+ break;
+ case 2:
+ s--;
+ break;
+ case 3:
+ throw new N("Dimensions could be not found.")
+ }
+ return s
+ }
+ calculateModuleSize(t, e, r)
+ {
+ return (this.calculateModuleSizeOneWay(t, e) + this.calculateModuleSizeOneWay(t, r)) / 2
+ }
+ calculateModuleSizeOneWay(t, e)
+ {
+ const r = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.getX()), Math.floor(t.getY()), Math.floor(e.getX()), Math.floor(e.getY())),
+ n = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.getX()), Math.floor(e.getY()), Math.floor(t.getX()), Math.floor(t.getY()));
+ return isNaN(r) ? n / 7 : isNaN(n) ? r / 7 : (r + n) / 14
+ }
+ sizeOfBlackWhiteBlackRunBothWays(t, e, r, n)
+ {
+ let i = this.sizeOfBlackWhiteBlackRun(t, e, r, n),
+ o = 1,
+ s = t - (r - t);
+ s < 0 ? (o = t / (t - s), s = 0) : s >= this.image.getWidth() && (o = (this.image.getWidth() - 1 - t) / (s - t), s = this.image.getWidth() - 1);
+ let a = Math.floor(e - (n - e) * o);
+ return o = 1, a < 0 ? (o = e / (e - a), a = 0) : a >= this.image.getHeight() && (o = (this.image.getHeight() - 1 - e) / (a - e), a = this.image.getHeight() - 1), s = Math.floor(t + (s - t) * o), i += this.sizeOfBlackWhiteBlackRun(t, e, s, a), i - 1
+ }
+ sizeOfBlackWhiteBlackRun(t, e, r, n)
+ {
+ const i = Math.abs(n - e) > Math.abs(r - t);
+ if (i) {
+ let i = t;
+ t = e,
+ e = i,
+ i = r,
+ r = n,
+ n = i
+ }
+ const o = Math.abs(r - t),
+ s = Math.abs(n - e);
+ let a = -o / 2;
+ const l = t < r ? 1 : -1,
+ c = e < n ? 1 : -1;
+ let h = 0;
+ const u = r + l;
+ for (let r = t, d = e; r !== u; r += l) {
+ const l = i ? d : r,
+ u = i ? r : d;
+ if (1 === h === this.image.get(l, u)) {
+ if (2 === h)
+ return et.distance(r, d, t, e);
+ h++
+ }
+ if (a += s, a > 0) {
+ if (d === n)
+ break;
+ d += c,
+ a -= o
+ }
+ }
+ return 2 === h ? et.distance(r + l, n, t, e) : NaN
+ }
+ findAlignmentInRegion(t, e, r, n)
+ {
+ const i = Math.floor(n * t),
+ o = Math.max(0, e - i),
+ s = Math.min(this.image.getWidth() - 1, e + i);
+ if (s - o < 3 * t)
+ throw new N("Alignment top exceeds estimated module size.");
+ const a = Math.max(0, r - i),
+ l = Math.min(this.image.getHeight() - 1, r + i);
+ if (l - a < 3 * t)
+ throw new N("Alignment bottom exceeds estimated module size.");
+ return new ye(this.image, o, a, s - o, l - a, t, this.resultPointCallback).find()
+ }
+ }
+ class Oe {
+ constructor()
+ {
+ this.decoder = new _e
+ }
+ getDecoder()
+ {
+ return this.decoder
+ }
+ decode(t, e)
+ {
+ let r,
+ n;
+ if (null != e && void 0 !== e.get(E.PURE_BARCODE)) {
+ const i = Oe.extractPureBits(t.getBlackMatrix());
+ r = this.decoder.decodeBitMatrix(i, e),
+ n = Oe.NO_POINTS
+ } else {
+ const i = new Re(t.getBlackMatrix()).detect(e);
+ r = this.decoder.decodeBitMatrix(i.getBits(), e),
+ n = i.getPoints()
+ }
+ r.getOther() instanceof Se && r.getOther().applyMirroredCorrection(n);
+ const i = new F(r.getText(), r.getRawBytes(), void 0, n, k.QR_CODE, void 0),
+ o = r.getByteSegments();
+ null !== o && i.putMetadata(X.BYTE_SEGMENTS, o);
+ const s = r.getECLevel();
+ return null !== s && i.putMetadata(X.ERROR_CORRECTION_LEVEL, s), r.hasStructuredAppend() && (i.putMetadata(X.STRUCTURED_APPEND_SEQUENCE, r.getStructuredAppendSequenceNumber()), i.putMetadata(X.STRUCTURED_APPEND_PARITY, r.getStructuredAppendParity())), i
+ }
+ reset() {}
+ static extractPureBits(t)
+ {
+ const e = t.getTopLeftOnBit(),
+ r = t.getBottomRightOnBit();
+ if (null === e || null === r)
+ throw new N;
+ const n = this.moduleSize(e, t);
+ let i = e[1],
+ o = r[1],
+ s = e[0],
+ a = r[0];
+ if (s >= a || i >= o)
+ throw new N;
+ if (o - i != a - s && (a = s + (o - i), a >= t.getWidth()))
+ throw new N;
+ const l = Math.round((a - s + 1) / n),
+ c = Math.round((o - i + 1) / n);
+ if (l <= 0 || c <= 0)
+ throw new N;
+ if (c !== l)
+ throw new N;
+ const h = Math.floor(n / 2);
+ i += h,
+ s += h;
+ const u = s + Math.floor((l - 1) * n) - a;
+ if (u > 0) {
+ if (u > h)
+ throw new N;
+ s -= u
+ }
+ const d = i + Math.floor((c - 1) * n) - o;
+ if (d > 0) {
+ if (d > h)
+ throw new N;
+ i -= d
+ }
+ const g = new y(l, c);
+ for (let e = 0; e < c; e++) {
+ const r = i + Math.floor(e * n);
+ for (let i = 0; i < l; i++)
+ t.get(s + Math.floor(i * n), r) && g.set(i, e)
+ }
+ return g
+ }
+ static moduleSize(t, e)
+ {
+ const r = e.getHeight(),
+ n = e.getWidth();
+ let i = t[0],
+ o = t[1],
+ s = !0,
+ a = 0;
+ for (; i < n && o < r;) {
+ if (s !== e.get(i, o)) {
+ if (5 == ++a)
+ break;
+ s = !s
+ }
+ i++,
+ o++
+ }
+ if (i === n || o === r)
+ throw new N;
+ return (i - t[0]) / 7
+ }
+ }
+ Oe.NO_POINTS = new Array;
+ class be {
+ PDF417Common() {}
+ static getBitCountSum(t)
+ {
+ return et.sum(t)
+ }
+ static toIntArray(t)
+ {
+ if (null == t || !t.length)
+ return be.EMPTY_INT_ARRAY;
+ const e = new Int32Array(t.length);
+ let r = 0;
+ for (const n of t)
+ e[r++] = n;
+ return e
+ }
+ static getCodeword(t)
+ {
+ const e = f.binarySearch(be.SYMBOL_TABLE, 262143 & t);
+ return e < 0 ? -1 : (be.CODEWORD_TABLE[e] - 1) % be.NUMBER_OF_CODEWORDS
+ }
+ }
+ be.NUMBER_OF_CODEWORDS = 929,
+ be.MAX_CODEWORDS_IN_BARCODE = be.NUMBER_OF_CODEWORDS - 1,
+ be.MIN_ROWS_IN_BARCODE = 3,
+ be.MAX_ROWS_IN_BARCODE = 90,
+ be.MODULES_IN_CODEWORD = 17,
+ be.MODULES_IN_STOP_PATTERN = 18,
+ be.BARS_IN_MODULE = 8,
+ be.EMPTY_INT_ARRAY = new Int32Array([]),
+ be.SYMBOL_TABLE = Int32Array.from([66142, 66170, 66206, 66236, 66290, 66292, 66350, 66382, 66396, 66454, 66470, 66476, 66594, 66600, 66614, 66626, 66628, 66632, 66640, 66654, 66662, 66668, 66682, 66690, 66718, 66720, 66748, 66758, 66776, 66798, 66802, 66804, 66820, 66824, 66832, 66846, 66848, 66876, 66880, 66936, 66950, 66956, 66968, 66992, 67006, 67022, 67036, 67042, 67044, 67048, 67062, 67118, 67150, 67164, 67214, 67228, 67256, 67294, 67322, 67350, 67366, 67372, 67398, 67404, 67416, 67438, 67474, 67476, 67490, 67492, 67496, 67510, 67618, 67624, 67650, 67656, 67664, 67678, 67686, 67692, 67706, 67714, 67716, 67728, 67742, 67744, 67772, 67782, 67788, 67800, 67822, 67826, 67828, 67842, 67848, 67870, 67872, 67900, 67904, 67960, 67974, 67992, 68016, 68030, 68046, 68060, 68066, 68068, 68072, 68086, 68104, 68112, 68126, 68128, 68156, 68160, 68216, 68336, 68358, 68364, 68376, 68400, 68414, 68448, 68476, 68494, 68508, 68536, 68546, 68548, 68552, 68560, 68574, 68582, 68588, 68654, 68686, 68700, 68706, 68708, 68712, 68726, 68750, 68764, 68792, 68802, 68804, 68808, 68816, 68830, 68838, 68844, 68858, 68878, 68892, 68920, 68976, 68990, 68994, 68996, 69e3, 69008, 69022, 69024, 69052, 69062, 69068, 69080, 69102, 69106, 69108, 69142, 69158, 69164, 69190, 69208, 69230, 69254, 69260, 69272, 69296, 69310, 69326, 69340, 69386, 69394, 69396, 69410, 69416, 69430, 69442, 69444, 69448, 69456, 69470, 69478, 69484, 69554, 69556, 69666, 69672, 69698, 69704, 69712, 69726, 69754, 69762, 69764, 69776, 69790, 69792, 69820, 69830, 69836, 69848, 69870, 69874, 69876, 69890, 69918, 69920, 69948, 69952, 70008, 70022, 70040, 70064, 70078, 70094, 70108, 70114, 70116, 70120, 70134, 70152, 70174, 70176, 70264, 70384, 70412, 70448, 70462, 70496, 70524, 70542, 70556, 70584, 70594, 70600, 70608, 70622, 70630, 70636, 70664, 70672, 70686, 70688, 70716, 70720, 70776, 70896, 71136, 71180, 71192, 71216, 71230, 71264, 71292, 71360, 71416, 71452, 71480, 71536, 71550, 71554, 71556, 71560, 71568, 71582, 71584, 71612, 71622, 71628, 71640, 71662, 71726, 71732, 71758, 71772, 71778, 71780, 71784, 71798, 71822, 71836, 71864, 71874, 71880, 71888, 71902, 71910, 71916, 71930, 71950, 71964, 71992, 72048, 72062, 72066, 72068, 72080, 72094, 72096, 72124, 72134, 72140, 72152, 72174, 72178, 72180, 72206, 72220, 72248, 72304, 72318, 72416, 72444, 72456, 72464, 72478, 72480, 72508, 72512, 72568, 72588, 72600, 72624, 72638, 72654, 72668, 72674, 72676, 72680, 72694, 72726, 72742, 72748, 72774, 72780, 72792, 72814, 72838, 72856, 72880, 72894, 72910, 72924, 72930, 72932, 72936, 72950, 72966, 72972, 72984, 73008, 73022, 73056, 73084, 73102, 73116, 73144, 73156, 73160, 73168, 73182, 73190, 73196, 73210, 73226, 73234, 73236, 73250, 73252, 73256, 73270, 73282, 73284, 73296, 73310, 73318, 73324, 73346, 73348, 73352, 73360, 73374, 73376, 73404, 73414, 73420, 73432, 73454, 73498, 73518, 73522, 73524, 73550, 73564, 73570, 73572, 73576, 73590, 73800, 73822, 73858, 73860, 73872, 73886, 73888, 73916, 73944, 73970, 73972, 73992, 74014, 74016, 74044, 74048, 74104, 74118, 74136, 74160, 74174, 74210, 74212, 74216, 74230, 74244, 74256, 74270, 74272, 74360, 74480, 74502, 74508, 74544, 74558, 74592, 74620, 74638, 74652, 74680, 74690, 74696, 74704, 74726, 74732, 74782, 74784, 74812, 74992, 75232, 75288, 75326, 75360, 75388, 75456, 75512, 75576, 75632, 75646, 75650, 75652, 75664, 75678, 75680, 75708, 75718, 75724, 75736, 75758, 75808, 75836, 75840, 75896, 76016, 76256, 76736, 76824, 76848, 76862, 76896, 76924, 76992, 77048, 77296, 77340, 77368, 77424, 77438, 77536, 77564, 77572, 77576, 77584, 77600, 77628, 77632, 77688, 77702, 77708, 77720, 77744, 77758, 77774, 77788, 77870, 77902, 77916, 77922, 77928, 77966, 77980, 78008, 78018, 78024, 78032, 78046, 78060, 78074, 78094, 78136, 78192, 78206, 78210, 78212, 78224, 78238, 78240, 78268, 78278, 78284, 78296, 78322, 78324, 78350, 78364, 78448, 78462, 78560, 78588, 78600, 78622, 78624, 78652, 78656, 78712, 78726, 78744, 78768, 78782, 78798, 78812, 78818, 78820, 78824, 78838, 78862, 78876, 78904, 78960, 78974, 79072, 79100, 79296, 79352, 79368, 79376, 79390, 79392, 79420, 79424, 79480, 79600, 79628, 79640, 79664, 79678, 79712, 79740, 79772, 79800, 79810, 79812, 79816, 79824, 79838, 79846, 79852, 79894, 79910, 79916, 79942, 79948, 79960, 79982, 79988, 80006, 80024, 80048, 80062, 80078, 80092, 80098, 80100, 80104, 80134, 80140, 80176, 80190, 80224, 80252, 80270, 80284, 80312, 80328, 80336, 80350, 80358, 80364, 80378, 80390, 80396, 80408, 80432, 80446, 80480, 80508, 80576, 80632, 80654, 80668, 80696, 80752, 80766, 80776, 80784, 80798, 80800, 80828, 80844, 80856, 80878, 80882, 80884, 80914, 80916, 80930, 80932, 80936, 80950, 80962, 80968, 80976, 80990, 80998, 81004, 81026, 81028, 81040, 81054, 81056, 81084, 81094, 81100, 81112, 81134, 81154, 81156, 81160, 81168, 81182, 81184, 81212, 81216, 81272, 81286, 81292, 81304, 81328, 81342, 81358, 81372, 81380, 81384, 81398, 81434, 81454, 81458, 81460, 81486, 81500, 81506, 81508, 81512, 81526, 81550, 81564, 81592, 81602, 81604, 81608, 81616, 81630, 81638, 81644, 81702, 81708, 81722, 81734, 81740, 81752, 81774, 81778, 81780, 82050, 82078, 82080, 82108, 82180, 82184, 82192, 82206, 82208, 82236, 82240, 82296, 82316, 82328, 82352, 82366, 82402, 82404, 82408, 82440, 82448, 82462, 82464, 82492, 82496, 82552, 82672, 82694, 82700, 82712, 82736, 82750, 82784, 82812, 82830, 82882, 82884, 82888, 82896, 82918, 82924, 82952, 82960, 82974, 82976, 83004, 83008, 83064, 83184, 83424, 83468, 83480, 83504, 83518, 83552, 83580, 83648, 83704, 83740, 83768, 83824, 83838, 83842, 83844, 83848, 83856, 83872, 83900, 83910, 83916, 83928, 83950, 83984, 84e3, 84028, 84032, 84088, 84208, 84448, 84928, 85040, 85054, 85088, 85116, 85184, 85240, 85488, 85560, 85616, 85630, 85728, 85756, 85764, 85768, 85776, 85790, 85792, 85820, 85824, 85880, 85894, 85900, 85912, 85936, 85966, 85980, 86048, 86080, 86136, 86256, 86496, 86976, 88160, 88188, 88256, 88312, 88560, 89056, 89200, 89214, 89312, 89340, 89536, 89592, 89608, 89616, 89632, 89664, 89720, 89840, 89868, 89880, 89904, 89952, 89980, 89998, 90012, 90040, 90190, 90204, 90254, 90268, 90296, 90306, 90308, 90312, 90334, 90382, 90396, 90424, 90480, 90494, 90500, 90504, 90512, 90526, 90528, 90556, 90566, 90572, 90584, 90610, 90612, 90638, 90652, 90680, 90736, 90750, 90848, 90876, 90884, 90888, 90896, 90910, 90912, 90940, 90944, 91e3, 91014, 91020, 91032, 91056, 91070, 91086, 91100, 91106, 91108, 91112, 91126, 91150, 91164, 91192, 91248, 91262, 91360, 91388, 91584, 91640, 91664, 91678, 91680, 91708, 91712, 91768, 91888, 91928, 91952, 91966, 92e3, 92028, 92046, 92060, 92088, 92098, 92100, 92104, 92112, 92126, 92134, 92140, 92188, 92216, 92272, 92384, 92412, 92608, 92664, 93168, 93200, 93214, 93216, 93244, 93248, 93304, 93424, 93664, 93720, 93744, 93758, 93792, 93820, 93888, 93944, 93980, 94008, 94064, 94078, 94084, 94088, 94096, 94110, 94112, 94140, 94150, 94156, 94168, 94246, 94252, 94278, 94284, 94296, 94318, 94342, 94348, 94360, 94384, 94398, 94414, 94428, 94440, 94470, 94476, 94488, 94512, 94526, 94560, 94588, 94606, 94620, 94648, 94658, 94660, 94664, 94672, 94686, 94694, 94700, 94714, 94726, 94732, 94744, 94768, 94782, 94816, 94844, 94912, 94968, 94990, 95004, 95032, 95088, 95102, 95112, 95120, 95134, 95136, 95164, 95180, 95192, 95214, 95218, 95220, 95244, 95256, 95280, 95294, 95328, 95356, 95424, 95480, 95728, 95758, 95772, 95800, 95856, 95870, 95968, 95996, 96008, 96016, 96030, 96032, 96060, 96064, 96120, 96152, 96176, 96190, 96220, 96226, 96228, 96232, 96290, 96292, 96296, 96310, 96322, 96324, 96328, 96336, 96350, 96358, 96364, 96386, 96388, 96392, 96400, 96414, 96416, 96444, 96454, 96460, 96472, 96494, 96498, 96500, 96514, 96516, 96520, 96528, 96542, 96544, 96572, 96576, 96632, 96646, 96652, 96664, 96688, 96702, 96718, 96732, 96738, 96740, 96744, 96758, 96772, 96776, 96784, 96798, 96800, 96828, 96832, 96888, 97008, 97030, 97036, 97048, 97072, 97086, 97120, 97148, 97166, 97180, 97208, 97220, 97224, 97232, 97246, 97254, 97260, 97326, 97330, 97332, 97358, 97372, 97378, 97380, 97384, 97398, 97422, 97436, 97464, 97474, 97476, 97480, 97488, 97502, 97510, 97516, 97550, 97564, 97592, 97648, 97666, 97668, 97672, 97680, 97694, 97696, 97724, 97734, 97740, 97752, 97774, 97830, 97836, 97850, 97862, 97868, 97880, 97902, 97906, 97908, 97926, 97932, 97944, 97968, 97998, 98012, 98018, 98020, 98024, 98038, 98618, 98674, 98676, 98838, 98854, 98874, 98892, 98904, 98926, 98930, 98932, 98968, 99006, 99042, 99044, 99048, 99062, 99166, 99194, 99246, 99286, 99350, 99366, 99372, 99386, 99398, 99416, 99438, 99442, 99444, 99462, 99504, 99518, 99534, 99548, 99554, 99556, 99560, 99574, 99590, 99596, 99608, 99632, 99646, 99680, 99708, 99726, 99740, 99768, 99778, 99780, 99784, 99792, 99806, 99814, 99820, 99834, 99858, 99860, 99874, 99880, 99894, 99906, 99920, 99934, 99962, 99970, 99972, 99976, 99984, 99998, 1e5, 100028, 100038, 100044, 100056, 100078, 100082, 100084, 100142, 100174, 100188, 100246, 100262, 100268, 100306, 100308, 100390, 100396, 100410, 100422, 100428, 100440, 100462, 100466, 100468, 100486, 100504, 100528, 100542, 100558, 100572, 100578, 100580, 100584, 100598, 100620, 100656, 100670, 100704, 100732, 100750, 100792, 100802, 100808, 100816, 100830, 100838, 100844, 100858, 100888, 100912, 100926, 100960, 100988, 101056, 101112, 101148, 101176, 101232, 101246, 101250, 101252, 101256, 101264, 101278, 101280, 101308, 101318, 101324, 101336, 101358, 101362, 101364, 101410, 101412, 101416, 101430, 101442, 101448, 101456, 101470, 101478, 101498, 101506, 101508, 101520, 101534, 101536, 101564, 101580, 101618, 101620, 101636, 101640, 101648, 101662, 101664, 101692, 101696, 101752, 101766, 101784, 101838, 101858, 101860, 101864, 101934, 101938, 101940, 101966, 101980, 101986, 101988, 101992, 102030, 102044, 102072, 102082, 102084, 102088, 102096, 102138, 102166, 102182, 102188, 102214, 102220, 102232, 102254, 102282, 102290, 102292, 102306, 102308, 102312, 102326, 102444, 102458, 102470, 102476, 102488, 102514, 102516, 102534, 102552, 102576, 102590, 102606, 102620, 102626, 102632, 102646, 102662, 102668, 102704, 102718, 102752, 102780, 102798, 102812, 102840, 102850, 102856, 102864, 102878, 102886, 102892, 102906, 102936, 102974, 103008, 103036, 103104, 103160, 103224, 103280, 103294, 103298, 103300, 103312, 103326, 103328, 103356, 103366, 103372, 103384, 103406, 103410, 103412, 103472, 103486, 103520, 103548, 103616, 103672, 103920, 103992, 104048, 104062, 104160, 104188, 104194, 104196, 104200, 104208, 104224, 104252, 104256, 104312, 104326, 104332, 104344, 104368, 104382, 104398, 104412, 104418, 104420, 104424, 104482, 104484, 104514, 104520, 104528, 104542, 104550, 104570, 104578, 104580, 104592, 104606, 104608, 104636, 104652, 104690, 104692, 104706, 104712, 104734, 104736, 104764, 104768, 104824, 104838, 104856, 104910, 104930, 104932, 104936, 104968, 104976, 104990, 104992, 105020, 105024, 105080, 105200, 105240, 105278, 105312, 105372, 105410, 105412, 105416, 105424, 105446, 105518, 105524, 105550, 105564, 105570, 105572, 105576, 105614, 105628, 105656, 105666, 105672, 105680, 105702, 105722, 105742, 105756, 105784, 105840, 105854, 105858, 105860, 105864, 105872, 105888, 105932, 105970, 105972, 106006, 106022, 106028, 106054, 106060, 106072, 106100, 106118, 106124, 106136, 106160, 106174, 106190, 106210, 106212, 106216, 106250, 106258, 106260, 106274, 106276, 106280, 106306, 106308, 106312, 106320, 106334, 106348, 106394, 106414, 106418, 106420, 106566, 106572, 106610, 106612, 106630, 106636, 106648, 106672, 106686, 106722, 106724, 106728, 106742, 106758, 106764, 106776, 106800, 106814, 106848, 106876, 106894, 106908, 106936, 106946, 106948, 106952, 106960, 106974, 106982, 106988, 107032, 107056, 107070, 107104, 107132, 107200, 107256, 107292, 107320, 107376, 107390, 107394, 107396, 107400, 107408, 107422, 107424, 107452, 107462, 107468, 107480, 107502, 107506, 107508, 107544, 107568, 107582, 107616, 107644, 107712, 107768, 108016, 108060, 108088, 108144, 108158, 108256, 108284, 108290, 108292, 108296, 108304, 108318, 108320, 108348, 108352, 108408, 108422, 108428, 108440, 108464, 108478, 108494, 108508, 108514, 108516, 108520, 108592, 108640, 108668, 108736, 108792, 109040, 109536, 109680, 109694, 109792, 109820, 110016, 110072, 110084, 110088, 110096, 110112, 110140, 110144, 110200, 110320, 110342, 110348, 110360, 110384, 110398, 110432, 110460, 110478, 110492, 110520, 110532, 110536, 110544, 110558, 110658, 110686, 110714, 110722, 110724, 110728, 110736, 110750, 110752, 110780, 110796, 110834, 110836, 110850, 110852, 110856, 110864, 110878, 110880, 110908, 110912, 110968, 110982, 111e3, 111054, 111074, 111076, 111080, 111108, 111112, 111120, 111134, 111136, 111164, 111168, 111224, 111344, 111372, 111422, 111456, 111516, 111554, 111556, 111560, 111568, 111590, 111632, 111646, 111648, 111676, 111680, 111736, 111856, 112096, 112152, 112224, 112252, 112320, 112440, 112514, 112516, 112520, 112528, 112542, 112544, 112588, 112686, 112718, 112732, 112782, 112796, 112824, 112834, 112836, 112840, 112848, 112870, 112890, 112910, 112924, 112952, 113008, 113022, 113026, 113028, 113032, 113040, 113054, 113056, 113100, 113138, 113140, 113166, 113180, 113208, 113264, 113278, 113376, 113404, 113416, 113424, 113440, 113468, 113472, 113560, 113614, 113634, 113636, 113640, 113686, 113702, 113708, 113734, 113740, 113752, 113778, 113780, 113798, 113804, 113816, 113840, 113854, 113870, 113890, 113892, 113896, 113926, 113932, 113944, 113968, 113982, 114016, 114044, 114076, 114114, 114116, 114120, 114128, 114150, 114170, 114194, 114196, 114210, 114212, 114216, 114242, 114244, 114248, 114256, 114270, 114278, 114306, 114308, 114312, 114320, 114334, 114336, 114364, 114380, 114420, 114458, 114478, 114482, 114484, 114510, 114524, 114530, 114532, 114536, 114842, 114866, 114868, 114970, 114994, 114996, 115042, 115044, 115048, 115062, 115130, 115226, 115250, 115252, 115278, 115292, 115298, 115300, 115304, 115318, 115342, 115394, 115396, 115400, 115408, 115422, 115430, 115436, 115450, 115478, 115494, 115514, 115526, 115532, 115570, 115572, 115738, 115758, 115762, 115764, 115790, 115804, 115810, 115812, 115816, 115830, 115854, 115868, 115896, 115906, 115912, 115920, 115934, 115942, 115948, 115962, 115996, 116024, 116080, 116094, 116098, 116100, 116104, 116112, 116126, 116128, 116156, 116166, 116172, 116184, 116206, 116210, 116212, 116246, 116262, 116268, 116282, 116294, 116300, 116312, 116334, 116338, 116340, 116358, 116364, 116376, 116400, 116414, 116430, 116444, 116450, 116452, 116456, 116498, 116500, 116514, 116520, 116534, 116546, 116548, 116552, 116560, 116574, 116582, 116588, 116602, 116654, 116694, 116714, 116762, 116782, 116786, 116788, 116814, 116828, 116834, 116836, 116840, 116854, 116878, 116892, 116920, 116930, 116936, 116944, 116958, 116966, 116972, 116986, 117006, 117048, 117104, 117118, 117122, 117124, 117136, 117150, 117152, 117180, 117190, 117196, 117208, 117230, 117234, 117236, 117304, 117360, 117374, 117472, 117500, 117506, 117508, 117512, 117520, 117536, 117564, 117568, 117624, 117638, 117644, 117656, 117680, 117694, 117710, 117724, 117730, 117732, 117736, 117750, 117782, 117798, 117804, 117818, 117830, 117848, 117874, 117876, 117894, 117936, 117950, 117966, 117986, 117988, 117992, 118022, 118028, 118040, 118064, 118078, 118112, 118140, 118172, 118210, 118212, 118216, 118224, 118238, 118246, 118266, 118306, 118312, 118338, 118352, 118366, 118374, 118394, 118402, 118404, 118408, 118416, 118430, 118432, 118460, 118476, 118514, 118516, 118574, 118578, 118580, 118606, 118620, 118626, 118628, 118632, 118678, 118694, 118700, 118730, 118738, 118740, 118830, 118834, 118836, 118862, 118876, 118882, 118884, 118888, 118902, 118926, 118940, 118968, 118978, 118980, 118984, 118992, 119006, 119014, 119020, 119034, 119068, 119096, 119152, 119166, 119170, 119172, 119176, 119184, 119198, 119200, 119228, 119238, 119244, 119256, 119278, 119282, 119284, 119324, 119352, 119408, 119422, 119520, 119548, 119554, 119556, 119560, 119568, 119582, 119584, 119612, 119616, 119672, 119686, 119692, 119704, 119728, 119742, 119758, 119772, 119778, 119780, 119784, 119798, 119920, 119934, 120032, 120060, 120256, 120312, 120324, 120328, 120336, 120352, 120384, 120440, 120560, 120582, 120588, 120600, 120624, 120638, 120672, 120700, 120718, 120732, 120760, 120770, 120772, 120776, 120784, 120798, 120806, 120812, 120870, 120876, 120890, 120902, 120908, 120920, 120946, 120948, 120966, 120972, 120984, 121008, 121022, 121038, 121058, 121060, 121064, 121078, 121100, 121112, 121136, 121150, 121184, 121212, 121244, 121282, 121284, 121288, 121296, 121318, 121338, 121356, 121368, 121392, 121406, 121440, 121468, 121536, 121592, 121656, 121730, 121732, 121736, 121744, 121758, 121760, 121804, 121842, 121844, 121890, 121922, 121924, 121928, 121936, 121950, 121958, 121978, 121986, 121988, 121992, 122e3, 122014, 122016, 122044, 122060, 122098, 122100, 122116, 122120, 122128, 122142, 122144, 122172, 122176, 122232, 122246, 122264, 122318, 122338, 122340, 122344, 122414, 122418, 122420, 122446, 122460, 122466, 122468, 122472, 122510, 122524, 122552, 122562, 122564, 122568, 122576, 122598, 122618, 122646, 122662, 122668, 122694, 122700, 122712, 122738, 122740, 122762, 122770, 122772, 122786, 122788, 122792, 123018, 123026, 123028, 123042, 123044, 123048, 123062, 123098, 123146, 123154, 123156, 123170, 123172, 123176, 123190, 123202, 123204, 123208, 123216, 123238, 123244, 123258, 123290, 123314, 123316, 123402, 123410, 123412, 123426, 123428, 123432, 123446, 123458, 123464, 123472, 123486, 123494, 123500, 123514, 123522, 123524, 123528, 123536, 123552, 123580, 123590, 123596, 123608, 123630, 123634, 123636, 123674, 123698, 123700, 123740, 123746, 123748, 123752, 123834, 123914, 123922, 123924, 123938, 123944, 123958, 123970, 123976, 123984, 123998, 124006, 124012, 124026, 124034, 124036, 124048, 124062, 124064, 124092, 124102, 124108, 124120, 124142, 124146, 124148, 124162, 124164, 124168, 124176, 124190, 124192, 124220, 124224, 124280, 124294, 124300, 124312, 124336, 124350, 124366, 124380, 124386, 124388, 124392, 124406, 124442, 124462, 124466, 124468, 124494, 124508, 124514, 124520, 124558, 124572, 124600, 124610, 124612, 124616, 124624, 124646, 124666, 124694, 124710, 124716, 124730, 124742, 124748, 124760, 124786, 124788, 124818, 124820, 124834, 124836, 124840, 124854, 124946, 124948, 124962, 124964, 124968, 124982, 124994, 124996, 125e3, 125008, 125022, 125030, 125036, 125050, 125058, 125060, 125064, 125072, 125086, 125088, 125116, 125126, 125132, 125144, 125166, 125170, 125172, 125186, 125188, 125192, 125200, 125216, 125244, 125248, 125304, 125318, 125324, 125336, 125360, 125374, 125390, 125404, 125410, 125412, 125416, 125430, 125444, 125448, 125456, 125472, 125504, 125560, 125680, 125702, 125708, 125720, 125744, 125758, 125792, 125820, 125838, 125852, 125880, 125890, 125892, 125896, 125904, 125918, 125926, 125932, 125978, 125998, 126002, 126004, 126030, 126044, 126050, 126052, 126056, 126094, 126108, 126136, 126146, 126148, 126152, 126160, 126182, 126202, 126222, 126236, 126264, 126320, 126334, 126338, 126340, 126344, 126352, 126366, 126368, 126412, 126450, 126452, 126486, 126502, 126508, 126522, 126534, 126540, 126552, 126574, 126578, 126580, 126598, 126604, 126616, 126640, 126654, 126670, 126684, 126690, 126692, 126696, 126738, 126754, 126756, 126760, 126774, 126786, 126788, 126792, 126800, 126814, 126822, 126828, 126842, 126894, 126898, 126900, 126934, 127126, 127142, 127148, 127162, 127178, 127186, 127188, 127254, 127270, 127276, 127290, 127302, 127308, 127320, 127342, 127346, 127348, 127370, 127378, 127380, 127394, 127396, 127400, 127450, 127510, 127526, 127532, 127546, 127558, 127576, 127598, 127602, 127604, 127622, 127628, 127640, 127664, 127678, 127694, 127708, 127714, 127716, 127720, 127734, 127754, 127762, 127764, 127778, 127784, 127810, 127812, 127816, 127824, 127838, 127846, 127866, 127898, 127918, 127922, 127924, 128022, 128038, 128044, 128058, 128070, 128076, 128088, 128110, 128114, 128116, 128134, 128140, 128152, 128176, 128190, 128206, 128220, 128226, 128228, 128232, 128246, 128262, 128268, 128280, 128304, 128318, 128352, 128380, 128398, 128412, 128440, 128450, 128452, 128456, 128464, 128478, 128486, 128492, 128506, 128522, 128530, 128532, 128546, 128548, 128552, 128566, 128578, 128580, 128584, 128592, 128606, 128614, 128634, 128642, 128644, 128648, 128656, 128670, 128672, 128700, 128716, 128754, 128756, 128794, 128814, 128818, 128820, 128846, 128860, 128866, 128868, 128872, 128886, 128918, 128934, 128940, 128954, 128978, 128980, 129178, 129198, 129202, 129204, 129238, 129258, 129306, 129326, 129330, 129332, 129358, 129372, 129378, 129380, 129384, 129398, 129430, 129446, 129452, 129466, 129482, 129490, 129492, 129562, 129582, 129586, 129588, 129614, 129628, 129634, 129636, 129640, 129654, 129678, 129692, 129720, 129730, 129732, 129736, 129744, 129758, 129766, 129772, 129814, 129830, 129836, 129850, 129862, 129868, 129880, 129902, 129906, 129908, 129930, 129938, 129940, 129954, 129956, 129960, 129974, 130010]),
+ be.CODEWORD_TABLE = Int32Array.from([2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, 861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, 754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345, 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617, 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841, 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576, 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, 419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, 1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, 653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, 876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670, 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345, 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, 2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, 159, 2003, 2e3, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313, 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, 1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547, 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412, 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573, 2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, 1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133, 131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117, 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089, 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, 1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, 2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201, 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315, 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590, 2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255, 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477, 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, 2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578, 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897, 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602, 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412, 1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, 2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, 2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195, 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992, 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508, 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138, 134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, 1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, 1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20, 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294, 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033, 2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465, 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, 2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, 1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600, 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401, 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849, 848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, 1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, 557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513, 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519, 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029, 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, 350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, 177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, 499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, 2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668, 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442, 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248, 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582, 510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, 1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028, 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706, 2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487, 1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003, 1e3, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, 6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, 1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208, 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921, 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540, 1484, 1481, 1478, 1491, 1700]);
+ class Be {
+ constructor(t, e)
+ {
+ this.bits = t,
+ this.points = e
+ }
+ getBits()
+ {
+ return this.bits
+ }
+ getPoints()
+ {
+ return this.points
+ }
+ }
+ class Le {
+ static detectMultiple(t, e, r)
+ {
+ let n = t.getBlackMatrix(),
+ i = Le.detect(r, n);
+ return i.length || (n = n.clone(), n.rotate180(), i = Le.detect(r, n)), new Be(n, i)
+ }
+ static detect(t, e)
+ {
+ const r = new Array;
+ let n = 0,
+ i = 0,
+ o = !1;
+ for (; n < e.getHeight();) {
+ const s = Le.findVertices(e, n, i);
+ if (null != s[0] || null != s[3]) {
+ if (o = !0, r.push(s), !t)
+ break;
+ null != s[2] ? (i = Math.trunc(s[2].getX()), n = Math.trunc(s[2].getY())) : (i = Math.trunc(s[4].getX()), n = Math.trunc(s[4].getY()))
+ } else {
+ if (!o)
+ break;
+ o = !1,
+ i = 0;
+ for (const t of r)
+ null != t[1] && (n = Math.trunc(Math.max(n, t[1].getY()))),
+ null != t[3] && (n = Math.max(n, Math.trunc(t[3].getY())));
+ n += Le.ROW_STEP
+ }
+ }
+ return r
+ }
+ static findVertices(t, e, r)
+ {
+ const n = t.getHeight(),
+ i = t.getWidth(),
+ o = new Array(8);
+ return Le.copyToResult(o, Le.findRowsWithPattern(t, n, i, e, r, Le.START_PATTERN), Le.INDEXES_START_PATTERN), null != o[4] && (r = Math.trunc(o[4].getX()), e = Math.trunc(o[4].getY())), Le.copyToResult(o, Le.findRowsWithPattern(t, n, i, e, r, Le.STOP_PATTERN), Le.INDEXES_STOP_PATTERN), o
+ }
+ static copyToResult(t, e, r)
+ {
+ for (let n = 0; n < r.length; n++)
+ t[r[n]] = e[n]
+ }
+ static findRowsWithPattern(t, e, r, n, i, o)
+ {
+ const s = new Array(4);
+ let a = !1;
+ const l = new Int32Array(o.length);
+ for (; n < e; n += Le.ROW_STEP) {
+ let e = Le.findGuardPattern(t, i, n, r, !1, o, l);
+ if (null != e) {
+ for (; n > 0;) {
+ const s = Le.findGuardPattern(t, i, --n, r, !1, o, l);
+ if (null == s) {
+ n++;
+ break
+ }
+ e = s
+ }
+ s[0] = new nt(e[0], n),
+ s[1] = new nt(e[1], n),
+ a = !0;
+ break
+ }
+ }
+ let c = n + 1;
+ if (a) {
+ let n = 0,
+ i = Int32Array.from([Math.trunc(s[0].getX()), Math.trunc(s[1].getX())]);
+ for (; c < e; c++) {
+ const e = Le.findGuardPattern(t, i[0], c, r, !1, o, l);
+ if (null != e && Math.abs(i[0] - e[0]) < Le.MAX_PATTERN_DRIFT && Math.abs(i[1] - e[1]) < Le.MAX_PATTERN_DRIFT)
+ i = e,
+ n = 0;
+ else {
+ if (n > Le.SKIPPED_ROW_COUNT_MAX)
+ break;
+ n++
+ }
+ }
+ c -= n + 1,
+ s[2] = new nt(i[0], c),
+ s[3] = new nt(i[1], c)
+ }
+ return c - n < Le.BARCODE_MIN_HEIGHT && f.fill(s, null), s
+ }
+ static findGuardPattern(t, e, r, n, i, o, s)
+ {
+ f.fillWithin(s, 0, s.length, 0);
+ let a = e,
+ l = 0;
+ for (; t.get(a, r) && a > 0 && l++ < Le.MAX_PIXEL_DRIFT;)
+ a--;
+ let c = a,
+ h = 0,
+ d = o.length;
+ for (let e = i; c < n; c++)
+ if (t.get(c, r) !== e)
+ s[h]++;
+ else {
+ if (h === d - 1) {
+ if (Le.patternMatchVariance(s, o, Le.MAX_INDIVIDUAL_VARIANCE) < Le.MAX_AVG_VARIANCE)
+ return new Int32Array([a, c]);
+ a += s[0] + s[1],
+ u.arraycopy(s, 2, s, 0, h - 1),
+ s[h - 1] = 0,
+ s[h] = 0,
+ h--
+ } else
+ h++;
+ s[h] = 1,
+ e = !e
+ }
+ return h === d - 1 && Le.patternMatchVariance(s, o, Le.MAX_INDIVIDUAL_VARIANCE) < Le.MAX_AVG_VARIANCE ? new Int32Array([a, c - 1]) : null
+ }
+ static patternMatchVariance(t, e, r)
+ {
+ let n = t.length,
+ i = 0,
+ o = 0;
+ for (let r = 0; r < n; r++)
+ i += t[r],
+ o += e[r];
+ if (i < o)
+ return 1 / 0;
+ let s = i / o;
+ r *= s;
+ let a = 0;
+ for (let i = 0; i < n; i++) {
+ let n = t[i],
+ o = e[i] * s,
+ l = n > o ? n - o : o - n;
+ if (l > r)
+ return 1 / 0;
+ a += l
+ }
+ return a / i
+ }
+ }
+ Le.INDEXES_START_PATTERN = Int32Array.from([0, 4, 1, 5]),
+ Le.INDEXES_STOP_PATTERN = Int32Array.from([6, 2, 7, 3]),
+ Le.MAX_AVG_VARIANCE = .42,
+ Le.MAX_INDIVIDUAL_VARIANCE = .8,
+ Le.START_PATTERN = Int32Array.from([8, 1, 1, 1, 1, 1, 1, 3]),
+ Le.STOP_PATTERN = Int32Array.from([7, 1, 1, 3, 1, 1, 1, 2, 1]),
+ Le.MAX_PIXEL_DRIFT = 3,
+ Le.MAX_PATTERN_DRIFT = 5,
+ Le.SKIPPED_ROW_COUNT_MAX = 25,
+ Le.ROW_STEP = 5,
+ Le.BARCODE_MIN_HEIGHT = 10;
+ class Pe {
+ constructor(t, e)
+ {
+ if (0 === e.length)
+ throw new a;
+ this.field = t;
+ let r = e.length;
+ if (r > 1 && 0 === e[0]) {
+ let t = 1;
+ for (; t < r && 0 === e[t];)
+ t++;
+ t === r ? this.coefficients = new Int32Array([0]) : (this.coefficients = new Int32Array(r - t), u.arraycopy(e, t, this.coefficients, 0, this.coefficients.length))
+ } else
+ this.coefficients = e
+ }
+ getCoefficients()
+ {
+ return this.coefficients
+ }
+ getDegree()
+ {
+ return this.coefficients.length - 1
+ }
+ isZero()
+ {
+ return 0 === this.coefficients[0]
+ }
+ getCoefficient(t)
+ {
+ return this.coefficients[this.coefficients.length - 1 - t]
+ }
+ evaluateAt(t)
+ {
+ if (0 === t)
+ return this.getCoefficient(0);
+ if (1 === t) {
+ let t = 0;
+ for (let e of this.coefficients)
+ t = this.field.add(t, e);
+ return t
+ }
+ let e = this.coefficients[0],
+ r = this.coefficients.length;
+ for (let n = 1; n < r; n++)
+ e = this.field.add(this.field.multiply(t, e), this.coefficients[n]);
+ return e
+ }
+ add(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("ModulusPolys do not have same ModulusGF field");
+ if (this.isZero())
+ return t;
+ if (t.isZero())
+ return this;
+ let e = this.coefficients,
+ r = t.coefficients;
+ if (e.length > r.length) {
+ let t = e;
+ e = r,
+ r = t
+ }
+ let n = new Int32Array(r.length),
+ i = r.length - e.length;
+ u.arraycopy(r, 0, n, 0, i);
+ for (let t = i; t < r.length; t++)
+ n[t] = this.field.add(e[t - i], r[t]);
+ return new Pe(this.field, n)
+ }
+ subtract(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("ModulusPolys do not have same ModulusGF field");
+ return t.isZero() ? this : this.add(t.negative())
+ }
+ multiply(t)
+ {
+ return t instanceof Pe ? this.multiplyOther(t) : this.multiplyScalar(t)
+ }
+ multiplyOther(t)
+ {
+ if (!this.field.equals(t.field))
+ throw new a("ModulusPolys do not have same ModulusGF field");
+ if (this.isZero() || t.isZero())
+ return new Pe(this.field, new Int32Array([0]));
+ let e = this.coefficients,
+ r = e.length,
+ n = t.coefficients,
+ i = n.length,
+ o = new Int32Array(r + i - 1);
+ for (let t = 0; t < r; t++) {
+ let r = e[t];
+ for (let e = 0; e < i; e++)
+ o[t + e] = this.field.add(o[t + e], this.field.multiply(r, n[e]))
+ }
+ return new Pe(this.field, o)
+ }
+ negative()
+ {
+ let t = this.coefficients.length,
+ e = new Int32Array(t);
+ for (let r = 0; r < t; r++)
+ e[r] = this.field.subtract(0, this.coefficients[r]);
+ return new Pe(this.field, e)
+ }
+ multiplyScalar(t)
+ {
+ if (0 === t)
+ return new Pe(this.field, new Int32Array([0]));
+ if (1 === t)
+ return this;
+ let e = this.coefficients.length,
+ r = new Int32Array(e);
+ for (let n = 0; n < e; n++)
+ r[n] = this.field.multiply(this.coefficients[n], t);
+ return new Pe(this.field, r)
+ }
+ multiplyByMonomial(t, e)
+ {
+ if (t < 0)
+ throw new a;
+ if (0 === e)
+ return new Pe(this.field, new Int32Array([0]));
+ let r = this.coefficients.length,
+ n = new Int32Array(r + t);
+ for (let t = 0; t < r; t++)
+ n[t] = this.field.multiply(this.coefficients[t], e);
+ return new Pe(this.field, n)
+ }
+ toString()
+ {
+ let t = new T;
+ for (let e = this.getDegree(); e >= 0; e--) {
+ let r = this.getCoefficient(e);
+ 0 !== r && (r < 0 ? (t.append(" - "), r = -r) : t.length() > 0 && t.append(" + "), 0 !== e && 1 === r || t.append(r), 0 !== e && (1 === e ? t.append("x") : (t.append("x^"), t.append(e))))
+ }
+ return t.toString()
+ }
+ }
+ class ve extends class {
+ add(t, e)
+ {
+ return (t + e) % this.modulus
+ }
+ subtract(t, e)
+ {
+ return (this.modulus + t - e) % this.modulus
+ }
+ exp(t)
+ {
+ return this.expTable[t]
+ }
+ log(t)
+ {
+ if (0 === t)
+ throw new a;
+ return this.logTable[t]
+ }
+ inverse(t)
+ {
+ if (0 === t)
+ throw new Q;
+ return this.expTable[this.modulus - this.logTable[t] - 1]
+ }
+ multiply(t, e)
+ {
+ return 0 === t || 0 === e ? 0 : this.expTable[(this.logTable[t] + this.logTable[e]) % (this.modulus - 1)]
+ }
+ getSize()
+ {
+ return this.modulus
+ }
+ equals(t)
+ {
+ return t === this
+ }
+ }
+ {
+ constructor(t, e)
+ {
+ super(),
+ this.modulus = t,
+ this.expTable = new Int32Array(t),
+ this.logTable = new Int32Array(t);
+ let r = 1;
+ for (let n = 0; n < t; n++)
+ this.expTable[n] = r,
+ r = r * e % t;
+ for (let e = 0; e < t - 1; e++)
+ this.logTable[this.expTable[e]] = e;
+ this.zero = new Pe(this, new Int32Array([0])),
+ this.one = new Pe(this, new Int32Array([1]))
+ }
+ getZero()
+ {
+ return this.zero
+ }
+ getOne()
+ {
+ return this.one
+ }
+ buildMonomial(t, e)
+ {
+ if (t < 0)
+ throw new a;
+ if (0 === e)
+ return this.zero;
+ let r = new Int32Array(t + 1);
+ return r[0] = e, new Pe(this, r)
+ }
+ }
+ ve.PDF417_GF = new ve(be.NUMBER_OF_CODEWORDS, 3);
+ class Fe {
+ constructor()
+ {
+ this.field = ve.PDF417_GF
+ }
+ decode(t, e, r)
+ {
+ let n = new Pe(this.field, t),
+ i = new Int32Array(e),
+ o = !1;
+ for (let t = e; t > 0; t--) {
+ let r = n.evaluateAt(this.field.exp(t));
+ i[e - t] = r,
+ 0 !== r && (o = !0)
+ }
+ if (!o)
+ return 0;
+ let s = this.field.getOne();
+ if (null != r)
+ for (const e of r) {
+ let r = this.field.exp(t.length - 1 - e),
+ n = new Pe(this.field, new Int32Array([this.field.subtract(0, r), 1]));
+ s = s.multiply(n)
+ }
+ let a = new Pe(this.field, i),
+ l = this.runEuclideanAlgorithm(this.field.buildMonomial(e, 1), a, e),
+ h = l[0],
+ u = l[1],
+ d = this.findErrorLocations(h),
+ g = this.findErrorMagnitudes(u, h, d);
+ for (let e = 0; e < d.length; e++) {
+ let r = t.length - 1 - this.field.log(d[e]);
+ if (r < 0)
+ throw c.getChecksumInstance();
+ t[r] = this.field.subtract(t[r], g[e])
+ }
+ return d.length
+ }
+ runEuclideanAlgorithm(t, e, r)
+ {
+ if (t.getDegree() < e.getDegree()) {
+ let r = t;
+ t = e,
+ e = r
+ }
+ let n = t,
+ i = e,
+ o = this.field.getZero(),
+ s = this.field.getOne();
+ for (; i.getDegree() >= Math.round(r / 2);) {
+ let t = n,
+ e = o;
+ if (n = i, o = s, n.isZero())
+ throw c.getChecksumInstance();
+ i = t;
+ let r = this.field.getZero(),
+ a = n.getCoefficient(n.getDegree()),
+ l = this.field.inverse(a);
+ for (; i.getDegree() >= n.getDegree() && !i.isZero();) {
+ let t = i.getDegree() - n.getDegree(),
+ e = this.field.multiply(i.getCoefficient(i.getDegree()), l);
+ r = r.add(this.field.buildMonomial(t, e)),
+ i = i.subtract(n.multiplyByMonomial(t, e))
+ }
+ s = r.multiply(o).subtract(e).negative()
+ }
+ let a = s.getCoefficient(0);
+ if (0 === a)
+ throw c.getChecksumInstance();
+ let l = this.field.inverse(a);
+ return [s.multiply(l), i.multiply(l)]
+ }
+ findErrorLocations(t)
+ {
+ let e = t.getDegree(),
+ r = new Int32Array(e),
+ n = 0;
+ for (let i = 1; i < this.field.getSize() && n < e; i++)
+ 0 === t.evaluateAt(i) && (r[n] = this.field.inverse(i), n++);
+ if (n !== e)
+ throw c.getChecksumInstance();
+ return r
+ }
+ findErrorMagnitudes(t, e, r)
+ {
+ let n = e.getDegree(),
+ i = new Int32Array(n);
+ for (let t = 1; t <= n; t++)
+ i[n - t] = this.field.multiply(t, e.getCoefficient(t));
+ let o = new Pe(this.field, i),
+ s = r.length,
+ a = new Int32Array(s);
+ for (let e = 0; e < s; e++) {
+ let n = this.field.inverse(r[e]),
+ i = this.field.subtract(0, t.evaluateAt(n)),
+ s = this.field.inverse(o.evaluateAt(n));
+ a[e] = this.field.multiply(i, s)
+ }
+ return a
+ }
+ }
+ class xe {
+ constructor(t, e, r, n, i)
+ {
+ t instanceof xe ? this.constructor_2(t) : this.constructor_1(t, e, r, n, i)
+ }
+ constructor_1(t, e, r, n, i)
+ {
+ const o = null == e || null == r,
+ s = null == n || null == i;
+ if (o && s)
+ throw new N;
+ o ? (e = new nt(0, n.getY()), r = new nt(0, i.getY())) : s && (n = new nt(t.getWidth() - 1, e.getY()), i = new nt(t.getWidth() - 1, r.getY())),
+ this.image = t,
+ this.topLeft = e,
+ this.bottomLeft = r,
+ this.topRight = n,
+ this.bottomRight = i,
+ this.minX = Math.trunc(Math.min(e.getX(), r.getX())),
+ this.maxX = Math.trunc(Math.max(n.getX(), i.getX())),
+ this.minY = Math.trunc(Math.min(e.getY(), n.getY())),
+ this.maxY = Math.trunc(Math.max(r.getY(), i.getY()))
+ }
+ constructor_2(t)
+ {
+ this.image = t.image,
+ this.topLeft = t.getTopLeft(),
+ this.bottomLeft = t.getBottomLeft(),
+ this.topRight = t.getTopRight(),
+ this.bottomRight = t.getBottomRight(),
+ this.minX = t.getMinX(),
+ this.maxX = t.getMaxX(),
+ this.minY = t.getMinY(),
+ this.maxY = t.getMaxY()
+ }
+ static merge(t, e)
+ {
+ return null == t ? e : null == e ? t : new xe(t.image, t.topLeft, t.bottomLeft, e.topRight, e.bottomRight)
+ }
+ addMissingRows(t, e, r)
+ {
+ let n = this.topLeft,
+ i = this.bottomLeft,
+ o = this.topRight,
+ s = this.bottomRight;
+ if (t > 0) {
+ let e = r ? this.topLeft : this.topRight,
+ i = Math.trunc(e.getY() - t);
+ i < 0 && (i = 0);
+ let s = new nt(e.getX(), i);
+ r ? n = s : o = s
+ }
+ if (e > 0) {
+ let t = r ? this.bottomLeft : this.bottomRight,
+ n = Math.trunc(t.getY() + e);
+ n >= this.image.getHeight() && (n = this.image.getHeight() - 1);
+ let o = new nt(t.getX(), n);
+ r ? i = o : s = o
+ }
+ return new xe(this.image, n, i, o, s)
+ }
+ getMinX()
+ {
+ return this.minX
+ }
+ getMaxX()
+ {
+ return this.maxX
+ }
+ getMinY()
+ {
+ return this.minY
+ }
+ getMaxY()
+ {
+ return this.maxY
+ }
+ getTopLeft()
+ {
+ return this.topLeft
+ }
+ getTopRight()
+ {
+ return this.topRight
+ }
+ getBottomLeft()
+ {
+ return this.bottomLeft
+ }
+ getBottomRight()
+ {
+ return this.bottomRight
+ }
+ }
+ class ke {
+ constructor(t, e, r, n)
+ {
+ this.columnCount = t,
+ this.errorCorrectionLevel = n,
+ this.rowCountUpperPart = e,
+ this.rowCountLowerPart = r,
+ this.rowCount = e + r
+ }
+ getColumnCount()
+ {
+ return this.columnCount
+ }
+ getErrorCorrectionLevel()
+ {
+ return this.errorCorrectionLevel
+ }
+ getRowCount()
+ {
+ return this.rowCount
+ }
+ getRowCountUpperPart()
+ {
+ return this.rowCountUpperPart
+ }
+ getRowCountLowerPart()
+ {
+ return this.rowCountLowerPart
+ }
+ }
+ class Ue {
+ constructor()
+ {
+ this.buffer = ""
+ }
+ static form(t, e)
+ {
+ let r = -1;
+ return t.replace(/%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g, (function(t, n, i, o, s, a) {
+ if ("%%" === t)
+ return "%";
+ if (void 0 === e[++r])
+ return;
+ t = o ? parseInt(o.substr(1)) : void 0;
+ let l,
+ c = s ? parseInt(s.substr(1)) : void 0;
+ switch (a) {
+ case "s":
+ l = e[r];
+ break;
+ case "c":
+ l = e[r][0];
+ break;
+ case "f":
+ l = parseFloat(e[r]).toFixed(t);
+ break;
+ case "p":
+ l = parseFloat(e[r]).toPrecision(t);
+ break;
+ case "e":
+ l = parseFloat(e[r]).toExponential(t);
+ break;
+ case "x":
+ l = parseInt(e[r]).toString(c || 16);
+ break;
+ case "d":
+ l = parseFloat(parseInt(e[r], c || 10).toPrecision(t)).toFixed(0)
+ }
+ l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(c);
+ let h = parseInt(i),
+ u = i && i[0] + "" == "0" ? "0" : " ";
+ for (; l.length < h;)
+ l = void 0 !== n ? l + u : u + l;
+ return l
+ }))
+ }
+ format(t, ...e)
+ {
+ this.buffer += Ue.form(t, e)
+ }
+ toString()
+ {
+ return this.buffer
+ }
+ }
+ class He {
+ constructor(t)
+ {
+ this.boundingBox = new xe(t),
+ this.codewords = new Array(t.getMaxY() - t.getMinY() + 1)
+ }
+ getCodewordNearby(t)
+ {
+ let e = this.getCodeword(t);
+ if (null != e)
+ return e;
+ for (let r = 1; r < He.MAX_NEARBY_DISTANCE; r++) {
+ let n = this.imageRowToCodewordIndex(t) - r;
+ if (n >= 0 && (e = this.codewords[n], null != e))
+ return e;
+ if (n = this.imageRowToCodewordIndex(t) + r, n < this.codewords.length && (e = this.codewords[n], null != e))
+ return e
+ }
+ return null
+ }
+ imageRowToCodewordIndex(t)
+ {
+ return t - this.boundingBox.getMinY()
+ }
+ setCodeword(t, e)
+ {
+ this.codewords[this.imageRowToCodewordIndex(t)] = e
+ }
+ getCodeword(t)
+ {
+ return this.codewords[this.imageRowToCodewordIndex(t)]
+ }
+ getBoundingBox()
+ {
+ return this.boundingBox
+ }
+ getCodewords()
+ {
+ return this.codewords
+ }
+ toString()
+ {
+ const t = new Ue;
+ let e = 0;
+ for (const r of this.codewords)
+ null != r ? t.format("%3d: %3d|%3d%n", e++, r.getRowNumber(), r.getValue()) : t.format("%3d: | %n", e++);
+ return t.toString()
+ }
+ }
+ He.MAX_NEARBY_DISTANCE = 5;
+ class Ve {
+ constructor()
+ {
+ this.values = new Map
+ }
+ setValue(t)
+ {
+ t = Math.trunc(t);
+ let e = this.values.get(t);
+ null == e && (e = 0),
+ e++,
+ this.values.set(t, e)
+ }
+ getValue()
+ {
+ let t = -1,
+ e = new Array;
+ for (const [r, n] of this.values.entries()) {
+ const i = {
+ getKey: () => r,
+ getValue: () => n
+ };
+ i.getValue() > t ? (t = i.getValue(), e = [], e.push(i.getKey())) : i.getValue() === t && e.push(i.getKey())
+ }
+ return be.toIntArray(e)
+ }
+ getConfidence(t)
+ {
+ return this.values.get(t)
+ }
+ }
+ class ze extends He {
+ constructor(t, e)
+ {
+ super(t),
+ this._isLeft = e
+ }
+ setRowNumbers()
+ {
+ for (let t of this.getCodewords())
+ null != t && t.setRowNumberAsRowIndicatorColumn()
+ }
+ adjustCompleteIndicatorColumnRowNumbers(t)
+ {
+ let e = this.getCodewords();
+ this.setRowNumbers(),
+ this.removeIncorrectCodewords(e, t);
+ let r = this.getBoundingBox(),
+ n = this._isLeft ? r.getTopLeft() : r.getTopRight(),
+ i = this._isLeft ? r.getBottomLeft() : r.getBottomRight(),
+ o = this.imageRowToCodewordIndex(Math.trunc(n.getY())),
+ s = this.imageRowToCodewordIndex(Math.trunc(i.getY())),
+ a = -1,
+ l = 1,
+ c = 0;
+ for (let r = o; r < s; r++) {
+ if (null == e[r])
+ continue;
+ let n = e[r],
+ i = n.getRowNumber() - a;
+ if (0 === i)
+ c++;
+ else if (1 === i)
+ l = Math.max(l, c),
+ c = 1,
+ a = n.getRowNumber();
+ else if (i < 0 || n.getRowNumber() >= t.getRowCount() || i > r)
+ e[r] = null;
+ else {
+ let t;
+ t = l > 2 ? (l - 2) * i : i;
+ let o = t >= r;
+ for (let n = 1; n <= t && !o; n++)
+ o = null != e[r - n];
+ o ? e[r] = null : (a = n.getRowNumber(), c = 1)
+ }
+ }
+ }
+ getRowHeights()
+ {
+ let t = this.getBarcodeMetadata();
+ if (null == t)
+ return null;
+ this.adjustIncompleteIndicatorColumnRowNumbers(t);
+ let e = new Int32Array(t.getRowCount());
+ for (let t of this.getCodewords())
+ if (null != t) {
+ let r = t.getRowNumber();
+ if (r >= e.length)
+ continue;
+ e[r]++
+ }
+ return e
+ }
+ adjustIncompleteIndicatorColumnRowNumbers(t)
+ {
+ let e = this.getBoundingBox(),
+ r = this._isLeft ? e.getTopLeft() : e.getTopRight(),
+ n = this._isLeft ? e.getBottomLeft() : e.getBottomRight(),
+ i = this.imageRowToCodewordIndex(Math.trunc(r.getY())),
+ o = this.imageRowToCodewordIndex(Math.trunc(n.getY())),
+ s = this.getCodewords(),
+ a = -1;
+ for (let e = i; e < o; e++) {
+ if (null == s[e])
+ continue;
+ let r = s[e];
+ r.setRowNumberAsRowIndicatorColumn();
+ let n = r.getRowNumber() - a;
+ 0 === n || (1 === n ? a = r.getRowNumber() : r.getRowNumber() >= t.getRowCount() ? s[e] = null : a = r.getRowNumber())
+ }
+ }
+ getBarcodeMetadata()
+ {
+ let t = this.getCodewords(),
+ e = new Ve,
+ r = new Ve,
+ n = new Ve,
+ i = new Ve;
+ for (let o of t) {
+ if (null == o)
+ continue;
+ o.setRowNumberAsRowIndicatorColumn();
+ let t = o.getValue() % 30,
+ s = o.getRowNumber();
+ switch (this._isLeft || (s += 2), s % 3) {
+ case 0:
+ r.setValue(3 * t + 1);
+ break;
+ case 1:
+ i.setValue(t / 3),
+ n.setValue(t % 3);
+ break;
+ case 2:
+ e.setValue(t + 1)
+ }
+ }
+ if (0 === e.getValue().length || 0 === r.getValue().length || 0 === n.getValue().length || 0 === i.getValue().length || e.getValue()[0] < 1 || r.getValue()[0] + n.getValue()[0] < be.MIN_ROWS_IN_BARCODE || r.getValue()[0] + n.getValue()[0] > be.MAX_ROWS_IN_BARCODE)
+ return null;
+ let o = new ke(e.getValue()[0], r.getValue()[0], n.getValue()[0], i.getValue()[0]);
+ return this.removeIncorrectCodewords(t, o), o
+ }
+ removeIncorrectCodewords(t, e)
+ {
+ for (let r = 0; r < t.length; r++) {
+ let n = t[r];
+ if (null == t[r])
+ continue;
+ let i = n.getValue() % 30,
+ o = n.getRowNumber();
+ if (o > e.getRowCount())
+ t[r] = null;
+ else
+ switch (this._isLeft || (o += 2), o % 3) {
+ case 0:
+ 3 * i + 1 !== e.getRowCountUpperPart() && (t[r] = null);
+ break;
+ case 1:
+ Math.trunc(i / 3) === e.getErrorCorrectionLevel() && i % 3 === e.getRowCountLowerPart() || (t[r] = null);
+ break;
+ case 2:
+ i + 1 !== e.getColumnCount() && (t[r] = null)
+ }
+ }
+ }
+ isLeft()
+ {
+ return this._isLeft
+ }
+ toString()
+ {
+ return "IsLeft: " + this._isLeft + "\n" + super.toString()
+ }
+ }
+ class Ge {
+ constructor(t, e)
+ {
+ this.ADJUST_ROW_NUMBER_SKIP = 2,
+ this.barcodeMetadata = t,
+ this.barcodeColumnCount = t.getColumnCount(),
+ this.boundingBox = e,
+ this.detectionResultColumns = new Array(this.barcodeColumnCount + 2)
+ }
+ getDetectionResultColumns()
+ {
+ this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[0]),
+ this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[this.barcodeColumnCount + 1]);
+ let t,
+ e = be.MAX_CODEWORDS_IN_BARCODE;
+ do {
+ t = e,
+ e = this.adjustRowNumbersAndGetCount()
+ } while (e > 0 && e < t);
+ return this.detectionResultColumns
+ }
+ adjustIndicatorColumnRowNumbers(t)
+ {
+ null != t && t.adjustCompleteIndicatorColumnRowNumbers(this.barcodeMetadata)
+ }
+ adjustRowNumbersAndGetCount()
+ {
+ let t = this.adjustRowNumbersByRow();
+ if (0 === t)
+ return 0;
+ for (let t = 1; t < this.barcodeColumnCount + 1; t++) {
+ let e = this.detectionResultColumns[t].getCodewords();
+ for (let r = 0; r < e.length; r++)
+ null != e[r] && (e[r].hasValidRowNumber() || this.adjustRowNumbers(t, r, e))
+ }
+ return t
+ }
+ adjustRowNumbersByRow()
+ {
+ return this.adjustRowNumbersFromBothRI(), this.adjustRowNumbersFromLRI() + this.adjustRowNumbersFromRRI()
+ }
+ adjustRowNumbersFromBothRI()
+ {
+ if (null == this.detectionResultColumns[0] || null == this.detectionResultColumns[this.barcodeColumnCount + 1])
+ return;
+ let t = this.detectionResultColumns[0].getCodewords(),
+ e = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();
+ for (let r = 0; r < t.length; r++)
+ if (null != t[r] && null != e[r] && t[r].getRowNumber() === e[r].getRowNumber())
+ for (let e = 1; e <= this.barcodeColumnCount; e++) {
+ let n = this.detectionResultColumns[e].getCodewords()[r];
+ null != n && (n.setRowNumber(t[r].getRowNumber()), n.hasValidRowNumber() || (this.detectionResultColumns[e].getCodewords()[r] = null))
+ }
+ }
+ adjustRowNumbersFromRRI()
+ {
+ if (null == this.detectionResultColumns[this.barcodeColumnCount + 1])
+ return 0;
+ let t = 0,
+ e = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();
+ for (let r = 0; r < e.length; r++) {
+ if (null == e[r])
+ continue;
+ let n = e[r].getRowNumber(),
+ i = 0;
+ for (let e = this.barcodeColumnCount + 1; e > 0 && i < this.ADJUST_ROW_NUMBER_SKIP; e--) {
+ let o = this.detectionResultColumns[e].getCodewords()[r];
+ null != o && (i = Ge.adjustRowNumberIfValid(n, i, o), o.hasValidRowNumber() || t++)
+ }
+ }
+ return t
+ }
+ adjustRowNumbersFromLRI()
+ {
+ if (null == this.detectionResultColumns[0])
+ return 0;
+ let t = 0,
+ e = this.detectionResultColumns[0].getCodewords();
+ for (let r = 0; r < e.length; r++) {
+ if (null == e[r])
+ continue;
+ let n = e[r].getRowNumber(),
+ i = 0;
+ for (let e = 1; e < this.barcodeColumnCount + 1 && i < this.ADJUST_ROW_NUMBER_SKIP; e++) {
+ let o = this.detectionResultColumns[e].getCodewords()[r];
+ null != o && (i = Ge.adjustRowNumberIfValid(n, i, o), o.hasValidRowNumber() || t++)
+ }
+ }
+ return t
+ }
+ static adjustRowNumberIfValid(t, e, r)
+ {
+ return null == r || r.hasValidRowNumber() || (r.isValidRowNumber(t) ? (r.setRowNumber(t), e = 0) : ++e), e
+ }
+ adjustRowNumbers(t, e, r)
+ {
+ let n = r[e],
+ i = this.detectionResultColumns[t - 1].getCodewords(),
+ o = i;
+ null != this.detectionResultColumns[t + 1] && (o = this.detectionResultColumns[t + 1].getCodewords());
+ let s = new Array(14);
+ s[2] = i[e],
+ s[3] = o[e],
+ e > 0 && (s[0] = r[e - 1], s[4] = i[e - 1], s[5] = o[e - 1]),
+ e > 1 && (s[8] = r[e - 2], s[10] = i[e - 2], s[11] = o[e - 2]),
+ e < r.length - 1 && (s[1] = r[e + 1], s[6] = i[e + 1], s[7] = o[e + 1]),
+ e < r.length - 2 && (s[9] = r[e + 2], s[12] = i[e + 2], s[13] = o[e + 2]);
+ for (let t of s)
+ if (Ge.adjustRowNumber(n, t))
+ return
+ }
+ static adjustRowNumber(t, e)
+ {
+ return !(null == e || !e.hasValidRowNumber() || e.getBucket() !== t.getBucket() || (t.setRowNumber(e.getRowNumber()), 0))
+ }
+ getBarcodeColumnCount()
+ {
+ return this.barcodeColumnCount
+ }
+ getBarcodeRowCount()
+ {
+ return this.barcodeMetadata.getRowCount()
+ }
+ getBarcodeECLevel()
+ {
+ return this.barcodeMetadata.getErrorCorrectionLevel()
+ }
+ setBoundingBox(t)
+ {
+ this.boundingBox = t
+ }
+ getBoundingBox()
+ {
+ return this.boundingBox
+ }
+ setDetectionResultColumn(t, e)
+ {
+ this.detectionResultColumns[t] = e
+ }
+ getDetectionResultColumn(t)
+ {
+ return this.detectionResultColumns[t]
+ }
+ toString()
+ {
+ let t = this.detectionResultColumns[0];
+ null == t && (t = this.detectionResultColumns[this.barcodeColumnCount + 1]);
+ let e = new Ue;
+ for (let r = 0; r < t.getCodewords().length; r++) {
+ e.format("CW %3d:", r);
+ for (let t = 0; t < this.barcodeColumnCount + 2; t++) {
+ if (null == this.detectionResultColumns[t]) {
+ e.format(" | ");
+ continue
+ }
+ let n = this.detectionResultColumns[t].getCodewords()[r];
+ null != n ? e.format(" %3d|%3d", n.getRowNumber(), n.getValue()) : e.format(" | ")
+ }
+ e.format("%n")
+ }
+ return e.toString()
+ }
+ }
+ class Ye {
+ constructor(t, e, r, n)
+ {
+ this.rowNumber = Ye.BARCODE_ROW_UNKNOWN,
+ this.startX = Math.trunc(t),
+ this.endX = Math.trunc(e),
+ this.bucket = Math.trunc(r),
+ this.value = Math.trunc(n)
+ }
+ hasValidRowNumber()
+ {
+ return this.isValidRowNumber(this.rowNumber)
+ }
+ isValidRowNumber(t)
+ {
+ return t !== Ye.BARCODE_ROW_UNKNOWN && this.bucket === t % 3 * 3
+ }
+ setRowNumberAsRowIndicatorColumn()
+ {
+ this.rowNumber = Math.trunc(3 * Math.trunc(this.value / 30) + Math.trunc(this.bucket / 3))
+ }
+ getWidth()
+ {
+ return this.endX - this.startX
+ }
+ getStartX()
+ {
+ return this.startX
+ }
+ getEndX()
+ {
+ return this.endX
+ }
+ getBucket()
+ {
+ return this.bucket
+ }
+ getValue()
+ {
+ return this.value
+ }
+ getRowNumber()
+ {
+ return this.rowNumber
+ }
+ setRowNumber(t)
+ {
+ this.rowNumber = t
+ }
+ toString()
+ {
+ return this.rowNumber + "|" + this.value
+ }
+ }
+ Ye.BARCODE_ROW_UNKNOWN = -1;
+ class Xe {
+ static initialize()
+ {
+ for (let t = 0; t < be.SYMBOL_TABLE.length; t++) {
+ let e = be.SYMBOL_TABLE[t],
+ r = 1 & e;
+ for (let n = 0; n < be.BARS_IN_MODULE; n++) {
+ let i = 0;
+ for (; (1 & e) === r;)
+ i += 1,
+ e >>= 1;
+ r = 1 & e,
+ Xe.RATIOS_TABLE[t] || (Xe.RATIOS_TABLE[t] = new Array(be.BARS_IN_MODULE)),
+ Xe.RATIOS_TABLE[t][be.BARS_IN_MODULE - n - 1] = Math.fround(i / be.MODULES_IN_CODEWORD)
+ }
+ }
+ this.bSymbolTableReady = !0
+ }
+ static getDecodedValue(t)
+ {
+ let e = Xe.getDecodedCodewordValue(Xe.sampleBitCounts(t));
+ return -1 !== e ? e : Xe.getClosestDecodedValue(t)
+ }
+ static sampleBitCounts(t)
+ {
+ let e = et.sum(t),
+ r = new Int32Array(be.BARS_IN_MODULE),
+ n = 0,
+ i = 0;
+ for (let o = 0; o < be.MODULES_IN_CODEWORD; o++) {
+ let s = e / (2 * be.MODULES_IN_CODEWORD) + o * e / be.MODULES_IN_CODEWORD;
+ i + t[n] <= s && (i += t[n], n++),
+ r[n]++
+ }
+ return r
+ }
+ static getDecodedCodewordValue(t)
+ {
+ let e = Xe.getBitValue(t);
+ return -1 === be.getCodeword(e) ? -1 : e
+ }
+ static getBitValue(t)
+ {
+ let e = 0;
+ for (let r = 0; r < t.length; r++)
+ for (let n = 0; n < t[r]; n++)
+ e = e << 1 | (r % 2 == 0 ? 1 : 0);
+ return Math.trunc(e)
+ }
+ static getClosestDecodedValue(t)
+ {
+ let e = et.sum(t),
+ r = new Array(be.BARS_IN_MODULE);
+ if (e > 1)
+ for (let n = 0; n < r.length; n++)
+ r[n] = Math.fround(t[n] / e);
+ let n = rt.MAX_VALUE,
+ i = -1;
+ this.bSymbolTableReady || Xe.initialize();
+ for (let t = 0; t < Xe.RATIOS_TABLE.length; t++) {
+ let e = 0,
+ o = Xe.RATIOS_TABLE[t];
+ for (let t = 0; t < be.BARS_IN_MODULE; t++) {
+ let i = Math.fround(o[t] - r[t]);
+ if (e += Math.fround(i * i), e >= n)
+ break
+ }
+ e < n && (n = e, i = be.SYMBOL_TABLE[t])
+ }
+ return i
+ }
+ }
+ Xe.bSymbolTableReady = !1,
+ Xe.RATIOS_TABLE = new Array(be.SYMBOL_TABLE.length).map((t => new Array(be.BARS_IN_MODULE)));
+ class We {
+ constructor()
+ {
+ this.segmentCount = -1,
+ this.fileSize = -1,
+ this.timestamp = -1,
+ this.checksum = -1
+ }
+ getSegmentIndex()
+ {
+ return this.segmentIndex
+ }
+ setSegmentIndex(t)
+ {
+ this.segmentIndex = t
+ }
+ getFileId()
+ {
+ return this.fileId
+ }
+ setFileId(t)
+ {
+ this.fileId = t
+ }
+ getOptionalData()
+ {
+ return this.optionalData
+ }
+ setOptionalData(t)
+ {
+ this.optionalData = t
+ }
+ isLastSegment()
+ {
+ return this.lastSegment
+ }
+ setLastSegment(t)
+ {
+ this.lastSegment = t
+ }
+ getSegmentCount()
+ {
+ return this.segmentCount
+ }
+ setSegmentCount(t)
+ {
+ this.segmentCount = t
+ }
+ getSender()
+ {
+ return this.sender || null
+ }
+ setSender(t)
+ {
+ this.sender = t
+ }
+ getAddressee()
+ {
+ return this.addressee || null
+ }
+ setAddressee(t)
+ {
+ this.addressee = t
+ }
+ getFileName()
+ {
+ return this.fileName
+ }
+ setFileName(t)
+ {
+ this.fileName = t
+ }
+ getFileSize()
+ {
+ return this.fileSize
+ }
+ setFileSize(t)
+ {
+ this.fileSize = t
+ }
+ getChecksum()
+ {
+ return this.checksum
+ }
+ setChecksum(t)
+ {
+ this.checksum = t
+ }
+ getTimestamp()
+ {
+ return this.timestamp
+ }
+ setTimestamp(t)
+ {
+ this.timestamp = t
+ }
+ }
+ class je {
+ static parseLong(t, e)
+ {
+ return parseInt(t, e)
+ }
+ }
+ class Ze extends o {}
+ Ze.kind = "NullPointerException";
+ class Qe extends o {}
+ class Ke extends class {
+ writeBytes(t)
+ {
+ this.writeBytesOffset(t, 0, t.length)
+ }
+ writeBytesOffset(t, e, r)
+ {
+ if (null == t)
+ throw new Ze;
+ if (e < 0 || e > t.length || r < 0 || e + r > t.length || e + r < 0)
+ throw new d;
+ if (0 !== r)
+ for (let n = 0; n < r; n++)
+ this.write(t[e + n])
+ }
+ flush() {}
+ close() {}
+ }
+ {
+ constructor(t=32)
+ {
+ if (super(), this.count = 0, t < 0)
+ throw new a("Negative initial size: " + t);
+ this.buf = new Uint8Array(t)
+ }
+ ensureCapacity(t)
+ {
+ t - this.buf.length > 0 && this.grow(t)
+ }
+ grow(t)
+ {
+ let e = this.buf.length << 1;
+ if (e - t < 0 && (e = t), e < 0) {
+ if (t < 0)
+ throw new Qe;
+ e = w.MAX_VALUE
+ }
+ this.buf = f.copyOfUint8Array(this.buf, e)
+ }
+ write(t)
+ {
+ this.ensureCapacity(this.count + 1),
+ this.buf[this.count] = t,
+ this.count += 1
+ }
+ writeBytesOffset(t, e, r)
+ {
+ if (e < 0 || e > t.length || r < 0 || e + r - t.length > 0)
+ throw new d;
+ this.ensureCapacity(this.count + r),
+ u.arraycopy(t, e, this.buf, this.count, r),
+ this.count += r
+ }
+ writeTo(t)
+ {
+ t.writeBytesOffset(this.buf, 0, this.count)
+ }
+ reset()
+ {
+ this.count = 0
+ }
+ toByteArray()
+ {
+ return f.copyOfUint8Array(this.buf, this.count)
+ }
+ size()
+ {
+ return this.count
+ }
+ toString(t)
+ {
+ return t ? "string" == typeof t ? this.toString_string(t) : this.toString_number(t) : this.toString_void()
+ }
+ toString_void()
+ {
+ return new String(this.buf).toString()
+ }
+ toString_string(t)
+ {
+ return new String(this.buf).toString()
+ }
+ toString_number(t)
+ {
+ return new String(this.buf).toString()
+ }
+ close() {}
+ }
+ function qe() {
+ if ("undefined" != typeof window)
+ return window.BigInt || null;
+ if (void 0 !== r.g)
+ return r.g.BigInt || null;
+ if ("undefined" != typeof self)
+ return self.BigInt || null;
+ throw new Error("Can't search globals for BigInt!")
+ }
+ let Je;
+ function $e(t) {
+ if (void 0 === Je && (Je = qe()), null === Je)
+ throw new Error("BigInt is not supported!");
+ return Je(t)
+ }
+ !function(t) {
+ t[t.ALPHA = 0] = "ALPHA",
+ t[t.LOWER = 1] = "LOWER",
+ t[t.MIXED = 2] = "MIXED",
+ t[t.PUNCT = 3] = "PUNCT",
+ t[t.ALPHA_SHIFT = 4] = "ALPHA_SHIFT",
+ t[t.PUNCT_SHIFT = 5] = "PUNCT_SHIFT"
+ }(Y || (Y = {}));
+ class tr {
+ static decode(t, e)
+ {
+ let r = new T(""),
+ n = I.ISO8859_1;
+ r.enableDecoding(n);
+ let i = 1,
+ o = t[i++],
+ s = new We;
+ for (; i < t[0];) {
+ switch (o) {
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = tr.textCompaction(t, i, r);
+ break;
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ i = tr.byteCompaction(o, t, n, i, r);
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ r.append(t[i++]);
+ break;
+ case tr.NUMERIC_COMPACTION_MODE_LATCH:
+ i = tr.numericCompaction(t, i, r);
+ break;
+ case tr.ECI_CHARSET:
+ I.getCharacterSetECIByValue(t[i++]);
+ break;
+ case tr.ECI_GENERAL_PURPOSE:
+ i += 2;
+ break;
+ case tr.ECI_USER_DEFINED:
+ i++;
+ break;
+ case tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
+ i = tr.decodeMacroBlock(t, i, s);
+ break;
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ case tr.MACRO_PDF417_TERMINATOR:
+ throw new C;
+ default:
+ i--,
+ i = tr.textCompaction(t, i, r)
+ }
+ if (!(i < t.length))
+ throw C.getFormatInstance();
+ o = t[i++]
+ }
+ if (0 === r.length())
+ throw C.getFormatInstance();
+ let a = new W(null, r.toString(), null, e);
+ return a.setOther(s), a
+ }
+ static decodeMacroBlock(t, e, r)
+ {
+ if (e + tr.NUMBER_OF_SEQUENCE_CODEWORDS > t[0])
+ throw C.getFormatInstance();
+ let n = new Int32Array(tr.NUMBER_OF_SEQUENCE_CODEWORDS);
+ for (let r = 0; r < tr.NUMBER_OF_SEQUENCE_CODEWORDS; r++, e++)
+ n[r] = t[e];
+ r.setSegmentIndex(w.parseInt(tr.decodeBase900toBase10(n, tr.NUMBER_OF_SEQUENCE_CODEWORDS)));
+ let i = new T;
+ e = tr.textCompaction(t, e, i),
+ r.setFileId(i.toString());
+ let o = -1;
+ for (t[e] === tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD && (o = e + 1); e < t[0];)
+ switch (t[e]) {
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ switch (t[++e]) {
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME:
+ let n = new T;
+ e = tr.textCompaction(t, e + 1, n),
+ r.setFileName(n.toString());
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_SENDER:
+ let i = new T;
+ e = tr.textCompaction(t, e + 1, i),
+ r.setSender(i.toString());
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE:
+ let o = new T;
+ e = tr.textCompaction(t, e + 1, o),
+ r.setAddressee(o.toString());
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT:
+ let s = new T;
+ e = tr.numericCompaction(t, e + 1, s),
+ r.setSegmentCount(w.parseInt(s.toString()));
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP:
+ let a = new T;
+ e = tr.numericCompaction(t, e + 1, a),
+ r.setTimestamp(je.parseLong(a.toString()));
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM:
+ let l = new T;
+ e = tr.numericCompaction(t, e + 1, l),
+ r.setChecksum(w.parseInt(l.toString()));
+ break;
+ case tr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE:
+ let c = new T;
+ e = tr.numericCompaction(t, e + 1, c),
+ r.setFileSize(je.parseLong(c.toString()));
+ break;
+ default:
+ throw C.getFormatInstance()
+ }
+ break;
+ case tr.MACRO_PDF417_TERMINATOR:
+ e++,
+ r.setLastSegment(!0);
+ break;
+ default:
+ throw C.getFormatInstance()
+ }
+ if (-1 !== o) {
+ let n = e - o;
+ r.isLastSegment() && n--,
+ r.setOptionalData(f.copyOfRange(t, o, o + n))
+ }
+ return e
+ }
+ static textCompaction(t, e, r)
+ {
+ let n = new Int32Array(2 * (t[0] - e)),
+ i = new Int32Array(2 * (t[0] - e)),
+ o = 0,
+ s = !1;
+ for (; e < t[0] && !s;) {
+ let r = t[e++];
+ if (r < tr.TEXT_COMPACTION_MODE_LATCH)
+ n[o] = r / 30,
+ n[o + 1] = r % 30,
+ o += 2;
+ else
+ switch (r) {
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ n[o++] = tr.TEXT_COMPACTION_MODE_LATCH;
+ break;
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ case tr.NUMERIC_COMPACTION_MODE_LATCH:
+ case tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ case tr.MACRO_PDF417_TERMINATOR:
+ e--,
+ s = !0;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n[o] = tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE,
+ r = t[e++],
+ i[o] = r,
+ o++
+ }
+ }
+ return tr.decodeTextCompaction(n, i, o, r), e
+ }
+ static decodeTextCompaction(t, e, r, n)
+ {
+ let i = Y.ALPHA,
+ o = Y.ALPHA,
+ s = 0;
+ for (; s < r;) {
+ let r = t[s],
+ a = "";
+ switch (i) {
+ case Y.ALPHA:
+ if (r < 26)
+ a = String.fromCharCode(65 + r);
+ else
+ switch (r) {
+ case 26:
+ a = " ";
+ break;
+ case tr.LL:
+ i = Y.LOWER;
+ break;
+ case tr.ML:
+ i = Y.MIXED;
+ break;
+ case tr.PS:
+ o = i,
+ i = Y.PUNCT_SHIFT;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n.append(e[s]);
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ break;
+ case Y.LOWER:
+ if (r < 26)
+ a = String.fromCharCode(97 + r);
+ else
+ switch (r) {
+ case 26:
+ a = " ";
+ break;
+ case tr.AS:
+ o = i,
+ i = Y.ALPHA_SHIFT;
+ break;
+ case tr.ML:
+ i = Y.MIXED;
+ break;
+ case tr.PS:
+ o = i,
+ i = Y.PUNCT_SHIFT;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n.append(e[s]);
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ break;
+ case Y.MIXED:
+ if (r < tr.PL)
+ a = tr.MIXED_CHARS[r];
+ else
+ switch (r) {
+ case tr.PL:
+ i = Y.PUNCT;
+ break;
+ case 26:
+ a = " ";
+ break;
+ case tr.LL:
+ i = Y.LOWER;
+ break;
+ case tr.AL:
+ i = Y.ALPHA;
+ break;
+ case tr.PS:
+ o = i,
+ i = Y.PUNCT_SHIFT;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n.append(e[s]);
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ break;
+ case Y.PUNCT:
+ if (r < tr.PAL)
+ a = tr.PUNCT_CHARS[r];
+ else
+ switch (r) {
+ case tr.PAL:
+ i = Y.ALPHA;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n.append(e[s]);
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ break;
+ case Y.ALPHA_SHIFT:
+ if (i = o, r < 26)
+ a = String.fromCharCode(65 + r);
+ else
+ switch (r) {
+ case 26:
+ a = " ";
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ break;
+ case Y.PUNCT_SHIFT:
+ if (i = o, r < tr.PAL)
+ a = tr.PUNCT_CHARS[r];
+ else
+ switch (r) {
+ case tr.PAL:
+ i = Y.ALPHA;
+ break;
+ case tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
+ n.append(e[s]);
+ break;
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ i = Y.ALPHA
+ }
+ }
+ "" !== a && n.append(a),
+ s++
+ }
+ }
+ static byteCompaction(t, e, r, n, i)
+ {
+ let o = new Ke,
+ s = 0,
+ a = 0,
+ l = !1;
+ switch (t) {
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ let t = new Int32Array(6),
+ r = e[n++];
+ for (; n < e[0] && !l;)
+ switch (t[s++] = r, a = 900 * a + r, r = e[n++], r) {
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ case tr.NUMERIC_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ case tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ case tr.MACRO_PDF417_TERMINATOR:
+ n--,
+ l = !0;
+ break;
+ default:
+ if (s % 5 == 0 && s > 0) {
+ for (let t = 0; t < 6; ++t)
+ o.write(Number($e(a) >> $e(8 * (5 - t))));
+ a = 0,
+ s = 0
+ }
+ }
+ n === e[0] && r < tr.TEXT_COMPACTION_MODE_LATCH && (t[s++] = r);
+ for (let e = 0; e < s; e++)
+ o.write(t[e]);
+ break;
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ for (; n < e[0] && !l;) {
+ let t = e[n++];
+ if (t < tr.TEXT_COMPACTION_MODE_LATCH)
+ s++,
+ a = 900 * a + t;
+ else
+ switch (t) {
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ case tr.NUMERIC_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ case tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ case tr.MACRO_PDF417_TERMINATOR:
+ n--,
+ l = !0
+ }
+ if (s % 5 == 0 && s > 0) {
+ for (let t = 0; t < 6; ++t)
+ o.write(Number($e(a) >> $e(8 * (5 - t))));
+ a = 0,
+ s = 0
+ }
+ }
+ }
+ return i.append(S.decode(o.toByteArray(), r)), n
+ }
+ static numericCompaction(t, e, r)
+ {
+ let n = 0,
+ i = !1,
+ o = new Int32Array(tr.MAX_NUMERIC_CODEWORDS);
+ for (; e < t[0] && !i;) {
+ let s = t[e++];
+ if (e === t[0] && (i = !0), s < tr.TEXT_COMPACTION_MODE_LATCH)
+ o[n] = s,
+ n++;
+ else
+ switch (s) {
+ case tr.TEXT_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH:
+ case tr.BYTE_COMPACTION_MODE_LATCH_6:
+ case tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
+ case tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
+ case tr.MACRO_PDF417_TERMINATOR:
+ e--,
+ i = !0
+ }
+ (n % tr.MAX_NUMERIC_CODEWORDS == 0 || s === tr.NUMERIC_COMPACTION_MODE_LATCH || i) && n > 0 && (r.append(tr.decodeBase900toBase10(o, n)), n = 0)
+ }
+ return e
+ }
+ static decodeBase900toBase10(t, e)
+ {
+ let r = $e(0);
+ for (let n = 0; n < e; n++)
+ r += tr.EXP900[e - n - 1] * $e(t[n]);
+ let n = r.toString();
+ if ("1" !== n.charAt(0))
+ throw new C;
+ return n.substring(1)
+ }
+ }
+ tr.TEXT_COMPACTION_MODE_LATCH = 900,
+ tr.BYTE_COMPACTION_MODE_LATCH = 901,
+ tr.NUMERIC_COMPACTION_MODE_LATCH = 902,
+ tr.BYTE_COMPACTION_MODE_LATCH_6 = 924,
+ tr.ECI_USER_DEFINED = 925,
+ tr.ECI_GENERAL_PURPOSE = 926,
+ tr.ECI_CHARSET = 927,
+ tr.BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928,
+ tr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923,
+ tr.MACRO_PDF417_TERMINATOR = 922,
+ tr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913,
+ tr.MAX_NUMERIC_CODEWORDS = 15,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME = 0,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT = 1,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP = 2,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_SENDER = 3,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE = 4,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE = 5,
+ tr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM = 6,
+ tr.PL = 25,
+ tr.LL = 27,
+ tr.AS = 27,
+ tr.ML = 28,
+ tr.AL = 28,
+ tr.PS = 29,
+ tr.PAL = 29,
+ tr.PUNCT_CHARS = ";<>@[\\]_`~!\r\t,:\n-.$/\"|*()?{}'",
+ tr.MIXED_CHARS = "0123456789&\r\t,:#-.$/+%*=^",
+ tr.EXP900 = qe() ? function() {
+ let t = [];
+ t[0] = $e(1);
+ let e = $e(900);
+ t[1] = e;
+ for (let r = 2; r < 16; r++)
+ t[r] = t[r - 1] * e;
+ return t
+ }() : [],
+ tr.NUMBER_OF_SEQUENCE_CODEWORDS = 2;
+ class er {
+ constructor() {}
+ static decode(t, e, r, n, i, o, s)
+ {
+ let a,
+ l = new xe(t, e, r, n, i),
+ c = null,
+ h = null;
+ for (let r = !0; ; r = !1) {
+ if (null != e && (c = er.getRowIndicatorColumn(t, l, e, !0, o, s)), null != n && (h = er.getRowIndicatorColumn(t, l, n, !1, o, s)), a = er.merge(c, h), null == a)
+ throw N.getNotFoundInstance();
+ let i = a.getBoundingBox();
+ if (!r || null == i || !(i.getMinY() < l.getMinY() || i.getMaxY() > l.getMaxY()))
+ break;
+ l = i
+ }
+ a.setBoundingBox(l);
+ let u = a.getBarcodeColumnCount() + 1;
+ a.setDetectionResultColumn(0, c),
+ a.setDetectionResultColumn(u, h);
+ let d = null != c;
+ for (let e = 1; e <= u; e++) {
+ let r,
+ n = d ? e : u - e;
+ if (void 0 !== a.getDetectionResultColumn(n))
+ continue;
+ r = 0 === n || n === u ? new ze(l, 0 === n) : new He(l),
+ a.setDetectionResultColumn(n, r);
+ let i = -1,
+ c = i;
+ for (let e = l.getMinY(); e <= l.getMaxY(); e++) {
+ if (i = er.getStartColumn(a, n, e, d), i < 0 || i > l.getMaxX()) {
+ if (-1 === c)
+ continue;
+ i = c
+ }
+ let h = er.detectCodeword(t, l.getMinX(), l.getMaxX(), d, i, e, o, s);
+ null != h && (r.setCodeword(e, h), c = i, o = Math.min(o, h.getWidth()), s = Math.max(s, h.getWidth()))
+ }
+ }
+ return er.createDecoderResult(a)
+ }
+ static merge(t, e)
+ {
+ if (null == t && null == e)
+ return null;
+ let r = er.getBarcodeMetadata(t, e);
+ if (null == r)
+ return null;
+ let n = xe.merge(er.adjustBoundingBox(t), er.adjustBoundingBox(e));
+ return new Ge(r, n)
+ }
+ static adjustBoundingBox(t)
+ {
+ if (null == t)
+ return null;
+ let e = t.getRowHeights();
+ if (null == e)
+ return null;
+ let r = er.getMax(e),
+ n = 0;
+ for (let t of e)
+ if (n += r - t, t > 0)
+ break;
+ let i = t.getCodewords();
+ for (let t = 0; n > 0 && null == i[t]; t++)
+ n--;
+ let o = 0;
+ for (let t = e.length - 1; t >= 0 && (o += r - e[t], !(e[t] > 0)); t--)
+ ;
+ for (let t = i.length - 1; o > 0 && null == i[t]; t--)
+ o--;
+ return t.getBoundingBox().addMissingRows(n, o, t.isLeft())
+ }
+ static getMax(t)
+ {
+ let e = -1;
+ for (let r of t)
+ e = Math.max(e, r);
+ return e
+ }
+ static getBarcodeMetadata(t, e)
+ {
+ let r,
+ n;
+ return null == t || null == (r = t.getBarcodeMetadata()) ? null == e ? null : e.getBarcodeMetadata() : null == e || null == (n = e.getBarcodeMetadata()) ? r : r.getColumnCount() !== n.getColumnCount() && r.getErrorCorrectionLevel() !== n.getErrorCorrectionLevel() && r.getRowCount() !== n.getRowCount() ? null : r
+ }
+ static getRowIndicatorColumn(t, e, r, n, i, o)
+ {
+ let s = new ze(e, n);
+ for (let a = 0; a < 2; a++) {
+ let l = 0 === a ? 1 : -1,
+ c = Math.trunc(Math.trunc(r.getX()));
+ for (let a = Math.trunc(Math.trunc(r.getY())); a <= e.getMaxY() && a >= e.getMinY(); a += l) {
+ let e = er.detectCodeword(t, 0, t.getWidth(), n, c, a, i, o);
+ null != e && (s.setCodeword(a, e), c = n ? e.getStartX() : e.getEndX())
+ }
+ }
+ return s
+ }
+ static adjustCodewordCount(t, e)
+ {
+ let r = e[0][1],
+ n = r.getValue(),
+ i = t.getBarcodeColumnCount() * t.getBarcodeRowCount() - er.getNumberOfECCodeWords(t.getBarcodeECLevel());
+ if (0 === n.length) {
+ if (i < 1 || i > be.MAX_CODEWORDS_IN_BARCODE)
+ throw N.getNotFoundInstance();
+ r.setValue(i)
+ } else
+ n[0] !== i && r.setValue(i)
+ }
+ static createDecoderResult(t)
+ {
+ let e = er.createBarcodeMatrix(t);
+ er.adjustCodewordCount(t, e);
+ let r = new Array,
+ n = new Int32Array(t.getBarcodeRowCount() * t.getBarcodeColumnCount()),
+ i = [],
+ o = new Array;
+ for (let s = 0; s < t.getBarcodeRowCount(); s++)
+ for (let a = 0; a < t.getBarcodeColumnCount(); a++) {
+ let l = e[s][a + 1].getValue(),
+ c = s * t.getBarcodeColumnCount() + a;
+ 0 === l.length ? r.push(c) : 1 === l.length ? n[c] = l[0] : (o.push(c), i.push(l))
+ }
+ let s = new Array(i.length);
+ for (let t = 0; t < s.length; t++)
+ s[t] = i[t];
+ return er.createDecoderResultFromAmbiguousValues(t.getBarcodeECLevel(), n, be.toIntArray(r), be.toIntArray(o), s)
+ }
+ static createDecoderResultFromAmbiguousValues(t, e, r, n, i)
+ {
+ let o = new Int32Array(n.length),
+ s = 100;
+ for (; s-- > 0;) {
+ for (let t = 0; t < o.length; t++)
+ e[n[t]] = i[t][o[t]];
+ try {
+ return er.decodeCodewords(e, t, r)
+ } catch (t) {
+ if (!(t instanceof c))
+ throw t
+ }
+ if (0 === o.length)
+ throw c.getChecksumInstance();
+ for (let t = 0; t < o.length; t++) {
+ if (o[t] < i[t].length - 1) {
+ o[t]++;
+ break
+ }
+ if (o[t] = 0, t === o.length - 1)
+ throw c.getChecksumInstance()
+ }
+ }
+ throw c.getChecksumInstance()
+ }
+ static createBarcodeMatrix(t)
+ {
+ let e = Array.from({
+ length: t.getBarcodeRowCount()
+ }, (() => new Array(t.getBarcodeColumnCount() + 2)));
+ for (let t = 0; t < e.length; t++)
+ for (let r = 0; r < e[t].length; r++)
+ e[t][r] = new Ve;
+ let r = 0;
+ for (let n of t.getDetectionResultColumns()) {
+ if (null != n)
+ for (let t of n.getCodewords())
+ if (null != t) {
+ let n = t.getRowNumber();
+ if (n >= 0) {
+ if (n >= e.length)
+ continue;
+ e[n][r].setValue(t.getValue())
+ }
+ }
+ r++
+ }
+ return e
+ }
+ static isValidBarcodeColumn(t, e)
+ {
+ return e >= 0 && e <= t.getBarcodeColumnCount() + 1
+ }
+ static getStartColumn(t, e, r, n)
+ {
+ let i = n ? 1 : -1,
+ o = null;
+ if (er.isValidBarcodeColumn(t, e - i) && (o = t.getDetectionResultColumn(e - i).getCodeword(r)), null != o)
+ return n ? o.getEndX() : o.getStartX();
+ if (o = t.getDetectionResultColumn(e).getCodewordNearby(r), null != o)
+ return n ? o.getStartX() : o.getEndX();
+ if (er.isValidBarcodeColumn(t, e - i) && (o = t.getDetectionResultColumn(e - i).getCodewordNearby(r)), null != o)
+ return n ? o.getEndX() : o.getStartX();
+ let s = 0;
+ for (; er.isValidBarcodeColumn(t, e - i);) {
+ e -= i;
+ for (let r of t.getDetectionResultColumn(e).getCodewords())
+ if (null != r)
+ return (n ? r.getEndX() : r.getStartX()) + i * s * (r.getEndX() - r.getStartX());
+ s++
+ }
+ return n ? t.getBoundingBox().getMinX() : t.getBoundingBox().getMaxX()
+ }
+ static detectCodeword(t, e, r, n, i, o, s, a)
+ {
+ i = er.adjustCodewordStartColumn(t, e, r, n, i, o);
+ let l,
+ c = er.getModuleBitCount(t, e, r, n, i, o);
+ if (null == c)
+ return null;
+ let h = et.sum(c);
+ if (n)
+ l = i + h;
+ else {
+ for (let t = 0; t < c.length / 2; t++) {
+ let e = c[t];
+ c[t] = c[c.length - 1 - t],
+ c[c.length - 1 - t] = e
+ }
+ l = i,
+ i = l - h
+ }
+ if (!er.checkCodewordSkew(h, s, a))
+ return null;
+ let u = Xe.getDecodedValue(c),
+ d = be.getCodeword(u);
+ return -1 === d ? null : new Ye(i, l, er.getCodewordBucketNumber(u), d)
+ }
+ static getModuleBitCount(t, e, r, n, i, o)
+ {
+ let s = i,
+ a = new Int32Array(8),
+ l = 0,
+ c = n ? 1 : -1,
+ h = n;
+ for (; (n ? s < r : s >= e) && l < a.length;)
+ t.get(s, o) === h ? (a[l]++, s += c) : (l++, h = !h);
+ return l === a.length || s === (n ? r : e) && l === a.length - 1 ? a : null
+ }
+ static getNumberOfECCodeWords(t)
+ {
+ return 2 << t
+ }
+ static adjustCodewordStartColumn(t, e, r, n, i, o)
+ {
+ let s = i,
+ a = n ? -1 : 1;
+ for (let l = 0; l < 2; l++) {
+ for (; (n ? s >= e : s < r) && n === t.get(s, o);) {
+ if (Math.abs(i - s) > er.CODEWORD_SKEW_SIZE)
+ return i;
+ s += a
+ }
+ a = -a,
+ n = !n
+ }
+ return s
+ }
+ static checkCodewordSkew(t, e, r)
+ {
+ return e - er.CODEWORD_SKEW_SIZE <= t && t <= r + er.CODEWORD_SKEW_SIZE
+ }
+ static decodeCodewords(t, e, r)
+ {
+ if (0 === t.length)
+ throw C.getFormatInstance();
+ let n = 1 << e + 1,
+ i = er.correctErrors(t, r, n);
+ er.verifyCodewordCount(t, n);
+ let o = tr.decode(t, "" + e);
+ return o.setErrorsCorrected(i), o.setErasures(r.length), o
+ }
+ static correctErrors(t, e, r)
+ {
+ if (null != e && e.length > r / 2 + er.MAX_ERRORS || r < 0 || r > er.MAX_EC_CODEWORDS)
+ throw c.getChecksumInstance();
+ return er.errorCorrection.decode(t, r, e)
+ }
+ static verifyCodewordCount(t, e)
+ {
+ if (t.length < 4)
+ throw C.getFormatInstance();
+ let r = t[0];
+ if (r > t.length)
+ throw C.getFormatInstance();
+ if (0 === r) {
+ if (!(e < t.length))
+ throw C.getFormatInstance();
+ t[0] = t.length - e
+ }
+ }
+ static getBitCountForCodeword(t)
+ {
+ let e = new Int32Array(8),
+ r = 0,
+ n = e.length - 1;
+ for (; !((1 & t) !== r && (r = 1 & t, n--, n < 0));)
+ e[n]++,
+ t >>= 1;
+ return e
+ }
+ static getCodewordBucketNumber(t)
+ {
+ return t instanceof Int32Array ? this.getCodewordBucketNumber_Int32Array(t) : this.getCodewordBucketNumber_number(t)
+ }
+ static getCodewordBucketNumber_number(t)
+ {
+ return er.getCodewordBucketNumber(er.getBitCountForCodeword(t))
+ }
+ static getCodewordBucketNumber_Int32Array(t)
+ {
+ return (t[0] - t[2] + t[4] - t[6] + 9) % 9
+ }
+ static toString(t)
+ {
+ let e = new Ue;
+ for (let r = 0; r < t.length; r++) {
+ e.format("Row %2d: ", r);
+ for (let n = 0; n < t[r].length; n++) {
+ let i = t[r][n];
+ 0 === i.getValue().length ? e.format(" ", null) : e.format("%4d(%2d)", i.getValue()[0], i.getConfidence(i.getValue()[0]))
+ }
+ e.format("%n")
+ }
+ return e.toString()
+ }
+ }
+ er.CODEWORD_SKEW_SIZE = 2,
+ er.MAX_ERRORS = 3,
+ er.MAX_EC_CODEWORDS = 512,
+ er.errorCorrection = new Fe;
+ class rr {
+ decode(t, e=null)
+ {
+ let r = rr.decode(t, e, !1);
+ if (null == r || 0 === r.length || null == r[0])
+ throw N.getNotFoundInstance();
+ return r[0]
+ }
+ decodeMultiple(t, e=null)
+ {
+ try {
+ return rr.decode(t, e, !0)
+ } catch (t) {
+ if (t instanceof C || t instanceof c)
+ throw N.getNotFoundInstance();
+ throw t
+ }
+ }
+ static decode(t, e, r)
+ {
+ const n = new Array,
+ i = Le.detectMultiple(t, e, r);
+ for (const t of i.getPoints()) {
+ const e = er.decode(i.getBits(), t[4], t[5], t[6], t[7], rr.getMinCodewordWidth(t), rr.getMaxCodewordWidth(t)),
+ r = new F(e.getText(), e.getRawBytes(), void 0, t, k.PDF_417);
+ r.putMetadata(X.ERROR_CORRECTION_LEVEL, e.getECLevel());
+ const o = e.getOther();
+ null != o && r.putMetadata(X.PDF417_EXTRA_METADATA, o),
+ n.push(r)
+ }
+ return n.map((t => t))
+ }
+ static getMaxWidth(t, e)
+ {
+ return null == t || null == e ? 0 : Math.trunc(Math.abs(t.getX() - e.getX()))
+ }
+ static getMinWidth(t, e)
+ {
+ return null == t || null == e ? w.MAX_VALUE : Math.trunc(Math.abs(t.getX() - e.getX()))
+ }
+ static getMaxCodewordWidth(t)
+ {
+ return Math.floor(Math.max(Math.max(rr.getMaxWidth(t[0], t[4]), rr.getMaxWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD / be.MODULES_IN_STOP_PATTERN), Math.max(rr.getMaxWidth(t[1], t[5]), rr.getMaxWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD / be.MODULES_IN_STOP_PATTERN)))
+ }
+ static getMinCodewordWidth(t)
+ {
+ return Math.floor(Math.min(Math.min(rr.getMinWidth(t[0], t[4]), rr.getMinWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD / be.MODULES_IN_STOP_PATTERN), Math.min(rr.getMinWidth(t[1], t[5]), rr.getMinWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD / be.MODULES_IN_STOP_PATTERN)))
+ }
+ reset() {}
+ }
+ class nr extends o {}
+ nr.kind = "ReaderException";
+ class ir {
+ constructor(t, e)
+ {
+ this.verbose = !0 === t,
+ e && this.setHints(e)
+ }
+ decode(t, e)
+ {
+ return e && this.setHints(e), this.decodeInternal(t)
+ }
+ decodeWithState(t)
+ {
+ return null !== this.readers && void 0 !== this.readers || this.setHints(null), this.decodeInternal(t)
+ }
+ setHints(t)
+ {
+ this.hints = t;
+ const e = null != t && void 0 !== t.get(E.TRY_HARDER),
+ r = null == t ? null : t.get(E.POSSIBLE_FORMATS),
+ n = new Array;
+ if (null != r) {
+ const i = r.some((t => t === k.UPC_A || t === k.UPC_E || t === k.EAN_13 || t === k.EAN_8 || t === k.CODABAR || t === k.CODE_39 || t === k.CODE_93 || t === k.CODE_128 || t === k.ITF || t === k.RSS_14 || t === k.RSS_EXPANDED));
+ i && !e && n.push(new ee(t, this.verbose)),
+ r.includes(k.QR_CODE) && n.push(new Oe),
+ r.includes(k.DATA_MATRIX) && n.push(new ue),
+ r.includes(k.AZTEC) && n.push(new gt),
+ r.includes(k.PDF_417) && n.push(new rr),
+ i && e && n.push(new ee(t, this.verbose))
+ }
+ 0 === n.length && (e || n.push(new ee(t, this.verbose)), n.push(new Oe), n.push(new ue), n.push(new gt), n.push(new rr), e && n.push(new ee(t, this.verbose))),
+ this.readers = n
+ }
+ reset()
+ {
+ if (null !== this.readers)
+ for (const t of this.readers)
+ t.reset()
+ }
+ decodeInternal(t)
+ {
+ if (null === this.readers)
+ throw new nr("No readers where selected, nothing can be read.");
+ for (const e of this.readers)
+ try {
+ return e.decode(t, this.hints)
+ } catch (t) {
+ if (t instanceof nr)
+ continue
+ }
+ throw new N("No MultiFormat Readers were able to detect the code.")
+ }
+ }
+ var or;
+ !function(t) {
+ t[t.ERROR_CORRECTION = 0] = "ERROR_CORRECTION",
+ t[t.CHARACTER_SET = 1] = "CHARACTER_SET",
+ t[t.DATA_MATRIX_SHAPE = 2] = "DATA_MATRIX_SHAPE",
+ t[t.MIN_SIZE = 3] = "MIN_SIZE",
+ t[t.MAX_SIZE = 4] = "MAX_SIZE",
+ t[t.MARGIN = 5] = "MARGIN",
+ t[t.PDF417_COMPACT = 6] = "PDF417_COMPACT",
+ t[t.PDF417_COMPACTION = 7] = "PDF417_COMPACTION",
+ t[t.PDF417_DIMENSIONS = 8] = "PDF417_DIMENSIONS",
+ t[t.AZTEC_LAYERS = 9] = "AZTEC_LAYERS",
+ t[t.QR_VERSION = 10] = "QR_VERSION"
+ }(or || (or = {}));
+ var sr = or;
+ class ar {
+ constructor(t)
+ {
+ this.field = t,
+ this.cachedGenerators = [],
+ this.cachedGenerators.push(new Z(t, Int32Array.from([1])))
+ }
+ buildGenerator(t)
+ {
+ const e = this.cachedGenerators;
+ if (t >= e.length) {
+ let r = e[e.length - 1];
+ const n = this.field;
+ for (let i = e.length; i <= t; i++) {
+ const t = r.multiply(new Z(n, Int32Array.from([1, n.exp(i - 1 + n.getGeneratorBase())])));
+ e.push(t),
+ r = t
+ }
+ }
+ return e[t]
+ }
+ encode(t, e)
+ {
+ if (0 === e)
+ throw new a("No error correction bytes");
+ const r = t.length - e;
+ if (r <= 0)
+ throw new a("No data bytes provided");
+ const n = this.buildGenerator(e),
+ i = new Int32Array(r);
+ u.arraycopy(t, 0, i, 0, r);
+ let o = new Z(this.field, i);
+ o = o.multiplyByMonomial(e, 1);
+ const s = o.divide(n)[1].getCoefficients(),
+ l = e - s.length;
+ for (let e = 0; e < l; e++)
+ t[r + e] = 0;
+ u.arraycopy(s, 0, t, r + l, s.length)
+ }
+ }
+ class lr {
+ constructor() {}
+ static applyMaskPenaltyRule1(t)
+ {
+ return lr.applyMaskPenaltyRule1Internal(t, !0) + lr.applyMaskPenaltyRule1Internal(t, !1)
+ }
+ static applyMaskPenaltyRule2(t)
+ {
+ let e = 0;
+ const r = t.getArray(),
+ n = t.getWidth(),
+ i = t.getHeight();
+ for (let t = 0; t < i - 1; t++) {
+ const i = r[t];
+ for (let o = 0; o < n - 1; o++) {
+ const n = i[o];
+ n === i[o + 1] && n === r[t + 1][o] && n === r[t + 1][o + 1] && e++
+ }
+ }
+ return lr.N2 * e
+ }
+ static applyMaskPenaltyRule3(t)
+ {
+ let e = 0;
+ const r = t.getArray(),
+ n = t.getWidth(),
+ i = t.getHeight();
+ for (let t = 0; t < i; t++)
+ for (let o = 0; o < n; o++) {
+ const s = r[t];
+ o + 6 < n && 1 === s[o] && 0 === s[o + 1] && 1 === s[o + 2] && 1 === s[o + 3] && 1 === s[o + 4] && 0 === s[o + 5] && 1 === s[o + 6] && (lr.isWhiteHorizontal(s, o - 4, o) || lr.isWhiteHorizontal(s, o + 7, o + 11)) && e++,
+ t + 6 < i && 1 === r[t][o] && 0 === r[t + 1][o] && 1 === r[t + 2][o] && 1 === r[t + 3][o] && 1 === r[t + 4][o] && 0 === r[t + 5][o] && 1 === r[t + 6][o] && (lr.isWhiteVertical(r, o, t - 4, t) || lr.isWhiteVertical(r, o, t + 7, t + 11)) && e++
+ }
+ return e * lr.N3
+ }
+ static isWhiteHorizontal(t, e, r)
+ {
+ e = Math.max(e, 0),
+ r = Math.min(r, t.length);
+ for (let n = e; n < r; n++)
+ if (1 === t[n])
+ return !1;
+ return !0
+ }
+ static isWhiteVertical(t, e, r, n)
+ {
+ r = Math.max(r, 0),
+ n = Math.min(n, t.length);
+ for (let i = r; i < n; i++)
+ if (1 === t[i][e])
+ return !1;
+ return !0
+ }
+ static applyMaskPenaltyRule4(t)
+ {
+ let e = 0;
+ const r = t.getArray(),
+ n = t.getWidth(),
+ i = t.getHeight();
+ for (let t = 0; t < i; t++) {
+ const i = r[t];
+ for (let t = 0; t < n; t++)
+ 1 === i[t] && e++
+ }
+ const o = t.getHeight() * t.getWidth();
+ return Math.floor(10 * Math.abs(2 * e - o) / o) * lr.N4
+ }
+ static getDataMaskBit(t, e, r)
+ {
+ let n,
+ i;
+ switch (t) {
+ case 0:
+ n = r + e & 1;
+ break;
+ case 1:
+ n = 1 & r;
+ break;
+ case 2:
+ n = e % 3;
+ break;
+ case 3:
+ n = (r + e) % 3;
+ break;
+ case 4:
+ n = Math.floor(r / 2) + Math.floor(e / 3) & 1;
+ break;
+ case 5:
+ i = r * e,
+ n = (1 & i) + i % 3;
+ break;
+ case 6:
+ i = r * e,
+ n = (1 & i) + i % 3 & 1;
+ break;
+ case 7:
+ i = r * e,
+ n = i % 3 + (r + e & 1) & 1;
+ break;
+ default:
+ throw new a("Invalid mask pattern: " + t)
+ }
+ return 0 === n
+ }
+ static applyMaskPenaltyRule1Internal(t, e)
+ {
+ let r = 0;
+ const n = e ? t.getHeight() : t.getWidth(),
+ i = e ? t.getWidth() : t.getHeight(),
+ o = t.getArray();
+ for (let t = 0; t < n; t++) {
+ let n = 0,
+ s = -1;
+ for (let a = 0; a < i; a++) {
+ const i = e ? o[t][a] : o[a][t];
+ i === s ? n++ : (n >= 5 && (r += lr.N1 + (n - 5)), n = 1, s = i)
+ }
+ n >= 5 && (r += lr.N1 + (n - 5))
+ }
+ return r
+ }
+ }
+ lr.N1 = 3,
+ lr.N2 = 3,
+ lr.N3 = 40,
+ lr.N4 = 10;
+ class cr {
+ constructor(t, e)
+ {
+ this.width = t,
+ this.height = e;
+ const r = new Array(e);
+ for (let n = 0; n !== e; n++)
+ r[n] = new Uint8Array(t);
+ this.bytes = r
+ }
+ getHeight()
+ {
+ return this.height
+ }
+ getWidth()
+ {
+ return this.width
+ }
+ get(t, e)
+ {
+ return this.bytes[e][t]
+ }
+ getArray()
+ {
+ return this.bytes
+ }
+ setNumber(t, e, r)
+ {
+ this.bytes[e][t] = r
+ }
+ setBoolean(t, e, r)
+ {
+ this.bytes[e][t] = r ? 1 : 0
+ }
+ clear(t)
+ {
+ for (const e of this.bytes)
+ f.fill(e, t)
+ }
+ equals(t)
+ {
+ if (!(t instanceof cr))
+ return !1;
+ const e = t;
+ if (this.width !== e.width)
+ return !1;
+ if (this.height !== e.height)
+ return !1;
+ for (let t = 0, r = this.height; t < r; ++t) {
+ const r = this.bytes[t],
+ n = e.bytes[t];
+ for (let t = 0, e = this.width; t < e; ++t)
+ if (r[t] !== n[t])
+ return !1
+ }
+ return !0
+ }
+ toString()
+ {
+ const t = new T;
+ for (let e = 0, r = this.height; e < r; ++e) {
+ const r = this.bytes[e];
+ for (let e = 0, n = this.width; e < n; ++e)
+ switch (r[e]) {
+ case 0:
+ t.append(" 0");
+ break;
+ case 1:
+ t.append(" 1");
+ break;
+ default:
+ t.append(" ")
+ }
+ t.append("\n")
+ }
+ return t.toString()
+ }
+ }
+ class hr {
+ constructor()
+ {
+ this.maskPattern = -1
+ }
+ getMode()
+ {
+ return this.mode
+ }
+ getECLevel()
+ {
+ return this.ecLevel
+ }
+ getVersion()
+ {
+ return this.version
+ }
+ getMaskPattern()
+ {
+ return this.maskPattern
+ }
+ getMatrix()
+ {
+ return this.matrix
+ }
+ toString()
+ {
+ const t = new T;
+ return t.append("<<\n"), t.append(" mode: "), t.append(this.mode ? this.mode.toString() : "null"), t.append("\n ecLevel: "), t.append(this.ecLevel ? this.ecLevel.toString() : "null"), t.append("\n version: "), t.append(this.version ? this.version.toString() : "null"), t.append("\n maskPattern: "), t.append(this.maskPattern.toString()), this.matrix ? (t.append("\n matrix:\n"), t.append(this.matrix.toString())) : t.append("\n matrix: null\n"), t.append(">>\n"), t.toString()
+ }
+ setMode(t)
+ {
+ this.mode = t
+ }
+ setECLevel(t)
+ {
+ this.ecLevel = t
+ }
+ setVersion(t)
+ {
+ this.version = t
+ }
+ setMaskPattern(t)
+ {
+ this.maskPattern = t
+ }
+ setMatrix(t)
+ {
+ this.matrix = t
+ }
+ static isValidMaskPattern(t)
+ {
+ return t >= 0 && t < hr.NUM_MASK_PATTERNS
+ }
+ }
+ hr.NUM_MASK_PATTERNS = 8;
+ class ur extends o {}
+ ur.kind = "WriterException";
+ class dr {
+ constructor() {}
+ static clearMatrix(t)
+ {
+ t.clear(255)
+ }
+ static buildMatrix(t, e, r, n, i)
+ {
+ dr.clearMatrix(i),
+ dr.embedBasicPatterns(r, i),
+ dr.embedTypeInfo(e, n, i),
+ dr.maybeEmbedVersionInfo(r, i),
+ dr.embedDataBits(t, n, i)
+ }
+ static embedBasicPatterns(t, e)
+ {
+ dr.embedPositionDetectionPatternsAndSeparators(e),
+ dr.embedDarkDotAtLeftBottomCorner(e),
+ dr.maybeEmbedPositionAdjustmentPatterns(t, e),
+ dr.embedTimingPatterns(e)
+ }
+ static embedTypeInfo(t, e, r)
+ {
+ const n = new A;
+ dr.makeTypeInfoBits(t, e, n);
+ for (let t = 0, e = n.getSize(); t < e; ++t) {
+ const e = n.get(n.getSize() - 1 - t),
+ i = dr.TYPE_INFO_COORDINATES[t],
+ o = i[0],
+ s = i[1];
+ if (r.setBoolean(o, s, e), t < 8) {
+ const n = r.getWidth() - t - 1,
+ i = 8;
+ r.setBoolean(n, i, e)
+ } else {
+ const n = 8,
+ i = r.getHeight() - 7 + (t - 8);
+ r.setBoolean(n, i, e)
+ }
+ }
+ }
+ static maybeEmbedVersionInfo(t, e)
+ {
+ if (t.getVersionNumber() < 7)
+ return;
+ const r = new A;
+ dr.makeVersionInfoBits(t, r);
+ let n = 17;
+ for (let t = 0; t < 6; ++t)
+ for (let i = 0; i < 3; ++i) {
+ const o = r.get(n);
+ n--,
+ e.setBoolean(t, e.getHeight() - 11 + i, o),
+ e.setBoolean(e.getHeight() - 11 + i, t, o)
+ }
+ }
+ static embedDataBits(t, e, r)
+ {
+ let n = 0,
+ i = -1,
+ o = r.getWidth() - 1,
+ s = r.getHeight() - 1;
+ for (; o > 0;) {
+ for (6 === o && (o -= 1); s >= 0 && s < r.getHeight();) {
+ for (let i = 0; i < 2; ++i) {
+ const a = o - i;
+ if (!dr.isEmpty(r.get(a, s)))
+ continue;
+ let l;
+ n < t.getSize() ? (l = t.get(n), ++n) : l = !1,
+ 255 !== e && lr.getDataMaskBit(e, a, s) && (l = !l),
+ r.setBoolean(a, s, l)
+ }
+ s += i
+ }
+ i = -i,
+ s += i,
+ o -= 2
+ }
+ if (n !== t.getSize())
+ throw new ur("Not all bits consumed: " + n + "/" + t.getSize())
+ }
+ static findMSBSet(t)
+ {
+ return 32 - w.numberOfLeadingZeros(t)
+ }
+ static calculateBCHCode(t, e)
+ {
+ if (0 === e)
+ throw new a("0 polynomial");
+ const r = dr.findMSBSet(e);
+ for (t <<= r - 1; dr.findMSBSet(t) >= r;)
+ t ^= e << dr.findMSBSet(t) - r;
+ return t
+ }
+ static makeTypeInfoBits(t, e, r)
+ {
+ if (!hr.isValidMaskPattern(e))
+ throw new ur("Invalid mask pattern");
+ const n = t.getBits() << 3 | e;
+ r.appendBits(n, 5);
+ const i = dr.calculateBCHCode(n, dr.TYPE_INFO_POLY);
+ r.appendBits(i, 10);
+ const o = new A;
+ if (o.appendBits(dr.TYPE_INFO_MASK_PATTERN, 15), r.xor(o), 15 !== r.getSize())
+ throw new ur("should not happen but we got: " + r.getSize())
+ }
+ static makeVersionInfoBits(t, e)
+ {
+ e.appendBits(t.getVersionNumber(), 6);
+ const r = dr.calculateBCHCode(t.getVersionNumber(), dr.VERSION_INFO_POLY);
+ if (e.appendBits(r, 12), 18 !== e.getSize())
+ throw new ur("should not happen but we got: " + e.getSize())
+ }
+ static isEmpty(t)
+ {
+ return 255 === t
+ }
+ static embedTimingPatterns(t)
+ {
+ for (let e = 8; e < t.getWidth() - 8; ++e) {
+ const r = (e + 1) % 2;
+ dr.isEmpty(t.get(e, 6)) && t.setNumber(e, 6, r),
+ dr.isEmpty(t.get(6, e)) && t.setNumber(6, e, r)
+ }
+ }
+ static embedDarkDotAtLeftBottomCorner(t)
+ {
+ if (0 === t.get(8, t.getHeight() - 8))
+ throw new ur;
+ t.setNumber(8, t.getHeight() - 8, 1)
+ }
+ static embedHorizontalSeparationPattern(t, e, r)
+ {
+ for (let n = 0; n < 8; ++n) {
+ if (!dr.isEmpty(r.get(t + n, e)))
+ throw new ur;
+ r.setNumber(t + n, e, 0)
+ }
+ }
+ static embedVerticalSeparationPattern(t, e, r)
+ {
+ for (let n = 0; n < 7; ++n) {
+ if (!dr.isEmpty(r.get(t, e + n)))
+ throw new ur;
+ r.setNumber(t, e + n, 0)
+ }
+ }
+ static embedPositionAdjustmentPattern(t, e, r)
+ {
+ for (let n = 0; n < 5; ++n) {
+ const i = dr.POSITION_ADJUSTMENT_PATTERN[n];
+ for (let o = 0; o < 5; ++o)
+ r.setNumber(t + o, e + n, i[o])
+ }
+ }
+ static embedPositionDetectionPattern(t, e, r)
+ {
+ for (let n = 0; n < 7; ++n) {
+ const i = dr.POSITION_DETECTION_PATTERN[n];
+ for (let o = 0; o < 7; ++o)
+ r.setNumber(t + o, e + n, i[o])
+ }
+ }
+ static embedPositionDetectionPatternsAndSeparators(t)
+ {
+ const e = dr.POSITION_DETECTION_PATTERN[0].length;
+ dr.embedPositionDetectionPattern(0, 0, t),
+ dr.embedPositionDetectionPattern(t.getWidth() - e, 0, t),
+ dr.embedPositionDetectionPattern(0, t.getWidth() - e, t);
+ dr.embedHorizontalSeparationPattern(0, 7, t),
+ dr.embedHorizontalSeparationPattern(t.getWidth() - 8, 7, t),
+ dr.embedHorizontalSeparationPattern(0, t.getWidth() - 8, t);
+ dr.embedVerticalSeparationPattern(7, 0, t),
+ dr.embedVerticalSeparationPattern(t.getHeight() - 7 - 1, 0, t),
+ dr.embedVerticalSeparationPattern(7, t.getHeight() - 7, t)
+ }
+ static maybeEmbedPositionAdjustmentPatterns(t, e)
+ {
+ if (t.getVersionNumber() < 2)
+ return;
+ const r = t.getVersionNumber() - 1,
+ n = dr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[r];
+ for (let t = 0, r = n.length; t !== r; t++) {
+ const i = n[t];
+ if (i >= 0)
+ for (let t = 0; t !== r; t++) {
+ const r = n[t];
+ r >= 0 && dr.isEmpty(e.get(r, i)) && dr.embedPositionAdjustmentPattern(r - 2, i - 2, e)
+ }
+ }
+ }
+ }
+ dr.POSITION_DETECTION_PATTERN = Array.from([Int32Array.from([1, 1, 1, 1, 1, 1, 1]), Int32Array.from([1, 0, 0, 0, 0, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 0, 0, 0, 0, 1]), Int32Array.from([1, 1, 1, 1, 1, 1, 1])]),
+ dr.POSITION_ADJUSTMENT_PATTERN = Array.from([Int32Array.from([1, 1, 1, 1, 1]), Int32Array.from([1, 0, 0, 0, 1]), Int32Array.from([1, 0, 1, 0, 1]), Int32Array.from([1, 0, 0, 0, 1]), Int32Array.from([1, 1, 1, 1, 1])]),
+ dr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE = Array.from([Int32Array.from([-1, -1, -1, -1, -1, -1, -1]), Int32Array.from([6, 18, -1, -1, -1, -1, -1]), Int32Array.from([6, 22, -1, -1, -1, -1, -1]), Int32Array.from([6, 26, -1, -1, -1, -1, -1]), Int32Array.from([6, 30, -1, -1, -1, -1, -1]), Int32Array.from([6, 34, -1, -1, -1, -1, -1]), Int32Array.from([6, 22, 38, -1, -1, -1, -1]), Int32Array.from([6, 24, 42, -1, -1, -1, -1]), Int32Array.from([6, 26, 46, -1, -1, -1, -1]), Int32Array.from([6, 28, 50, -1, -1, -1, -1]), Int32Array.from([6, 30, 54, -1, -1, -1, -1]), Int32Array.from([6, 32, 58, -1, -1, -1, -1]), Int32Array.from([6, 34, 62, -1, -1, -1, -1]), Int32Array.from([6, 26, 46, 66, -1, -1, -1]), Int32Array.from([6, 26, 48, 70, -1, -1, -1]), Int32Array.from([6, 26, 50, 74, -1, -1, -1]), Int32Array.from([6, 30, 54, 78, -1, -1, -1]), Int32Array.from([6, 30, 56, 82, -1, -1, -1]), Int32Array.from([6, 30, 58, 86, -1, -1, -1]), Int32Array.from([6, 34, 62, 90, -1, -1, -1]), Int32Array.from([6, 28, 50, 72, 94, -1, -1]), Int32Array.from([6, 26, 50, 74, 98, -1, -1]), Int32Array.from([6, 30, 54, 78, 102, -1, -1]), Int32Array.from([6, 28, 54, 80, 106, -1, -1]), Int32Array.from([6, 32, 58, 84, 110, -1, -1]), Int32Array.from([6, 30, 58, 86, 114, -1, -1]), Int32Array.from([6, 34, 62, 90, 118, -1, -1]), Int32Array.from([6, 26, 50, 74, 98, 122, -1]), Int32Array.from([6, 30, 54, 78, 102, 126, -1]), Int32Array.from([6, 26, 52, 78, 104, 130, -1]), Int32Array.from([6, 30, 56, 82, 108, 134, -1]), Int32Array.from([6, 34, 60, 86, 112, 138, -1]), Int32Array.from([6, 30, 58, 86, 114, 142, -1]), Int32Array.from([6, 34, 62, 90, 118, 146, -1]), Int32Array.from([6, 30, 54, 78, 102, 126, 150]), Int32Array.from([6, 24, 50, 76, 102, 128, 154]), Int32Array.from([6, 28, 54, 80, 106, 132, 158]), Int32Array.from([6, 32, 58, 84, 110, 136, 162]), Int32Array.from([6, 26, 54, 82, 110, 138, 166]), Int32Array.from([6, 30, 58, 86, 114, 142, 170])]),
+ dr.TYPE_INFO_COORDINATES = Array.from([Int32Array.from([8, 0]), Int32Array.from([8, 1]), Int32Array.from([8, 2]), Int32Array.from([8, 3]), Int32Array.from([8, 4]), Int32Array.from([8, 5]), Int32Array.from([8, 7]), Int32Array.from([8, 8]), Int32Array.from([7, 8]), Int32Array.from([5, 8]), Int32Array.from([4, 8]), Int32Array.from([3, 8]), Int32Array.from([2, 8]), Int32Array.from([1, 8]), Int32Array.from([0, 8])]),
+ dr.VERSION_INFO_POLY = 7973,
+ dr.TYPE_INFO_POLY = 1335,
+ dr.TYPE_INFO_MASK_PATTERN = 21522;
+ class gr {
+ constructor(t, e)
+ {
+ this.dataBytes = t,
+ this.errorCorrectionBytes = e
+ }
+ getDataBytes()
+ {
+ return this.dataBytes
+ }
+ getErrorCorrectionBytes()
+ {
+ return this.errorCorrectionBytes
+ }
+ }
+ class fr {
+ constructor() {}
+ static calculateMaskPenalty(t)
+ {
+ return lr.applyMaskPenaltyRule1(t) + lr.applyMaskPenaltyRule2(t) + lr.applyMaskPenaltyRule3(t) + lr.applyMaskPenaltyRule4(t)
+ }
+ static encode(t, e, r=null)
+ {
+ let n = fr.DEFAULT_BYTE_MODE_ENCODING;
+ const i = null !== r && void 0 !== r.get(sr.CHARACTER_SET);
+ i && (n = r.get(sr.CHARACTER_SET).toString());
+ const o = this.chooseMode(t, n),
+ s = new A;
+ if (o === Ie.BYTE && (i || fr.DEFAULT_BYTE_MODE_ENCODING !== n)) {
+ const t = I.getCharacterSetECIByName(n);
+ void 0 !== t && this.appendECI(t, s)
+ }
+ this.appendModeInfo(o, s);
+ const a = new A;
+ let l;
+ if (this.appendBytes(t, o, a, n), null !== r && void 0 !== r.get(sr.QR_VERSION)) {
+ const t = Number.parseInt(r.get(sr.QR_VERSION).toString(), 10);
+ l = Ae.getVersionForNumber(t);
+ const n = this.calculateBitsNeeded(o, s, a, l);
+ if (!this.willFit(n, l, e))
+ throw new ur("Data too big for requested version")
+ } else
+ l = this.recommendVersion(e, o, s, a);
+ const c = new A;
+ c.appendBitArray(s);
+ const h = o === Ie.BYTE ? a.getSizeInBytes() : t.length;
+ this.appendLengthInfo(h, l, o, c),
+ c.appendBitArray(a);
+ const u = l.getECBlocksForLevel(e),
+ d = l.getTotalCodewords() - u.getTotalECCodewords();
+ this.terminateBits(d, c);
+ const g = this.interleaveWithECBytes(c, l.getTotalCodewords(), d, u.getNumBlocks()),
+ f = new hr;
+ f.setECLevel(e),
+ f.setMode(o),
+ f.setVersion(l);
+ const w = l.getDimensionForVersion(),
+ m = new cr(w, w),
+ E = this.chooseMaskPattern(g, e, l, m);
+ return f.setMaskPattern(E), dr.buildMatrix(g, e, l, E, m), f.setMatrix(m), f
+ }
+ static recommendVersion(t, e, r, n)
+ {
+ const i = this.calculateBitsNeeded(e, r, n, Ae.getVersionForNumber(1)),
+ o = this.chooseVersion(i, t),
+ s = this.calculateBitsNeeded(e, r, n, o);
+ return this.chooseVersion(s, t)
+ }
+ static calculateBitsNeeded(t, e, r, n)
+ {
+ return e.getSize() + t.getCharacterCountBits(n) + r.getSize()
+ }
+ static getAlphanumericCode(t)
+ {
+ return t < fr.ALPHANUMERIC_TABLE.length ? fr.ALPHANUMERIC_TABLE[t] : -1
+ }
+ static chooseMode(t, e=null)
+ {
+ if (I.SJIS.getName() === e && this.isOnlyDoubleByteKanji(t))
+ return Ie.KANJI;
+ let r = !1,
+ n = !1;
+ for (let e = 0, i = t.length; e < i; ++e) {
+ const i = t.charAt(e);
+ if (fr.isDigit(i))
+ r = !0;
+ else {
+ if (-1 === this.getAlphanumericCode(i.charCodeAt(0)))
+ return Ie.BYTE;
+ n = !0
+ }
+ }
+ return n ? Ie.ALPHANUMERIC : r ? Ie.NUMERIC : Ie.BYTE
+ }
+ static isOnlyDoubleByteKanji(t)
+ {
+ let e;
+ try {
+ e = S.encode(t, I.SJIS)
+ } catch (t) {
+ return !1
+ }
+ const r = e.length;
+ if (r % 2 != 0)
+ return !1;
+ for (let t = 0; t < r; t += 2) {
+ const r = 255 & e[t];
+ if ((r < 129 || r > 159) && (r < 224 || r > 235))
+ return !1
+ }
+ return !0
+ }
+ static chooseMaskPattern(t, e, r, n)
+ {
+ let i = Number.MAX_SAFE_INTEGER,
+ o = -1;
+ for (let s = 0; s < hr.NUM_MASK_PATTERNS; s++) {
+ dr.buildMatrix(t, e, r, s, n);
+ let a = this.calculateMaskPenalty(n);
+ a < i && (i = a, o = s)
+ }
+ return o
+ }
+ static chooseVersion(t, e)
+ {
+ for (let r = 1; r <= 40; r++) {
+ const n = Ae.getVersionForNumber(r);
+ if (fr.willFit(t, n, e))
+ return n
+ }
+ throw new ur("Data too big")
+ }
+ static willFit(t, e, r)
+ {
+ return e.getTotalCodewords() - e.getECBlocksForLevel(r).getTotalECCodewords() >= (t + 7) / 8
+ }
+ static terminateBits(t, e)
+ {
+ const r = 8 * t;
+ if (e.getSize() > r)
+ throw new ur("data bits cannot fit in the QR Code" + e.getSize() + " > " + r);
+ for (let t = 0; t < 4 && e.getSize() < r; ++t)
+ e.appendBit(!1);
+ const n = 7 & e.getSize();
+ if (n > 0)
+ for (let t = n; t < 8; t++)
+ e.appendBit(!1);
+ const i = t - e.getSizeInBytes();
+ for (let t = 0; t < i; ++t)
+ e.appendBits(0 == (1 & t) ? 236 : 17, 8);
+ if (e.getSize() !== r)
+ throw new ur("Bits size does not equal capacity")
+ }
+ static getNumDataBytesAndNumECBytesForBlockID(t, e, r, n, i, o)
+ {
+ if (n >= r)
+ throw new ur("Block ID too large");
+ const s = t % r,
+ a = r - s,
+ l = Math.floor(t / r),
+ c = l + 1,
+ h = Math.floor(e / r),
+ u = h + 1,
+ d = l - h,
+ g = c - u;
+ if (d !== g)
+ throw new ur("EC bytes mismatch");
+ if (r !== a + s)
+ throw new ur("RS blocks mismatch");
+ if (t !== (h + d) * a + (u + g) * s)
+ throw new ur("Total bytes mismatch");
+ n < a ? (i[0] = h, o[0] = d) : (i[0] = u, o[0] = g)
+ }
+ static interleaveWithECBytes(t, e, r, n)
+ {
+ if (t.getSizeInBytes() !== r)
+ throw new ur("Number of bits and data bytes does not match");
+ let i = 0,
+ o = 0,
+ s = 0;
+ const a = new Array;
+ for (let l = 0; l < n; ++l) {
+ const c = new Int32Array(1),
+ h = new Int32Array(1);
+ fr.getNumDataBytesAndNumECBytesForBlockID(e, r, n, l, c, h);
+ const u = c[0],
+ d = new Uint8Array(u);
+ t.toBytes(8 * i, d, 0, u);
+ const g = fr.generateECBytes(d, h[0]);
+ a.push(new gr(d, g)),
+ o = Math.max(o, u),
+ s = Math.max(s, g.length),
+ i += c[0]
+ }
+ if (r !== i)
+ throw new ur("Data bytes does not match offset");
+ const l = new A;
+ for (let t = 0; t < o; ++t)
+ for (const e of a) {
+ const r = e.getDataBytes();
+ t < r.length && l.appendBits(r[t], 8)
+ }
+ for (let t = 0; t < s; ++t)
+ for (const e of a) {
+ const r = e.getErrorCorrectionBytes();
+ t < r.length && l.appendBits(r[t], 8)
+ }
+ if (e !== l.getSizeInBytes())
+ throw new ur("Interleaving error: " + e + " and " + l.getSizeInBytes() + " differ.");
+ return l
+ }
+ static generateECBytes(t, e)
+ {
+ const r = t.length,
+ n = new Int32Array(r + e);
+ for (let e = 0; e < r; e++)
+ n[e] = 255 & t[e];
+ new ar(K.QR_CODE_FIELD_256).encode(n, e);
+ const i = new Uint8Array(e);
+ for (let t = 0; t < e; t++)
+ i[t] = n[r + t];
+ return i
+ }
+ static appendModeInfo(t, e)
+ {
+ e.appendBits(t.getBits(), 4)
+ }
+ static appendLengthInfo(t, e, r, n)
+ {
+ const i = r.getCharacterCountBits(e);
+ if (t >= 1 << i)
+ throw new ur(t + " is bigger than " + ((1 << i) - 1));
+ n.appendBits(t, i)
+ }
+ static appendBytes(t, e, r, n)
+ {
+ switch (e) {
+ case Ie.NUMERIC:
+ fr.appendNumericBytes(t, r);
+ break;
+ case Ie.ALPHANUMERIC:
+ fr.appendAlphanumericBytes(t, r);
+ break;
+ case Ie.BYTE:
+ fr.append8BitBytes(t, r, n);
+ break;
+ case Ie.KANJI:
+ fr.appendKanjiBytes(t, r);
+ break;
+ default:
+ throw new ur("Invalid mode: " + e)
+ }
+ }
+ static getDigit(t)
+ {
+ return t.charCodeAt(0) - 48
+ }
+ static isDigit(t)
+ {
+ const e = fr.getDigit(t);
+ return e >= 0 && e <= 9
+ }
+ static appendNumericBytes(t, e)
+ {
+ const r = t.length;
+ let n = 0;
+ for (; n < r;) {
+ const i = fr.getDigit(t.charAt(n));
+ if (n + 2 < r) {
+ const r = fr.getDigit(t.charAt(n + 1)),
+ o = fr.getDigit(t.charAt(n + 2));
+ e.appendBits(100 * i + 10 * r + o, 10),
+ n += 3
+ } else if (n + 1 < r) {
+ const r = fr.getDigit(t.charAt(n + 1));
+ e.appendBits(10 * i + r, 7),
+ n += 2
+ } else
+ e.appendBits(i, 4),
+ n++
+ }
+ }
+ static appendAlphanumericBytes(t, e)
+ {
+ const r = t.length;
+ let n = 0;
+ for (; n < r;) {
+ const i = fr.getAlphanumericCode(t.charCodeAt(n));
+ if (-1 === i)
+ throw new ur;
+ if (n + 1 < r) {
+ const r = fr.getAlphanumericCode(t.charCodeAt(n + 1));
+ if (-1 === r)
+ throw new ur;
+ e.appendBits(45 * i + r, 11),
+ n += 2
+ } else
+ e.appendBits(i, 6),
+ n++
+ }
+ }
+ static append8BitBytes(t, e, r)
+ {
+ let n;
+ try {
+ n = S.encode(t, r)
+ } catch (t) {
+ throw new ur(t)
+ }
+ for (let t = 0, r = n.length; t !== r; t++) {
+ const r = n[t];
+ e.appendBits(r, 8)
+ }
+ }
+ static appendKanjiBytes(t, e)
+ {
+ let r;
+ try {
+ r = S.encode(t, I.SJIS)
+ } catch (t) {
+ throw new ur(t)
+ }
+ const n = r.length;
+ for (let t = 0; t < n; t += 2) {
+ const n = (255 & r[t]) << 8 & 4294967295 | 255 & r[t + 1];
+ let i = -1;
+ if (n >= 33088 && n <= 40956 ? i = n - 33088 : n >= 57408 && n <= 60351 && (i = n - 49472), -1 === i)
+ throw new ur("Invalid byte sequence");
+ const o = 192 * (i >> 8) + (255 & i);
+ e.appendBits(o, 13)
+ }
+ }
+ static appendECI(t, e)
+ {
+ e.appendBits(Ie.ECI.getBits(), 4),
+ e.appendBits(t.getValue(), 8)
+ }
+ }
+ fr.ALPHANUMERIC_TABLE = Int32Array.from([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1]),
+ fr.DEFAULT_BYTE_MODE_ENCODING = I.UTF8.getName();
+ class wr {
+ write(t, e, r, n=null)
+ {
+ if (0 === t.length)
+ throw new a("Found empty contents");
+ if (e < 0 || r < 0)
+ throw new a("Requested dimensions are too small: " + e + "x" + r);
+ let i = de.L,
+ o = wr.QUIET_ZONE_SIZE;
+ null !== n && (void 0 !== n.get(sr.ERROR_CORRECTION) && (i = de.fromString(n.get(sr.ERROR_CORRECTION).toString())), void 0 !== n.get(sr.MARGIN) && (o = Number.parseInt(n.get(sr.MARGIN).toString(), 10)));
+ const s = fr.encode(t, i, n);
+ return this.renderResult(s, e, r, o)
+ }
+ writeToDom(t, e, r, n, i=null)
+ {
+ "string" == typeof t && (t = document.querySelector(t));
+ const o = this.write(e, r, n, i);
+ t && t.appendChild(o)
+ }
+ renderResult(t, e, r, n)
+ {
+ const i = t.getMatrix();
+ if (null === i)
+ throw new J;
+ const o = i.getWidth(),
+ s = i.getHeight(),
+ a = o + 2 * n,
+ l = s + 2 * n,
+ c = Math.max(e, a),
+ h = Math.max(r, l),
+ u = Math.min(Math.floor(c / a), Math.floor(h / l)),
+ d = Math.floor((c - o * u) / 2),
+ g = Math.floor((h - s * u) / 2),
+ f = this.createSVGElement(c, h);
+ for (let t = 0, e = g; t < s; t++, e += u)
+ for (let r = 0, n = d; r < o; r++, n += u)
+ if (1 === i.get(r, t)) {
+ const t = this.createSvgRectElement(n, e, u, u);
+ f.appendChild(t)
+ }
+ return f
+ }
+ createSVGElement(t, e)
+ {
+ const r = document.createElementNS(wr.SVG_NS, "svg");
+ return r.setAttributeNS(null, "height", t.toString()), r.setAttributeNS(null, "width", e.toString()), r
+ }
+ createSvgRectElement(t, e, r, n)
+ {
+ const i = document.createElementNS(wr.SVG_NS, "rect");
+ return i.setAttributeNS(null, "x", t.toString()), i.setAttributeNS(null, "y", e.toString()), i.setAttributeNS(null, "height", r.toString()), i.setAttributeNS(null, "width", n.toString()), i.setAttributeNS(null, "fill", "#000000"), i
+ }
+ }
+ wr.QUIET_ZONE_SIZE = 4,
+ wr.SVG_NS = "http://www.w3.org/2000/svg";
+ class Ar {
+ encode(t, e, r, n, i)
+ {
+ if (0 === t.length)
+ throw new a("Found empty contents");
+ if (e !== k.QR_CODE)
+ throw new a("Can only encode QR_CODE, but got " + e);
+ if (r < 0 || n < 0)
+ throw new a(`Requested dimensions are too small: ${r}x${n}`);
+ let o = de.L,
+ s = Ar.QUIET_ZONE_SIZE;
+ null !== i && (void 0 !== i.get(sr.ERROR_CORRECTION) && (o = de.fromString(i.get(sr.ERROR_CORRECTION).toString())), void 0 !== i.get(sr.MARGIN) && (s = Number.parseInt(i.get(sr.MARGIN).toString(), 10)));
+ const l = fr.encode(t, o, i);
+ return Ar.renderResult(l, r, n, s)
+ }
+ static renderResult(t, e, r, n)
+ {
+ const i = t.getMatrix();
+ if (null === i)
+ throw new J;
+ const o = i.getWidth(),
+ s = i.getHeight(),
+ a = o + 2 * n,
+ l = s + 2 * n,
+ c = Math.max(e, a),
+ h = Math.max(r, l),
+ u = Math.min(Math.floor(c / a), Math.floor(h / l)),
+ d = Math.floor((c - o * u) / 2),
+ g = Math.floor((h - s * u) / 2),
+ f = new y(c, h);
+ for (let t = 0, e = g; t < s; t++, e += u)
+ for (let r = 0, n = d; r < o; r++, n += u)
+ 1 === i.get(r, t) && f.setRegion(n, e, u, u);
+ return f
+ }
+ }
+ Ar.QUIET_ZONE_SIZE = 4;
+ class mr extends R {
+ constructor(t, e, r, n, i, o, s, l)
+ {
+ if (super(o, s), this.yuvData = t, this.dataWidth = e, this.dataHeight = r, this.left = n, this.top = i, n + o > e || i + s > r)
+ throw new a("Crop rectangle does not fit within image data.");
+ l && this.reverseHorizontal(o, s)
+ }
+ getRow(t, e)
+ {
+ if (t < 0 || t >= this.getHeight())
+ throw new a("Requested row is outside the image: " + t);
+ const r = this.getWidth();
+ (null == e || e.length < r) && (e = new Uint8ClampedArray(r));
+ const n = (t + this.top) * this.dataWidth + this.left;
+ return u.arraycopy(this.yuvData, n, e, 0, r), e
+ }
+ getMatrix()
+ {
+ const t = this.getWidth(),
+ e = this.getHeight();
+ if (t === this.dataWidth && e === this.dataHeight)
+ return this.yuvData;
+ const r = t * e,
+ n = new Uint8ClampedArray(r);
+ let i = this.top * this.dataWidth + this.left;
+ if (t === this.dataWidth)
+ return u.arraycopy(this.yuvData, i, n, 0, r), n;
+ for (let r = 0; r < e; r++) {
+ const e = r * t;
+ u.arraycopy(this.yuvData, i, n, e, t),
+ i += this.dataWidth
+ }
+ return n
+ }
+ isCropSupported()
+ {
+ return !0
+ }
+ crop(t, e, r, n)
+ {
+ return new mr(this.yuvData, this.dataWidth, this.dataHeight, this.left + t, this.top + e, r, n, !1)
+ }
+ renderThumbnail()
+ {
+ const t = this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR,
+ e = this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR,
+ r = new Int32Array(t * e),
+ n = this.yuvData;
+ let i = this.top * this.dataWidth + this.left;
+ for (let o = 0; o < e; o++) {
+ const e = o * t;
+ for (let o = 0; o < t; o++) {
+ const t = 255 & n[i + o * mr.THUMBNAIL_SCALE_FACTOR];
+ r[e + o] = 4278190080 | 65793 * t
+ }
+ i += this.dataWidth * mr.THUMBNAIL_SCALE_FACTOR
+ }
+ return r
+ }
+ getThumbnailWidth()
+ {
+ return this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR
+ }
+ getThumbnailHeight()
+ {
+ return this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR
+ }
+ reverseHorizontal(t, e)
+ {
+ const r = this.yuvData;
+ for (let n = 0, i = this.top * this.dataWidth + this.left; n < e; n++, i += this.dataWidth) {
+ const e = i + t / 2;
+ for (let n = i, o = i + t - 1; n < e; n++, o--) {
+ const t = r[n];
+ r[n] = r[o],
+ r[o] = t
+ }
+ }
+ }
+ invert()
+ {
+ return new O(this)
+ }
+ }
+ mr.THUMBNAIL_SCALE_FACTOR = 2;
+ class Er extends R {
+ constructor(t, e, r, n, i, o, s)
+ {
+ if (super(e, r), this.dataWidth = n, this.dataHeight = i, this.left = o, this.top = s, 4 === t.BYTES_PER_ELEMENT) {
+ const n = e * r,
+ i = new Uint8ClampedArray(n);
+ for (let e = 0; e < n; e++) {
+ const r = t[e],
+ n = r >> 16 & 255,
+ o = r >> 7 & 510,
+ s = 255 & r;
+ i[e] = (n + o + s) / 4 & 255
+ }
+ this.luminances = i
+ } else
+ this.luminances = t;
+ if (void 0 === n && (this.dataWidth = e), void 0 === i && (this.dataHeight = r), void 0 === o && (this.left = 0), void 0 === s && (this.top = 0), this.left + e > this.dataWidth || this.top + r > this.dataHeight)
+ throw new a("Crop rectangle does not fit within image data.")
+ }
+ getRow(t, e)
+ {
+ if (t < 0 || t >= this.getHeight())
+ throw new a("Requested row is outside the image: " + t);
+ const r = this.getWidth();
+ (null == e || e.length < r) && (e = new Uint8ClampedArray(r));
+ const n = (t + this.top) * this.dataWidth + this.left;
+ return u.arraycopy(this.luminances, n, e, 0, r), e
+ }
+ getMatrix()
+ {
+ const t = this.getWidth(),
+ e = this.getHeight();
+ if (t === this.dataWidth && e === this.dataHeight)
+ return this.luminances;
+ const r = t * e,
+ n = new Uint8ClampedArray(r);
+ let i = this.top * this.dataWidth + this.left;
+ if (t === this.dataWidth)
+ return u.arraycopy(this.luminances, i, n, 0, r), n;
+ for (let r = 0; r < e; r++) {
+ const e = r * t;
+ u.arraycopy(this.luminances, i, n, e, t),
+ i += this.dataWidth
+ }
+ return n
+ }
+ isCropSupported()
+ {
+ return !0
+ }
+ crop(t, e, r, n)
+ {
+ return new Er(this.luminances, r, n, this.dataWidth, this.dataHeight, this.left + t, this.top + e)
+ }
+ invert()
+ {
+ return new O(this)
+ }
+ }
+ class Cr extends I {
+ static forName(t)
+ {
+ return this.getCharacterSetECIByName(t)
+ }
+ }
+ class Ir {}
+ Ir.ISO_8859_1 = I.ISO8859_1;
+ class pr {
+ isCompact()
+ {
+ return this.compact
+ }
+ setCompact(t)
+ {
+ this.compact = t
+ }
+ getSize()
+ {
+ return this.size
+ }
+ setSize(t)
+ {
+ this.size = t
+ }
+ getLayers()
+ {
+ return this.layers
+ }
+ setLayers(t)
+ {
+ this.layers = t
+ }
+ getCodeWords()
+ {
+ return this.codeWords
+ }
+ setCodeWords(t)
+ {
+ this.codeWords = t
+ }
+ getMatrix()
+ {
+ return this.matrix
+ }
+ setMatrix(t)
+ {
+ this.matrix = t
+ }
+ }
+ class Sr {
+ static singletonList(t)
+ {
+ return [t]
+ }
+ static min(t, e)
+ {
+ return t.sort(e)[0]
+ }
+ }
+ class _r extends class {
+ constructor(t)
+ {
+ this.previous = t
+ }
+ getPrevious()
+ {
+ return this.previous
+ }
+ }
+ {
+ constructor(t, e, r)
+ {
+ super(t),
+ this.value = e,
+ this.bitCount = r
+ }
+ appendTo(t, e)
+ {
+ t.appendBits(this.value, this.bitCount)
+ }
+ add(t, e)
+ {
+ return new _r(this, t, e)
+ }
+ addBinaryShift(t, e)
+ {
+ return console.warn("addBinaryShift on SimpleToken, this simply returns a copy of this token"), new _r(this, t, e)
+ }
+ toString()
+ {
+ let t = this.value & (1 << this.bitCount) - 1;
+ return t |= 1 << this.bitCount, "<" + w.toBinaryString(t | 1 << this.bitCount).substring(1) + ">"
+ }
+ }
+ class Tr extends _r {
+ constructor(t, e, r)
+ {
+ super(t, 0, 0),
+ this.binaryShiftStart = e,
+ this.binaryShiftByteCount = r
+ }
+ appendTo(t, e)
+ {
+ for (let r = 0; r < this.binaryShiftByteCount; r++)
+ (0 === r || 31 === r && this.binaryShiftByteCount <= 62) && (t.appendBits(31, 5), this.binaryShiftByteCount > 62 ? t.appendBits(this.binaryShiftByteCount - 31, 16) : 0 === r ? t.appendBits(Math.min(this.binaryShiftByteCount, 31), 5) : t.appendBits(this.binaryShiftByteCount - 31, 5)),
+ t.appendBits(e[this.binaryShiftStart + r], 8)
+ }
+ addBinaryShift(t, e)
+ {
+ return new Tr(this, t, e)
+ }
+ toString()
+ {
+ return "<" + this.binaryShiftStart + "::" + (this.binaryShiftStart + this.binaryShiftByteCount - 1) + ">"
+ }
+ }
+ function yr(t, e, r) {
+ return new _r(t, e, r)
+ }
+ const Nr = ["UPPER", "LOWER", "DIGIT", "MIXED", "PUNCT"],
+ Mr = new _r(null, 0, 0),
+ Dr = [Int32Array.from([0, 327708, 327710, 327709, 656318]), Int32Array.from([590318, 0, 327710, 327709, 656318]), Int32Array.from([262158, 590300, 0, 590301, 932798]), Int32Array.from([327709, 327708, 656318, 0, 327710]), Int32Array.from([327711, 656380, 656382, 656381, 0])];
+ const Rr = function(t) {
+ for (let e of t)
+ f.fill(e, -1);
+ return t[0][4] = 0, t[1][4] = 0, t[1][0] = 28, t[3][4] = 0, t[2][4] = 0, t[2][0] = 15, t
+ }(f.createInt32Array(6, 6));
+ class Or {
+ constructor(t, e, r, n)
+ {
+ this.token = t,
+ this.mode = e,
+ this.binaryShiftByteCount = r,
+ this.bitCount = n
+ }
+ getMode()
+ {
+ return this.mode
+ }
+ getToken()
+ {
+ return this.token
+ }
+ getBinaryShiftByteCount()
+ {
+ return this.binaryShiftByteCount
+ }
+ getBitCount()
+ {
+ return this.bitCount
+ }
+ latchAndAppend(t, e)
+ {
+ let r = this.bitCount,
+ n = this.token;
+ if (t !== this.mode) {
+ let e = Dr[this.mode][t];
+ n = yr(n, 65535 & e, e >> 16),
+ r += e >> 16
+ }
+ let i = 2 === t ? 4 : 5;
+ return n = yr(n, e, i), new Or(n, t, 0, r + i)
+ }
+ shiftAndAppend(t, e)
+ {
+ let r = this.token,
+ n = 2 === this.mode ? 4 : 5;
+ return r = yr(r, Rr[this.mode][t], n), r = yr(r, e, 5), new Or(r, this.mode, 0, this.bitCount + n + 5)
+ }
+ addBinaryShiftChar(t)
+ {
+ let e = this.token,
+ r = this.mode,
+ n = this.bitCount;
+ if (4 === this.mode || 2 === this.mode) {
+ let t = Dr[r][0];
+ e = yr(e, 65535 & t, t >> 16),
+ n += t >> 16,
+ r = 0
+ }
+ let i = 0 === this.binaryShiftByteCount || 31 === this.binaryShiftByteCount ? 18 : 62 === this.binaryShiftByteCount ? 9 : 8,
+ o = new Or(e, r, this.binaryShiftByteCount + 1, n + i);
+ return 2078 === o.binaryShiftByteCount && (o = o.endBinaryShift(t + 1)), o
+ }
+ endBinaryShift(t)
+ {
+ if (0 === this.binaryShiftByteCount)
+ return this;
+ let e = this.token;
+ return e = function(t, e, r) {
+ return new Tr(t, e, r)
+ }(e, t - this.binaryShiftByteCount, this.binaryShiftByteCount), new Or(e, this.mode, 0, this.bitCount)
+ }
+ isBetterThanOrEqualTo(t)
+ {
+ let e = this.bitCount + (Dr[this.mode][t.mode] >> 16);
+ return this.binaryShiftByteCount < t.binaryShiftByteCount ? e += Or.calculateBinaryShiftCost(t) - Or.calculateBinaryShiftCost(this) : this.binaryShiftByteCount > t.binaryShiftByteCount && t.binaryShiftByteCount > 0 && (e += 10), e <= t.bitCount
+ }
+ toBitArray(t)
+ {
+ let e = [];
+ for (let r = this.endBinaryShift(t.length).token; null !== r; r = r.getPrevious())
+ e.unshift(r);
+ let r = new A;
+ for (const n of e)
+ n.appendTo(r, t);
+ return r
+ }
+ toString()
+ {
+ return _.format("%s bits=%d bytes=%d", Nr[this.mode], this.bitCount, this.binaryShiftByteCount)
+ }
+ static calculateBinaryShiftCost(t)
+ {
+ return t.binaryShiftByteCount > 62 ? 21 : t.binaryShiftByteCount > 31 ? 20 : t.binaryShiftByteCount > 0 ? 10 : 0
+ }
+ }
+ Or.INITIAL_STATE = new Or(Mr, 0, 0, 0);
+ const br = function(t) {
+ const e = _.getCharCode(" "),
+ r = _.getCharCode("."),
+ n = _.getCharCode(",");
+ t[0][e] = 1;
+ const i = _.getCharCode("Z"),
+ o = _.getCharCode("A");
+ for (let e = o; e <= i; e++)
+ t[0][e] = e - o + 2;
+ t[1][e] = 1;
+ const s = _.getCharCode("z"),
+ a = _.getCharCode("a");
+ for (let e = a; e <= s; e++)
+ t[1][e] = e - a + 2;
+ t[2][e] = 1;
+ const l = _.getCharCode("9"),
+ c = _.getCharCode("0");
+ for (let e = c; e <= l; e++)
+ t[2][e] = e - c + 2;
+ t[2][n] = 12,
+ t[2][r] = 13;
+ const h = ["\0", " ", "", "", "", "", "", "", "", "\b", "\t", "\n", "\v", "\f", "\r", "", "", "", "", "", "@", "\\", "^", "_", "`", "|", "~", ""];
+ for (let e = 0; e < h.length; e++)
+ t[3][_.getCharCode(h[e])] = e;
+ const u = ["\0", "\r", "\0", "\0", "\0", "\0", "!", "'", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}"];
+ for (let e = 0; e < u.length; e++)
+ _.getCharCode(u[e]) > 0 && (t[4][_.getCharCode(u[e])] = e);
+ return t
+ }(f.createInt32Array(5, 256));
+ class Br {
+ constructor(t)
+ {
+ this.text = t
+ }
+ encode()
+ {
+ const t = _.getCharCode(" "),
+ e = _.getCharCode("\n");
+ let r = Sr.singletonList(Or.INITIAL_STATE);
+ for (let n = 0; n < this.text.length; n++) {
+ let i,
+ o = n + 1 < this.text.length ? this.text[n + 1] : 0;
+ switch (this.text[n]) {
+ case _.getCharCode("\r"):
+ i = o === e ? 2 : 0;
+ break;
+ case _.getCharCode("."):
+ i = o === t ? 3 : 0;
+ break;
+ case _.getCharCode(","):
+ i = o === t ? 4 : 0;
+ break;
+ case _.getCharCode(":"):
+ i = o === t ? 5 : 0;
+ break;
+ default:
+ i = 0
+ }
+ i > 0 ? (r = Br.updateStateListForPair(r, n, i), n++) : r = this.updateStateListForChar(r, n)
+ }
+ return Sr.min(r, ((t, e) => t.getBitCount() - e.getBitCount())).toBitArray(this.text)
+ }
+ updateStateListForChar(t, e)
+ {
+ const r = [];
+ for (let n of t)
+ this.updateStateForChar(n, e, r);
+ return Br.simplifyStates(r)
+ }
+ updateStateForChar(t, e, r)
+ {
+ let n = 255 & this.text[e],
+ i = br[t.getMode()][n] > 0,
+ o = null;
+ for (let s = 0; s <= 4; s++) {
+ let a = br[s][n];
+ if (a > 0) {
+ if (null == o && (o = t.endBinaryShift(e)), !i || s === t.getMode() || 2 === s) {
+ const t = o.latchAndAppend(s, a);
+ r.push(t)
+ }
+ if (!i && Rr[t.getMode()][s] >= 0) {
+ const t = o.shiftAndAppend(s, a);
+ r.push(t)
+ }
+ }
+ }
+ if (t.getBinaryShiftByteCount() > 0 || 0 === br[t.getMode()][n]) {
+ let n = t.addBinaryShiftChar(e);
+ r.push(n)
+ }
+ }
+ static updateStateListForPair(t, e, r)
+ {
+ const n = [];
+ for (let i of t)
+ this.updateStateForPair(i, e, r, n);
+ return this.simplifyStates(n)
+ }
+ static updateStateForPair(t, e, r, n)
+ {
+ let i = t.endBinaryShift(e);
+ if (n.push(i.latchAndAppend(4, r)), 4 !== t.getMode() && n.push(i.shiftAndAppend(4, r)), 3 === r || 4 === r) {
+ let t = i.latchAndAppend(2, 16 - r).latchAndAppend(2, 1);
+ n.push(t)
+ }
+ if (t.getBinaryShiftByteCount() > 0) {
+ let r = t.addBinaryShiftChar(e).addBinaryShiftChar(e + 1);
+ n.push(r)
+ }
+ }
+ static simplifyStates(t)
+ {
+ let e = [];
+ for (const r of t) {
+ let t = !0;
+ for (const n of e) {
+ if (n.isBetterThanOrEqualTo(r)) {
+ t = !1;
+ break
+ }
+ r.isBetterThanOrEqualTo(n) && (e = e.filter((t => t !== n)))
+ }
+ t && e.push(r)
+ }
+ return e
+ }
+ }
+ class Lr {
+ constructor() {}
+ static encodeBytes(t)
+ {
+ return Lr.encode(t, Lr.DEFAULT_EC_PERCENT, Lr.DEFAULT_AZTEC_LAYERS)
+ }
+ static encode(t, e, r)
+ {
+ let n,
+ i,
+ o,
+ s,
+ l,
+ c = new Br(t).encode(),
+ h = w.truncDivision(c.getSize() * e, 100) + 11,
+ u = c.getSize() + h;
+ if (r !== Lr.DEFAULT_AZTEC_LAYERS) {
+ if (n = r < 0, i = Math.abs(r), i > (n ? Lr.MAX_NB_BITS_COMPACT : Lr.MAX_NB_BITS))
+ throw new a(_.format("Illegal value %s for layers", r));
+ o = Lr.totalBitsInLayer(i, n),
+ s = Lr.WORD_SIZE[i];
+ let t = o - o % s;
+ if (l = Lr.stuffBits(c, s), l.getSize() + h > t)
+ throw new a("Data to large for user specified layer");
+ if (n && l.getSize() > 64 * s)
+ throw new a("Data to large for user specified layer")
+ } else {
+ s = 0,
+ l = null;
+ for (let t = 0; ; t++) {
+ if (t > Lr.MAX_NB_BITS)
+ throw new a("Data too large for an Aztec code");
+ if (n = t <= 3, i = n ? t + 1 : t, o = Lr.totalBitsInLayer(i, n), u > o)
+ continue;
+ null != l && s === Lr.WORD_SIZE[i] || (s = Lr.WORD_SIZE[i], l = Lr.stuffBits(c, s));
+ let e = o - o % s;
+ if (!(n && l.getSize() > 64 * s) && l.getSize() + h <= e)
+ break
+ }
+ }
+ let d,
+ g = Lr.generateCheckWords(l, o, s),
+ f = l.getSize() / s,
+ A = Lr.generateModeMessage(n, i, f),
+ m = (n ? 11 : 14) + 4 * i,
+ E = new Int32Array(m);
+ if (n) {
+ d = m;
+ for (let t = 0; t < E.length; t++)
+ E[t] = t
+ } else {
+ d = m + 1 + 2 * w.truncDivision(w.truncDivision(m, 2) - 1, 15);
+ let t = w.truncDivision(m, 2),
+ e = w.truncDivision(d, 2);
+ for (let r = 0; r < t; r++) {
+ let n = r + w.truncDivision(r, 15);
+ E[t - r - 1] = e - n - 1,
+ E[t + r] = e + n + 1
+ }
+ }
+ let C = new y(d);
+ for (let t = 0, e = 0; t < i; t++) {
+ let r = 4 * (i - t) + (n ? 9 : 12);
+ for (let n = 0; n < r; n++) {
+ let i = 2 * n;
+ for (let o = 0; o < 2; o++)
+ g.get(e + i + o) && C.set(E[2 * t + o], E[2 * t + n]),
+ g.get(e + 2 * r + i + o) && C.set(E[2 * t + n], E[m - 1 - 2 * t - o]),
+ g.get(e + 4 * r + i + o) && C.set(E[m - 1 - 2 * t - o], E[m - 1 - 2 * t - n]),
+ g.get(e + 6 * r + i + o) && C.set(E[m - 1 - 2 * t - n], E[2 * t + o])
+ }
+ e += 8 * r
+ }
+ if (Lr.drawModeMessage(C, n, d, A), n)
+ Lr.drawBullsEye(C, w.truncDivision(d, 2), 5);
+ else {
+ Lr.drawBullsEye(C, w.truncDivision(d, 2), 7);
+ for (let t = 0, e = 0; t < w.truncDivision(m, 2) - 1; t += 15, e += 16)
+ for (let t = 1 & w.truncDivision(d, 2); t < d; t += 2)
+ C.set(w.truncDivision(d, 2) - e, t),
+ C.set(w.truncDivision(d, 2) + e, t),
+ C.set(t, w.truncDivision(d, 2) - e),
+ C.set(t, w.truncDivision(d, 2) + e)
+ }
+ let I = new pr;
+ return I.setCompact(n), I.setSize(d), I.setLayers(i), I.setCodeWords(f), I.setMatrix(C), I
+ }
+ static drawBullsEye(t, e, r)
+ {
+ for (let n = 0; n < r; n += 2)
+ for (let r = e - n; r <= e + n; r++)
+ t.set(r, e - n),
+ t.set(r, e + n),
+ t.set(e - n, r),
+ t.set(e + n, r);
+ t.set(e - r, e - r),
+ t.set(e - r + 1, e - r),
+ t.set(e - r, e - r + 1),
+ t.set(e + r, e - r),
+ t.set(e + r, e - r + 1),
+ t.set(e + r, e + r - 1)
+ }
+ static generateModeMessage(t, e, r)
+ {
+ let n = new A;
+ return t ? (n.appendBits(e - 1, 2), n.appendBits(r - 1, 6), n = Lr.generateCheckWords(n, 28, 4)) : (n.appendBits(e - 1, 5), n.appendBits(r - 1, 11), n = Lr.generateCheckWords(n, 40, 4)), n
+ }
+ static drawModeMessage(t, e, r, n)
+ {
+ let i = w.truncDivision(r, 2);
+ if (e)
+ for (let e = 0; e < 7; e++) {
+ let r = i - 3 + e;
+ n.get(e) && t.set(r, i - 5),
+ n.get(e + 7) && t.set(i + 5, r),
+ n.get(20 - e) && t.set(r, i + 5),
+ n.get(27 - e) && t.set(i - 5, r)
+ }
+ else
+ for (let e = 0; e < 10; e++) {
+ let r = i - 5 + e + w.truncDivision(e, 5);
+ n.get(e) && t.set(r, i - 7),
+ n.get(e + 10) && t.set(i + 7, r),
+ n.get(29 - e) && t.set(r, i + 7),
+ n.get(39 - e) && t.set(i - 7, r)
+ }
+ }
+ static generateCheckWords(t, e, r)
+ {
+ let n = t.getSize() / r,
+ i = new ar(Lr.getGF(r)),
+ o = w.truncDivision(e, r),
+ s = Lr.bitsToWords(t, r, o);
+ i.encode(s, o - n);
+ let a = e % r,
+ l = new A;
+ l.appendBits(0, a);
+ for (const t of Array.from(s))
+ l.appendBits(t, r);
+ return l
+ }
+ static bitsToWords(t, e, r)
+ {
+ let n,
+ i,
+ o = new Int32Array(r);
+ for (n = 0, i = t.getSize() / e; n < i; n++) {
+ let r = 0;
+ for (let i = 0; i < e; i++)
+ r |= t.get(n * e + i) ? 1 << e - i - 1 : 0;
+ o[n] = r
+ }
+ return o
+ }
+ static getGF(t)
+ {
+ switch (t) {
+ case 4:
+ return K.AZTEC_PARAM;
+ case 6:
+ return K.AZTEC_DATA_6;
+ case 8:
+ return K.AZTEC_DATA_8;
+ case 10:
+ return K.AZTEC_DATA_10;
+ case 12:
+ return K.AZTEC_DATA_12;
+ default:
+ throw new a("Unsupported word size " + t)
+ }
+ }
+ static stuffBits(t, e)
+ {
+ let r = new A,
+ n = t.getSize(),
+ i = (1 << e) - 2;
+ for (let o = 0; o < n; o += e) {
+ let s = 0;
+ for (let r = 0; r < e; r++)
+ (o + r >= n || t.get(o + r)) && (s |= 1 << e - 1 - r);
+ (s & i) === i ? (r.appendBits(s & i, e), o--) : 0 == (s & i) ? (r.appendBits(1 | s, e), o--) : r.appendBits(s, e)
+ }
+ return r
+ }
+ static totalBitsInLayer(t, e)
+ {
+ return ((e ? 88 : 112) + 16 * t) * t
+ }
+ }
+ Lr.DEFAULT_EC_PERCENT = 33,
+ Lr.DEFAULT_AZTEC_LAYERS = 0,
+ Lr.MAX_NB_BITS = 32,
+ Lr.MAX_NB_BITS_COMPACT = 4,
+ Lr.WORD_SIZE = Int32Array.from([4, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]);
+ class Pr {
+ encode(t, e, r, n)
+ {
+ return this.encodeWithHints(t, e, r, n, null)
+ }
+ encodeWithHints(t, e, r, n, i)
+ {
+ let o = Ir.ISO_8859_1,
+ s = Lr.DEFAULT_EC_PERCENT,
+ a = Lr.DEFAULT_AZTEC_LAYERS;
+ return null != i && (i.has(sr.CHARACTER_SET) && (o = Cr.forName(i.get(sr.CHARACTER_SET).toString())), i.has(sr.ERROR_CORRECTION) && (s = w.parseInt(i.get(sr.ERROR_CORRECTION).toString())), i.has(sr.AZTEC_LAYERS) && (a = w.parseInt(i.get(sr.AZTEC_LAYERS).toString()))), Pr.encodeLayers(t, e, r, n, o, s, a)
+ }
+ static encodeLayers(t, e, r, n, i, o, s)
+ {
+ if (e !== k.AZTEC)
+ throw new a("Can only encode AZTEC, but got " + e);
+ let l = Lr.encode(_.getBytes(t, i), o, s);
+ return Pr.renderResult(l, r, n)
+ }
+ static renderResult(t, e, r)
+ {
+ let n = t.getMatrix();
+ if (null == n)
+ throw new J;
+ let i = n.getWidth(),
+ o = n.getHeight(),
+ s = Math.max(e, i),
+ a = Math.max(r, o),
+ l = Math.min(s / i, a / o),
+ c = (s - i * l) / 2,
+ h = (a - o * l) / 2,
+ u = new y(s, a);
+ for (let t = 0, e = h; t < o; t++, e += l)
+ for (let r = 0, o = c; r < i; r++, o += l)
+ n.get(r, t) && u.setRegion(o, e, l, l);
+ return u
+ }
+ }
+ t.ArgumentException = s,
+ t.ArithmeticException = Q,
+ t.AztecCode = pr,
+ t.AztecCodeReader = gt,
+ t.AztecCodeWriter = Pr,
+ t.AztecDecoder = tt,
+ t.AztecDetector = dt,
+ t.AztecDetectorResult = ot,
+ t.AztecEncoder = Lr,
+ t.AztecHighLevelEncoder = Br,
+ t.AztecPoint = ut,
+ t.BarcodeFormat = k,
+ t.Binarizer = h,
+ t.BinaryBitmap = l,
+ t.BitArray = A,
+ t.BitMatrix = y,
+ t.BitSource = ae,
+ t.BrowserAztecCodeReader = class extends v{
+ constructor(t=500)
+ {
+ super(new gt, t)
+ }
+ }
+ ,
+ t.BrowserBarcodeReader = class extends v{
+ constructor(t=500, e)
+ {
+ super(new ee(e), t, e)
+ }
+ }
+ ,
+ t.BrowserCodeReader = v,
+ t.BrowserDatamatrixCodeReader = class extends v{
+ constructor(t=500)
+ {
+ super(new ue, t)
+ }
+ }
+ ,
+ t.BrowserMultiFormatReader = class extends v{
+ constructor(t=null, e=500)
+ {
+ const r = new ir;
+ r.setHints(t),
+ super(r, e)
+ }
+ decodeBitmap(t)
+ {
+ return this.reader.decodeWithState(t)
+ }
+ }
+ ,
+ t.BrowserPDF417Reader = class extends v{
+ constructor(t=500)
+ {
+ super(new rr, t)
+ }
+ }
+ ,
+ t.BrowserQRCodeReader = class extends v{
+ constructor(t=500)
+ {
+ super(new Oe, t)
+ }
+ }
+ ,
+ t.BrowserQRCodeSvgWriter = wr,
+ t.CharacterSetECI = I,
+ t.ChecksumException = c,
+ t.Code128Reader = wt,
+ t.Code39Reader = At,
+ t.DataMatrixDecodedBitStreamParser = le,
+ t.DataMatrixReader = ue,
+ t.DecodeHintType = E,
+ t.DecoderResult = W,
+ t.DefaultGridSampler = ct,
+ t.DetectorResult = it,
+ t.EAN13Reader = _t,
+ t.EncodeHintType = sr,
+ t.Exception = o,
+ t.FormatException = C,
+ t.GenericGF = K,
+ t.GenericGFPoly = Z,
+ t.GlobalHistogramBinarizer = M,
+ t.GridSampler = at,
+ t.GridSamplerInstance = ht,
+ t.HTMLCanvasElementLuminanceSource = b,
+ t.HybridBinarizer = D,
+ t.ITFReader = mt,
+ t.IllegalArgumentException = a,
+ t.IllegalStateException = J,
+ t.InvertedLuminanceSource = O,
+ t.LuminanceSource = R,
+ t.MathUtils = et,
+ t.MultiFormatOneDReader = ee,
+ t.MultiFormatReader = ir,
+ t.MultiFormatWriter = class {
+ encode(t, e, r, n, i)
+ {
+ let o;
+ switch (e) {
+ case k.QR_CODE:
+ o = new Ar;
+ break;
+ default:
+ throw new a("No encoder available for format " + e)
+ }
+ return o.encode(t, e, r, n, i)
+ }
+ }
+ ,
+ t.NotFoundException = N,
+ t.OneDReader = ft,
+ t.PDF417DecodedBitStreamParser = tr,
+ t.PDF417DecoderErrorCorrection = Fe,
+ t.PDF417Reader = rr,
+ t.PDF417ResultMetadata = We,
+ t.PerspectiveTransform = lt,
+ t.PlanarYUVLuminanceSource = mr,
+ t.QRCodeByteMatrix = cr,
+ t.QRCodeDataMask = me,
+ t.QRCodeDecodedBitStreamParser = pe,
+ t.QRCodeDecoderErrorCorrectionLevel = de,
+ t.QRCodeDecoderFormatInformation = ge,
+ t.QRCodeEncoder = fr,
+ t.QRCodeEncoderQRCode = hr,
+ t.QRCodeMaskUtil = lr,
+ t.QRCodeMatrixUtil = dr,
+ t.QRCodeMode = Ie,
+ t.QRCodeReader = Oe,
+ t.QRCodeVersion = Ae,
+ t.QRCodeWriter = Ar,
+ t.RGBLuminanceSource = Er,
+ t.RSS14Reader = te,
+ t.RSSExpandedReader = Jt,
+ t.ReaderException = nr,
+ t.ReedSolomonDecoder = $,
+ t.ReedSolomonEncoder = ar,
+ t.ReedSolomonException = q,
+ t.Result = F,
+ t.ResultMetadataType = X,
+ t.ResultPoint = nt,
+ t.StringUtils = _,
+ t.UnsupportedOperationException = p,
+ t.VideoInputDevice = B,
+ t.WhiteRectangleDetector = st,
+ t.WriterException = ur,
+ t.ZXingArrays = f,
+ t.ZXingCharset = Cr,
+ t.ZXingInteger = w,
+ t.ZXingStandardCharsets = Ir,
+ t.ZXingStringBuilder = T,
+ t.ZXingStringEncoding = S,
+ t.ZXingSystem = u,
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ })
+ }(e)
+ }
+ },
+ e = {};
+ function r(n) {
+ var i = e[n];
+ if (void 0 !== i)
+ return i.exports;
+ var o = e[n] = {
+ exports: {}
+ };
+ return t[n].call(o.exports, o, o.exports, r), o.exports
+ }
+ r.d = (t, e) => {
+ for (var n in e)
+ r.o(e, n) && !r.o(t, n) && Object.defineProperty(t, n, {
+ enumerable: !0,
+ get: e[n]
+ })
+ },
+ r.g = function() {
+ if ("object" == typeof globalThis)
+ return globalThis;
+ try {
+ return this || new Function("return this")()
+ } catch (t) {
+ if ("object" == typeof window)
+ return window
+ }
+ }(),
+ r.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e),
+ r.r = t => {
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
+ value: "Module"
+ }),
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ })
+ };
+ var n = {};
+ (() => {
+ "use strict";
+ var t;
+ r.r(n),
+ r.d(n, {
+ Html5Qrcode: () => b,
+ Html5QrcodeScanType: () => i,
+ Html5QrcodeScanner: () => Z,
+ Html5QrcodeScannerState: () => f,
+ Html5QrcodeSupportedFormats: () => t
+ }),
+ function(t) {
+ t[t.QR_CODE = 0] = "QR_CODE",
+ t[t.AZTEC = 1] = "AZTEC",
+ t[t.CODABAR = 2] = "CODABAR",
+ t[t.CODE_39 = 3] = "CODE_39",
+ t[t.CODE_93 = 4] = "CODE_93",
+ t[t.CODE_128 = 5] = "CODE_128",
+ t[t.DATA_MATRIX = 6] = "DATA_MATRIX",
+ t[t.MAXICODE = 7] = "MAXICODE",
+ t[t.ITF = 8] = "ITF",
+ t[t.EAN_13 = 9] = "EAN_13",
+ t[t.EAN_8 = 10] = "EAN_8",
+ t[t.PDF_417 = 11] = "PDF_417",
+ t[t.RSS_14 = 12] = "RSS_14",
+ t[t.RSS_EXPANDED = 13] = "RSS_EXPANDED",
+ t[t.UPC_A = 14] = "UPC_A",
+ t[t.UPC_E = 15] = "UPC_E",
+ t[t.UPC_EAN_EXTENSION = 16] = "UPC_EAN_EXTENSION"
+ }(t || (t = {}));
+ var e,
+ i,
+ o = new Map([[t.QR_CODE, "QR_CODE"], [t.AZTEC, "AZTEC"], [t.CODABAR, "CODABAR"], [t.CODE_39, "CODE_39"], [t.CODE_93, "CODE_93"], [t.CODE_128, "CODE_128"], [t.DATA_MATRIX, "DATA_MATRIX"], [t.MAXICODE, "MAXICODE"], [t.ITF, "ITF"], [t.EAN_13, "EAN_13"], [t.EAN_8, "EAN_8"], [t.PDF_417, "PDF_417"], [t.RSS_14, "RSS_14"], [t.RSS_EXPANDED, "RSS_EXPANDED"], [t.UPC_A, "UPC_A"], [t.UPC_E, "UPC_E"], [t.UPC_EAN_EXTENSION, "UPC_EAN_EXTENSION"]]);
+ function s(e) {
+ return Object.values(t).includes(e)
+ }
+ !function(t) {
+ t[t.UNKNOWN = 0] = "UNKNOWN",
+ t[t.URL = 1] = "URL"
+ }(e || (e = {})),
+ function(t) {
+ t[t.SCAN_TYPE_CAMERA = 0] = "SCAN_TYPE_CAMERA",
+ t[t.SCAN_TYPE_FILE = 1] = "SCAN_TYPE_FILE"
+ }(i || (i = {}));
+ var a,
+ l = function() {
+ function t() {}
+ return t.GITHUB_PROJECT_URL = "https://github.com/mebjas/html5-qrcode", t.SCAN_DEFAULT_FPS = 2, t.DEFAULT_DISABLE_FLIP = !1, t.DEFAULT_REMEMBER_LAST_CAMERA_USED = !0, t.DEFAULT_SUPPORTED_SCAN_TYPE = [i.SCAN_TYPE_CAMERA, i.SCAN_TYPE_FILE], t
+ }(),
+ c = function() {
+ function t(t, e) {
+ this.format = t,
+ this.formatName = e
+ }
+ return t.prototype.toString = function() {
+ return this.formatName
+ }, t.create = function(e) {
+ if (!o.has(e))
+ throw e + " not in html5QrcodeSupportedFormatsTextMap";
+ return new t(e, o.get(e))
+ }, t
+ }(),
+ h = function() {
+ function t() {}
+ return t.createFromText = function(t) {
+ return {
+ decodedText: t,
+ result: {
+ text: t
+ }
+ }
+ }, t.createFromQrcodeResult = function(t) {
+ return {
+ decodedText: t.text,
+ result: t
+ }
+ }, t
+ }();
+ !function(t) {
+ t[t.UNKWOWN_ERROR = 0] = "UNKWOWN_ERROR",
+ t[t.IMPLEMENTATION_ERROR = 1] = "IMPLEMENTATION_ERROR",
+ t[t.NO_CODE_FOUND_ERROR = 2] = "NO_CODE_FOUND_ERROR"
+ }(a || (a = {}));
+ var u = function() {
+ function t() {}
+ return t.createFrom = function(t) {
+ return {
+ errorMessage: t,
+ type: a.UNKWOWN_ERROR
+ }
+ }, t
+ }(),
+ d = function() {
+ function t(t) {
+ this.verbose = t
+ }
+ return t.prototype.log = function(t) {
+ this.verbose && console.log(t)
+ }, t.prototype.warn = function(t) {
+ this.verbose && console.warn(t)
+ }, t.prototype.logError = function(t, e) {
+ (this.verbose || !0 === e) && console.error(t)
+ }, t.prototype.logErrors = function(t) {
+ if (0 === t.length)
+ throw "Logger#logError called without arguments";
+ this.verbose && console.error(t)
+ }, t
+ }();
+ function g(t) {
+ return null == t
+ }
+ var f,
+ w = function() {
+ function t() {}
+ return t.codeParseError = function(t) {
+ return "QR code parse error, error = " + t
+ }, t.errorGettingUserMedia = function(t) {
+ return "Error getting userMedia, error = " + t
+ }, t.onlyDeviceSupportedError = function() {
+ return "The device doesn't support navigator.mediaDevices , only supported cameraIdOrConfig in this case is deviceId parameter (string)."
+ }, t.cameraStreamingNotSupported = function() {
+ return "Camera streaming not supported by the browser."
+ }, t.unableToQuerySupportedDevices = function() {
+ return "Unable to query supported devices, unknown error."
+ }, t.insecureContextCameraQueryError = function() {
+ return "Camera access is only supported in secure context like https or localhost."
+ }, t
+ }(),
+ A = function() {
+ function t() {}
+ return t.scanningStatus = function() {
+ return "Scanning"
+ }, t.idleStatus = function() {
+ return "Idle"
+ }, t.errorStatus = function() {
+ return "Error"
+ }, t.permissionStatus = function() {
+ return "Permission"
+ }, t.noCameraFoundErrorStatus = function() {
+ return "No Cameras"
+ }, t.lastMatch = function(t) {
+ return "Last Match: " + t
+ }, t.codeScannerTitle = function() {
+ return "Code Scanner"
+ }, t.cameraPermissionTitle = function() {
+ return "Request Camera Permissions"
+ }, t.cameraPermissionRequesting = function() {
+ return "Requesting camera permissions..."
+ }, t.noCameraFound = function() {
+ return "No camera found"
+ }, t.scanButtonStopScanningText = function() {
+ return "Stop Scanning"
+ }, t.scanButtonStartScanningText = function() {
+ return "Start Scanning"
+ }, t.torchOnButton = function() {
+ return "Switch On Torch"
+ }, t.torchOffButton = function() {
+ return "Switch Off Torch"
+ }, t.torchOnFailedMessage = function() {
+ return "Failed to turn on torch"
+ }, t.torchOffFailedMessage = function() {
+ return "Failed to turn off torch"
+ }, t.scanButtonScanningStarting = function() {
+ return "Launching Camera..."
+ }, t.textIfCameraScanSelected = function() {
+ return "Scan an Image File"
+ }, t.textIfFileScanSelected = function() {
+ return "Scan using camera directly"
+ }, t.selectCamera = function() {
+ return "Select Camera"
+ }, t.fileSelectionChooseImage = function() {
+ return "Choose Image"
+ }, t.fileSelectionChooseAnother = function() {
+ return "Choose Another"
+ }, t.fileSelectionNoImageSelected = function() {
+ return "No image choosen"
+ }, t.anonymousCameraPrefix = function() {
+ return "Anonymous Camera"
+ }, t.dragAndDropMessage = function() {
+ return "Or drop an image to scan"
+ }, t.dragAndDropMessageOnlyImages = function() {
+ return "Or drop an image to scan (other files not supported)"
+ }, t
+ }(),
+ m = function() {
+ function t() {}
+ return t.poweredBy = function() {
+ return "Powered by "
+ }, t.reportIssues = function() {
+ return "Report issues"
+ }, t
+ }(),
+ E = function() {
+ function t() {}
+ return t.isMediaStreamConstraintsValid = function(t, e) {
+ if ("object" != typeof t) {
+ var r = typeof t;
+ return e.logError("videoConstraints should be of type object, the object passed is of type " + r + ".", !0), !1
+ }
+ for (var n = new Set(["autoGainControl", "channelCount", "echoCancellation", "latency", "noiseSuppression", "sampleRate", "sampleSize", "volume"]), i = 0, o = Object.keys(t); i < o.length; i++) {
+ var s = o[i];
+ if (n.has(s))
+ return e.logError(s + " is not supported videoConstaints.", !0), !1
+ }
+ return !0
+ }, t
+ }(),
+ C = r(449),
+ I = function() {
+ function e(e, r, n) {
+ if (this.formatMap = new Map([[t.QR_CODE, C.BarcodeFormat.QR_CODE], [t.AZTEC, C.BarcodeFormat.AZTEC], [t.CODABAR, C.BarcodeFormat.CODABAR], [t.CODE_39, C.BarcodeFormat.CODE_39], [t.CODE_93, C.BarcodeFormat.CODE_93], [t.CODE_128, C.BarcodeFormat.CODE_128], [t.DATA_MATRIX, C.BarcodeFormat.DATA_MATRIX], [t.MAXICODE, C.BarcodeFormat.MAXICODE], [t.ITF, C.BarcodeFormat.ITF], [t.EAN_13, C.BarcodeFormat.EAN_13], [t.EAN_8, C.BarcodeFormat.EAN_8], [t.PDF_417, C.BarcodeFormat.PDF_417], [t.RSS_14, C.BarcodeFormat.RSS_14], [t.RSS_EXPANDED, C.BarcodeFormat.RSS_EXPANDED], [t.UPC_A, C.BarcodeFormat.UPC_A], [t.UPC_E, C.BarcodeFormat.UPC_E], [t.UPC_EAN_EXTENSION, C.BarcodeFormat.UPC_EAN_EXTENSION]]), this.reverseFormatMap = this.createReverseFormatMap(), !C)
+ throw "Use html5qrcode.min.js without edit, ZXing not found.";
+ this.verbose = r,
+ this.logger = n;
+ var i = this.createZXingFormats(e),
+ o = new Map;
+ o.set(C.DecodeHintType.POSSIBLE_FORMATS, i),
+ this.hints = o
+ }
+ return e.prototype.decodeAsync = function(t) {
+ var e = this;
+ return new Promise((function(r, n) {
+ try {
+ r(e.decode(t))
+ } catch (t) {
+ n(t)
+ }
+ }))
+ }, e.prototype.decode = function(t) {
+ var e = new C.MultiFormatReader(this.verbose, this.hints),
+ r = new C.HTMLCanvasElementLuminanceSource(t),
+ n = new C.BinaryBitmap(new C.HybridBinarizer(r)),
+ i = e.decode(n);
+ return {
+ text: i.text,
+ format: c.create(this.toHtml5QrcodeSupportedFormats(i.format))
+ }
+ }, e.prototype.createReverseFormatMap = function() {
+ var t = new Map;
+ return this.formatMap.forEach((function(e, r, n) {
+ t.set(e, r)
+ })), t
+ }, e.prototype.toHtml5QrcodeSupportedFormats = function(t) {
+ if (!this.reverseFormatMap.has(t))
+ throw "reverseFormatMap doesn't have " + t;
+ return this.reverseFormatMap.get(t)
+ }, e.prototype.createZXingFormats = function(t) {
+ for (var e = [], r = 0, n = t; r < n.length; r++) {
+ var i = n[r];
+ this.formatMap.has(i) ? e.push(this.formatMap.get(i)) : this.logger.logError(i + " is not supported byZXingHtml5QrcodeShim")
+ }
+ return e
+ }, e
+ }(),
+ p = function() {
+ function e(r, n, i) {
+ if (this.formatMap = new Map([[t.QR_CODE, "qr_code"], [t.AZTEC, "aztec"], [t.CODABAR, "codabar"], [t.CODE_39, "code_39"], [t.CODE_93, "code_93"], [t.CODE_128, "code_128"], [t.DATA_MATRIX, "data_matrix"], [t.ITF, "itf"], [t.EAN_13, "ean_13"], [t.EAN_8, "ean_8"], [t.PDF_417, "pdf417"], [t.UPC_A, "upc_a"], [t.UPC_E, "upc_e"]]), this.reverseFormatMap = this.createReverseFormatMap(), !e.isSupported())
+ throw "Use html5qrcode.min.js without edit, Use BarcodeDetectorDelegate only if it isSupported();";
+ this.verbose = n,
+ this.logger = i;
+ var o = this.createBarcodeDetectorFormats(r);
+ if (this.detector = new BarcodeDetector(o), !this.detector)
+ throw "BarcodeDetector detector not supported"
+ }
+ return e.isSupported = function() {
+ return "BarcodeDetector" in window && void 0 !== new BarcodeDetector({
+ formats: ["qr_code"]
+ })
+ }, e.prototype.decodeAsync = function(t) {
+ return e = this, r = void 0, i = function() {
+ var e,
+ r;
+ return function(t, e) {
+ var r,
+ n,
+ i,
+ o,
+ s = {
+ label: 0,
+ sent: function() {
+ if (1 & i[0])
+ throw i[1];
+ return i[1]
+ },
+ trys: [],
+ ops: []
+ };
+ return o = {
+ next: a(0),
+ throw: a(1),
+ return: a(2)
+ }, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
+ return this
+ }), o;
+ function a(o) {
+ return function(a) {
+ return function(o) {
+ if (r)
+ throw new TypeError("Generator is already executing.");
+ for (; s;)
+ try {
+ if (r = 1, n && (i = 2 & o[0] ? n.return : o[0] ? n.throw || ((i = n.return) && i.call(n), 0) : n.next) && !(i = i.call(n, o[1])).done)
+ return i;
+ switch (n = 0, i && (o = [2 & o[0], i.value]), o[0]) {
+ case 0:
+ case 1:
+ i = o;
+ break;
+ case 4:
+ return s.label++, {
+ value: o[1],
+ done: !1
+ };
+ case 5:
+ s.label++,
+ n = o[1],
+ o = [0];
+ continue;
+ case 7:
+ o = s.ops.pop(),
+ s.trys.pop();
+ continue;
+ default:
+ if (!((i = (i = s.trys).length > 0 && i[i.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
+ s = 0;
+ continue
+ }
+ if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) {
+ s.label = o[1];
+ break
+ }
+ if (6 === o[0] && s.label < i[1]) {
+ s.label = i[1],
+ i = o;
+ break
+ }
+ if (i && s.label < i[2]) {
+ s.label = i[2],
+ s.ops.push(o);
+ break
+ }
+ i[2] && s.ops.pop(),
+ s.trys.pop();
+ continue
+ }
+ o = e.call(t, s)
+ } catch (t) {
+ o = [6, t],
+ n = 0
+ } finally {
+ r = i = 0
+ }
+ if (5 & o[0])
+ throw o[1];
+ return {
+ value: o[0] ? o[1] : void 0,
+ done: !0
+ }
+ }([o, a])
+ }
+ }
+ }(this, (function(n) {
+ switch (n.label) {
+ case 0:
+ return [4, this.detector.detect(t)];
+ case 1:
+ if (!(e = n.sent()) || 0 === e.length)
+ throw "No barcode or QR code detected.";
+ return [2, {
+ text: (r = this.selectLargestBarcode(e)).rawValue,
+ format: c.create(this.toHtml5QrcodeSupportedFormats(r.format))
+ }]
+ }
+ }))
+ }, new ((n = void 0) || (n = Promise))((function(t, o) {
+ function s(t) {
+ try {
+ l(i.next(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function a(t) {
+ try {
+ l(i.throw(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function l(e) {
+ var r;
+ e.done ? t(e.value) : (r = e.value, r instanceof n ? r : new n((function(t) {
+ t(r)
+ }))).then(s, a)
+ }
+ l((i = i.apply(e, r || [])).next())
+ }));
+ var e,
+ r,
+ n,
+ i
+ }, e.prototype.selectLargestBarcode = function(t) {
+ for (var e = null, r = 0, n = 0, i = t; n < i.length; n++) {
+ var o = i[n],
+ s = o.boundingBox.width * o.boundingBox.height;
+ s > r && (r = s, e = o)
+ }
+ if (!e)
+ throw "No largest barcode found";
+ return e
+ }, e.prototype.createBarcodeDetectorFormats = function(t) {
+ for (var e = [], r = 0, n = t; r < n.length; r++) {
+ var i = n[r];
+ this.formatMap.has(i) ? e.push(this.formatMap.get(i)) : this.logger.warn(i + " is not supported byBarcodeDetectorDelegate")
+ }
+ return {
+ formats: e
+ }
+ }, e.prototype.toHtml5QrcodeSupportedFormats = function(t) {
+ if (!this.reverseFormatMap.has(t))
+ throw "reverseFormatMap doesn't have " + t;
+ return this.reverseFormatMap.get(t)
+ }, e.prototype.createReverseFormatMap = function() {
+ var t = new Map;
+ return this.formatMap.forEach((function(e, r, n) {
+ t.set(e, r)
+ })), t
+ }, e
+ }(),
+ S = function() {
+ function t(t, e, r, n) {
+ this.EXECUTIONS_TO_REPORT_PERFORMANCE = 100,
+ this.executions = 0,
+ this.executionResults = [],
+ this.verbose = r,
+ e && p.isSupported() ? this.decoder = new p(t, r, n) : this.decoder = new I(t, r, n)
+ }
+ return t.prototype.decodeAsync = function(t) {
+ return e = this, r = void 0, i = function() {
+ var e,
+ r;
+ return function(t, e) {
+ var r,
+ n,
+ i,
+ o,
+ s = {
+ label: 0,
+ sent: function() {
+ if (1 & i[0])
+ throw i[1];
+ return i[1]
+ },
+ trys: [],
+ ops: []
+ };
+ return o = {
+ next: a(0),
+ throw: a(1),
+ return: a(2)
+ }, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
+ return this
+ }), o;
+ function a(o) {
+ return function(a) {
+ return function(o) {
+ if (r)
+ throw new TypeError("Generator is already executing.");
+ for (; s;)
+ try {
+ if (r = 1, n && (i = 2 & o[0] ? n.return : o[0] ? n.throw || ((i = n.return) && i.call(n), 0) : n.next) && !(i = i.call(n, o[1])).done)
+ return i;
+ switch (n = 0, i && (o = [2 & o[0], i.value]), o[0]) {
+ case 0:
+ case 1:
+ i = o;
+ break;
+ case 4:
+ return s.label++, {
+ value: o[1],
+ done: !1
+ };
+ case 5:
+ s.label++,
+ n = o[1],
+ o = [0];
+ continue;
+ case 7:
+ o = s.ops.pop(),
+ s.trys.pop();
+ continue;
+ default:
+ if (!((i = (i = s.trys).length > 0 && i[i.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
+ s = 0;
+ continue
+ }
+ if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) {
+ s.label = o[1];
+ break
+ }
+ if (6 === o[0] && s.label < i[1]) {
+ s.label = i[1],
+ i = o;
+ break
+ }
+ if (i && s.label < i[2]) {
+ s.label = i[2],
+ s.ops.push(o);
+ break
+ }
+ i[2] && s.ops.pop(),
+ s.trys.pop();
+ continue
+ }
+ o = e.call(t, s)
+ } catch (t) {
+ o = [6, t],
+ n = 0
+ } finally {
+ r = i = 0
+ }
+ if (5 & o[0])
+ throw o[1];
+ return {
+ value: o[0] ? o[1] : void 0,
+ done: !0
+ }
+ }([o, a])
+ }
+ }
+ }(this, (function(n) {
+ switch (n.label) {
+ case 0:
+ e = performance.now(),
+ n.label = 1;
+ case 1:
+ return n.trys.push([1, , 3, 4]), [4, this.decoder.decodeAsync(t)];
+ case 2:
+ return [2, n.sent()];
+ case 3:
+ return this.verbose && (r = performance.now() - e, this.executionResults.push(r), this.executions++, this.possiblyFlushPerformanceReport()), [7];
+ case 4:
+ return [2]
+ }
+ }))
+ }, new ((n = void 0) || (n = Promise))((function(t, o) {
+ function s(t) {
+ try {
+ l(i.next(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function a(t) {
+ try {
+ l(i.throw(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function l(e) {
+ var r;
+ e.done ? t(e.value) : (r = e.value, r instanceof n ? r : new n((function(t) {
+ t(r)
+ }))).then(s, a)
+ }
+ l((i = i.apply(e, r || [])).next())
+ }));
+ var e,
+ r,
+ n,
+ i
+ }, t.prototype.possiblyFlushPerformanceReport = function() {
+ if (!(this.executions < this.EXECUTIONS_TO_REPORT_PERFORMANCE)) {
+ for (var t = 0, e = 0, r = this.executionResults; e < r.length; e++)
+ t += r[e];
+ var n = t / this.executionResults.length;
+ console.log(n + " ms for " + this.executionResults.length + " last runs."),
+ this.executions = 0,
+ this.executionResults = []
+ }
+ }, t
+ }();
+ !function(t) {
+ t[t.UNKNOWN = 0] = "UNKNOWN",
+ t[t.NOT_STARTED = 1] = "NOT_STARTED",
+ t[t.SCANNING = 2] = "SCANNING",
+ t[t.PAUSED = 3] = "PAUSED"
+ }(f || (f = {}));
+ var _,
+ T,
+ y = function() {
+ function t() {
+ this.state = f.NOT_STARTED,
+ this.onGoingTransactionNewState = f.UNKNOWN
+ }
+ return t.prototype.directTransition = function(t) {
+ this.failIfTransitionOngoing(),
+ this.validateTransition(t),
+ this.state = t
+ }, t.prototype.startTransition = function(t) {
+ return this.failIfTransitionOngoing(), this.validateTransition(t), this.onGoingTransactionNewState = t, this
+ }, t.prototype.execute = function() {
+ if (this.onGoingTransactionNewState === f.UNKNOWN)
+ throw "Transaction is already cancelled, cannot execute().";
+ var t = this.onGoingTransactionNewState;
+ this.onGoingTransactionNewState = f.UNKNOWN,
+ this.directTransition(t)
+ }, t.prototype.cancel = function() {
+ if (this.onGoingTransactionNewState === f.UNKNOWN)
+ throw "Transaction is already cancelled, cannot cancel().";
+ this.onGoingTransactionNewState = f.UNKNOWN
+ }, t.prototype.getState = function() {
+ return this.state
+ }, t.prototype.failIfTransitionOngoing = function() {
+ if (this.onGoingTransactionNewState !== f.UNKNOWN)
+ throw "Cannnot transition to a new state, already under transition"
+ }, t.prototype.validateTransition = function(t) {
+ switch (this.state) {
+ case f.UNKNOWN:
+ throw "Transition from unknown is not allowed";
+ case f.NOT_STARTED:
+ this.failIfNewStateIs(t, [f.PAUSED]);
+ break;
+ case f.SCANNING:
+ case f.PAUSED:
+ }
+ }, t.prototype.failIfNewStateIs = function(t, e) {
+ for (var r = 0, n = e; r < n.length; r++)
+ if (t === n[r])
+ throw "Cannot transition from " + this.state + " to " + t
+ }, t
+ }(),
+ N = function() {
+ function t(t) {
+ this.stateManager = t
+ }
+ return t.prototype.startTransition = function(t) {
+ return this.stateManager.startTransition(t)
+ }, t.prototype.directTransition = function(t) {
+ this.stateManager.directTransition(t)
+ }, t.prototype.getState = function() {
+ return this.stateManager.getState()
+ }, t.prototype.canScanFile = function() {
+ return this.stateManager.getState() === f.NOT_STARTED
+ }, t.prototype.isScanning = function() {
+ return this.stateManager.getState() !== f.NOT_STARTED
+ }, t.prototype.isStrictlyScanning = function() {
+ return this.stateManager.getState() === f.SCANNING
+ }, t.prototype.isPaused = function() {
+ return this.stateManager.getState() === f.PAUSED
+ }, t
+ }(),
+ M = function() {
+ function t() {}
+ return t.create = function() {
+ return new N(new y)
+ }, t
+ }(),
+ D = (_ = function(t, e) {
+ return (_ = Object.setPrototypeOf || {
+ __proto__: []
+ } instanceof Array && function(t, e) {
+ t.__proto__ = e
+ } || function(t, e) {
+ for (var r in e)
+ Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r])
+ })(t, e)
+ }, function(t, e) {
+ if ("function" != typeof e && null !== e)
+ throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
+ function r() {
+ this.constructor = t
+ }
+ _(t, e),
+ t.prototype = null === e ? Object.create(e) : (r.prototype = e.prototype, new r)
+ }),
+ R = function(t) {
+ function e() {
+ return null !== t && t.apply(this, arguments) || this
+ }
+ return D(e, t), e.DEFAULT_WIDTH = 300, e.DEFAULT_WIDTH_OFFSET = 2, e.FILE_SCAN_MIN_HEIGHT = 300, e.MIN_QR_BOX_SIZE = 50, e.SHADED_LEFT = 1, e.SHADED_RIGHT = 2, e.SHADED_TOP = 3, e.SHADED_BOTTOM = 4, e.SHADED_REGION_ELEMENT_ID = "qr-shaded-region", e.VERBOSE = !1, e.BORDER_SHADER_DEFAULT_COLOR = "#ffffff", e.BORDER_SHADER_MATCH_COLOR = "rgb(90, 193, 56)", e
+ }(l),
+ O = function() {
+ function t(t, e) {
+ this.logger = e,
+ this.fps = R.SCAN_DEFAULT_FPS,
+ t ? (t.fps && (this.fps = t.fps), this.disableFlip = !0 === t.disableFlip, this.qrbox = t.qrbox, this.aspectRatio = t.aspectRatio, this.videoConstraints = t.videoConstraints) : this.disableFlip = R.DEFAULT_DISABLE_FLIP
+ }
+ return t.prototype.isMediaStreamConstraintsValid = function() {
+ return this.videoConstraints ? E.isMediaStreamConstraintsValid(this.videoConstraints, this.logger) : (this.logger.logError("Empty videoConstraints", !0), !1)
+ }, t.prototype.isShadedBoxEnabled = function() {
+ return !g(this.qrbox)
+ }, t.create = function(e, r) {
+ return new t(e, r)
+ }, t
+ }(),
+ b = function() {
+ function e(t, e) {
+ if (this.element = null, this.canvasElement = null, this.scannerPausedUiElement = null, this.hasBorderShaders = null, this.borderShaders = null, this.qrMatch = null, this.videoElement = null, this.localMediaStream = null, this.qrRegion = null, this.context = null, this.lastScanImageFile = null, this.isScanning = !1, !document.getElementById(t))
+ throw "HTML Element with id=" + t + " not found";
+ var r;
+ this.elementId = t,
+ this.verbose = !1,
+ "boolean" == typeof e ? this.verbose = !0 === e : e && (r = e, this.verbose = !0 === r.verbose, r.experimentalFeatures),
+ this.logger = new d(this.verbose),
+ this.qrcode = new S(this.getSupportedFormats(e), this.getUseBarCodeDetectorIfSupported(r), this.verbose, this.logger),
+ this.foreverScanTimeout,
+ this.localMediaStream,
+ this.shouldScan = !0,
+ this.stateManagerProxy = M.create()
+ }
+ return e.prototype.start = function(t, e, r, n) {
+ if (!t)
+ throw "cameraIdOrConfig is required";
+ if (!r || "function" != typeof r)
+ throw "qrCodeSuccessCallback is required and should be a function.";
+ n || (n = this.verbose ? this.logger.log : function() {});
+ var i = O.create(e, this.logger);
+ this.clearElement();
+ var o = !1;
+ i.videoConstraints && (i.isMediaStreamConstraintsValid() ? o = !0 : this.logger.logError("'videoConstraints' is not valid 'MediaStreamConstraints, it will be ignored.'", !0));
+ var s = o,
+ a = (i.isShadedBoxEnabled(), document.getElementById(this.elementId)),
+ l = a.clientWidth ? a.clientWidth : R.DEFAULT_WIDTH;
+ a.style.position = "relative",
+ this.shouldScan = !0,
+ this.element = a;
+ var c = this,
+ h = this.stateManagerProxy.startTransition(f.SCANNING);
+ return new Promise((function(e, o) {
+ var a = s ? i.videoConstraints : c.createVideoConstraints(t);
+ if (!a)
+ return h.cancel(), void o("videoConstraints should be defined");
+ navigator.mediaDevices ? navigator.mediaDevices.getUserMedia({
+ audio: !1,
+ video: a
+ }).then((function(t) {
+ c.onMediaStreamReceived(t, i, s, l, r, n).then((function(t) {
+ h.execute(),
+ c.isScanning = !0,
+ e(null)
+ })).catch((function(t) {
+ h.cancel(),
+ o(t)
+ }))
+ })).catch((function(t) {
+ h.cancel(),
+ o(w.errorGettingUserMedia(t))
+ })) : (h.cancel(), o(w.cameraStreamingNotSupported()))
+ }))
+ }, e.prototype.pause = function(t) {
+ if (!this.stateManagerProxy.isStrictlyScanning())
+ throw "Cannot pause, scanner is not scanning.";
+ this.stateManagerProxy.directTransition(f.PAUSED),
+ this.showPausedState(),
+ (g(t) || !0 !== t) && (t = !1),
+ t && this.videoElement && this.videoElement.pause()
+ }, e.prototype.resume = function() {
+ if (!this.stateManagerProxy.isPaused())
+ throw "Cannot result, scanner is not paused.";
+ if (!this.videoElement)
+ throw "VideoElement doesn't exist while trying resume()";
+ var t = this,
+ e = function() {
+ t.stateManagerProxy.directTransition(f.SCANNING),
+ t.hidePausedState()
+ };
+ if (this.videoElement.paused) {
+ var r = function() {
+ var n;
+ setTimeout(e, 200),
+ null === (n = t.videoElement) || void 0 === n || n.removeEventListener("playing", r)
+ };
+ this.videoElement.addEventListener("playing", r),
+ this.videoElement.play()
+ } else
+ e()
+ }, e.prototype.getState = function() {
+ return this.stateManagerProxy.getState()
+ }, e.prototype.stop = function() {
+ var t = this;
+ if (!this.stateManagerProxy.isScanning())
+ throw "Cannot stop, scanner is not running or paused.";
+ var e = this.stateManagerProxy.startTransition(f.NOT_STARTED);
+ return this.shouldScan = !1, this.foreverScanTimeout && clearTimeout(this.foreverScanTimeout), new Promise((function(r, n) {
+ var i = function() {
+ t.localMediaStream = null,
+ t.element && (t.element.removeChild(t.videoElement), t.element.removeChild(t.canvasElement)),
+ function() {
+ if (t.element) {
+ var e = document.getElementById(R.SHADED_REGION_ELEMENT_ID);
+ e && t.element.removeChild(e)
+ }
+ }(),
+ t.qrRegion && (t.qrRegion = null),
+ t.context && (t.context = null),
+ e.execute(),
+ t.hidePausedState(),
+ t.isScanning = !1,
+ r()
+ };
+ t.localMediaStream || i();
+ var o = t.localMediaStream.getVideoTracks().length,
+ s = 0;
+ t.localMediaStream.getVideoTracks().forEach((function(e) {
+ t.localMediaStream.removeTrack(e),
+ e.stop(),
+ ++s >= o && i()
+ }))
+ }))
+ }, e.prototype.scanFile = function(t, e) {
+ return this.scanFileV2(t, e).then((function(t) {
+ return t.decodedText
+ }))
+ }, e.prototype.scanFileV2 = function(t, e) {
+ var r = this;
+ if (!(t && t instanceof File))
+ throw "imageFile argument is mandatory and should be instance of File. Use 'event.target.files[0]'.";
+ if (g(e) && (e = !0), !this.stateManagerProxy.canScanFile())
+ throw "Cannot start file scan - ongoing camera scan";
+ return new Promise((function(n, i) {
+ r.possiblyCloseLastScanImageFile(),
+ r.clearElement(),
+ r.lastScanImageFile = URL.createObjectURL(t);
+ var o = new Image;
+ o.onload = function() {
+ var t = o.width,
+ s = o.height,
+ a = document.getElementById(r.elementId),
+ l = a.clientWidth ? a.clientWidth : R.DEFAULT_WIDTH,
+ c = Math.max(a.clientHeight ? a.clientHeight : s, R.FILE_SCAN_MIN_HEIGHT),
+ u = r.computeCanvasDrawConfig(t, s, l, c);
+ if (e) {
+ var d = r.createCanvasElement(l, c, "qr-canvas-visible");
+ d.style.display = "inline-block",
+ a.appendChild(d);
+ var g = d.getContext("2d");
+ if (!g)
+ throw "Unable to get 2d context from canvas";
+ g.canvas.width = l,
+ g.canvas.height = c,
+ g.drawImage(o, 0, 0, t, s, u.x, u.y, u.width, u.height)
+ }
+ var f = r.createCanvasElement(u.width, u.height);
+ a.appendChild(f);
+ var w = f.getContext("2d");
+ if (!w)
+ throw "Unable to get 2d context from canvas";
+ w.canvas.width = u.width,
+ w.canvas.height = u.height,
+ w.drawImage(o, 0, 0, t, s, 0, 0, u.width, u.height);
+ try {
+ r.qrcode.decodeAsync(f).then((function(t) {
+ n(h.createFromQrcodeResult(t))
+ })).catch(i)
+ } catch (t) {
+ i("QR code parse error, error = " + t)
+ }
+ },
+ o.onerror = i,
+ o.onabort = i,
+ o.onstalled = i,
+ o.onsuspend = i,
+ o.src = URL.createObjectURL(t)
+ }))
+ }, e.prototype.clear = function() {
+ this.clearElement()
+ }, e.getCameras = function() {
+ if (navigator.mediaDevices)
+ return e.getCamerasFromMediaDevices();
+ var t = MediaStreamTrack;
+ if (MediaStreamTrack && t.getSources)
+ return e.getCamerasFromMediaStreamTrack();
+ var r = w.unableToQuerySupportedDevices();
+ return function() {
+ if ("https:" === location.protocol)
+ return !0;
+ var t = location.host.split(":")[0];
+ return "127.0.0.1" === t || "localhost" === t
+ }() || (r = w.insecureContextCameraQueryError()), Promise.reject(r)
+ }, e.prototype.getRunningTrackCapabilities = function() {
+ if (null == this.localMediaStream)
+ throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state.";
+ if (0 === this.localMediaStream.getVideoTracks().length)
+ throw "No video tracks found";
+ return this.localMediaStream.getVideoTracks()[0].getCapabilities()
+ }, e.prototype.getRunningTrackSettings = function() {
+ if (null == this.localMediaStream)
+ throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state.";
+ if (0 === this.localMediaStream.getVideoTracks().length)
+ throw "No video tracks found";
+ return this.localMediaStream.getVideoTracks()[0].getSettings()
+ }, e.prototype.applyVideoConstraints = function(t) {
+ var e = this;
+ if (!t)
+ throw "videoConstaints is required argument.";
+ if (!E.isMediaStreamConstraintsValid(t, this.logger))
+ throw "invalid videoConstaints passed, check logs for more details";
+ if (null === this.localMediaStream)
+ throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state.";
+ if (0 === this.localMediaStream.getVideoTracks().length)
+ throw "No video tracks found";
+ return new Promise((function(r, n) {
+ "aspectRatio" in t ? n("Chaning 'aspectRatio' in run-time is not yet supported.") : e.localMediaStream.getVideoTracks()[0].applyConstraints(t).then((function(t) {
+ r(t)
+ })).catch((function(t) {
+ n(t)
+ }))
+ }))
+ }, e.getCamerasFromMediaDevices = function() {
+ return new Promise((function(t, e) {
+ navigator.mediaDevices.getUserMedia({
+ audio: !1,
+ video: !0
+ }).then((function(r) {
+ navigator.mediaDevices.enumerateDevices().then((function(e) {
+ for (var n = [], i = 0, o = e; i < o.length; i++) {
+ var s = o[i];
+ "videoinput" === s.kind && n.push({
+ id: s.deviceId,
+ label: s.label
+ })
+ }
+ !function(t) {
+ for (var e = 0, r = t.getVideoTracks(); e < r.length; e++) {
+ var n = r[e];
+ n.enabled = !1,
+ n.stop(),
+ t.removeTrack(n)
+ }
+ }(r),
+ t(n)
+ })).catch((function(t) {
+ e(t.name + " : " + t.message)
+ }))
+ })).catch((function(t) {
+ e(t.name + " : " + t.message)
+ }))
+ }))
+ }, e.getCamerasFromMediaStreamTrack = function() {
+ return new Promise((function(t, e) {
+ MediaStreamTrack.getSources((function(e) {
+ for (var r = [], n = 0, i = e; n < i.length; n++) {
+ var o = i[n];
+ "video" === o.kind && r.push({
+ id: o.id,
+ label: o.label
+ })
+ }
+ t(r)
+ }))
+ }))
+ }, e.prototype.getSupportedFormats = function(e) {
+ var r = [t.QR_CODE, t.AZTEC, t.CODABAR, t.CODE_39, t.CODE_93, t.CODE_128, t.DATA_MATRIX, t.MAXICODE, t.ITF, t.EAN_13, t.EAN_8, t.PDF_417, t.RSS_14, t.RSS_EXPANDED, t.UPC_A, t.UPC_E, t.UPC_EAN_EXTENSION];
+ if (!e || "boolean" == typeof e)
+ return r;
+ if (!e.formatsToSupport)
+ return r;
+ if (!Array.isArray(e.formatsToSupport))
+ throw "configOrVerbosityFlag.formatsToSupport should be undefined or an array.";
+ if (0 === e.formatsToSupport.length)
+ throw "Atleast 1 formatsToSupport is needed.";
+ for (var n = [], i = 0, o = e.formatsToSupport; i < o.length; i++) {
+ var a = o[i];
+ s(a) ? n.push(a) : this.logger.warn("Invalid format: " + a + " passed in config, ignoring.")
+ }
+ if (0 === n.length)
+ throw "None of formatsToSupport match supported values.";
+ return n
+ }, e.prototype.getUseBarCodeDetectorIfSupported = function(t) {
+ if (g(t))
+ return !1;
+ if (!g(t.useBarCodeDetectorIfSupported))
+ return !0 === t.useBarCodeDetectorIfSupported;
+ if (g(t.experimentalFeatures))
+ return !1;
+ var e = t.experimentalFeatures;
+ return !g(e.useBarCodeDetectorIfSupported) && !0 === e.useBarCodeDetectorIfSupported
+ }, e.prototype.validateQrboxSize = function(t, e, r) {
+ var n = r.qrbox;
+ this.validateQrboxConfig(n);
+ var i,
+ o = this.toQrdimensions(t, e, n),
+ s = function(t) {
+ if (t < R.MIN_QR_BOX_SIZE)
+ throw "minimum size of 'config.qrbox' dimension value is " + R.MIN_QR_BOX_SIZE + "px."
+ };
+ s(o.width),
+ s(o.height),
+ o.width = ((i = o.width) > t && (this.logger.warn("`qrbox.width` or `qrbox` is larger than the width of the root element. The width will be truncated to the width of root element."), i = t), i)
+ }, e.prototype.validateQrboxConfig = function(t) {
+ if ("number" != typeof t && "function" != typeof t && (void 0 === t.width || void 0 === t.height))
+ throw "Invalid instance of QrDimensions passed for 'config.qrbox'. Both 'width' and 'height' should be set."
+ }, e.prototype.toQrdimensions = function(t, e, r) {
+ if ("number" == typeof r)
+ return {
+ width: r,
+ height: r
+ };
+ if ("function" == typeof r)
+ try {
+ return r(t, e)
+ } catch (t) {
+ throw new Error("qrbox config was passed as a function but it failed with unknown error" + t)
+ }
+ return r
+ }, e.prototype.setupUi = function(t, e, r) {
+ r.isShadedBoxEnabled() && this.validateQrboxSize(t, e, r);
+ var n = g(r.qrbox) ? {
+ width: t,
+ height: e
+ } : r.qrbox;
+ this.validateQrboxConfig(n);
+ var i = this.toQrdimensions(t, e, n);
+ i.height > e && this.logger.warn("[Html5Qrcode] config.qrbox has height that isgreater than the height of the video stream. Shading will be ignored");
+ var o = r.isShadedBoxEnabled() && i.height <= e,
+ s = {
+ x: 0,
+ y: 0,
+ width: t,
+ height: e
+ },
+ a = o ? this.getShadedRegionBounds(t, e, i) : s,
+ l = this.createCanvasElement(a.width, a.height),
+ c = l.getContext("2d");
+ c.canvas.width = a.width,
+ c.canvas.height = a.height,
+ this.element.append(l),
+ o && this.possiblyInsertShadingElement(this.element, t, e, i),
+ this.createScannerPausedUiElement(this.element),
+ this.qrRegion = a,
+ this.context = c,
+ this.canvasElement = l
+ }, e.prototype.createScannerPausedUiElement = function(t) {
+ var e = document.createElement("div");
+ e.innerText = "Scanner paused",
+ e.style.display = "none",
+ e.style.position = "absolute",
+ e.style.top = "0px",
+ e.style.zIndex = "1",
+ e.style.background = "yellow",
+ e.style.textAlign = "center",
+ e.style.width = "100%",
+ t.appendChild(e),
+ this.scannerPausedUiElement = e
+ }, e.prototype.scanContext = function(t, e) {
+ var r = this;
+ return this.stateManagerProxy.isPaused() ? Promise.resolve(!1) : this.qrcode.decodeAsync(this.canvasElement).then((function(e) {
+ return t(e.text, h.createFromQrcodeResult(e)), r.possiblyUpdateShaders(!0), !0
+ })).catch((function(t) {
+ r.possiblyUpdateShaders(!1);
+ var n = w.codeParseError(t);
+ return e(n, u.createFrom(n)), !1
+ }))
+ }, e.prototype.foreverScan = function(t, e, r) {
+ var n = this;
+ if (this.shouldScan && this.localMediaStream) {
+ var i = this.videoElement,
+ o = i.videoWidth / i.clientWidth,
+ s = i.videoHeight / i.clientHeight;
+ if (!this.qrRegion)
+ throw "qrRegion undefined when localMediaStream is ready.";
+ var a = this.qrRegion.width * o,
+ l = this.qrRegion.height * s,
+ c = this.qrRegion.x * o,
+ h = this.qrRegion.y * s;
+ this.context.drawImage(i, c, h, a, l, 0, 0, this.qrRegion.width, this.qrRegion.height);
+ var u = function() {
+ n.foreverScanTimeout = setTimeout((function() {
+ n.foreverScan(t, e, r)
+ }), n.getTimeoutFps(t.fps))
+ };
+ this.scanContext(e, r).then((function(i) {
+ i || !0 === t.disableFlip ? u() : (n.context.translate(n.context.canvas.width, 0), n.context.scale(-1, 1), n.scanContext(e, r).finally((function() {
+ u()
+ })))
+ })).catch((function(t) {
+ n.logger.logError("Error happend while scanning context", t),
+ u()
+ }))
+ }
+ }, e.prototype.onMediaStreamReceived = function(t, e, r, n, i, o) {
+ var s = this,
+ a = this;
+ return new Promise((function(l, c) {
+ var h = function() {
+ var r = s.createVideoElement(n);
+ a.element.append(r),
+ r.onabort = c,
+ r.onerror = c;
+ var h = function() {
+ var t = r.clientWidth,
+ n = r.clientHeight;
+ a.setupUi(t, n, e),
+ a.foreverScan(e, i, o),
+ r.removeEventListener("playing", h),
+ l(null)
+ };
+ r.addEventListener("playing", h),
+ r.srcObject = t,
+ r.play(),
+ a.videoElement = r
+ };
+ if (a.localMediaStream = t, r || !e.aspectRatio)
+ h();
+ else {
+ var u = {
+ aspectRatio: e.aspectRatio
+ };
+ t.getVideoTracks()[0].applyConstraints(u).then((function(t) {
+ return h()
+ })).catch((function(t) {
+ a.logger.logErrors(["[Html5Qrcode] Constriants could not be satisfied, ignoring constraints", t]),
+ h()
+ }))
+ }
+ }))
+ }, e.prototype.createVideoConstraints = function(t) {
+ if ("string" == typeof t)
+ return {
+ deviceId: {
+ exact: t
+ }
+ };
+ if ("object" == typeof t) {
+ var e = "facingMode",
+ r = {
+ user: !0,
+ environment: !0
+ },
+ n = "exact",
+ i = function(t) {
+ if (t in r)
+ return !0;
+ throw "config has invalid 'facingMode' value = '" + t + "'"
+ },
+ o = Object.keys(t);
+ if (1 !== o.length)
+ throw "'cameraIdOrConfig' object should have exactly 1 key, if passed as an object, found " + o.length + " keys";
+ var s = Object.keys(t)[0];
+ if (s !== e && "deviceId" !== s)
+ throw "Only 'facingMode' and 'deviceId' are supported for 'cameraIdOrConfig'";
+ if (s !== e) {
+ var a = t.deviceId;
+ if ("string" == typeof a)
+ return {
+ deviceId: a
+ };
+ if ("object" == typeof a) {
+ if (n in a)
+ return {
+ deviceId: {
+ exact: a.exact
+ }
+ };
+ throw "'deviceId' should be string or object with exact as key."
+ }
+ throw "Invalid type of 'deviceId' = " + typeof a
+ }
+ var l = t.facingMode;
+ if ("string" == typeof l) {
+ if (i(l))
+ return {
+ facingMode: l
+ }
+ } else {
+ if ("object" != typeof l)
+ throw "Invalid type of 'facingMode' = " + typeof l;
+ if (!(n in l))
+ throw "'facingMode' should be string or object with exact as key.";
+ if (i(l.exact))
+ return {
+ facingMode: {
+ exact: l.exact
+ }
+ }
+ }
+ }
+ throw "Invalid type of 'cameraIdOrConfig' = " + typeof t
+ }, e.prototype.computeCanvasDrawConfig = function(t, e, r, n) {
+ if (t <= r && e <= n)
+ return {
+ x: (r - t) / 2,
+ y: (n - e) / 2,
+ width: t,
+ height: e
+ };
+ var i = t,
+ o = e;
+ return t > r && (e *= r / t, t = r), e > n && (t *= n / e, e = n), this.logger.log("Image downsampled from " + i + "X" + o + " to " + t + "X" + e + "."), this.computeCanvasDrawConfig(t, e, r, n)
+ }, e.prototype.clearElement = function() {
+ if (this.stateManagerProxy.isScanning())
+ throw "Cannot clear while scan is ongoing, close it first.";
+ var t = document.getElementById(this.elementId);
+ t && (t.innerHTML = "")
+ }, e.prototype.createVideoElement = function(t) {
+ var e = document.createElement("video");
+ return e.style.width = t + "px", e.style.display = "block", e.muted = !0, e.setAttribute("muted", "true"), e.playsInline = !0, e
+ }, e.prototype.possiblyUpdateShaders = function(t) {
+ this.qrMatch !== t && (this.hasBorderShaders && this.borderShaders && this.borderShaders.length && this.borderShaders.forEach((function(e) {
+ e.style.backgroundColor = t ? R.BORDER_SHADER_MATCH_COLOR : R.BORDER_SHADER_DEFAULT_COLOR
+ })), this.qrMatch = t)
+ }, e.prototype.possiblyCloseLastScanImageFile = function() {
+ this.lastScanImageFile && (URL.revokeObjectURL(this.lastScanImageFile), this.lastScanImageFile = null)
+ }, e.prototype.createCanvasElement = function(t, e, r) {
+ var n = t,
+ i = e,
+ o = document.createElement("canvas");
+ return o.style.width = n + "px", o.style.height = i + "px", o.style.display = "none", o.id = g(r) ? "qr-canvas" : r, o
+ }, e.prototype.getShadedRegionBounds = function(t, e, r) {
+ if (r.width > t || r.height > e)
+ throw "'config.qrbox' dimensions should not be greater than the dimensions of the root HTML element.";
+ return {
+ x: (t - r.width) / 2,
+ y: (e - r.height) / 2,
+ width: r.width,
+ height: r.height
+ }
+ }, e.prototype.possiblyInsertShadingElement = function(t, e, r, n) {
+ if (!(e - n.width < 1 || r - n.height < 1)) {
+ var i = document.createElement("div");
+ i.style.position = "absolute";
+ var o = (e - n.width) / 2,
+ s = (r - n.height) / 2;
+ if (i.style.borderLeft = o + "px solid rgba(0, 0, 0, 0.48)", i.style.borderRight = o + "px solid rgba(0, 0, 0, 0.48)", i.style.borderTop = s + "px solid rgba(0, 0, 0, 0.48)", i.style.borderBottom = s + "px solid rgba(0, 0, 0, 0.48)", i.style.boxSizing = "border-box", i.style.top = "0px", i.style.bottom = "0px", i.style.left = "0px", i.style.right = "0px", i.id = "" + R.SHADED_REGION_ELEMENT_ID, e - n.width < 11 || r - n.height < 11)
+ this.hasBorderShaders = !1;
+ else {
+ this.insertShaderBorders(i, 40, 5, -5, null, 0, !0),
+ this.insertShaderBorders(i, 40, 5, -5, null, 0, !1),
+ this.insertShaderBorders(i, 40, 5, null, -5, 0, !0),
+ this.insertShaderBorders(i, 40, 5, null, -5, 0, !1),
+ this.insertShaderBorders(i, 5, 45, -5, null, -5, !0),
+ this.insertShaderBorders(i, 5, 45, null, -5, -5, !0),
+ this.insertShaderBorders(i, 5, 45, -5, null, -5, !1),
+ this.insertShaderBorders(i, 5, 45, null, -5, -5, !1),
+ this.hasBorderShaders = !0
+ }
+ t.append(i)
+ }
+ }, e.prototype.insertShaderBorders = function(t, e, r, n, i, o, s) {
+ var a = document.createElement("div");
+ a.style.position = "absolute",
+ a.style.backgroundColor = R.BORDER_SHADER_DEFAULT_COLOR,
+ a.style.width = e + "px",
+ a.style.height = r + "px",
+ null !== n && (a.style.top = n + "px"),
+ null !== i && (a.style.bottom = i + "px"),
+ s ? a.style.left = o + "px" : a.style.right = o + "px",
+ this.borderShaders || (this.borderShaders = []),
+ this.borderShaders.push(a),
+ t.appendChild(a)
+ }, e.prototype.showPausedState = function() {
+ if (!this.scannerPausedUiElement)
+ throw "[internal error] scanner paused UI element not found";
+ this.scannerPausedUiElement.style.display = "block"
+ }, e.prototype.hidePausedState = function() {
+ if (!this.scannerPausedUiElement)
+ throw "[internal error] scanner paused UI element not found";
+ this.scannerPausedUiElement.style.display = "none"
+ }, e.prototype.getTimeoutFps = function(t) {
+ return 1e3 / t
+ }, e
+ }(),
+ B = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgNDYwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NjAgNDYwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNMjMwIDBDMTAyLjk3NSAwIDAgMTAyLjk3NSAwIDIzMHMxMDIuOTc1IDIzMCAyMzAgMjMwIDIzMC0xMDIuOTc0IDIzMC0yMzBTMzU3LjAyNSAwIDIzMCAwem0zOC4zMzMgMzc3LjM2YzAgOC42NzYtNy4wMzQgMTUuNzEtMTUuNzEgMTUuNzFoLTQzLjEwMWMtOC42NzYgMC0xNS43MS03LjAzNC0xNS43MS0xNS43MVYyMDIuNDc3YzAtOC42NzYgNy4wMzMtMTUuNzEgMTUuNzEtMTUuNzFoNDMuMTAxYzguNjc2IDAgMTUuNzEgNy4wMzMgMTUuNzEgMTUuNzFWMzc3LjM2ek0yMzAgMTU3Yy0yMS41MzkgMC0zOS0xNy40NjEtMzktMzlzMTcuNDYxLTM5IDM5LTM5IDM5IDE3LjQ2MSAzOSAzOS0xNy40NjEgMzktMzkgMzl6Ii8+PC9zdmc+",
+ L = function() {
+ function t() {}
+ return t.createDefault = function() {
+ return {
+ hasPermission: !1,
+ lastUsedCameraId: null
+ }
+ }, t
+ }(),
+ P = function() {
+ function t() {
+ this.data = L.createDefault();
+ var e = localStorage.getItem(t.LOCAL_STORAGE_KEY);
+ e ? this.data = JSON.parse(e) : this.reset()
+ }
+ return t.prototype.hasCameraPermissions = function() {
+ return this.data.hasPermission
+ }, t.prototype.getLastUsedCameraId = function() {
+ return this.data.lastUsedCameraId
+ }, t.prototype.setHasPermission = function(t) {
+ this.data.hasPermission = t,
+ this.flush()
+ }, t.prototype.setLastUsedCameraId = function(t) {
+ this.data.lastUsedCameraId = t,
+ this.flush()
+ }, t.prototype.resetLastUsedCameraId = function() {
+ this.data.lastUsedCameraId = null,
+ this.flush()
+ }, t.prototype.reset = function() {
+ this.data = L.createDefault(),
+ this.flush()
+ }, t.prototype.flush = function() {
+ localStorage.setItem(t.LOCAL_STORAGE_KEY, JSON.stringify(this.data))
+ }, t.LOCAL_STORAGE_KEY = "HTML5_QRCODE_DATA", t
+ }(),
+ v = function() {
+ function t() {
+ this.infoDiv = document.createElement("div")
+ }
+ return t.prototype.renderInto = function(t) {
+ this.infoDiv.style.position = "absolute",
+ this.infoDiv.style.top = "10px",
+ this.infoDiv.style.right = "10px",
+ this.infoDiv.style.zIndex = "2",
+ this.infoDiv.style.display = "none",
+ this.infoDiv.style.padding = "5pt",
+ this.infoDiv.style.border = "1px solid #171717",
+ this.infoDiv.style.fontSize = "10pt",
+ this.infoDiv.style.background = "rgb(0 0 0 / 69%)",
+ this.infoDiv.style.borderRadius = "5px",
+ this.infoDiv.style.textAlign = "center",
+ this.infoDiv.style.fontWeight = "400",
+ this.infoDiv.style.color = "white",
+ this.infoDiv.innerText = m.poweredBy();
+ var e = document.createElement("a");
+ e.innerText = "ScanApp",
+ e.href = "https://scanapp.org",
+ e.target = "new",
+ e.style.color = "white",
+ this.infoDiv.appendChild(e);
+ var r = document.createElement("br"),
+ n = document.createElement("br");
+ this.infoDiv.appendChild(r),
+ this.infoDiv.appendChild(n);
+ var i = document.createElement("a");
+ i.innerText = m.reportIssues(),
+ i.href = "https://github.com/mebjas/html5-qrcode/issues",
+ i.target = "new",
+ i.style.color = "white",
+ this.infoDiv.appendChild(i),
+ t.appendChild(this.infoDiv)
+ }, t.prototype.show = function() {
+ this.infoDiv.style.display = "block"
+ }, t.prototype.hide = function() {
+ this.infoDiv.style.display = "none"
+ }, t
+ }(),
+ F = function() {
+ function t(t, e) {
+ this.isShowingInfoIcon = !0,
+ this.onTapIn = t,
+ this.onTapOut = e,
+ this.infoIcon = document.createElement("img")
+ }
+ return t.prototype.renderInto = function(t) {
+ var e = this;
+ this.infoIcon.alt = "Info icon",
+ this.infoIcon.src = B,
+ this.infoIcon.style.position = "absolute",
+ this.infoIcon.style.top = "4px",
+ this.infoIcon.style.right = "4px",
+ this.infoIcon.style.opacity = "0.6",
+ this.infoIcon.style.cursor = "pointer",
+ this.infoIcon.style.zIndex = "2",
+ this.infoIcon.style.width = "16px",
+ this.infoIcon.style.height = "16px",
+ this.infoIcon.onmouseover = function(t) {
+ return e.onHoverIn()
+ },
+ this.infoIcon.onmouseout = function(t) {
+ return e.onHoverOut()
+ },
+ this.infoIcon.onclick = function(t) {
+ return e.onClick()
+ },
+ t.appendChild(this.infoIcon)
+ }, t.prototype.onHoverIn = function() {
+ this.isShowingInfoIcon && (this.infoIcon.style.opacity = "1")
+ }, t.prototype.onHoverOut = function() {
+ this.isShowingInfoIcon && (this.infoIcon.style.opacity = "0.6")
+ }, t.prototype.onClick = function() {
+ this.isShowingInfoIcon ? (this.isShowingInfoIcon = !1, this.onTapIn(), this.infoIcon.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAQgAAAEIBarqQRAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE1SURBVDiNfdI7S0NBEAXgLya1otFgpbYSbISAgpXYi6CmiH9KCAiChaVga6OiWPgfRDQ+0itaGVNosXtluWwcuMzePfM4M3sq8lbHBubwg1dc4m1E/J/N4ghDPOIsfk/4xiEao5KX0McFljN4C9d4QTPXuY99jP3DsIoDPGM6BY5i5yI5R7O4q+ImFkJY2DCh3cAH2klyB+9J1xUMMAG7eCh1a+Mr+k48b5diXrFVwwLuS+BJ9MfR7+G0FHOHhTHhnXNWS87VDF4pcnfQK4Ep7XScNLmPTZgURNKKYENYWDpzW1BhscS1WHS8CDgURFJQrWcoF3c13KKbgg1BYQfy8xZWEzTTw1QZbAoKu8FqJnktdu5hcVSHmchiILzzuaDQvjBzV2m8yohCE1jHfPx/xhU+y4G/D75ELlRJsSYAAAAASUVORK5CYII=", this.infoIcon.style.opacity = "1") : (this.isShowingInfoIcon = !0, this.onTapOut(), this.infoIcon.src = B, this.infoIcon.style.opacity = "0.6")
+ }, t
+ }(),
+ x = function() {
+ function t() {
+ var t = this;
+ this.infoDiv = new v,
+ this.infoIcon = new F((function() {
+ t.infoDiv.show()
+ }), (function() {
+ t.infoDiv.hide()
+ }))
+ }
+ return t.prototype.renderInto = function(t) {
+ this.infoDiv.renderInto(t),
+ this.infoIcon.renderInto(t)
+ }, t
+ }(),
+ k = function() {
+ function t() {}
+ return t.hasCameraPermissions = function() {
+ return new Promise((function(t, e) {
+ navigator.mediaDevices.enumerateDevices().then((function(e) {
+ e.forEach((function(e) {
+ "videoinput" === e.kind && e.label && t(!0)
+ })),
+ t(!1)
+ }))
+ }))
+ }, t
+ }(),
+ U = function() {
+ function t(t) {
+ this.supportedScanTypes = this.validateAndReturnScanTypes(t)
+ }
+ return t.prototype.getDefaultScanType = function() {
+ return this.supportedScanTypes[0]
+ }, t.prototype.hasMoreThanOneScanType = function() {
+ return this.supportedScanTypes.length > 1
+ }, t.prototype.isCameraScanRequired = function() {
+ for (var e = 0, r = this.supportedScanTypes; e < r.length; e++) {
+ var n = r[e];
+ if (t.isCameraScanType(n))
+ return !0
+ }
+ return !1
+ }, t.isCameraScanType = function(t) {
+ return t === i.SCAN_TYPE_CAMERA
+ }, t.isFileScanType = function(t) {
+ return t === i.SCAN_TYPE_FILE
+ }, t.prototype.validateAndReturnScanTypes = function(t) {
+ if (!t || 0 === t.length)
+ return l.DEFAULT_SUPPORTED_SCAN_TYPE;
+ var e = l.DEFAULT_SUPPORTED_SCAN_TYPE.length;
+ if (t.length > e)
+ throw "Max " + e + " values expected for supportedScanTypes";
+ for (var r = 0, n = t; r < n.length; r++) {
+ var i = n[r];
+ if (!l.DEFAULT_SUPPORTED_SCAN_TYPE.includes(i))
+ throw "Unsupported scan type " + i
+ }
+ return t
+ }, t
+ }(),
+ H = function() {
+ function t() {}
+ return t.ALL_ELEMENT_CLASS = "html5-qrcode-element", t.CAMERA_PERMISSION_BUTTON_ID = "html5-qrcode-button-camera-permission", t.CAMERA_START_BUTTON_ID = "html5-qrcode-button-camera-start", t.CAMERA_STOP_BUTTON_ID = "html5-qrcode-button-camera-stop", t.TORCH_BUTTON_ID = "html5-qrcode-button-torch", t.CAMERA_SELECTION_SELECT_ID = "html5-qrcode-select-camera", t.FILE_SELECTION_BUTTON_ID = "html5-qrcode-button-file-selection", t.SCAN_TYPE_CHANGE_ANCHOR_ID = "html5-qrcode-anchor-scan-type-change", t.TORCH_BUTTON_CLASS_TORCH_ON = "html5-qrcode-button-torch-on", t.TORCH_BUTTON_CLASS_TORCH_OFF = "html5-qrcode-button-torch-off", t
+ }(),
+ V = function() {
+ function t() {}
+ return t.createElement = function(t, e) {
+ var r = document.createElement(t);
+ return r.id = e, r.classList.add(H.ALL_ELEMENT_CLASS), r
+ }, t
+ }(),
+ z = function(t, e, r, n) {
+ return new (r || (r = Promise))((function(i, o) {
+ function s(t) {
+ try {
+ l(n.next(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function a(t) {
+ try {
+ l(n.throw(t))
+ } catch (t) {
+ o(t)
+ }
+ }
+ function l(t) {
+ var e;
+ t.done ? i(t.value) : (e = t.value, e instanceof r ? e : new r((function(t) {
+ t(e)
+ }))).then(s, a)
+ }
+ l((n = n.apply(t, e || [])).next())
+ }))
+ },
+ G = function(t, e) {
+ var r,
+ n,
+ i,
+ o,
+ s = {
+ label: 0,
+ sent: function() {
+ if (1 & i[0])
+ throw i[1];
+ return i[1]
+ },
+ trys: [],
+ ops: []
+ };
+ return o = {
+ next: a(0),
+ throw: a(1),
+ return: a(2)
+ }, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
+ return this
+ }), o;
+ function a(o) {
+ return function(a) {
+ return function(o) {
+ if (r)
+ throw new TypeError("Generator is already executing.");
+ for (; s;)
+ try {
+ if (r = 1, n && (i = 2 & o[0] ? n.return : o[0] ? n.throw || ((i = n.return) && i.call(n), 0) : n.next) && !(i = i.call(n, o[1])).done)
+ return i;
+ switch (n = 0, i && (o = [2 & o[0], i.value]), o[0]) {
+ case 0:
+ case 1:
+ i = o;
+ break;
+ case 4:
+ return s.label++, {
+ value: o[1],
+ done: !1
+ };
+ case 5:
+ s.label++,
+ n = o[1],
+ o = [0];
+ continue;
+ case 7:
+ o = s.ops.pop(),
+ s.trys.pop();
+ continue;
+ default:
+ if (!((i = (i = s.trys).length > 0 && i[i.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
+ s = 0;
+ continue
+ }
+ if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) {
+ s.label = o[1];
+ break
+ }
+ if (6 === o[0] && s.label < i[1]) {
+ s.label = i[1],
+ i = o;
+ break
+ }
+ if (i && s.label < i[2]) {
+ s.label = i[2],
+ s.ops.push(o);
+ break
+ }
+ i[2] && s.ops.pop(),
+ s.trys.pop();
+ continue
+ }
+ o = e.call(t, s)
+ } catch (t) {
+ o = [6, t],
+ n = 0
+ } finally {
+ r = i = 0
+ }
+ if (5 & o[0])
+ throw o[1];
+ return {
+ value: o[0] ? o[1] : void 0,
+ done: !0
+ }
+ }([o, a])
+ }
+ }
+ },
+ Y = function() {
+ function t(t, e, r) {
+ this.isTorchOn = !1,
+ this.html5Qrcode = t,
+ this.buttonElement = e,
+ this.onTorchActionFailureCallback = r
+ }
+ return t.prototype.isTorchEnabled = function() {
+ return this.isTorchOn
+ }, t.prototype.flipState = function() {
+ return z(this, void 0, void 0, (function() {
+ var t,
+ e,
+ r,
+ n;
+ return G(this, (function(i) {
+ switch (i.label) {
+ case 0:
+ this.buttonElement.disabled = !0,
+ t = !this.isTorchOn,
+ e = {
+ torch: t,
+ advanced: [{
+ torch: t
+ }]
+ },
+ i.label = 1;
+ case 1:
+ return i.trys.push([1, 3, , 4]), [4, this.html5Qrcode.applyVideoConstraints(e)];
+ case 2:
+ return i.sent(), r = this.html5Qrcode.getRunningTrackSettings(), this.updateUiBasedOnLatestSettings(r, t), [3, 4];
+ case 3:
+ return n = i.sent(), this.propagateFailure(t, n), this.buttonElement.disabled = !1, [3, 4];
+ case 4:
+ return [2]
+ }
+ }))
+ }))
+ }, t.prototype.updateUiBasedOnLatestSettings = function(t, e) {
+ t.torch === e ? (this.buttonElement.innerText = e ? A.torchOffButton() : A.torchOnButton(), this.isTorchOn = e) : this.propagateFailure(e),
+ this.buttonElement.disabled = !1
+ }, t.prototype.propagateFailure = function(t, e) {
+ var r = t ? A.torchOnFailedMessage() : A.torchOffFailedMessage();
+ e && (r += "; Error = " + e),
+ this.onTorchActionFailureCallback(r)
+ }, t.prototype.reset = function() {
+ this.isTorchOn = !1
+ }, t
+ }(),
+ X = function() {
+ function t(t, e) {
+ this.torchButton = t,
+ this.torchController = e
+ }
+ return t.create = function(e, r, n) {
+ var i = this,
+ o = V.createElement("button", H.TORCH_BUTTON_ID),
+ s = new Y(e, o, n);
+ return o.innerText = A.torchOnButton(), o.style.display = r.display, o.style.marginLeft = r.marginLeft, o.addEventListener("click", (function(t) {
+ return z(i, void 0, void 0, (function() {
+ return G(this, (function(t) {
+ switch (t.label) {
+ case 0:
+ return [4, s.flipState()];
+ case 1:
+ return t.sent(), s.isTorchEnabled() ? (o.classList.remove(H.TORCH_BUTTON_CLASS_TORCH_OFF), o.classList.add(H.TORCH_BUTTON_CLASS_TORCH_ON)) : (o.classList.remove(H.TORCH_BUTTON_CLASS_TORCH_ON), o.classList.add(H.TORCH_BUTTON_CLASS_TORCH_OFF)), [2]
+ }
+ }))
+ }))
+ })), new t(o, s)
+ }, t.prototype.getTorchButton = function() {
+ return this.torchButton
+ }, t.prototype.reset = function() {
+ this.torchButton.innerText = A.torchOnButton(),
+ this.torchController.reset()
+ }, t
+ }(),
+ W = function() {
+ function t() {}
+ return t.isTorchSupported = function(t) {
+ return "torch" in t
+ }, t
+ }(),
+ j = function() {
+ function t(t, e, r) {
+ this.fileBasedScanRegion = this.createFileBasedScanRegion(),
+ this.fileBasedScanRegion.style.display = e ? "block" : "none",
+ t.appendChild(this.fileBasedScanRegion);
+ var n = document.createElement("label");
+ n.setAttribute("for", this.getFileScanInputId()),
+ n.style.display = "inline-block",
+ this.fileBasedScanRegion.appendChild(n),
+ this.fileSelectionButton = V.createElement("button", H.FILE_SELECTION_BUTTON_ID),
+ this.setInitialValueToButton(),
+ this.fileSelectionButton.addEventListener("click", (function(t) {
+ n.click()
+ })),
+ n.append(this.fileSelectionButton),
+ this.fileScanInput = V.createElement("input", this.getFileScanInputId()),
+ this.fileScanInput.type = "file",
+ this.fileScanInput.accept = "image/*",
+ this.fileScanInput.style.display = "none",
+ n.appendChild(this.fileScanInput);
+ var i = this;
+ this.fileScanInput.addEventListener("change", (function(t) {
+ if (null != t && null != t.target) {
+ var e = t.target;
+ if (!e.files || 0 !== e.files.length) {
+ var n = e.files[0],
+ o = n.name;
+ i.setImageNameToButton(o),
+ r(n)
+ }
+ }
+ }));
+ var o = this.createDragAndDropMessage();
+ this.fileBasedScanRegion.appendChild(o),
+ this.fileBasedScanRegion.addEventListener("dragenter", (function(t) {
+ i.fileBasedScanRegion.style.border = i.fileBasedScanRegionActiveBorder(),
+ t.stopPropagation(),
+ t.preventDefault()
+ })),
+ this.fileBasedScanRegion.addEventListener("dragleave", (function(t) {
+ i.fileBasedScanRegion.style.border = i.fileBasedScanRegionDefaultBorder(),
+ t.stopPropagation(),
+ t.preventDefault()
+ })),
+ this.fileBasedScanRegion.addEventListener("dragover", (function(t) {
+ i.fileBasedScanRegion.style.border = i.fileBasedScanRegionActiveBorder(),
+ t.stopPropagation(),
+ t.preventDefault()
+ })),
+ this.fileBasedScanRegion.addEventListener("drop", (function(t) {
+ t.stopPropagation(),
+ t.preventDefault(),
+ i.fileBasedScanRegion.style.border = i.fileBasedScanRegionDefaultBorder();
+ var e = t.dataTransfer;
+ if (e) {
+ var n = e.files;
+ if (!n || 0 === n.length)
+ return;
+ for (var s = !1, a = 0; a < n.length; ++a) {
+ var l = n.item(a);
+ if (l && l.type.match(/image.*/)) {
+ s = !0;
+ var c = l.name;
+ i.setImageNameToButton(c),
+ r(l),
+ o.innerText = A.dragAndDropMessage();
+ break
+ }
+ }
+ s || (o.innerText = A.dragAndDropMessageOnlyImages())
+ }
+ }))
+ }
+ return t.prototype.hide = function() {
+ this.fileBasedScanRegion.style.display = "none",
+ this.fileScanInput.disabled = !0
+ }, t.prototype.show = function() {
+ this.fileBasedScanRegion.style.display = "block",
+ this.fileScanInput.disabled = !1
+ }, t.prototype.isShowing = function() {
+ return "block" === this.fileBasedScanRegion.style.display
+ }, t.prototype.resetValue = function() {
+ this.fileScanInput.value = "",
+ this.setInitialValueToButton()
+ }, t.prototype.createFileBasedScanRegion = function() {
+ var t = document.createElement("div");
+ return t.style.textAlign = "center", t.style.margin = "auto", t.style.width = "80%", t.style.maxWidth = "600px", t.style.border = this.fileBasedScanRegionDefaultBorder(), t.style.padding = "10px", t.style.marginBottom = "10px", t
+ }, t.prototype.fileBasedScanRegionDefaultBorder = function() {
+ return "6px dashed #ebebeb"
+ }, t.prototype.fileBasedScanRegionActiveBorder = function() {
+ return "6px dashed rgb(153 151 151)"
+ }, t.prototype.createDragAndDropMessage = function() {
+ var t = document.createElement("div");
+ return t.innerText = A.dragAndDropMessage(), t.style.fontWeight = "400", t
+ }, t.prototype.setImageNameToButton = function(t) {
+ if (t.length > 20) {
+ var e = t.substring(0, 8),
+ r = t.length,
+ n = t.substring(r - 8, r);
+ t = e + "...." + n
+ }
+ var i = A.fileSelectionChooseAnother() + " - " + t;
+ this.fileSelectionButton.innerText = i
+ }, t.prototype.setInitialValueToButton = function() {
+ var t = A.fileSelectionChooseImage() + " - " + A.fileSelectionNoImageSelected();
+ this.fileSelectionButton.innerText = t
+ }, t.prototype.getFileScanInputId = function() {
+ return "html5-qrcode-private-filescan-input"
+ }, t.create = function(e, r, n) {
+ return new t(e, r, n)
+ }, t
+ }();
+ !function(t) {
+ t[t.STATUS_DEFAULT = 0] = "STATUS_DEFAULT",
+ t[t.STATUS_SUCCESS = 1] = "STATUS_SUCCESS",
+ t[t.STATUS_WARNING = 2] = "STATUS_WARNING",
+ t[t.STATUS_REQUESTING_PERMISSION = 3] = "STATUS_REQUESTING_PERMISSION"
+ }(T || (T = {}));
+ var Z = function() {
+ function t(t, e, r) {
+ if (this.lastMatchFound = null, this.cameraScanImage = null, this.fileScanImage = null, this.fileSelectionUi = null, this.elementId = t, this.config = this.createConfig(e), this.verbose = !0 === r, !document.getElementById(t))
+ throw "HTML Element with id=" + t + " not found";
+ this.scanTypeSelector = new U(this.config.supportedScanTypes),
+ this.currentScanType = this.scanTypeSelector.getDefaultScanType(),
+ this.sectionSwapAllowed = !0,
+ this.logger = new d(this.verbose),
+ this.persistedDataManager = new P,
+ !0 !== e.rememberLastUsedCamera && this.persistedDataManager.reset()
+ }
+ return t.prototype.render = function(t, e) {
+ var r = this;
+ this.lastMatchFound = null,
+ this.qrCodeSuccessCallback = function(e, n) {
+ if (t)
+ t(e, n);
+ else {
+ if (r.lastMatchFound === e)
+ return;
+ r.lastMatchFound = e,
+ r.setHeaderMessage(A.lastMatch(e), T.STATUS_SUCCESS)
+ }
+ },
+ this.qrCodeErrorCallback = function(t, r) {
+ e && e(t, r)
+ };
+ var n,
+ i,
+ o = document.getElementById(this.elementId);
+ if (!o)
+ throw "HTML Element with id=" + this.elementId + " not found";
+ o.innerHTML = "",
+ this.createBasicLayout(o),
+ this.html5Qrcode = new b(this.getScanRegionId(), (n = this.config, i = this.verbose, {
+ formatsToSupport: n.formatsToSupport,
+ useBarCodeDetectorIfSupported: n.useBarCodeDetectorIfSupported,
+ experimentalFeatures: n.experimentalFeatures,
+ verbose: i
+ }))
+ }, t.prototype.pause = function(t) {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ (g(t) || !0 !== t) && (t = !1),
+ this.html5Qrcode.pause(t)
+ }, t.prototype.resume = function() {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ this.html5Qrcode.resume()
+ }, t.prototype.getState = function() {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ return this.html5Qrcode.getState()
+ }, t.prototype.clear = function() {
+ var t = this,
+ e = function() {
+ var e = document.getElementById(t.elementId);
+ e && (e.innerHTML = "", t.resetBasicLayout(e))
+ };
+ return this.html5Qrcode ? new Promise((function(r, n) {
+ t.html5Qrcode ? t.html5Qrcode.isScanning ? t.html5Qrcode.stop().then((function(n) {
+ t.html5Qrcode ? (t.html5Qrcode.clear(), e(), r()) : r()
+ })).catch((function(e) {
+ t.verbose && t.logger.logError("Unable to stop qrcode scanner", e),
+ n(e)
+ })) : (t.html5Qrcode.clear(), e()) : r()
+ })) : Promise.resolve()
+ }, t.prototype.getRunningTrackCapabilities = function() {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ return this.html5Qrcode.getRunningTrackCapabilities()
+ }, t.prototype.getRunningTrackSettings = function() {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ return this.html5Qrcode.getRunningTrackSettings()
+ }, t.prototype.applyVideoConstraints = function(t) {
+ if (!this.html5Qrcode)
+ throw "Code scanner not initialized.";
+ return this.html5Qrcode.applyVideoConstraints(t)
+ }, t.prototype.createConfig = function(t) {
+ return t ? (t.fps || (t.fps = l.SCAN_DEFAULT_FPS), t.rememberLastUsedCamera !== !l.DEFAULT_REMEMBER_LAST_CAMERA_USED && (t.rememberLastUsedCamera = l.DEFAULT_REMEMBER_LAST_CAMERA_USED), t.supportedScanTypes || (t.supportedScanTypes = l.DEFAULT_SUPPORTED_SCAN_TYPE), t) : {
+ fps: l.SCAN_DEFAULT_FPS,
+ rememberLastUsedCamera: l.DEFAULT_REMEMBER_LAST_CAMERA_USED,
+ supportedScanTypes: l.DEFAULT_SUPPORTED_SCAN_TYPE
+ }
+ }, t.prototype.createBasicLayout = function(t) {
+ t.style.position = "relative",
+ t.style.padding = "0px",
+ t.style.border = "1px solid silver",
+ this.createHeader(t);
+ var e = document.createElement("div"),
+ r = this.getScanRegionId();
+ e.id = r,
+ e.style.width = "100%",
+ e.style.minHeight = "100px",
+ e.style.textAlign = "center",
+ t.appendChild(e),
+ U.isCameraScanType(this.currentScanType) ? this.insertCameraScanImageToScanRegion() : this.insertFileScanImageToScanRegion();
+ var n = document.createElement("div"),
+ i = this.getDashboardId();
+ n.id = i,
+ n.style.width = "100%",
+ t.appendChild(n),
+ this.setupInitialDashboard(n)
+ }, t.prototype.resetBasicLayout = function(t) {
+ t.style.border = "none"
+ }, t.prototype.setupInitialDashboard = function(t) {
+ this.createSection(t),
+ this.createSectionControlPanel(),
+ this.scanTypeSelector.hasMoreThanOneScanType() && this.createSectionSwap()
+ }, t.prototype.createHeader = function(t) {
+ var e = document.createElement("div");
+ e.style.textAlign = "left",
+ e.style.margin = "0px",
+ t.appendChild(e),
+ (new x).renderInto(e);
+ var r = document.createElement("div");
+ r.id = this.getHeaderMessageContainerId(),
+ r.style.display = "none",
+ r.style.textAlign = "center",
+ r.style.fontSize = "14px",
+ r.style.padding = "2px 10px",
+ r.style.margin = "4px",
+ r.style.borderTop = "1px solid #f6f6f6",
+ e.appendChild(r)
+ }, t.prototype.createSection = function(t) {
+ var e = document.createElement("div");
+ e.id = this.getDashboardSectionId(),
+ e.style.width = "100%",
+ e.style.padding = "10px 0px 10px 0px",
+ e.style.textAlign = "left",
+ t.appendChild(e)
+ }, t.prototype.createCameraListUi = function(t, e, r) {
+ var n = this;
+ n.setHeaderMessage(A.cameraPermissionRequesting());
+ var i = function() {
+ r || n.createPermissionButton(t, e)
+ };
+ b.getCameras().then((function(r) {
+ n.persistedDataManager.setHasPermission(!0),
+ n.resetHeaderMessage(),
+ r && r.length > 0 ? (t.removeChild(e), n.renderCameraSelection(r)) : (n.setHeaderMessage(A.noCameraFound(), T.STATUS_WARNING), i())
+ })).catch((function(t) {
+ n.persistedDataManager.setHasPermission(!1),
+ r ? r.disabled = !1 : i(),
+ n.setHeaderMessage(t, T.STATUS_WARNING)
+ }))
+ }, t.prototype.createPermissionButton = function(t, e) {
+ var r = this,
+ n = V.createElement("button", this.getCameraPermissionButtonId());
+ n.innerText = A.cameraPermissionTitle(),
+ n.addEventListener("click", (function() {
+ n.disabled = !0,
+ r.createCameraListUi(t, e, n)
+ })),
+ e.appendChild(n)
+ }, t.prototype.createPermissionsUi = function(t, e) {
+ var r = this;
+ U.isCameraScanType(this.currentScanType) && this.persistedDataManager.hasCameraPermissions() ? k.hasCameraPermissions().then((function(n) {
+ n ? r.createCameraListUi(t, e) : (r.persistedDataManager.setHasPermission(!1), r.createPermissionButton(t, e))
+ })).catch((function(n) {
+ r.persistedDataManager.setHasPermission(!1),
+ r.createPermissionButton(t, e)
+ })) : this.createPermissionButton(t, e)
+ }, t.prototype.createSectionControlPanel = function() {
+ var t = document.getElementById(this.getDashboardSectionId()),
+ e = document.createElement("div");
+ t.appendChild(e);
+ var r = document.createElement("div");
+ r.id = this.getDashboardSectionCameraScanRegionId(),
+ r.style.display = U.isCameraScanType(this.currentScanType) ? "block" : "none",
+ e.appendChild(r);
+ var n = document.createElement("div");
+ n.style.textAlign = "center",
+ r.appendChild(n),
+ this.scanTypeSelector.isCameraScanRequired() && this.createPermissionsUi(r, n),
+ this.renderFileScanUi(e)
+ }, t.prototype.renderFileScanUi = function(t) {
+ var e = U.isFileScanType(this.currentScanType),
+ r = this;
+ this.fileSelectionUi = j.create(t, e, (function(t) {
+ if (!r.html5Qrcode)
+ throw "html5Qrcode not defined";
+ U.isFileScanType(r.currentScanType) && r.html5Qrcode.scanFileV2(t, !0).then((function(t) {
+ r.resetHeaderMessage(),
+ r.qrCodeSuccessCallback(t.decodedText, t)
+ })).catch((function(t) {
+ r.setHeaderMessage(t, T.STATUS_WARNING),
+ r.qrCodeErrorCallback(t, u.createFrom(t))
+ }))
+ }))
+ }, t.prototype.renderCameraSelection = function(t) {
+ var e = this,
+ r = this,
+ n = document.getElementById(this.getDashboardSectionCameraScanRegionId());
+ n.style.textAlign = "center";
+ var i = document.createElement("span");
+ i.style.marginRight = "10px";
+ var o = t.length,
+ s = V.createElement("select", this.getCameraSelectionId());
+ if (1 === o)
+ s.style.display = "none";
+ else {
+ var a = A.selectCamera();
+ i.innerText = a + " (" + t.length + ") "
+ }
+ for (var l = [], c = 1, h = 0, u = t; h < u.length; h++) {
+ var d = u[h],
+ g = d.id,
+ f = null == d.label ? g : d.label;
+ f && "" !== f || (f = [A.anonymousCameraPrefix(), c++].join(" ")),
+ (M = document.createElement("option")).value = g,
+ M.innerText = f,
+ l.push(M),
+ s.appendChild(M)
+ }
+ i.appendChild(s),
+ n.appendChild(i);
+ var w = document.createElement("span"),
+ m = V.createElement("button", H.CAMERA_START_BUTTON_ID);
+ m.innerText = A.scanButtonStartScanningText(),
+ w.appendChild(m);
+ var E = V.createElement("button", H.CAMERA_STOP_BUTTON_ID);
+ E.innerText = A.scanButtonStopScanningText(),
+ E.style.display = "none",
+ E.disabled = !0,
+ w.appendChild(E);
+ var C = X.create(r.html5Qrcode, {
+ display: "none",
+ marginLeft: "5px"
+ }, (function(t) {
+ r.setHeaderMessage(t, T.STATUS_WARNING)
+ })),
+ I = C.getTorchButton();
+ w.appendChild(I),
+ n.appendChild(w);
+ var p = function(t) {
+ t || (m.style.display = "none"),
+ m.innerText = A.scanButtonStartScanningText(),
+ m.style.opacity = "1",
+ m.disabled = !1,
+ t && (m.style.display = "inline-block")
+ };
+ if (m.addEventListener("click", (function(t) {
+ m.innerText = A.scanButtonScanningStarting(),
+ s.disabled = !0,
+ m.disabled = !0,
+ m.style.opacity = "0.5",
+ e.scanTypeSelector.hasMoreThanOneScanType() && r.showHideScanTypeSwapLink(!1),
+ r.resetHeaderMessage();
+ var n,
+ i = s.value;
+ r.persistedDataManager.setLastUsedCameraId(i),
+ r.html5Qrcode.start(i, (n = r.config, {
+ fps: n.fps,
+ qrbox: n.qrbox,
+ aspectRatio: n.aspectRatio,
+ disableFlip: n.disableFlip,
+ videoConstraints: n.videoConstraints
+ }), r.qrCodeSuccessCallback, r.qrCodeErrorCallback).then((function(t) {
+ var n;
+ E.disabled = !1,
+ E.style.display = "inline-block",
+ p(!1),
+ !0 === e.config.showTorchButtonIfSupported && (n = r.html5Qrcode.getRunningTrackSettings(), W.isTorchSupported(n) ? I.style.display = "inline-block" : I.style.display = "none")
+ })).catch((function(t) {
+ r.showHideScanTypeSwapLink(!0),
+ s.disabled = !1,
+ p(!0),
+ r.setHeaderMessage(t, T.STATUS_WARNING)
+ }))
+ })), 1 === o && m.click(), E.addEventListener("click", (function(t) {
+ if (!r.html5Qrcode)
+ throw "html5Qrcode not defined";
+ E.disabled = !0,
+ r.html5Qrcode.stop().then((function(t) {
+ e.scanTypeSelector.hasMoreThanOneScanType() && r.showHideScanTypeSwapLink(!0),
+ s.disabled = !1,
+ m.disabled = !1,
+ E.style.display = "none",
+ m.style.display = "inline-block",
+ C.reset(),
+ I.style.display = "none",
+ r.insertCameraScanImageToScanRegion()
+ })).catch((function(t) {
+ E.disabled = !1,
+ r.setHeaderMessage(t, T.STATUS_WARNING)
+ }))
+ })), r.persistedDataManager.getLastUsedCameraId()) {
+ for (var S = r.persistedDataManager.getLastUsedCameraId(), _ = !1, y = 0, N = l; y < N.length; y++) {
+ var M;
+ if ((M = N[y]).value === S) {
+ _ = !0;
+ break
+ }
+ }
+ _ ? (s.value = S, m.click()) : r.persistedDataManager.resetLastUsedCameraId()
+ }
+ }, t.prototype.createSectionSwap = function() {
+ var t = this,
+ e = A.textIfCameraScanSelected(),
+ r = A.textIfFileScanSelected(),
+ n = document.getElementById(this.getDashboardSectionId()),
+ o = document.createElement("div");
+ o.style.textAlign = "center";
+ var s = V.createElement("a", this.getDashboardSectionSwapLinkId());
+ s.style.textDecoration = "underline",
+ s.innerText = U.isCameraScanType(this.currentScanType) ? e : r,
+ s.addEventListener("click", (function() {
+ t.sectionSwapAllowed ? (t.resetHeaderMessage(), t.fileSelectionUi.resetValue(), t.sectionSwapAllowed = !1, U.isCameraScanType(t.currentScanType) ? (t.clearScanRegion(), t.getCameraScanRegion().style.display = "none", t.fileSelectionUi.show(), s.innerText = r, t.currentScanType = i.SCAN_TYPE_FILE, t.insertFileScanImageToScanRegion()) : (t.clearScanRegion(), t.getCameraScanRegion().style.display = "block", t.fileSelectionUi.hide(), s.innerText = e, t.currentScanType = i.SCAN_TYPE_CAMERA, t.insertCameraScanImageToScanRegion(), t.startCameraScanIfPermissionExistsOnSwap()), t.sectionSwapAllowed = !0) : t.verbose && t.logger.logError("Section swap called when not allowed")
+ })),
+ o.appendChild(s),
+ n.appendChild(o)
+ }, t.prototype.startCameraScanIfPermissionExistsOnSwap = function() {
+ var t = this,
+ e = this;
+ this.persistedDataManager.hasCameraPermissions() && k.hasCameraPermissions().then((function(r) {
+ if (r) {
+ var n = document.getElementById(e.getCameraPermissionButtonId());
+ if (!n)
+ throw t.logger.logError("Permission button not found, fail;"), "Permission button not found";
+ n.click()
+ } else
+ e.persistedDataManager.setHasPermission(!1)
+ })).catch((function(t) {
+ e.persistedDataManager.setHasPermission(!1)
+ }))
+ }, t.prototype.resetHeaderMessage = function() {
+ document.getElementById(this.getHeaderMessageContainerId()).style.display = "none"
+ }, t.prototype.setHeaderMessage = function(t, e) {
+ e || (e = T.STATUS_DEFAULT);
+ var r = this.getHeaderMessageDiv();
+ switch (r.innerText = t, r.style.display = "block", e) {
+ case T.STATUS_SUCCESS:
+ r.style.background = "rgba(106, 175, 80, 0.26)",
+ r.style.color = "#477735";
+ break;
+ case T.STATUS_WARNING:
+ r.style.background = "rgba(203, 36, 49, 0.14)",
+ r.style.color = "#cb2431";
+ break;
+ case T.STATUS_DEFAULT:
+ default:
+ r.style.background = "rgba(0, 0, 0, 0)",
+ r.style.color = "rgb(17, 17, 17)"
+ }
+ }, t.prototype.showHideScanTypeSwapLink = function(t) {
+ !0 !== t && (t = !1),
+ this.sectionSwapAllowed = t,
+ this.getDashboardSectionSwapLink().style.display = t ? "inline-block" : "none"
+ }, t.prototype.insertCameraScanImageToScanRegion = function() {
+ var t = this,
+ e = document.getElementById(this.getScanRegionId());
+ if (this.cameraScanImage)
+ return e.innerHTML = "
", void e.appendChild(this.cameraScanImage);
+ this.cameraScanImage = new Image,
+ this.cameraScanImage.onload = function(r) {
+ e.innerHTML = "
",
+ e.appendChild(t.cameraScanImage)
+ },
+ this.cameraScanImage.width = 64,
+ this.cameraScanImage.style.opacity = "0.8",
+ this.cameraScanImage.src = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNzEuNjQzIDM3MS42NDMiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM3MS42NDMgMzcxLjY0MyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTEwNS4wODQgMzguMjcxaDE2My43Njh2MjBIMTA1LjA4NHoiLz48cGF0aCBkPSJNMzExLjU5NiAxOTAuMTg5Yy03LjQ0MS05LjM0Ny0xOC40MDMtMTYuMjA2LTMyLjc0My0yMC41MjJWMzBjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwSDEyNS4wODRjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHYxMjAuMTQzaC04LjI5NmMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjEuMzMzYTI5LjgwNCAyOS44MDQgMCAwIDAgNC42MDMgMTUuOTM5Yy03LjM0IDUuNDc0LTEyLjEwMyAxNC4yMjEtMTIuMTAzIDI0LjA2MXYxLjMzM2MwIDkuODQgNC43NjMgMTguNTg3IDEyLjEwMyAyNC4wNjJhMjkuODEgMjkuODEgMCAwIDAtNC42MDMgMTUuOTM4djEuMzMzYzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGg4LjMyNGMuNDI3IDExLjYzMSA3LjUwMyAyMS41ODcgMTcuNTM0IDI2LjE3Ny45MzEgMTAuNTAzIDQuMDg0IDMwLjE4NyAxNC43NjggNDUuNTM3YTkuOTg4IDkuOTg4IDAgMCAwIDguMjE2IDQuMjg4IDkuOTU4IDkuOTU4IDAgMCAwIDUuNzA0LTEuNzkzYzQuNTMzLTMuMTU1IDUuNjUtOS4zODggMi40OTUtMTMuOTIxLTYuNzk4LTkuNzY3LTkuNjAyLTIyLjYwOC0xMC43Ni0zMS40aDgyLjY4NWMuMjcyLjQxNC41NDUuODE4LjgxNSAxLjIxIDMuMTQyIDQuNTQxIDkuMzcyIDUuNjc5IDEzLjkxMyAyLjUzNCA0LjU0Mi0zLjE0MiA1LjY3Ny05LjM3MSAyLjUzNS0xMy45MTMtMTEuOTE5LTE3LjIyOS04Ljc4Ny0zNS44ODQgOS41ODEtNTcuMDEyIDMuMDY3LTIuNjUyIDEyLjMwNy0xMS43MzIgMTEuMjE3LTI0LjAzMy0uODI4LTkuMzQzLTcuMTA5LTE3LjE5NC0xOC42NjktMjMuMzM3YTkuODU3IDkuODU3IDAgMCAwLTEuMDYxLS40ODZjLS40NjYtLjE4Mi0xMS40MDMtNC41NzktOS43NDEtMTUuNzA2IDEuMDA3LTYuNzM3IDE0Ljc2OC04LjI3MyAyMy43NjYtNy42NjYgMjMuMTU2IDEuNTY5IDM5LjY5OCA3LjgwMyA0Ny44MzYgMTguMDI2IDUuNzUyIDcuMjI1IDcuNjA3IDE2LjYyMyA1LjY3MyAyOC43MzMtLjQxMyAyLjU4NS0uODI0IDUuMjQxLTEuMjQ1IDcuOTU5LTUuNzU2IDM3LjE5NC0xMi45MTkgODMuNDgzLTQ5Ljg3IDExNC42NjEtNC4yMjEgMy41NjEtNC43NTYgOS44Ny0xLjE5NCAxNC4wOTJhOS45OCA5Ljk4IDAgMCAwIDcuNjQ4IDMuNTUxIDkuOTU1IDkuOTU1IDAgMCAwIDYuNDQ0LTIuMzU4YzQyLjY3Mi0zNi4wMDUgNTAuODAyLTg4LjUzMyA1Ni43MzctMTI2Ljg4OC40MTUtMi42ODQuODIxLTUuMzA5IDEuMjI5LTcuODYzIDIuODM0LTE3LjcyMS0uNDU1LTMyLjY0MS05Ljc3Mi00NC4zNDV6bS0yMzIuMzA4IDQyLjYyYy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi0xLjMzM2MwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDE1djIxLjMzM2gtMTV6bS0yLjUtNTIuNjY2YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoNy41djIxLjMzM2gtNy41Yy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi0xLjMzM3ptMTcuNSA5My45OTloLTcuNWMtNS41MTQgMC0xMC00LjQ4Ni0xMC0xMHYtMS4zMzNjMC01LjUxNCA0LjQ4Ni0xMCAxMC0xMGg3LjV2MjEuMzMzem0zMC43OTYgMjguODg3Yy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi04LjI3MWg5MS40NTdjLS44NTEgNi42NjgtLjQzNyAxMi43ODcuNzMxIDE4LjI3MWgtODIuMTg4em03OS40ODItMTEzLjY5OGMtMy4xMjQgMjAuOTA2IDEyLjQyNyAzMy4xODQgMjEuNjI1IDM3LjA0IDUuNDQxIDIuOTY4IDcuNTUxIDUuNjQ3IDcuNzAxIDcuMTg4LjIxIDIuMTUtMi41NTMgNS42ODQtNC40NzcgNy4yNTEtLjQ4Mi4zNzgtLjkyOS44LTEuMzM1IDEuMjYxLTYuOTg3IDcuOTM2LTExLjk4MiAxNS41Mi0xNS40MzIgMjIuNjg4aC05Ny41NjRWMzBjMC01LjUxNCA0LjQ4Ni0xMCAxMC0xMGgxMjMuNzY5YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MTM1LjU3OWMtMy4wMzItLjM4MS02LjE1LS42OTQtOS4zODktLjkxNC0yNS4xNTktMS42OTQtNDIuMzcgNy43NDgtNDQuODk4IDI0LjY2NnoiLz48cGF0aCBkPSJNMTc5LjEyOSA4My4xNjdoLTI0LjA2YTUgNSAwIDAgMC01IDV2MjQuMDYxYTUgNSAwIDAgMCA1IDVoMjQuMDZhNSA1IDAgMCAwIDUtNVY4OC4xNjdhNSA1IDAgMCAwLTUtNXpNMTcyLjYyOSAxNDIuODZoLTEyLjU2VjEzMC44YTUgNSAwIDEgMC0xMCAwdjE3LjA2MWE1IDUgMCAwIDAgNSA1aDE3LjU2YTUgNSAwIDEgMCAwLTEwLjAwMXpNMjE2LjU2OCA4My4xNjdoLTI0LjA2YTUgNSAwIDAgMC01IDV2MjQuMDYxYTUgNSAwIDAgMCA1IDVoMjQuMDZhNSA1IDAgMCAwIDUtNVY4OC4xNjdhNSA1IDAgMCAwLTUtNXptLTUgMjQuMDYxaC0xNC4wNlY5My4xNjdoMTQuMDZ2MTQuMDYxek0yMTEuNjY5IDEyNS45MzZIMTk3LjQxYTUgNSAwIDAgMC01IDV2MTQuMjU3YTUgNSAwIDAgMCA1IDVoMTQuMjU5YTUgNSAwIDAgMCA1LTV2LTE0LjI1N2E1IDUgMCAwIDAtNS01eiIvPjwvc3ZnPg=="
+ }, t.prototype.insertFileScanImageToScanRegion = function() {
+ var t = this,
+ e = document.getElementById(this.getScanRegionId());
+ if (this.fileScanImage)
+ return e.innerHTML = "
", void e.appendChild(this.fileScanImage);
+ this.fileScanImage = new Image,
+ this.fileScanImage.onload = function(r) {
+ e.innerHTML = "
",
+ e.appendChild(t.fileScanImage)
+ },
+ this.fileScanImage.width = 64,
+ this.fileScanImage.style.opacity = "0.8",
+ this.fileScanImage.src = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1OS4wMTggNTkuMDE4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1OS4wMTggNTkuMDE4IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJtNTguNzQxIDU0LjgwOS01Ljk2OS02LjI0NGExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NlMzNCAzNS4zNjEgMzQgNDEuMzE0IDM4Ljg0MyA1Mi4xMSA0NC43OTYgNTIuMTFjMi40NDEgMCA0LjY4OC0uODI0IDYuNDk5LTIuMTk2bDYuMDAxIDYuMjc3YS45OTguOTk4IDAgMCAwIDEuNDE0LjAzMiAxIDEgMCAwIDAgLjAzMS0xLjQxNHpNMzYgNDEuMzE0YzAtNC44NSAzLjk0Ni04Ljc5NiA4Ljc5Ni04Ljc5NnM4Ljc5NiAzLjk0NiA4Ljc5NiA4Ljc5Ni0zLjk0NiA4Ljc5Ni04Ljc5NiA4Ljc5NlMzNiA0Ni4xNjQgMzYgNDEuMzE0ek0xMC40MzEgMTYuMDg4YzAgMy4wNyAyLjQ5OCA1LjU2OCA1LjU2OSA1LjU2OHM1LjU2OS0yLjQ5OCA1LjU2OS01LjU2OGMwLTMuMDcxLTIuNDk4LTUuNTY5LTUuNTY5LTUuNTY5cy01LjU2OSAyLjQ5OC01LjU2OSA1LjU2OXptOS4xMzggMGMwIDEuOTY4LTEuNjAyIDMuNTY4LTMuNTY5IDMuNTY4cy0zLjU2OS0xLjYwMS0zLjU2OS0zLjU2OCAxLjYwMi0zLjU2OSAzLjU2OS0zLjU2OSAzLjU2OSAxLjYwMSAzLjU2OSAzLjU2OXoiLz48cGF0aCBkPSJtMzAuODgyIDI4Ljk4NyA5LjE4LTEwLjA1NCAxMS4yNjIgMTAuMzIzYTEgMSAwIDAgMCAxLjM1MS0xLjQ3NWwtMTItMTFhMSAxIDAgMCAwLTEuNDE0LjA2M2wtOS43OTQgMTAuNzI3LTQuNzQzLTQuNzQzYTEuMDAzIDEuMDAzIDAgMCAwLTEuMzY4LS4wNDRMNi4zMzkgMzcuNzY4YTEgMSAwIDEgMCAxLjMyMiAxLjUwMWwxNi4zMTMtMTQuMzYyIDcuMzE5IDcuMzE4YS45OTkuOTk5IDAgMSAwIDEuNDE0LTEuNDE0bC0xLjgyNS0xLjgyNHoiLz48cGF0aCBkPSJNMzAgNDYuNTE4SDJ2LTQyaDU0djI4YTEgMSAwIDEgMCAyIDB2LTI5YTEgMSAwIDAgMC0xLTFIMWExIDEgMCAwIDAtMSAxdjQ0YTEgMSAwIDAgMCAxIDFoMjlhMSAxIDAgMSAwIDAtMnoiLz48L3N2Zz4="
+ }, t.prototype.clearScanRegion = function() {
+ document.getElementById(this.getScanRegionId()).innerHTML = ""
+ }, t.prototype.getDashboardSectionId = function() {
+ return this.elementId + "__dashboard_section"
+ }, t.prototype.getDashboardSectionCameraScanRegionId = function() {
+ return this.elementId + "__dashboard_section_csr"
+ }, t.prototype.getDashboardSectionSwapLinkId = function() {
+ return H.SCAN_TYPE_CHANGE_ANCHOR_ID
+ }, t.prototype.getScanRegionId = function() {
+ return this.elementId + "__scan_region"
+ }, t.prototype.getDashboardId = function() {
+ return this.elementId + "__dashboard"
+ }, t.prototype.getHeaderMessageContainerId = function() {
+ return this.elementId + "__header_message"
+ }, t.prototype.getCameraSelectionId = function() {
+ return H.CAMERA_SELECTION_SELECT_ID
+ }, t.prototype.getCameraPermissionButtonId = function() {
+ return H.CAMERA_PERMISSION_BUTTON_ID
+ }, t.prototype.getCameraScanRegion = function() {
+ return document.getElementById(this.getDashboardSectionCameraScanRegionId())
+ }, t.prototype.getDashboardSectionSwapLink = function() {
+ return document.getElementById(this.getDashboardSectionSwapLinkId())
+ }, t.prototype.getHeaderMessageDiv = function() {
+ return document.getElementById(this.getHeaderMessageContainerId())
+ }, t
+ }()
+ })(),
+ __Html5QrcodeLibrary__ = n
+})(); /** Append the libary components to globals for backwards compatibility. */
+if (window) {
+ if (!Html5QrcodeScanner) {
+ var Html5QrcodeScanner = window.__Html5QrcodeLibrary__.Html5QrcodeScanner;
+ }
+ if (!Html5Qrcode) {
+ var Html5Qrcode = window.__Html5QrcodeLibrary__.Html5Qrcode;
+ }
+ if (!Html5QrcodeSupportedFormats) {
+ var Html5QrcodeSupportedFormats = window.__Html5QrcodeLibrary__.Html5QrcodeSupportedFormats
+ }
+ if (!Html5QrcodeScannerState) {
+ var Html5QrcodeScannerState = window.__Html5QrcodeLibrary__.Html5QrcodeScannerState;
+ }
+ if (!Html5QrcodeScanType) {
+ var Html5QrcodeScanType = window.__Html5QrcodeLibrary__.Html5QrcodeScanType;
+ }
+}
\ No newline at end of file
diff --git a/js/qrcode-generator.js b/js/qrcode-generator.js
new file mode 100644
index 0000000..2507aea
--- /dev/null
+++ b/js/qrcode-generator.js
@@ -0,0 +1,18358 @@
+var Module;
+if (!Module)
+ Module = (typeof Module !== "undefined" ? Module : null) || {};
+var moduleOverrides = {};
+for (var key in Module) {
+ if (Module.hasOwnProperty(key)) {
+ moduleOverrides[key] = Module[key]
+ }
+}
+var ENVIRONMENT_IS_WEB = typeof window === "object";
+var ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
+var ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
+var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
+if (ENVIRONMENT_IS_NODE) {
+ if (!Module["print"])
+ Module["print"] = function print(x) {
+ process["stdout"].write(x + "\n")
+ };
+ if (!Module["printErr"])
+ Module["printErr"] = function printErr(x) {
+ process["stderr"].write(x + "\n")
+ };
+ var nodeFS = require("fs");
+ var nodePath = require("path");
+ Module["read"] = function read(filename, binary) {
+ filename = nodePath["normalize"](filename);
+ var ret = nodeFS["readFileSync"](filename);
+ if (!ret && filename != nodePath["resolve"](filename)) {
+ filename = path.join(__dirname, "..", "src", filename);
+ ret = nodeFS["readFileSync"](filename)
+ }
+ if (ret && !binary)
+ ret = ret.toString();
+ return ret
+ };
+ Module["readBinary"] = function readBinary(filename) {
+ var ret = Module["read"](filename, true);
+ if (!ret.buffer) {
+ ret = new Uint8Array(ret)
+ }
+ assert(ret.buffer);
+ return ret
+ };
+ Module["load"] = function load(f) {
+ globalEval(read(f))
+ };
+ if (!Module["thisProgram"]) {
+ if (process["argv"].length > 1) {
+ Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/")
+ } else {
+ Module["thisProgram"] = "unknown-program"
+ }
+ }
+ Module["arguments"] = process["argv"].slice(2);
+ if (typeof module !== "undefined") {
+ module["exports"] = Module
+ }
+ process["on"]("uncaughtException", (function(ex) {
+ if (!(ex instanceof ExitStatus)) {
+ throw ex
+ }
+ }));
+ Module["inspect"] = (function() {
+ return "[Emscripten Module object]"
+ })
+} else if (ENVIRONMENT_IS_SHELL) {
+ if (!Module["print"])
+ Module["print"] = print;
+ if (typeof printErr != "undefined")
+ Module["printErr"] = printErr;
+ if (typeof read != "undefined") {
+ Module["read"] = read
+ } else {
+ Module["read"] = function read() {
+ throw "no read() available (jsc?)"
+ }
+ }
+ Module["readBinary"] = function readBinary(f) {
+ if (typeof readbuffer === "function") {
+ return new Uint8Array(readbuffer(f))
+ }
+ var data = read(f, "binary");
+ assert(typeof data === "object");
+ return data
+ };
+ if (typeof scriptArgs != "undefined") {
+ Module["arguments"] = scriptArgs
+ } else if (typeof arguments != "undefined") {
+ Module["arguments"] = arguments
+ }
+} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
+ Module["read"] = function read(url) {
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, false);
+ xhr.send(null);
+ return xhr.responseText
+ };
+ if (typeof arguments != "undefined") {
+ Module["arguments"] = arguments
+ }
+ if (typeof console !== "undefined") {
+ if (!Module["print"])
+ Module["print"] = function print(x) {
+ console.log(x)
+ };
+ if (!Module["printErr"])
+ Module["printErr"] = function printErr(x) {
+ console.log(x)
+ }
+ } else {
+ var TRY_USE_DUMP = false;
+ if (!Module["print"])
+ Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function(x) {
+ dump(x)
+ }) : (function(x) {})
+ }
+ if (ENVIRONMENT_IS_WORKER) {
+ Module["load"] = importScripts
+ }
+ if (typeof Module["setWindowTitle"] === "undefined") {
+ Module["setWindowTitle"] = (function(title) {
+ document.title = title
+ })
+ }
+} else {
+ throw "Unknown runtime environment. Where are we?"
+}
+function globalEval(x) {
+ eval.call(null, x)
+}
+if (!Module["load"] && Module["read"]) {
+ Module["load"] = function load(f) {
+ globalEval(Module["read"](f))
+ }
+}
+if (!Module["print"]) {
+ Module["print"] = (function() {})
+}
+if (!Module["printErr"]) {
+ Module["printErr"] = Module["print"]
+}
+if (!Module["arguments"]) {
+ Module["arguments"] = []
+}
+if (!Module["thisProgram"]) {
+ Module["thisProgram"] = "./this.program"
+}
+Module.print = Module["print"];
+Module.printErr = Module["printErr"];
+Module["preRun"] = [];
+Module["postRun"] = [];
+for (var key in moduleOverrides) {
+ if (moduleOverrides.hasOwnProperty(key)) {
+ Module[key] = moduleOverrides[key]
+ }
+}
+var Runtime = {
+ setTempRet0: (function(value) {
+ tempRet0 = value
+ }),
+ getTempRet0: (function() {
+ return tempRet0
+ }),
+ stackSave: (function() {
+ return STACKTOP
+ }),
+ stackRestore: (function(stackTop) {
+ STACKTOP = stackTop
+ }),
+ getNativeTypeSize: (function(type) {
+ switch (type) {
+ case "i1":
+ case "i8":
+ return 1;
+ case "i16":
+ return 2;
+ case "i32":
+ return 4;
+ case "i64":
+ return 8;
+ case "float":
+ return 4;
+ case "double":
+ return 8;
+ default:
+ {
+ if (type[type.length - 1] === "*") {
+ return Runtime.QUANTUM_SIZE
+ } else if (type[0] === "i") {
+ var bits = parseInt(type.substr(1));
+ assert(bits % 8 === 0);
+ return bits / 8
+ } else {
+ return 0
+ }
+ }
+ }
+ }),
+ getNativeFieldSize: (function(type) {
+ return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE)
+ }),
+ STACK_ALIGN: 16,
+ prepVararg: (function(ptr, type) {
+ if (type === "double" || type === "i64") {
+ if (ptr & 7) {
+ assert((ptr & 7) === 4);
+ ptr += 4
+ }
+ } else {
+ assert((ptr & 3) === 0)
+ }
+ return ptr
+ }),
+ getAlignSize: (function(type, size, vararg) {
+ if (!vararg && (type == "i64" || type == "double"))
+ return 8;
+ if (!type)
+ return Math.min(size, 8);
+ return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE)
+ }),
+ dynCall: (function(sig, ptr, args) {
+ if (args && args.length) {
+ if (!args.splice)
+ args = Array.prototype.slice.call(args);
+ args.splice(0, 0, ptr);
+ return Module["dynCall_" + sig].apply(null, args)
+ } else {
+ return Module["dynCall_" + sig].call(null, ptr)
+ }
+ }),
+ functionPointers: [],
+ addFunction: (function(func) {
+ for (var i = 0; i < Runtime.functionPointers.length; i++) {
+ if (!Runtime.functionPointers[i]) {
+ Runtime.functionPointers[i] = func;
+ return 2 * (1 + i)
+ }
+ }
+ throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
+ }),
+ removeFunction: (function(index) {
+ Runtime.functionPointers[(index - 2) / 2] = null
+ }),
+ warnOnce: (function(text) {
+ if (!Runtime.warnOnce.shown)
+ Runtime.warnOnce.shown = {};
+ if (!Runtime.warnOnce.shown[text]) {
+ Runtime.warnOnce.shown[text] = 1;
+ Module.printErr(text)
+ }
+ }),
+ funcWrappers: {},
+ getFuncWrapper: (function(func, sig) {
+ assert(sig);
+ if (!Runtime.funcWrappers[sig]) {
+ Runtime.funcWrappers[sig] = {}
+ }
+ var sigCache = Runtime.funcWrappers[sig];
+ if (!sigCache[func]) {
+ sigCache[func] = function dynCall_wrapper() {
+ return Runtime.dynCall(sig, func, arguments)
+ }
+ }
+ return sigCache[func]
+ }),
+ getCompilerSetting: (function(name) {
+ throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"
+ }),
+ stackAlloc: (function(size) {
+ var ret = STACKTOP;
+ STACKTOP = STACKTOP + size | 0;
+ STACKTOP = STACKTOP + 15 & -16;
+ return ret
+ }),
+ staticAlloc: (function(size) {
+ var ret = STATICTOP;
+ STATICTOP = STATICTOP + size | 0;
+ STATICTOP = STATICTOP + 15 & -16;
+ return ret
+ }),
+ dynamicAlloc: (function(size) {
+ var ret = DYNAMICTOP;
+ DYNAMICTOP = DYNAMICTOP + size | 0;
+ DYNAMICTOP = DYNAMICTOP + 15 & -16;
+ if (DYNAMICTOP >= TOTAL_MEMORY) {
+ var success = enlargeMemory();
+ if (!success) {
+ DYNAMICTOP = ret;
+ return 0
+ }
+ }
+ return ret
+ }),
+ alignMemory: (function(size, quantum) {
+ var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);
+ return ret
+ }),
+ makeBigInt: (function(low, high, unsigned) {
+ var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;
+ return ret
+ }),
+ GLOBAL_BASE: 8,
+ QUANTUM_SIZE: 4,
+ __dummy__: 0
+};
+Module["Runtime"] = Runtime;
+var __THREW__ = 0;
+var ABORT = false;
+var EXITSTATUS = 0;
+var undef = 0;
+var tempValue,
+ tempInt,
+ tempBigInt,
+ tempInt2,
+ tempBigInt2,
+ tempPair,
+ tempBigIntI,
+ tempBigIntR,
+ tempBigIntS,
+ tempBigIntP,
+ tempBigIntD,
+ tempDouble,
+ tempFloat;
+var tempI64,
+ tempI64b;
+var tempRet0,
+ tempRet1,
+ tempRet2,
+ tempRet3,
+ tempRet4,
+ tempRet5,
+ tempRet6,
+ tempRet7,
+ tempRet8,
+ tempRet9;
+function assert(condition, text) {
+ if (!condition) {
+ abort("Assertion failed: " + text)
+ }
+}
+var globalScope = this;
+function getCFunc(ident) {
+ var func = Module["_" + ident];
+ if (!func) {
+ try {
+ func = eval("_" + ident)
+ } catch (e) {}
+ }
+ assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
+ return func
+}
+var cwrap,
+ ccall;
+((function() {
+ var JSfuncs = {
+ "stackSave": (function() {
+ Runtime.stackSave()
+ }),
+ "stackRestore": (function() {
+ Runtime.stackRestore()
+ }),
+ "arrayToC": (function(arr) {
+ var ret = Runtime.stackAlloc(arr.length);
+ writeArrayToMemory(arr, ret);
+ return ret
+ }),
+ "stringToC": (function(str) {
+ var ret = 0;
+ if (str !== null && str !== undefined && str !== 0) {
+ ret = Runtime.stackAlloc((str.length << 2) + 1);
+ writeStringToMemory(str, ret)
+ }
+ return ret
+ })
+ };
+ var toC = {
+ "string": JSfuncs["stringToC"],
+ "array": JSfuncs["arrayToC"]
+ };
+ ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
+ var func = getCFunc(ident);
+ var cArgs = [];
+ var stack = 0;
+ if (args) {
+ for (var i = 0; i < args.length; i++) {
+ var converter = toC[argTypes[i]];
+ if (converter) {
+ if (stack === 0)
+ stack = Runtime.stackSave();
+ cArgs[i] = converter(args[i])
+ } else {
+ cArgs[i] = args[i]
+ }
+ }
+ }
+ var ret = func.apply(null, cArgs);
+ if (returnType === "string")
+ ret = Pointer_stringify(ret);
+ if (stack !== 0) {
+ if (opts && opts.async) {
+ EmterpreterAsync.asyncFinalizers.push((function() {
+ Runtime.stackRestore(stack)
+ }));
+ return
+ }
+ Runtime.stackRestore(stack)
+ }
+ return ret
+ };
+ var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
+ function parseJSFunc(jsfunc) {
+ var parsed = jsfunc.toString().match(sourceRegex).slice(1);
+ return {
+ arguments: parsed[0],
+ body: parsed[1],
+ returnValue: parsed[2]
+ }
+ }
+ var JSsource = {};
+ for (var fun in JSfuncs) {
+ if (JSfuncs.hasOwnProperty(fun)) {
+ JSsource[fun] = parseJSFunc(JSfuncs[fun])
+ }
+ }
+ cwrap = function cwrap(ident, returnType, argTypes) {
+ argTypes = argTypes || [];
+ var cfunc = getCFunc(ident);
+ var numericArgs = argTypes.every((function(type) {
+ return type === "number"
+ }));
+ var numericRet = returnType !== "string";
+ if (numericRet && numericArgs) {
+ return cfunc
+ }
+ var argNames = argTypes.map((function(x, i) {
+ return "$" + i
+ }));
+ var funcstr = "(function(" + argNames.join(",") + ") {";
+ var nargs = argTypes.length;
+ if (!numericArgs) {
+ funcstr += "var stack = " + JSsource["stackSave"].body + ";";
+ for (var i = 0; i < nargs; i++) {
+ var arg = argNames[i],
+ type = argTypes[i];
+ if (type === "number")
+ continue;
+ var convertCode = JSsource[type + "ToC"];
+ funcstr += "var " + convertCode.arguments + " = " + arg + ";";
+ funcstr += convertCode.body + ";";
+ funcstr += arg + "=" + convertCode.returnValue + ";"
+ }
+ }
+ var cfuncname = parseJSFunc((function() {
+ return cfunc
+ })).returnValue;
+ funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");";
+ if (!numericRet) {
+ var strgfy = parseJSFunc((function() {
+ return Pointer_stringify
+ })).returnValue;
+ funcstr += "ret = " + strgfy + "(ret);"
+ }
+ if (!numericArgs) {
+ funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";"
+ }
+ funcstr += "return ret})";
+ return eval(funcstr)
+ }
+}))();
+Module["ccall"] = ccall;
+Module["cwrap"] = cwrap;
+function setValue(ptr, value, type, noSafe) {
+ type = type || "i8";
+ if (type.charAt(type.length - 1) === "*")
+ type = "i32";
+ switch (type) {
+ case "i1":
+ HEAP8[ptr >> 0] = value;
+ break;
+ case "i8":
+ HEAP8[ptr >> 0] = value;
+ break;
+ case "i16":
+ HEAP16[ptr >> 1] = value;
+ break;
+ case "i32":
+ HEAP32[ptr >> 2] = value;
+ break;
+ case "i64":
+ tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)],
+ HEAP32[ptr >> 2] = tempI64[0],
+ HEAP32[ptr + 4 >> 2] = tempI64[1];
+ break;
+ case "float":
+ HEAPF32[ptr >> 2] = value;
+ break;
+ case "double":
+ HEAPF64[ptr >> 3] = value;
+ break;
+ default:
+ abort("invalid type for setValue: " + type)
+ }
+}
+Module["setValue"] = setValue;
+function getValue(ptr, type, noSafe) {
+ type = type || "i8";
+ if (type.charAt(type.length - 1) === "*")
+ type = "i32";
+ switch (type) {
+ case "i1":
+ return HEAP8[ptr >> 0];
+ case "i8":
+ return HEAP8[ptr >> 0];
+ case "i16":
+ return HEAP16[ptr >> 1];
+ case "i32":
+ return HEAP32[ptr >> 2];
+ case "i64":
+ return HEAP32[ptr >> 2];
+ case "float":
+ return HEAPF32[ptr >> 2];
+ case "double":
+ return HEAPF64[ptr >> 3];
+ default:
+ abort("invalid type for setValue: " + type)
+ }
+ return null
+}
+Module["getValue"] = getValue;
+var ALLOC_NORMAL = 0;
+var ALLOC_STACK = 1;
+var ALLOC_STATIC = 2;
+var ALLOC_DYNAMIC = 3;
+var ALLOC_NONE = 4;
+Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
+Module["ALLOC_STACK"] = ALLOC_STACK;
+Module["ALLOC_STATIC"] = ALLOC_STATIC;
+Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
+Module["ALLOC_NONE"] = ALLOC_NONE;
+function allocate(slab, types, allocator, ptr) {
+ var zeroinit,
+ size;
+ if (typeof slab === "number") {
+ zeroinit = true;
+ size = slab
+ } else {
+ zeroinit = false;
+ size = slab.length
+ }
+ var singleType = typeof types === "string" ? types : null;
+ var ret;
+ if (allocator == ALLOC_NONE) {
+ ret = ptr
+ } else {
+ ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length))
+ }
+ if (zeroinit) {
+ var ptr = ret,
+ stop;
+ assert((ret & 3) == 0);
+ stop = ret + (size & ~3);
+ for (; ptr < stop; ptr += 4) {
+ HEAP32[ptr >> 2] = 0
+ }
+ stop = ret + size;
+ while (ptr < stop) {
+ HEAP8[ptr++ >> 0] = 0
+ }
+ return ret
+ }
+ if (singleType === "i8") {
+ if (slab.subarray || slab.slice) {
+ HEAPU8.set(slab, ret)
+ } else {
+ HEAPU8.set(new Uint8Array(slab), ret)
+ }
+ return ret
+ }
+ var i = 0,
+ type,
+ typeSize,
+ previousType;
+ while (i < size) {
+ var curr = slab[i];
+ if (typeof curr === "function") {
+ curr = Runtime.getFunctionIndex(curr)
+ }
+ type = singleType || types[i];
+ if (type === 0) {
+ i++;
+ continue
+ }
+ if (type == "i64")
+ type = "i32";
+ setValue(ret + i, curr, type);
+ if (previousType !== type) {
+ typeSize = Runtime.getNativeTypeSize(type);
+ previousType = type
+ }
+ i += typeSize
+ }
+ return ret
+}
+Module["allocate"] = allocate;
+function getMemory(size) {
+ if (!staticSealed)
+ return Runtime.staticAlloc(size);
+ if (typeof _sbrk !== "undefined" && !_sbrk.called || !runtimeInitialized)
+ return Runtime.dynamicAlloc(size);
+ return _malloc(size)
+}
+Module["getMemory"] = getMemory;
+function Pointer_stringify(ptr, length) {
+ if (length === 0 || !ptr)
+ return "";
+ var hasUtf = 0;
+ var t;
+ var i = 0;
+ while (1) {
+ t = HEAPU8[ptr + i >> 0];
+ hasUtf |= t;
+ if (t == 0 && !length)
+ break;
+ i++;
+ if (length && i == length)
+ break
+ }
+ if (!length)
+ length = i;
+ var ret = "";
+ if (hasUtf < 128) {
+ var MAX_CHUNK = 1024;
+ var curr;
+ while (length > 0) {
+ curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
+ ret = ret ? ret + curr : curr;
+ ptr += MAX_CHUNK;
+ length -= MAX_CHUNK
+ }
+ return ret
+ }
+ return Module["UTF8ToString"](ptr)
+}
+Module["Pointer_stringify"] = Pointer_stringify;
+function AsciiToString(ptr) {
+ var str = "";
+ while (1) {
+ var ch = HEAP8[ptr++ >> 0];
+ if (!ch)
+ return str;
+ str += String.fromCharCode(ch)
+ }
+}
+Module["AsciiToString"] = AsciiToString;
+function stringToAscii(str, outPtr) {
+ return writeAsciiToMemory(str, outPtr, false)
+}
+Module["stringToAscii"] = stringToAscii;
+function UTF8ArrayToString(u8Array, idx) {
+ var u0,
+ u1,
+ u2,
+ u3,
+ u4,
+ u5;
+ var str = "";
+ while (1) {
+ u0 = u8Array[idx++];
+ if (!u0)
+ return str;
+ if (!(u0 & 128)) {
+ str += String.fromCharCode(u0);
+ continue
+ }
+ u1 = u8Array[idx++] & 63;
+ if ((u0 & 224) == 192) {
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
+ continue
+ }
+ u2 = u8Array[idx++] & 63;
+ if ((u0 & 240) == 224) {
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2
+ } else {
+ u3 = u8Array[idx++] & 63;
+ if ((u0 & 248) == 240) {
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3
+ } else {
+ u4 = u8Array[idx++] & 63;
+ if ((u0 & 252) == 248) {
+ u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4
+ } else {
+ u5 = u8Array[idx++] & 63;
+ u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5
+ }
+ }
+ }
+ if (u0 < 65536) {
+ str += String.fromCharCode(u0)
+ } else {
+ var ch = u0 - 65536;
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
+ }
+ }
+}
+Module["UTF8ArrayToString"] = UTF8ArrayToString;
+function UTF8ToString(ptr) {
+ return UTF8ArrayToString(HEAPU8, ptr)
+}
+Module["UTF8ToString"] = UTF8ToString;
+function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
+ if (!(maxBytesToWrite > 0))
+ return 0;
+ var startIdx = outIdx;
+ var endIdx = outIdx + maxBytesToWrite - 1;
+ for (var i = 0; i < str.length; ++i) {
+ var u = str.charCodeAt(i);
+ if (u >= 55296 && u <= 57343)
+ u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
+ if (u <= 127) {
+ if (outIdx >= endIdx)
+ break;
+ outU8Array[outIdx++] = u
+ } else if (u <= 2047) {
+ if (outIdx + 1 >= endIdx)
+ break;
+ outU8Array[outIdx++] = 192 | u >> 6;
+ outU8Array[outIdx++] = 128 | u & 63
+ } else if (u <= 65535) {
+ if (outIdx + 2 >= endIdx)
+ break;
+ outU8Array[outIdx++] = 224 | u >> 12;
+ outU8Array[outIdx++] = 128 | u >> 6 & 63;
+ outU8Array[outIdx++] = 128 | u & 63
+ } else if (u <= 2097151) {
+ if (outIdx + 3 >= endIdx)
+ break;
+ outU8Array[outIdx++] = 240 | u >> 18;
+ outU8Array[outIdx++] = 128 | u >> 12 & 63;
+ outU8Array[outIdx++] = 128 | u >> 6 & 63;
+ outU8Array[outIdx++] = 128 | u & 63
+ } else if (u <= 67108863) {
+ if (outIdx + 4 >= endIdx)
+ break;
+ outU8Array[outIdx++] = 248 | u >> 24;
+ outU8Array[outIdx++] = 128 | u >> 18 & 63;
+ outU8Array[outIdx++] = 128 | u >> 12 & 63;
+ outU8Array[outIdx++] = 128 | u >> 6 & 63;
+ outU8Array[outIdx++] = 128 | u & 63
+ } else {
+ if (outIdx + 5 >= endIdx)
+ break;
+ outU8Array[outIdx++] = 252 | u >> 30;
+ outU8Array[outIdx++] = 128 | u >> 24 & 63;
+ outU8Array[outIdx++] = 128 | u >> 18 & 63;
+ outU8Array[outIdx++] = 128 | u >> 12 & 63;
+ outU8Array[outIdx++] = 128 | u >> 6 & 63;
+ outU8Array[outIdx++] = 128 | u & 63
+ }
+ }
+ outU8Array[outIdx] = 0;
+ return outIdx - startIdx
+}
+Module["stringToUTF8Array"] = stringToUTF8Array;
+function stringToUTF8(str, outPtr, maxBytesToWrite) {
+ return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
+}
+Module["stringToUTF8"] = stringToUTF8;
+function lengthBytesUTF8(str) {
+ var len = 0;
+ for (var i = 0; i < str.length; ++i) {
+ var u = str.charCodeAt(i);
+ if (u >= 55296 && u <= 57343)
+ u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
+ if (u <= 127) {
+ ++len
+ } else if (u <= 2047) {
+ len += 2
+ } else if (u <= 65535) {
+ len += 3
+ } else if (u <= 2097151) {
+ len += 4
+ } else if (u <= 67108863) {
+ len += 5
+ } else {
+ len += 6
+ }
+ }
+ return len
+}
+Module["lengthBytesUTF8"] = lengthBytesUTF8;
+function UTF16ToString(ptr) {
+ var i = 0;
+ var str = "";
+ while (1) {
+ var codeUnit = HEAP16[ptr + i * 2 >> 1];
+ if (codeUnit == 0)
+ return str;
+ ++i;
+ str += String.fromCharCode(codeUnit)
+ }
+}
+Module["UTF16ToString"] = UTF16ToString;
+function stringToUTF16(str, outPtr, maxBytesToWrite) {
+ if (maxBytesToWrite === undefined) {
+ maxBytesToWrite = 2147483647
+ }
+ if (maxBytesToWrite < 2)
+ return 0;
+ maxBytesToWrite -= 2;
+ var startPtr = outPtr;
+ var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
+ for (var i = 0; i < numCharsToWrite; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ HEAP16[outPtr >> 1] = codeUnit;
+ outPtr += 2
+ }
+ HEAP16[outPtr >> 1] = 0;
+ return outPtr - startPtr
+}
+Module["stringToUTF16"] = stringToUTF16;
+function lengthBytesUTF16(str) {
+ return str.length * 2
+}
+Module["lengthBytesUTF16"] = lengthBytesUTF16;
+function UTF32ToString(ptr) {
+ var i = 0;
+ var str = "";
+ while (1) {
+ var utf32 = HEAP32[ptr + i * 4 >> 2];
+ if (utf32 == 0)
+ return str;
+ ++i;
+ if (utf32 >= 65536) {
+ var ch = utf32 - 65536;
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
+ } else {
+ str += String.fromCharCode(utf32)
+ }
+ }
+}
+Module["UTF32ToString"] = UTF32ToString;
+function stringToUTF32(str, outPtr, maxBytesToWrite) {
+ if (maxBytesToWrite === undefined) {
+ maxBytesToWrite = 2147483647
+ }
+ if (maxBytesToWrite < 4)
+ return 0;
+ var startPtr = outPtr;
+ var endPtr = startPtr + maxBytesToWrite - 4;
+ for (var i = 0; i < str.length; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ if (codeUnit >= 55296 && codeUnit <= 57343) {
+ var trailSurrogate = str.charCodeAt(++i);
+ codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023
+ }
+ HEAP32[outPtr >> 2] = codeUnit;
+ outPtr += 4;
+ if (outPtr + 4 > endPtr)
+ break
+ }
+ HEAP32[outPtr >> 2] = 0;
+ return outPtr - startPtr
+}
+Module["stringToUTF32"] = stringToUTF32;
+function lengthBytesUTF32(str) {
+ var len = 0;
+ for (var i = 0; i < str.length; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ if (codeUnit >= 55296 && codeUnit <= 57343)
+ ++i;
+ len += 4
+ }
+ return len
+}
+Module["lengthBytesUTF32"] = lengthBytesUTF32;
+function demangle(func) {
+ var hasLibcxxabi = !!Module["___cxa_demangle"];
+ if (hasLibcxxabi) {
+ try {
+ var buf = _malloc(func.length);
+ writeStringToMemory(func.substr(1), buf);
+ var status = _malloc(4);
+ var ret = Module["___cxa_demangle"](buf, 0, 0, status);
+ if (getValue(status, "i32") === 0 && ret) {
+ return Pointer_stringify(ret)
+ }
+ } catch (e) {} finally {
+ if (buf)
+ _free(buf);
+ if (status)
+ _free(status);
+ if (ret)
+ _free(ret)
+ }
+ }
+ var i = 3;
+ var basicTypes = {
+ "v": "void",
+ "b": "bool",
+ "c": "char",
+ "s": "short",
+ "i": "int",
+ "l": "long",
+ "f": "float",
+ "d": "double",
+ "w": "wchar_t",
+ "a": "signed char",
+ "h": "unsigned char",
+ "t": "unsigned short",
+ "j": "unsigned int",
+ "m": "unsigned long",
+ "x": "long long",
+ "y": "unsigned long long",
+ "z": "..."
+ };
+ var subs = [];
+ var first = true;
+ function dump(x) {
+ if (x)
+ Module.print(x);
+ Module.print(func);
+ var pre = "";
+ for (var a = 0; a < i; a++)
+ pre += " ";
+ Module.print(pre + "^")
+ }
+ function parseNested() {
+ i++;
+ if (func[i] === "K")
+ i++;
+ var parts = [];
+ while (func[i] !== "E") {
+ if (func[i] === "S") {
+ i++;
+ var next = func.indexOf("_", i);
+ var num = func.substring(i, next) || 0;
+ parts.push(subs[num] || "?");
+ i = next + 1;
+ continue
+ }
+ if (func[i] === "C") {
+ parts.push(parts[parts.length - 1]);
+ i += 2;
+ continue
+ }
+ var size = parseInt(func.substr(i));
+ var pre = size.toString().length;
+ if (!size || !pre) {
+ i--;
+ break
+ }
+ var curr = func.substr(i + pre, size);
+ parts.push(curr);
+ subs.push(curr);
+ i += pre + size
+ }
+ i++;
+ return parts
+ }
+ function parse(rawList, limit, allowVoid) {
+ limit = limit || Infinity;
+ var ret = "",
+ list = [];
+ function flushList() {
+ return "(" + list.join(", ") + ")"
+ }
+ var name;
+ if (func[i] === "N") {
+ name = parseNested().join("::");
+ limit--;
+ if (limit === 0)
+ return rawList ? [name] : name
+ } else {
+ if (func[i] === "K" || first && func[i] === "L")
+ i++;
+ var size = parseInt(func.substr(i));
+ if (size) {
+ var pre = size.toString().length;
+ name = func.substr(i + pre, size);
+ i += pre + size
+ }
+ }
+ first = false;
+ if (func[i] === "I") {
+ i++;
+ var iList = parse(true);
+ var iRet = parse(true, 1, true);
+ ret += iRet[0] + " " + name + "<" + iList.join(", ") + ">"
+ } else {
+ ret = name
+ }
+ paramLoop:
+ while (i < func.length && limit-- > 0) {
+ var c = func[i++];
+ if (c in basicTypes) {
+ list.push(basicTypes[c])
+ } else {
+ switch (c) {
+ case "P":
+ list.push(parse(true, 1, true)[0] + "*");
+ break;
+ case "R":
+ list.push(parse(true, 1, true)[0] + "&");
+ break;
+ case "L":
+ {
+ i++;
+ var end = func.indexOf("E", i);
+ var size = end - i;
+ list.push(func.substr(i, size));
+ i += size + 2;
+ break
+ };
+ case "A":
+ {
+ var size = parseInt(func.substr(i));
+ i += size.toString().length;
+ if (func[i] !== "_")
+ throw "?";
+ i++;
+ list.push(parse(true, 1, true)[0] + " [" + size + "]");
+ break
+ };
+ case "E":
+ break paramLoop;
+ default:
+ ret += "?" + c;
+ break paramLoop
+ }
+ }
+ }
+ if (!allowVoid && list.length === 1 && list[0] === "void")
+ list = [];
+ if (rawList) {
+ if (ret) {
+ list.push(ret + "?")
+ }
+ return list
+ } else {
+ return ret + flushList()
+ }
+ }
+ var parsed = func;
+ try {
+ if (func == "Object._main" || func == "_main") {
+ return "main()"
+ }
+ if (typeof func === "number")
+ func = Pointer_stringify(func);
+ if (func[0] !== "_")
+ return func;
+ if (func[1] !== "_")
+ return func;
+ if (func[2] !== "Z")
+ return func;
+ switch (func[3]) {
+ case "n":
+ return "operator new()";
+ case "d":
+ return "operator delete()"
+ }
+ parsed = parse()
+ } catch (e) {
+ parsed += "?"
+ }
+ if (parsed.indexOf("?") >= 0 && !hasLibcxxabi) {
+ Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")
+ }
+ return parsed
+}
+function demangleAll(text) {
+ return text.replace(/__Z[\w\d_]+/g, (function(x) {
+ var y = demangle(x);
+ return x === y ? x : x + " [" + y + "]"
+ }))
+}
+function jsStackTrace() {
+ var err = new Error;
+ if (!err.stack) {
+ try {
+ throw new Error(0)
+ } catch (e) {
+ err = e
+ }
+ if (!err.stack) {
+ return "(no stack trace available)"
+ }
+ }
+ return err.stack.toString()
+}
+function stackTrace() {
+ return demangleAll(jsStackTrace())
+}
+Module["stackTrace"] = stackTrace;
+var PAGE_SIZE = 4096;
+function alignMemoryPage(x) {
+ if (x % 4096 > 0) {
+ x += 4096 - x % 4096
+ }
+ return x
+}
+var HEAP;
+var HEAP8,
+ HEAPU8,
+ HEAP16,
+ HEAPU16,
+ HEAP32,
+ HEAPU32,
+ HEAPF32,
+ HEAPF64;
+var STATIC_BASE = 0,
+ STATICTOP = 0,
+ staticSealed = false;
+var STACK_BASE = 0,
+ STACKTOP = 0,
+ STACK_MAX = 0;
+var DYNAMIC_BASE = 0,
+ DYNAMICTOP = 0;
+function abortOnCannotGrowMemory() {
+ abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + TOTAL_MEMORY + ", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")
+}
+function enlargeMemory() {
+ abortOnCannotGrowMemory()
+}
+var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
+var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 16777216;
+var totalMemory = 64 * 1024;
+while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
+ if (totalMemory < 16 * 1024 * 1024) {
+ totalMemory *= 2
+ } else {
+ totalMemory += 16 * 1024 * 1024
+ }
+}
+if (totalMemory !== TOTAL_MEMORY) {
+ TOTAL_MEMORY = totalMemory
+}
+assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && !!(new Int32Array(1))["subarray"] && !!(new Int32Array(1))["set"], "JS engine does not provide full typed array support");
+var buffer;
+buffer = new ArrayBuffer(TOTAL_MEMORY);
+HEAP8 = new Int8Array(buffer);
+HEAP16 = new Int16Array(buffer);
+HEAP32 = new Int32Array(buffer);
+HEAPU8 = new Uint8Array(buffer);
+HEAPU16 = new Uint16Array(buffer);
+HEAPU32 = new Uint32Array(buffer);
+HEAPF32 = new Float32Array(buffer);
+HEAPF64 = new Float64Array(buffer);
+HEAP32[0] = 255;
+assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, "Typed arrays 2 must be run on a little-endian system");
+Module["HEAP"] = HEAP;
+Module["buffer"] = buffer;
+Module["HEAP8"] = HEAP8;
+Module["HEAP16"] = HEAP16;
+Module["HEAP32"] = HEAP32;
+Module["HEAPU8"] = HEAPU8;
+Module["HEAPU16"] = HEAPU16;
+Module["HEAPU32"] = HEAPU32;
+Module["HEAPF32"] = HEAPF32;
+Module["HEAPF64"] = HEAPF64;
+function callRuntimeCallbacks(callbacks) {
+ while (callbacks.length > 0) {
+ var callback = callbacks.shift();
+ if (typeof callback == "function") {
+ callback();
+ continue
+ }
+ var func = callback.func;
+ if (typeof func === "number") {
+ if (callback.arg === undefined) {
+ Runtime.dynCall("v", func)
+ } else {
+ Runtime.dynCall("vi", func, [callback.arg])
+ }
+ } else {
+ func(callback.arg === undefined ? null : callback.arg)
+ }
+ }
+}
+var __ATPRERUN__ = [];
+var __ATINIT__ = [];
+var __ATMAIN__ = [];
+var __ATEXIT__ = [];
+var __ATPOSTRUN__ = [];
+var runtimeInitialized = false;
+var runtimeExited = false;
+function preRun() {
+ if (Module["preRun"]) {
+ if (typeof Module["preRun"] == "function")
+ Module["preRun"] = [Module["preRun"]];
+ while (Module["preRun"].length) {
+ addOnPreRun(Module["preRun"].shift())
+ }
+ }
+ callRuntimeCallbacks(__ATPRERUN__)
+}
+function ensureInitRuntime() {
+ if (runtimeInitialized)
+ return;
+ runtimeInitialized = true;
+ callRuntimeCallbacks(__ATINIT__)
+}
+function preMain() {
+ callRuntimeCallbacks(__ATMAIN__)
+}
+function exitRuntime() {
+ callRuntimeCallbacks(__ATEXIT__);
+ runtimeExited = true
+}
+function postRun() {
+ if (Module["postRun"]) {
+ if (typeof Module["postRun"] == "function")
+ Module["postRun"] = [Module["postRun"]];
+ while (Module["postRun"].length) {
+ addOnPostRun(Module["postRun"].shift())
+ }
+ }
+ callRuntimeCallbacks(__ATPOSTRUN__)
+}
+function addOnPreRun(cb) {
+ __ATPRERUN__.unshift(cb)
+}
+Module["addOnPreRun"] = addOnPreRun;
+function addOnInit(cb) {
+ __ATINIT__.unshift(cb)
+}
+Module["addOnInit"] = addOnInit;
+function addOnPreMain(cb) {
+ __ATMAIN__.unshift(cb)
+}
+Module["addOnPreMain"] = addOnPreMain;
+function addOnExit(cb) {
+ __ATEXIT__.unshift(cb)
+}
+Module["addOnExit"] = addOnExit;
+function addOnPostRun(cb) {
+ __ATPOSTRUN__.unshift(cb)
+}
+Module["addOnPostRun"] = addOnPostRun;
+function intArrayFromString(stringy, dontAddNull, length) {
+ var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
+ var u8array = new Array(len);
+ var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
+ if (dontAddNull)
+ u8array.length = numBytesWritten;
+ return u8array
+}
+Module["intArrayFromString"] = intArrayFromString;
+function intArrayToString(array) {
+ var ret = [];
+ for (var i = 0; i < array.length; i++) {
+ var chr = array[i];
+ if (chr > 255) {
+ chr &= 255
+ }
+ ret.push(String.fromCharCode(chr))
+ }
+ return ret.join("")
+}
+Module["intArrayToString"] = intArrayToString;
+function writeStringToMemory(string, buffer, dontAddNull) {
+ var array = intArrayFromString(string, dontAddNull);
+ var i = 0;
+ while (i < array.length) {
+ var chr = array[i];
+ HEAP8[buffer + i >> 0] = chr;
+ i = i + 1
+ }
+}
+Module["writeStringToMemory"] = writeStringToMemory;
+function writeArrayToMemory(array, buffer) {
+ for (var i = 0; i < array.length; i++) {
+ HEAP8[buffer++ >> 0] = array[i]
+ }
+}
+Module["writeArrayToMemory"] = writeArrayToMemory;
+function writeAsciiToMemory(str, buffer, dontAddNull) {
+ for (var i = 0; i < str.length; ++i) {
+ HEAP8[buffer++ >> 0] = str.charCodeAt(i)
+ }
+ if (!dontAddNull)
+ HEAP8[buffer >> 0] = 0
+}
+Module["writeAsciiToMemory"] = writeAsciiToMemory;
+function unSign(value, bits, ignore) {
+ if (value >= 0) {
+ return value
+ }
+ return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value
+}
+function reSign(value, bits, ignore) {
+ if (value <= 0) {
+ return value
+ }
+ var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);
+ if (value >= half && (bits <= 32 || value > half)) {
+ value = -2 * half + value
+ }
+ return value
+}
+if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5)
+ Math["imul"] = function imul(a, b) {
+ var ah = a >>> 16;
+ var al = a & 65535;
+ var bh = b >>> 16;
+ var bl = b & 65535;
+ return al * bl + (ah * bl + al * bh << 16) | 0
+ };
+Math.imul = Math["imul"];
+if (!Math["clz32"])
+ Math["clz32"] = (function(x) {
+ x = x >>> 0;
+ for (var i = 0; i < 32; i++) {
+ if (x & 1 << 31 - i)
+ return i
+ }
+ return 32
+ });
+Math.clz32 = Math["clz32"];
+var Math_abs = Math.abs;
+var Math_cos = Math.cos;
+var Math_sin = Math.sin;
+var Math_tan = Math.tan;
+var Math_acos = Math.acos;
+var Math_asin = Math.asin;
+var Math_atan = Math.atan;
+var Math_atan2 = Math.atan2;
+var Math_exp = Math.exp;
+var Math_log = Math.log;
+var Math_sqrt = Math.sqrt;
+var Math_ceil = Math.ceil;
+var Math_floor = Math.floor;
+var Math_pow = Math.pow;
+var Math_imul = Math.imul;
+var Math_fround = Math.fround;
+var Math_min = Math.min;
+var Math_clz32 = Math.clz32;
+var runDependencies = 0;
+var runDependencyWatcher = null;
+var dependenciesFulfilled = null;
+function getUniqueRunDependency(id) {
+ return id
+}
+function addRunDependency(id) {
+ runDependencies++;
+ if (Module["monitorRunDependencies"]) {
+ Module["monitorRunDependencies"](runDependencies)
+ }
+}
+Module["addRunDependency"] = addRunDependency;
+function removeRunDependency(id) {
+ runDependencies--;
+ if (Module["monitorRunDependencies"]) {
+ Module["monitorRunDependencies"](runDependencies)
+ }
+ if (runDependencies == 0) {
+ if (runDependencyWatcher !== null) {
+ clearInterval(runDependencyWatcher);
+ runDependencyWatcher = null
+ }
+ if (dependenciesFulfilled) {
+ var callback = dependenciesFulfilled;
+ dependenciesFulfilled = null;
+ callback()
+ }
+ }
+}
+Module["removeRunDependency"] = removeRunDependency;
+Module["preloadedImages"] = {};
+Module["preloadedAudios"] = {};
+var memoryInitializer = null;
+var ASM_CONSTS = [(function($0) {
+ textOut = Pointer_stringify($0)
+})];
+function _emscripten_asm_const_1(code, a0) {
+ return ASM_CONSTS[code](a0)
+}
+STATIC_BASE = 8;
+STATICTOP = STATIC_BASE + 138624;
+__ATINIT__.push({
+ func: (function() {
+ __GLOBAL__sub_I_main_cpp()
+ })
+});
+allocate([64, 215, 1, 0, 40, 15, 2, 0, 24, 0, 0, 0, 0, 0, 0, 0, 24, 215, 1, 0, 53, 15, 2, 0, 64, 215, 1, 0, 66, 15, 2, 0, 24, 0, 0, 0, 0, 0, 0, 0, 64, 215, 1, 0, 82, 15, 2, 0, 32, 0, 0, 0, 0, 0, 0, 0, 24, 215, 1, 0, 99, 15, 2, 0, 64, 215, 1, 0, 112, 15, 2, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 215, 1, 0, 145, 15, 2, 0, 72, 0, 0, 0, 0, 0, 0, 0, 64, 215, 1, 0, 179, 15, 2, 0, 88, 0, 0, 0, 0, 0, 0, 0, 1, 78, 0, 0, 0, 78, 0, 0, 163, 73, 0, 0, 165, 73, 0, 0, 167, 73, 0, 0, 169, 73, 0, 0, 171, 73, 0, 0, 173, 73, 0, 0, 175, 73, 0, 0, 177, 73, 0, 0, 179, 73, 0, 0, 0, 0, 0, 0, 181, 73, 0, 0, 183, 73, 0, 0, 185, 73, 0, 0, 187, 73, 0, 0, 189, 73, 0, 0, 191, 73, 0, 0, 193, 73, 0, 0, 195, 73, 0, 0, 197, 73, 0, 0, 199, 73, 0, 0, 201, 73, 0, 0, 203, 73, 0, 0, 205, 73, 0, 0, 207, 73, 0, 0, 209, 73, 0, 0, 0, 0, 0, 0, 211, 73, 0, 0, 213, 73, 0, 0, 215, 73, 0, 0, 217, 73, 0, 0, 219, 73, 0, 0, 221, 73, 0, 0, 223, 73, 0, 0, 225, 73, 0, 0, 227, 73, 0, 0, 229, 73, 0, 0, 231, 73, 0, 0, 233, 73, 0, 0, 235, 73, 0, 0, 237, 73, 0, 0, 239, 73, 0, 0, 0, 0, 0, 0, 241, 73, 0, 0, 243, 73, 0, 0, 245, 73, 0, 0, 247, 73, 0, 0, 249, 73, 0, 0, 251, 73, 0, 0, 253, 73, 0, 0, 255, 73, 0, 0, 1, 74, 0, 0, 3, 74, 0, 0, 5, 74, 0, 0, 7, 74, 0, 0, 9, 74, 0, 0, 11, 74, 0, 0, 13, 74, 0, 0, 0, 0, 0, 0, 15, 74, 0, 0, 17, 74, 0, 0, 19, 74, 0, 0, 21, 74, 0, 0, 23, 74, 0, 0, 25, 74, 0, 0, 27, 74, 0, 0, 29, 74, 0, 0, 31, 74, 0, 0, 33, 74, 0, 0, 35, 74, 0, 0, 37, 74, 0, 0, 39, 74, 0, 0, 41, 74, 0, 0, 43, 74, 0, 0, 0, 0, 0, 0, 45, 74, 0, 0, 47, 74, 0, 0, 49, 74, 0, 0, 51, 74, 0, 0, 53, 74, 0, 0, 55, 74, 0, 0, 57, 74, 0, 0, 59, 74, 0, 0, 61, 74, 0, 0, 63, 74, 0, 0, 65, 74, 0, 0, 67, 74, 0, 0, 69, 74, 0, 0, 71, 74, 0, 0, 73, 74, 0, 0, 0, 0, 0, 0, 75, 74, 0, 0, 77, 74, 0, 0, 79, 74, 0, 0, 81, 74, 0, 0, 83, 74, 0, 0, 85, 74, 0, 0, 87, 74, 0, 0, 89, 74, 0, 0, 91, 74, 0, 0, 93, 74, 0, 0, 95, 74, 0, 0, 97, 74, 0, 0, 99, 74, 0, 0, 101, 74, 0, 0, 103, 74, 0, 0, 0, 0, 0, 0, 105, 74, 0, 0, 107, 74, 0, 0, 109, 74, 0, 0, 111, 74, 0, 0, 113, 74, 0, 0, 115, 74, 0, 0, 117, 74, 0, 0, 119, 74, 0, 0, 121, 74, 0, 0, 123, 74, 0, 0, 125, 74, 0, 0, 127, 74, 0, 0, 129, 74, 0, 0, 131, 74, 0, 0, 133, 74, 0, 0, 0, 0, 0, 0, 135, 74, 0, 0, 137, 74, 0, 0, 139, 74, 0, 0, 141, 74, 0, 0, 143, 74, 0, 0, 145, 74, 0, 0, 147, 74, 0, 0, 149, 74, 0, 0, 151, 74, 0, 0, 153, 74, 0, 0, 155, 74, 0, 0, 157, 74, 0, 0, 159, 74, 0, 0, 161, 74, 0, 0, 163, 74, 0, 0, 0, 0, 0, 0, 165, 74, 0, 0, 167, 74, 0, 0, 169, 74, 0, 0, 171, 74, 0, 0, 173, 74, 0, 0, 175, 74, 0, 0, 177, 74, 0, 0, 179, 74, 0, 0, 181, 74, 0, 0, 183, 74, 0, 0, 185, 74, 0, 0, 255, 77, 0, 0, 254, 77, 0, 0, 162, 73, 0, 0, 164, 73, 0, 0, 166, 73, 0, 0, 168, 73, 0, 0, 170, 73, 0, 0, 172, 73, 0, 0, 174, 73, 0, 0, 176, 73, 0, 0, 178, 73, 0, 0, 1, 0, 0, 0, 180, 73, 0, 0, 182, 73, 0, 0, 184, 73, 0, 0, 186, 73, 0, 0, 188, 73, 0, 0, 190, 73, 0, 0, 192, 73, 0, 0, 194, 73, 0, 0, 196, 73, 0, 0, 198, 73, 0, 0, 200, 73, 0, 0, 202, 73, 0, 0, 204, 73, 0, 0, 206, 73, 0, 0, 208, 73, 0, 0, 1, 0, 0, 0, 210, 73, 0, 0, 212, 73, 0, 0, 214, 73, 0, 0, 216, 73, 0, 0, 218, 73, 0, 0, 220, 73, 0, 0, 222, 73, 0, 0, 224, 73, 0, 0, 226, 73, 0, 0, 228, 73, 0, 0, 230, 73, 0, 0, 232, 73, 0, 0, 234, 73, 0, 0, 236, 73, 0, 0, 238, 73, 0, 0, 1, 0, 0, 0, 240, 73, 0, 0, 242, 73, 0, 0, 244, 73, 0, 0, 246, 73, 0, 0, 248, 73, 0, 0, 250, 73, 0, 0, 252, 73, 0, 0, 254, 73, 0, 0, 0, 74, 0, 0, 2, 74, 0, 0, 4, 74, 0, 0, 6, 74, 0, 0, 8, 74, 0, 0, 10, 74, 0, 0, 12, 74, 0, 0, 1, 0, 0, 0, 14, 74, 0, 0, 16, 74, 0, 0, 18, 74, 0, 0, 20, 74, 0, 0, 22, 74, 0, 0, 24, 74, 0, 0, 26, 74, 0, 0, 28, 74, 0, 0, 30, 74, 0, 0, 32, 74, 0, 0, 34, 74, 0, 0, 36, 74, 0, 0, 38, 74, 0, 0, 40, 74, 0, 0, 42, 74, 0, 0, 1, 0, 0, 0, 44, 74, 0, 0, 46, 74, 0, 0, 48, 74, 0, 0, 50, 74, 0, 0, 52, 74, 0, 0, 54, 74, 0, 0, 56, 74, 0, 0, 58, 74, 0, 0, 60, 74, 0, 0, 62, 74, 0, 0, 64, 74, 0, 0, 66, 74, 0, 0, 68, 74, 0, 0, 70, 74, 0, 0, 72, 74, 0, 0, 1, 0, 0, 0, 74, 74, 0, 0, 76, 74, 0, 0, 78, 74, 0, 0, 80, 74, 0, 0, 82, 74, 0, 0, 84, 74, 0, 0, 86, 74, 0, 0, 88, 74, 0, 0, 90, 74, 0, 0, 92, 74, 0, 0, 94, 74, 0, 0, 96, 74, 0, 0, 98, 74, 0, 0, 100, 74, 0, 0, 102, 74, 0, 0, 1, 0, 0, 0, 104, 74, 0, 0, 106, 74, 0, 0, 108, 74, 0, 0, 110, 74, 0, 0, 112, 74, 0, 0, 114, 74, 0, 0, 116, 74, 0, 0, 118, 74, 0, 0, 120, 74, 0, 0, 122, 74, 0, 0, 124, 74, 0, 0, 126, 74, 0, 0, 128, 74, 0, 0, 130, 74, 0, 0, 132, 74, 0, 0, 1, 0, 0, 0, 134, 74, 0, 0, 136, 74, 0, 0, 138, 74, 0, 0, 140, 74, 0, 0, 142, 74, 0, 0, 144, 74, 0, 0, 146, 74, 0, 0, 148, 74, 0, 0, 150, 74, 0, 0, 152, 74, 0, 0, 154, 74, 0, 0, 156, 74, 0, 0, 158, 74, 0, 0, 160, 74, 0, 0, 162, 74, 0, 0, 1, 0, 0, 0, 164, 74, 0, 0, 166, 74, 0, 0, 168, 74, 0, 0, 170, 74, 0, 0, 172, 74, 0, 0, 174, 74, 0, 0, 176, 74, 0, 0, 178, 74, 0, 0, 180, 74, 0, 0, 182, 74, 0, 0, 184, 74, 0, 0, 253, 77, 0, 0, 252, 77, 0, 0, 161, 73, 0, 0, 160, 73, 0, 0, 99, 69, 0, 0, 101, 69, 0, 0, 103, 69, 0, 0, 105, 69, 0, 0, 107, 69, 0, 0, 109, 69, 0, 0, 111, 69, 0, 0, 0, 0, 0, 0, 113, 69, 0, 0, 115, 69, 0, 0, 117, 69, 0, 0, 119, 69, 0, 0, 121, 69, 0, 0, 123, 69, 0, 0, 125, 69, 0, 0, 127, 69, 0, 0, 129, 69, 0, 0, 131, 69, 0, 0, 133, 69, 0, 0, 135, 69, 0, 0, 137, 69, 0, 0, 139, 69, 0, 0, 141, 69, 0, 0, 0, 0, 0, 0, 143, 69, 0, 0, 145, 69, 0, 0, 147, 69, 0, 0, 149, 69, 0, 0, 151, 69, 0, 0, 153, 69, 0, 0, 155, 69, 0, 0, 157, 69, 0, 0, 159, 69, 0, 0, 161, 69, 0, 0, 163, 69, 0, 0, 165, 69, 0, 0, 167, 69, 0, 0, 169, 69, 0, 0, 171, 69, 0, 0, 0, 0, 0, 0, 173, 69, 0, 0, 175, 69, 0, 0, 177, 69, 0, 0, 179, 69, 0, 0, 181, 69, 0, 0, 183, 69, 0, 0, 185, 69, 0, 0, 187, 69, 0, 0, 189, 69, 0, 0, 191, 69, 0, 0, 193, 69, 0, 0, 195, 69, 0, 0, 197, 69, 0, 0, 199, 69, 0, 0, 201, 69, 0, 0, 0, 0, 0, 0, 203, 69, 0, 0, 205, 69, 0, 0, 207, 69, 0, 0, 209, 69, 0, 0, 211, 69, 0, 0, 213, 69, 0, 0, 215, 69, 0, 0, 217, 69, 0, 0, 219, 69, 0, 0, 221, 69, 0, 0, 223, 69, 0, 0, 225, 69, 0, 0, 227, 69, 0, 0, 229, 69, 0, 0, 231, 69, 0, 0, 0, 0, 0, 0, 233, 69, 0, 0, 235, 69, 0, 0, 237, 69, 0, 0, 239, 69, 0, 0, 241, 69, 0, 0, 243, 69, 0, 0, 245, 69, 0, 0, 247, 69, 0, 0, 249, 69, 0, 0, 251, 69, 0, 0, 253, 69, 0, 0, 255, 69, 0, 0, 1, 70, 0, 0, 3, 70, 0, 0, 5, 70, 0, 0, 0, 0, 0, 0, 7, 70, 0, 0, 9, 70, 0, 0, 11, 70, 0, 0, 13, 70, 0, 0, 15, 70, 0, 0, 17, 70, 0, 0, 19, 70, 0, 0, 21, 70, 0, 0, 23, 70, 0, 0, 25, 70, 0, 0, 27, 70, 0, 0, 29, 70, 0, 0, 31, 70, 0, 0, 33, 70, 0, 0, 35, 70, 0, 0, 0, 0, 0, 0, 37, 70, 0, 0, 39, 70, 0, 0, 41, 70, 0, 0, 43, 70, 0, 0, 45, 70, 0, 0, 47, 70, 0, 0, 49, 70, 0, 0, 51, 70, 0, 0, 53, 70, 0, 0, 55, 70, 0, 0, 57, 70, 0, 0, 59, 70, 0, 0, 61, 70, 0, 0, 63, 70, 0, 0, 65, 70, 0, 0, 0, 0, 0, 0, 67, 70, 0, 0, 69, 70, 0, 0, 71, 70, 0, 0, 73, 70, 0, 0, 75, 70, 0, 0, 77, 70, 0, 0, 79, 70, 0, 0, 81, 70, 0, 0, 83, 70, 0, 0, 85, 70, 0, 0, 87, 70, 0, 0, 89, 70, 0, 0, 91, 70, 0, 0, 93, 70, 0, 0, 95, 70, 0, 0, 0, 0, 0, 0, 97, 70, 0, 0, 99, 70, 0, 0, 101, 70, 0, 0, 103, 70, 0, 0, 105, 70, 0, 0, 107, 70, 0, 0, 109, 70, 0, 0, 111, 70, 0, 0, 113, 70, 0, 0, 186, 74, 0, 0, 187, 74, 0, 0, 251, 77, 0, 0, 250, 77, 0, 0, 159, 73, 0, 0, 158, 73, 0, 0, 98, 69, 0, 0, 100, 69, 0, 0, 102, 69, 0, 0, 104, 69, 0, 0, 106, 69, 0, 0, 108, 69, 0, 0, 110, 69, 0, 0, 1, 0, 0, 0, 112, 69, 0, 0, 114, 69, 0, 0, 116, 69, 0, 0, 118, 69, 0, 0, 120, 69, 0, 0, 122, 69, 0, 0, 124, 69, 0, 0, 126, 69, 0, 0, 128, 69, 0, 0, 130, 69, 0, 0, 132, 69, 0, 0, 134, 69, 0, 0, 136, 69, 0, 0, 138, 69, 0, 0, 140, 69, 0, 0, 1, 0, 0, 0, 142, 69, 0, 0, 144, 69, 0, 0, 146, 69, 0, 0, 148, 69, 0, 0, 150, 69, 0, 0, 152, 69, 0, 0, 154, 69, 0, 0, 156, 69, 0, 0, 158, 69, 0, 0, 160, 69, 0, 0, 162, 69, 0, 0, 164, 69, 0, 0, 166, 69, 0, 0, 168, 69, 0, 0, 170, 69, 0, 0, 1, 0, 0, 0, 172, 69, 0, 0, 174, 69, 0, 0, 176, 69, 0, 0, 178, 69, 0, 0, 180, 69, 0, 0, 182, 69, 0, 0, 184, 69, 0, 0, 186, 69, 0, 0, 188, 69, 0, 0, 190, 69, 0, 0, 192, 69, 0, 0, 194, 69, 0, 0, 196, 69, 0, 0, 198, 69, 0, 0, 200, 69, 0, 0, 1, 0, 0, 0, 202, 69, 0, 0, 204, 69, 0, 0, 206, 69, 0, 0, 208, 69, 0, 0, 210, 69, 0, 0, 212, 69, 0, 0, 214, 69, 0, 0, 216, 69, 0, 0, 218, 69, 0, 0, 220, 69, 0, 0, 222, 69, 0, 0, 224, 69, 0, 0, 226, 69, 0, 0, 228, 69, 0, 0, 230, 69, 0, 0, 1, 0, 0, 0, 232, 69, 0, 0, 234, 69, 0, 0, 236, 69, 0, 0, 238, 69, 0, 0, 240, 69, 0, 0, 242, 69, 0, 0, 244, 69, 0, 0, 246, 69, 0, 0, 248, 69, 0, 0, 250, 69, 0, 0, 252, 69, 0, 0, 254, 69, 0, 0, 0, 70, 0, 0, 2, 70, 0, 0, 4, 70, 0, 0, 1, 0, 0, 0, 6, 70, 0, 0, 8, 70, 0, 0, 10, 70, 0, 0, 12, 70, 0, 0, 14, 70, 0, 0, 16, 70, 0, 0, 18, 70, 0, 0, 20, 70, 0, 0, 22, 70, 0, 0, 24, 70, 0, 0, 26, 70, 0, 0, 28, 70, 0, 0, 30, 70, 0, 0, 32, 70, 0, 0, 34, 70, 0, 0, 1, 0, 0, 0, 36, 70, 0, 0, 38, 70, 0, 0, 40, 70, 0, 0, 42, 70, 0, 0, 44, 70, 0, 0, 46, 70, 0, 0, 48, 70, 0, 0, 50, 70, 0, 0, 52, 70, 0, 0, 54, 70, 0, 0, 56, 70, 0, 0, 58, 70, 0, 0, 60, 70, 0, 0, 62, 70, 0, 0, 64, 70, 0, 0, 1, 0, 0, 0, 66, 70, 0, 0, 68, 70, 0, 0, 70, 70, 0, 0, 72, 70, 0, 0, 74, 70, 0, 0, 76, 70, 0, 0, 78, 70, 0, 0, 80, 70, 0, 0, 82, 70, 0, 0, 84, 70, 0, 0, 86, 70, 0, 0, 88, 70, 0, 0, 90, 70, 0, 0, 92, 70, 0, 0, 94, 70, 0, 0, 1, 0, 0, 0, 96, 70, 0, 0, 98, 70, 0, 0, 100, 70, 0, 0, 102, 70, 0, 0, 104, 70, 0, 0, 106, 70, 0, 0, 108, 70, 0, 0, 110, 70, 0, 0, 112, 70, 0, 0, 188, 74, 0, 0, 189, 74, 0, 0, 249, 77, 0, 0, 248, 77, 0, 0, 157, 73, 0, 0, 156, 73, 0, 0, 97, 69, 0, 0, 96, 69, 0, 0, 67, 65, 0, 0, 69, 65, 0, 0, 71, 65, 0, 0, 73, 65, 0, 0, 75, 65, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 79, 65, 0, 0, 81, 65, 0, 0, 83, 65, 0, 0, 85, 65, 0, 0, 87, 65, 0, 0, 89, 65, 0, 0, 91, 65, 0, 0, 93, 65, 0, 0, 95, 65, 0, 0, 97, 65, 0, 0, 99, 65, 0, 0, 101, 65, 0, 0, 103, 65, 0, 0, 105, 65, 0, 0, 0, 0, 0, 0, 107, 65, 0, 0, 109, 65, 0, 0, 111, 65, 0, 0, 113, 65, 0, 0, 115, 65, 0, 0, 117, 65, 0, 0, 119, 65, 0, 0, 121, 65, 0, 0, 123, 65, 0, 0, 125, 65, 0, 0, 127, 65, 0, 0, 129, 65, 0, 0, 131, 65, 0, 0, 133, 65, 0, 0, 135, 65, 0, 0, 0, 0, 0, 0, 137, 65, 0, 0, 139, 65, 0, 0, 141, 65, 0, 0, 143, 65, 0, 0, 145, 65, 0, 0, 147, 65, 0, 0, 149, 65, 0, 0, 151, 65, 0, 0, 153, 65, 0, 0, 155, 65, 0, 0, 157, 65, 0, 0, 159, 65, 0, 0, 161, 65, 0, 0, 163, 65, 0, 0, 165, 65, 0, 0, 0, 0, 0, 0, 167, 65, 0, 0, 169, 65, 0, 0, 171, 65, 0, 0, 173, 65, 0, 0, 175, 65, 0, 0, 177, 65, 0, 0, 179, 65, 0, 0, 181, 65, 0, 0, 183, 65, 0, 0, 185, 65, 0, 0, 187, 65, 0, 0, 189, 65, 0, 0, 191, 65, 0, 0, 193, 65, 0, 0, 195, 65, 0, 0, 0, 0, 0, 0, 197, 65, 0, 0, 199, 65, 0, 0, 201, 65, 0, 0, 203, 65, 0, 0, 205, 65, 0, 0, 207, 65, 0, 0, 209, 65, 0, 0, 211, 65, 0, 0, 213, 65, 0, 0, 215, 65, 0, 0, 217, 65, 0, 0, 219, 65, 0, 0, 221, 65, 0, 0, 223, 65, 0, 0, 225, 65, 0, 0, 0, 0, 0, 0, 227, 65, 0, 0, 229, 65, 0, 0, 231, 65, 0, 0, 233, 65, 0, 0, 235, 65, 0, 0, 237, 65, 0, 0, 239, 65, 0, 0, 241, 65, 0, 0, 243, 65, 0, 0, 245, 65, 0, 0, 247, 65, 0, 0, 249, 65, 0, 0, 251, 65, 0, 0, 253, 65, 0, 0, 255, 65, 0, 0, 0, 0, 0, 0, 1, 66, 0, 0, 3, 66, 0, 0, 5, 66, 0, 0, 7, 66, 0, 0, 9, 66, 0, 0, 11, 66, 0, 0, 13, 66, 0, 0, 15, 66, 0, 0, 17, 66, 0, 0, 19, 66, 0, 0, 21, 66, 0, 0, 23, 66, 0, 0, 25, 66, 0, 0, 27, 66, 0, 0, 29, 66, 0, 0, 0, 0, 0, 0, 31, 66, 0, 0, 33, 66, 0, 0, 35, 66, 0, 0, 37, 66, 0, 0, 39, 66, 0, 0, 41, 66, 0, 0, 43, 66, 0, 0, 45, 66, 0, 0, 47, 66, 0, 0, 49, 66, 0, 0, 51, 66, 0, 0, 53, 66, 0, 0, 55, 66, 0, 0, 57, 66, 0, 0, 59, 66, 0, 0, 0, 0, 0, 0, 61, 66, 0, 0, 63, 66, 0, 0, 65, 66, 0, 0, 67, 66, 0, 0, 69, 66, 0, 0, 71, 66, 0, 0, 73, 66, 0, 0, 114, 70, 0, 0, 115, 70, 0, 0, 190, 74, 0, 0, 191, 74, 0, 0, 247, 77, 0, 0, 246, 77, 0, 0, 155, 73, 0, 0, 154, 73, 0, 0, 95, 69, 0, 0, 94, 69, 0, 0, 66, 65, 0, 0, 68, 65, 0, 0, 70, 65, 0, 0, 72, 65, 0, 0, 74, 65, 0, 0, 1, 0, 0, 0, 76, 65, 0, 0, 78, 65, 0, 0, 80, 65, 0, 0, 82, 65, 0, 0, 84, 65, 0, 0, 86, 65, 0, 0, 88, 65, 0, 0, 90, 65, 0, 0, 92, 65, 0, 0, 94, 65, 0, 0, 96, 65, 0, 0, 98, 65, 0, 0, 100, 65, 0, 0, 102, 65, 0, 0, 104, 65, 0, 0, 1, 0, 0, 0, 106, 65, 0, 0, 108, 65, 0, 0, 110, 65, 0, 0, 112, 65, 0, 0, 114, 65, 0, 0, 116, 65, 0, 0, 118, 65, 0, 0, 120, 65, 0, 0, 122, 65, 0, 0, 124, 65, 0, 0, 126, 65, 0, 0, 128, 65, 0, 0, 130, 65, 0, 0, 132, 65, 0, 0, 134, 65, 0, 0, 1, 0, 0, 0, 136, 65, 0, 0, 138, 65, 0, 0, 140, 65, 0, 0, 142, 65, 0, 0, 144, 65, 0, 0, 146, 65, 0, 0, 148, 65, 0, 0, 150, 65, 0, 0, 152, 65, 0, 0, 154, 65, 0, 0, 156, 65, 0, 0, 158, 65, 0, 0, 160, 65, 0, 0, 162, 65, 0, 0, 164, 65, 0, 0, 1, 0, 0, 0, 166, 65, 0, 0, 168, 65, 0, 0, 170, 65, 0, 0, 172, 65, 0, 0, 174, 65, 0, 0, 176, 65, 0, 0, 178, 65, 0, 0, 180, 65, 0, 0, 182, 65, 0, 0, 184, 65, 0, 0, 186, 65, 0, 0, 188, 65, 0, 0, 190, 65, 0, 0, 192, 65, 0, 0, 194, 65, 0, 0, 1, 0, 0, 0, 196, 65, 0, 0, 198, 65, 0, 0, 200, 65, 0, 0, 202, 65, 0, 0, 204, 65, 0, 0, 206, 65, 0, 0, 208, 65, 0, 0, 210, 65, 0, 0, 212, 65, 0, 0, 214, 65, 0, 0, 216, 65, 0, 0, 218, 65, 0, 0, 220, 65, 0, 0, 222, 65, 0, 0, 224, 65, 0, 0, 1, 0, 0, 0, 226, 65, 0, 0, 228, 65, 0, 0, 230, 65, 0, 0, 232, 65, 0, 0, 234, 65, 0, 0, 236, 65, 0, 0, 238, 65, 0, 0, 240, 65, 0, 0, 242, 65, 0, 0, 244, 65, 0, 0, 246, 65, 0, 0, 248, 65, 0, 0, 250, 65, 0, 0, 252, 65, 0, 0, 254, 65, 0, 0, 1, 0, 0, 0, 0, 66, 0, 0, 2, 66, 0, 0, 4, 66, 0, 0, 6, 66, 0, 0, 8, 66, 0, 0, 10, 66, 0, 0, 12, 66, 0, 0, 14, 66, 0, 0, 16, 66, 0, 0, 18, 66, 0, 0, 20, 66, 0, 0, 22, 66, 0, 0, 24, 66, 0, 0, 26, 66, 0, 0, 28, 66, 0, 0, 1, 0, 0, 0, 30, 66, 0, 0, 32, 66, 0, 0, 34, 66, 0, 0, 36, 66, 0, 0, 38, 66, 0, 0, 40, 66, 0, 0, 42, 66, 0, 0, 44, 66, 0, 0, 46, 66, 0, 0, 48, 66, 0, 0, 50, 66, 0, 0, 52, 66, 0, 0, 54, 66, 0, 0, 56, 66, 0, 0, 58, 66, 0, 0, 1, 0, 0, 0, 60, 66, 0, 0, 62, 66, 0, 0, 64, 66, 0, 0, 66, 66, 0, 0, 68, 66, 0, 0, 70, 66, 0, 0, 72, 66, 0, 0, 116, 70, 0, 0, 117, 70, 0, 0, 192, 74, 0, 0, 193, 74, 0, 0, 245, 77, 0, 0, 244, 77, 0, 0, 153, 73, 0, 0, 152, 73, 0, 0, 93, 69, 0, 0, 92, 69, 0, 0, 65, 65, 0, 0, 64, 65, 0, 0, 67, 61, 0, 0, 69, 61, 0, 0, 71, 61, 0, 0, 0, 0, 0, 0, 73, 61, 0, 0, 75, 61, 0, 0, 77, 61, 0, 0, 79, 61, 0, 0, 81, 61, 0, 0, 83, 61, 0, 0, 85, 61, 0, 0, 87, 61, 0, 0, 89, 61, 0, 0, 91, 61, 0, 0, 93, 61, 0, 0, 95, 61, 0, 0, 97, 61, 0, 0, 99, 61, 0, 0, 101, 61, 0, 0, 0, 0, 0, 0, 103, 61, 0, 0, 105, 61, 0, 0, 107, 61, 0, 0, 109, 61, 0, 0, 111, 61, 0, 0, 113, 61, 0, 0, 115, 61, 0, 0, 117, 61, 0, 0, 119, 61, 0, 0, 121, 61, 0, 0, 123, 61, 0, 0, 125, 61, 0, 0, 127, 61, 0, 0, 129, 61, 0, 0, 131, 61, 0, 0, 0, 0, 0, 0, 133, 61, 0, 0, 135, 61, 0, 0, 137, 61, 0, 0, 139, 61, 0, 0, 141, 61, 0, 0, 143, 61, 0, 0, 145, 61, 0, 0, 147, 61, 0, 0, 149, 61, 0, 0, 151, 61, 0, 0, 153, 61, 0, 0, 155, 61, 0, 0, 157, 61, 0, 0, 159, 61, 0, 0, 161, 61, 0, 0, 0, 0, 0, 0, 163, 61, 0, 0, 165, 61, 0, 0, 167, 61, 0, 0, 169, 61, 0, 0, 171, 61, 0, 0, 173, 61, 0, 0, 175, 61, 0, 0, 177, 61, 0, 0, 179, 61, 0, 0, 181, 61, 0, 0, 183, 61, 0, 0, 185, 61, 0, 0, 187, 61, 0, 0, 189, 61, 0, 0, 191, 61, 0, 0, 0, 0, 0, 0, 193, 61, 0, 0, 195, 61, 0, 0, 197, 61, 0, 0, 199, 61, 0, 0, 201, 61, 0, 0, 203, 61, 0, 0, 205, 61, 0, 0, 207, 61, 0, 0, 209, 61, 0, 0, 211, 61, 0, 0, 213, 61, 0, 0, 215, 61, 0, 0, 217, 61, 0, 0, 219, 61, 0, 0, 221, 61, 0, 0, 0, 0, 0, 0, 223, 61, 0, 0, 225, 61, 0, 0, 227, 61, 0, 0, 229, 61, 0, 0, 231, 61, 0, 0, 233, 61, 0, 0, 235, 61, 0, 0, 237, 61, 0, 0, 239, 61, 0, 0, 241, 61, 0, 0, 243, 61, 0, 0, 245, 61, 0, 0, 247, 61, 0, 0, 249, 61, 0, 0, 251, 61, 0, 0, 0, 0, 0, 0, 253, 61, 0, 0, 255, 61, 0, 0, 1, 62, 0, 0, 3, 62, 0, 0, 5, 62, 0, 0, 7, 62, 0, 0, 9, 62, 0, 0, 11, 62, 0, 0, 13, 62, 0, 0, 15, 62, 0, 0, 17, 62, 0, 0, 19, 62, 0, 0, 21, 62, 0, 0, 23, 62, 0, 0, 25, 62, 0, 0, 0, 0, 0, 0, 27, 62, 0, 0, 29, 62, 0, 0, 31, 62, 0, 0, 33, 62, 0, 0, 35, 62, 0, 0, 37, 62, 0, 0, 39, 62, 0, 0, 41, 62, 0, 0, 43, 62, 0, 0, 45, 62, 0, 0, 47, 62, 0, 0, 49, 62, 0, 0, 51, 62, 0, 0, 53, 62, 0, 0, 55, 62, 0, 0, 0, 0, 0, 0, 57, 62, 0, 0, 59, 62, 0, 0, 61, 62, 0, 0, 63, 62, 0, 0, 65, 62, 0, 0, 74, 66, 0, 0, 75, 66, 0, 0, 118, 70, 0, 0, 119, 70, 0, 0, 194, 74, 0, 0, 195, 74, 0, 0, 243, 77, 0, 0, 242, 77, 0, 0, 151, 73, 0, 0, 150, 73, 0, 0, 91, 69, 0, 0, 90, 69, 0, 0, 63, 65, 0, 0, 62, 65, 0, 0, 66, 61, 0, 0, 68, 61, 0, 0, 70, 61, 0, 0, 1, 0, 0, 0, 72, 61, 0, 0, 74, 61, 0, 0, 76, 61, 0, 0, 78, 61, 0, 0, 80, 61, 0, 0, 82, 61, 0, 0, 84, 61, 0, 0, 86, 61, 0, 0, 88, 61, 0, 0, 90, 61, 0, 0, 92, 61, 0, 0, 94, 61, 0, 0, 96, 61, 0, 0, 98, 61, 0, 0, 100, 61, 0, 0, 1, 0, 0, 0, 102, 61, 0, 0, 104, 61, 0, 0, 106, 61, 0, 0, 108, 61, 0, 0, 110, 61, 0, 0, 112, 61, 0, 0, 114, 61, 0, 0, 116, 61, 0, 0, 118, 61, 0, 0, 120, 61, 0, 0, 122, 61, 0, 0, 124, 61, 0, 0, 126, 61, 0, 0, 128, 61, 0, 0, 130, 61, 0, 0, 1, 0, 0, 0, 132, 61, 0, 0, 134, 61, 0, 0, 136, 61, 0, 0, 138, 61, 0, 0, 140, 61, 0, 0, 142, 61, 0, 0, 144, 61, 0, 0, 146, 61, 0, 0, 148, 61, 0, 0, 150, 61, 0, 0, 152, 61, 0, 0, 154, 61, 0, 0, 156, 61, 0, 0, 158, 61, 0, 0, 160, 61, 0, 0, 1, 0, 0, 0, 162, 61, 0, 0, 164, 61, 0, 0, 166, 61, 0, 0, 168, 61, 0, 0, 170, 61, 0, 0, 172, 61, 0, 0, 174, 61, 0, 0, 176, 61, 0, 0, 178, 61, 0, 0, 180, 61, 0, 0, 182, 61, 0, 0, 184, 61, 0, 0, 186, 61, 0, 0, 188, 61, 0, 0, 190, 61, 0, 0, 1, 0, 0, 0, 192, 61, 0, 0, 194, 61, 0, 0, 196, 61, 0, 0, 198, 61, 0, 0, 200, 61, 0, 0, 202, 61, 0, 0, 204, 61, 0, 0, 206, 61, 0, 0, 208, 61, 0, 0, 210, 61, 0, 0, 212, 61, 0, 0, 214, 61, 0, 0, 216, 61, 0, 0, 218, 61, 0, 0, 220, 61, 0, 0, 1, 0, 0, 0, 222, 61, 0, 0, 224, 61, 0, 0, 226, 61, 0, 0, 228, 61, 0, 0, 230, 61, 0, 0, 232, 61, 0, 0, 234, 61, 0, 0, 236, 61, 0, 0, 238, 61, 0, 0, 240, 61, 0, 0, 242, 61, 0, 0, 244, 61, 0, 0, 246, 61, 0, 0, 248, 61, 0, 0, 250, 61, 0, 0, 1, 0, 0, 0, 252, 61, 0, 0, 254, 61, 0, 0, 0, 62, 0, 0, 2, 62, 0, 0, 4, 62, 0, 0, 6, 62, 0, 0, 8, 62, 0, 0, 10, 62, 0, 0, 12, 62, 0, 0, 14, 62, 0, 0, 16, 62, 0, 0, 18, 62, 0, 0, 20, 62, 0, 0, 22, 62, 0, 0, 24, 62, 0, 0, 1, 0, 0, 0, 26, 62, 0, 0, 28, 62, 0, 0, 30, 62, 0, 0, 32, 62, 0, 0, 34, 62, 0, 0, 36, 62, 0, 0, 38, 62, 0, 0, 40, 62, 0, 0, 42, 62, 0, 0, 44, 62, 0, 0, 46, 62, 0, 0, 48, 62, 0, 0, 50, 62, 0, 0, 52, 62, 0, 0, 54, 62, 0, 0, 1, 0, 0, 0, 56, 62, 0, 0, 58, 62, 0, 0, 60, 62, 0, 0, 62, 62, 0, 0, 64, 62, 0, 0, 76, 66, 0, 0, 77, 66, 0, 0, 120, 70, 0, 0, 121, 70, 0, 0, 196, 74, 0, 0, 197, 74, 0, 0, 241, 77, 0, 0, 240, 77, 0, 0, 149, 73, 0, 0, 148, 73, 0, 0, 89, 69, 0, 0, 88, 69, 0, 0, 61, 65, 0, 0, 60, 65, 0, 0, 65, 61, 0, 0, 64, 61, 0, 0, 99, 57, 0, 0, 0, 0, 0, 0, 101, 57, 0, 0, 103, 57, 0, 0, 105, 57, 0, 0, 107, 57, 0, 0, 109, 57, 0, 0, 111, 57, 0, 0, 113, 57, 0, 0, 115, 57, 0, 0, 117, 57, 0, 0, 119, 57, 0, 0, 121, 57, 0, 0, 123, 57, 0, 0, 125, 57, 0, 0, 127, 57, 0, 0, 129, 57, 0, 0, 0, 0, 0, 0, 131, 57, 0, 0, 133, 57, 0, 0, 135, 57, 0, 0, 137, 57, 0, 0, 139, 57, 0, 0, 141, 57, 0, 0, 143, 57, 0, 0, 145, 57, 0, 0, 147, 57, 0, 0, 149, 57, 0, 0, 151, 57, 0, 0, 153, 57, 0, 0, 155, 57, 0, 0, 157, 57, 0, 0, 159, 57, 0, 0, 0, 0, 0, 0, 161, 57, 0, 0, 163, 57, 0, 0, 165, 57, 0, 0, 167, 57, 0, 0, 169, 57, 0, 0, 171, 57, 0, 0, 173, 57, 0, 0, 175, 57, 0, 0, 177, 57, 0, 0, 179, 57, 0, 0, 181, 57, 0, 0, 183, 57, 0, 0, 185, 57, 0, 0, 187, 57, 0, 0, 189, 57, 0, 0, 0, 0, 0, 0, 191, 57, 0, 0, 193, 57, 0, 0, 195, 57, 0, 0, 197, 57, 0, 0, 199, 57, 0, 0, 201, 57, 0, 0, 203, 57, 0, 0, 205, 57, 0, 0, 207, 57, 0, 0, 209, 57, 0, 0, 211, 57, 0, 0, 213, 57, 0, 0, 215, 57, 0, 0, 217, 57, 0, 0, 219, 57, 0, 0, 0, 0, 0, 0, 221, 57, 0, 0, 223, 57, 0, 0, 225, 57, 0, 0, 227, 57, 0, 0, 229, 57, 0, 0, 231, 57, 0, 0, 233, 57, 0, 0, 235, 57, 0, 0, 237, 57, 0, 0, 239, 57, 0, 0, 241, 57, 0, 0, 243, 57, 0, 0, 245, 57, 0, 0, 247, 57, 0, 0, 249, 57, 0, 0, 0, 0, 0, 0, 251, 57, 0, 0, 253, 57, 0, 0, 255, 57, 0, 0, 1, 58, 0, 0, 3, 58, 0, 0, 5, 58, 0, 0, 7, 58, 0, 0, 9, 58, 0, 0, 11, 58, 0, 0, 13, 58, 0, 0, 15, 58, 0, 0, 17, 58, 0, 0, 19, 58, 0, 0, 21, 58, 0, 0, 23, 58, 0, 0, 0, 0, 0, 0, 25, 58, 0, 0, 27, 58, 0, 0, 29, 58, 0, 0, 31, 58, 0, 0, 33, 58, 0, 0, 35, 58, 0, 0, 37, 58, 0, 0, 39, 58, 0, 0, 41, 58, 0, 0, 43, 58, 0, 0, 45, 58, 0, 0, 47, 58, 0, 0, 49, 58, 0, 0, 51, 58, 0, 0, 53, 58, 0, 0, 0, 0, 0, 0, 55, 58, 0, 0, 57, 58, 0, 0, 59, 58, 0, 0, 61, 58, 0, 0, 63, 58, 0, 0, 65, 58, 0, 0, 67, 58, 0, 0, 69, 58, 0, 0, 71, 58, 0, 0, 73, 58, 0, 0, 75, 58, 0, 0, 77, 58, 0, 0, 79, 58, 0, 0, 81, 58, 0, 0, 83, 58, 0, 0, 0, 0, 0, 0, 85, 58, 0, 0, 87, 58, 0, 0, 89, 58, 0, 0, 66, 62, 0, 0, 67, 62, 0, 0, 78, 66, 0, 0, 79, 66, 0, 0, 122, 70, 0, 0, 123, 70, 0, 0, 198, 74, 0, 0, 199, 74, 0, 0, 239, 77, 0, 0, 238, 77, 0, 0, 147, 73, 0, 0, 146, 73, 0, 0, 87, 69, 0, 0, 86, 69, 0, 0, 59, 65, 0, 0, 58, 65, 0, 0, 63, 61, 0, 0, 62, 61, 0, 0, 98, 57, 0, 0, 1, 0, 0, 0, 100, 57, 0, 0, 102, 57, 0, 0, 104, 57, 0, 0, 106, 57, 0, 0, 108, 57, 0, 0, 110, 57, 0, 0, 112, 57, 0, 0, 114, 57, 0, 0, 116, 57, 0, 0, 118, 57, 0, 0, 120, 57, 0, 0, 122, 57, 0, 0, 124, 57, 0, 0, 126, 57, 0, 0, 128, 57, 0, 0, 1, 0, 0, 0, 130, 57, 0, 0, 132, 57, 0, 0, 134, 57, 0, 0, 136, 57, 0, 0, 138, 57, 0, 0, 140, 57, 0, 0, 142, 57, 0, 0, 144, 57, 0, 0, 146, 57, 0, 0, 148, 57, 0, 0, 150, 57, 0, 0, 152, 57, 0, 0, 154, 57, 0, 0, 156, 57, 0, 0, 158, 57, 0, 0, 1, 0, 0, 0, 160, 57, 0, 0, 162, 57, 0, 0, 164, 57, 0, 0, 166, 57, 0, 0, 168, 57, 0, 0, 170, 57, 0, 0, 172, 57, 0, 0, 174, 57, 0, 0, 176, 57, 0, 0, 178, 57, 0, 0, 180, 57, 0, 0, 182, 57, 0, 0, 184, 57, 0, 0, 186, 57, 0, 0, 188, 57, 0, 0, 1, 0, 0, 0, 190, 57, 0, 0, 192, 57, 0, 0, 194, 57, 0, 0, 196, 57, 0, 0, 198, 57, 0, 0, 200, 57, 0, 0, 202, 57, 0, 0, 204, 57, 0, 0, 206, 57, 0, 0, 208, 57, 0, 0, 210, 57, 0, 0, 212, 57, 0, 0, 214, 57, 0, 0, 216, 57, 0, 0, 218, 57, 0, 0, 1, 0, 0, 0, 220, 57, 0, 0, 222, 57, 0, 0, 224, 57, 0, 0, 226, 57, 0, 0, 228, 57, 0, 0, 230, 57, 0, 0, 232, 57, 0, 0, 234, 57, 0, 0, 236, 57, 0, 0, 238, 57, 0, 0, 240, 57, 0, 0, 242, 57, 0, 0, 244, 57, 0, 0, 246, 57, 0, 0, 248, 57, 0, 0, 1, 0, 0, 0, 250, 57, 0, 0, 252, 57, 0, 0, 254, 57, 0, 0, 0, 58, 0, 0, 2, 58, 0, 0, 4, 58, 0, 0, 6, 58, 0, 0, 8, 58, 0, 0, 10, 58, 0, 0, 12, 58, 0, 0, 14, 58, 0, 0, 16, 58, 0, 0, 18, 58, 0, 0, 20, 58, 0, 0, 22, 58, 0, 0, 1, 0, 0, 0, 24, 58, 0, 0, 26, 58, 0, 0, 28, 58, 0, 0, 30, 58, 0, 0, 32, 58, 0, 0, 34, 58, 0, 0, 36, 58, 0, 0, 38, 58, 0, 0, 40, 58, 0, 0, 42, 58, 0, 0, 44, 58, 0, 0, 46, 58, 0, 0, 48, 58, 0, 0, 50, 58, 0, 0, 52, 58, 0, 0, 1, 0, 0, 0, 54, 58, 0, 0, 56, 58, 0, 0, 58, 58, 0, 0, 60, 58, 0, 0, 62, 58, 0, 0, 64, 58, 0, 0, 66, 58, 0, 0, 68, 58, 0, 0, 70, 58, 0, 0, 72, 58, 0, 0, 74, 58, 0, 0, 76, 58, 0, 0, 78, 58, 0, 0, 80, 58, 0, 0, 82, 58, 0, 0, 1, 0, 0, 0, 84, 58, 0, 0, 86, 58, 0, 0, 88, 58, 0, 0, 68, 62, 0, 0, 69, 62, 0, 0, 80, 66, 0, 0, 81, 66, 0, 0, 124, 70, 0, 0, 125, 70, 0, 0, 200, 74, 0, 0, 201, 74, 0, 0, 237, 77, 0, 0, 236, 77, 0, 0, 145, 73, 0, 0, 144, 73, 0, 0, 85, 69, 0, 0, 84, 69, 0, 0, 57, 65, 0, 0, 56, 65, 0, 0, 61, 61, 0, 0, 60, 61, 0, 0, 97, 57, 0, 0, 0, 0, 0, 0, 96, 57, 0, 0, 163, 53, 0, 0, 165, 53, 0, 0, 167, 53, 0, 0, 169, 53, 0, 0, 171, 53, 0, 0, 173, 53, 0, 0, 175, 53, 0, 0, 177, 53, 0, 0, 179, 53, 0, 0, 181, 53, 0, 0, 183, 53, 0, 0, 185, 53, 0, 0, 187, 53, 0, 0, 189, 53, 0, 0, 0, 0, 0, 0, 191, 53, 0, 0, 193, 53, 0, 0, 195, 53, 0, 0, 197, 53, 0, 0, 199, 53, 0, 0, 201, 53, 0, 0, 203, 53, 0, 0, 205, 53, 0, 0, 207, 53, 0, 0, 209, 53, 0, 0, 211, 53, 0, 0, 213, 53, 0, 0, 215, 53, 0, 0, 217, 53, 0, 0, 219, 53, 0, 0, 0, 0, 0, 0, 221, 53, 0, 0, 223, 53, 0, 0, 225, 53, 0, 0, 227, 53, 0, 0, 229, 53, 0, 0, 231, 53, 0, 0, 233, 53, 0, 0, 235, 53, 0, 0, 237, 53, 0, 0, 239, 53, 0, 0, 241, 53, 0, 0, 243, 53, 0, 0, 245, 53, 0, 0, 247, 53, 0, 0, 249, 53, 0, 0, 0, 0, 0, 0, 251, 53, 0, 0, 253, 53, 0, 0, 255, 53, 0, 0, 1, 54, 0, 0, 3, 54, 0, 0, 5, 54, 0, 0, 7, 54, 0, 0, 9, 54, 0, 0, 11, 54, 0, 0, 13, 54, 0, 0, 15, 54, 0, 0, 17, 54, 0, 0, 19, 54, 0, 0, 21, 54, 0, 0, 23, 54, 0, 0, 0, 0, 0, 0, 25, 54, 0, 0, 27, 54, 0, 0, 29, 54, 0, 0, 31, 54, 0, 0, 33, 54, 0, 0, 35, 54, 0, 0, 37, 54, 0, 0, 39, 54, 0, 0, 41, 54, 0, 0, 43, 54, 0, 0, 45, 54, 0, 0, 47, 54, 0, 0, 49, 54, 0, 0, 51, 54, 0, 0, 53, 54, 0, 0, 0, 0, 0, 0, 55, 54, 0, 0, 57, 54, 0, 0, 59, 54, 0, 0, 61, 54, 0, 0, 63, 54, 0, 0, 65, 54, 0, 0, 67, 54, 0, 0, 69, 54, 0, 0, 71, 54, 0, 0, 73, 54, 0, 0, 75, 54, 0, 0, 77, 54, 0, 0, 79, 54, 0, 0, 81, 54, 0, 0, 83, 54, 0, 0, 0, 0, 0, 0, 85, 54, 0, 0, 87, 54, 0, 0, 89, 54, 0, 0, 91, 54, 0, 0, 93, 54, 0, 0, 95, 54, 0, 0, 97, 54, 0, 0, 99, 54, 0, 0, 101, 54, 0, 0, 103, 54, 0, 0, 105, 54, 0, 0, 107, 54, 0, 0, 109, 54, 0, 0, 111, 54, 0, 0, 113, 54, 0, 0, 0, 0, 0, 0, 115, 54, 0, 0, 117, 54, 0, 0, 119, 54, 0, 0, 121, 54, 0, 0, 123, 54, 0, 0, 125, 54, 0, 0, 127, 54, 0, 0, 129, 54, 0, 0, 131, 54, 0, 0, 133, 54, 0, 0, 135, 54, 0, 0, 137, 54, 0, 0, 139, 54, 0, 0, 141, 54, 0, 0, 143, 54, 0, 0, 0, 0, 0, 0, 145, 54, 0, 0, 90, 58, 0, 0, 91, 58, 0, 0, 70, 62, 0, 0, 71, 62, 0, 0, 82, 66, 0, 0, 83, 66, 0, 0, 126, 70, 0, 0, 127, 70, 0, 0, 202, 74, 0, 0, 203, 74, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 235, 77, 0, 0, 234, 77, 0, 0, 143, 73, 0, 0, 142, 73, 0, 0, 83, 69, 0, 0, 82, 69, 0, 0, 55, 65, 0, 0, 54, 65, 0, 0, 59, 61, 0, 0, 58, 61, 0, 0, 95, 57, 0, 0, 0, 0, 0, 0, 94, 57, 0, 0, 162, 53, 0, 0, 164, 53, 0, 0, 166, 53, 0, 0, 168, 53, 0, 0, 170, 53, 0, 0, 172, 53, 0, 0, 174, 53, 0, 0, 176, 53, 0, 0, 178, 53, 0, 0, 180, 53, 0, 0, 182, 53, 0, 0, 184, 53, 0, 0, 186, 53, 0, 0, 188, 53, 0, 0, 0, 0, 0, 0, 190, 53, 0, 0, 192, 53, 0, 0, 194, 53, 0, 0, 196, 53, 0, 0, 198, 53, 0, 0, 200, 53, 0, 0, 202, 53, 0, 0, 204, 53, 0, 0, 206, 53, 0, 0, 208, 53, 0, 0, 210, 53, 0, 0, 212, 53, 0, 0, 214, 53, 0, 0, 216, 53, 0, 0, 218, 53, 0, 0, 0, 0, 0, 0, 220, 53, 0, 0, 222, 53, 0, 0, 224, 53, 0, 0, 226, 53, 0, 0, 228, 53, 0, 0, 230, 53, 0, 0, 232, 53, 0, 0, 234, 53, 0, 0, 236, 53, 0, 0, 238, 53, 0, 0, 240, 53, 0, 0, 242, 53, 0, 0, 244, 53, 0, 0, 246, 53, 0, 0, 248, 53, 0, 0, 0, 0, 0, 0, 250, 53, 0, 0, 252, 53, 0, 0, 254, 53, 0, 0, 0, 54, 0, 0, 2, 54, 0, 0, 4, 54, 0, 0, 6, 54, 0, 0, 8, 54, 0, 0, 10, 54, 0, 0, 12, 54, 0, 0, 14, 54, 0, 0, 16, 54, 0, 0, 18, 54, 0, 0, 20, 54, 0, 0, 22, 54, 0, 0, 0, 0, 0, 0, 24, 54, 0, 0, 26, 54, 0, 0, 28, 54, 0, 0, 30, 54, 0, 0, 32, 54, 0, 0, 34, 54, 0, 0, 36, 54, 0, 0, 38, 54, 0, 0, 40, 54, 0, 0, 42, 54, 0, 0, 44, 54, 0, 0, 46, 54, 0, 0, 48, 54, 0, 0, 50, 54, 0, 0, 52, 54, 0, 0, 0, 0, 0, 0, 54, 54, 0, 0, 56, 54, 0, 0, 58, 54, 0, 0, 60, 54, 0, 0, 62, 54, 0, 0, 64, 54, 0, 0, 66, 54, 0, 0, 68, 54, 0, 0, 70, 54, 0, 0, 72, 54, 0, 0, 74, 54, 0, 0, 76, 54, 0, 0, 78, 54, 0, 0, 80, 54, 0, 0, 82, 54, 0, 0, 0, 0, 0, 0, 84, 54, 0, 0, 86, 54, 0, 0, 88, 54, 0, 0, 90, 54, 0, 0, 92, 54, 0, 0, 94, 54, 0, 0, 96, 54, 0, 0, 98, 54, 0, 0, 100, 54, 0, 0, 102, 54, 0, 0, 104, 54, 0, 0, 106, 54, 0, 0, 108, 54, 0, 0, 110, 54, 0, 0, 112, 54, 0, 0, 0, 0, 0, 0, 114, 54, 0, 0, 116, 54, 0, 0, 118, 54, 0, 0, 120, 54, 0, 0, 122, 54, 0, 0, 124, 54, 0, 0, 126, 54, 0, 0, 128, 54, 0, 0, 130, 54, 0, 0, 132, 54, 0, 0, 134, 54, 0, 0, 136, 54, 0, 0, 138, 54, 0, 0, 140, 54, 0, 0, 142, 54, 0, 0, 0, 0, 0, 0, 144, 54, 0, 0, 92, 58, 0, 0, 93, 58, 0, 0, 72, 62, 0, 0, 73, 62, 0, 0, 84, 66, 0, 0, 85, 66, 0, 0, 128, 70, 0, 0, 129, 70, 0, 0, 204, 74, 0, 0, 205, 74, 0, 0, 233, 77, 0, 0, 232, 77, 0, 0, 141, 73, 0, 0, 140, 73, 0, 0, 81, 69, 0, 0, 80, 69, 0, 0, 53, 65, 0, 0, 52, 65, 0, 0, 57, 61, 0, 0, 56, 61, 0, 0, 93, 57, 0, 0, 1, 0, 0, 0, 92, 57, 0, 0, 161, 53, 0, 0, 160, 53, 0, 0, 3, 50, 0, 0, 5, 50, 0, 0, 7, 50, 0, 0, 9, 50, 0, 0, 11, 50, 0, 0, 13, 50, 0, 0, 15, 50, 0, 0, 17, 50, 0, 0, 19, 50, 0, 0, 21, 50, 0, 0, 23, 50, 0, 0, 25, 50, 0, 0, 1, 0, 0, 0, 27, 50, 0, 0, 29, 50, 0, 0, 31, 50, 0, 0, 33, 50, 0, 0, 35, 50, 0, 0, 37, 50, 0, 0, 39, 50, 0, 0, 41, 50, 0, 0, 43, 50, 0, 0, 45, 50, 0, 0, 47, 50, 0, 0, 49, 50, 0, 0, 51, 50, 0, 0, 53, 50, 0, 0, 55, 50, 0, 0, 1, 0, 0, 0, 57, 50, 0, 0, 59, 50, 0, 0, 61, 50, 0, 0, 63, 50, 0, 0, 65, 50, 0, 0, 67, 50, 0, 0, 69, 50, 0, 0, 71, 50, 0, 0, 73, 50, 0, 0, 75, 50, 0, 0, 77, 50, 0, 0, 79, 50, 0, 0, 81, 50, 0, 0, 83, 50, 0, 0, 85, 50, 0, 0, 1, 0, 0, 0, 87, 50, 0, 0, 89, 50, 0, 0, 91, 50, 0, 0, 93, 50, 0, 0, 95, 50, 0, 0, 97, 50, 0, 0, 99, 50, 0, 0, 101, 50, 0, 0, 103, 50, 0, 0, 105, 50, 0, 0, 107, 50, 0, 0, 109, 50, 0, 0, 111, 50, 0, 0, 113, 50, 0, 0, 115, 50, 0, 0, 1, 0, 0, 0, 117, 50, 0, 0, 119, 50, 0, 0, 121, 50, 0, 0, 123, 50, 0, 0, 125, 50, 0, 0, 127, 50, 0, 0, 129, 50, 0, 0, 131, 50, 0, 0, 133, 50, 0, 0, 135, 50, 0, 0, 137, 50, 0, 0, 139, 50, 0, 0, 141, 50, 0, 0, 143, 50, 0, 0, 145, 50, 0, 0, 1, 0, 0, 0, 147, 50, 0, 0, 149, 50, 0, 0, 151, 50, 0, 0, 153, 50, 0, 0, 155, 50, 0, 0, 157, 50, 0, 0, 159, 50, 0, 0, 161, 50, 0, 0, 163, 50, 0, 0, 165, 50, 0, 0, 167, 50, 0, 0, 169, 50, 0, 0, 171, 50, 0, 0, 173, 50, 0, 0, 175, 50, 0, 0, 1, 0, 0, 0, 177, 50, 0, 0, 179, 50, 0, 0, 181, 50, 0, 0, 183, 50, 0, 0, 185, 50, 0, 0, 187, 50, 0, 0, 189, 50, 0, 0, 191, 50, 0, 0, 193, 50, 0, 0, 195, 50, 0, 0, 197, 50, 0, 0, 199, 50, 0, 0, 201, 50, 0, 0, 203, 50, 0, 0, 205, 50, 0, 0, 1, 0, 0, 0, 207, 50, 0, 0, 209, 50, 0, 0, 211, 50, 0, 0, 213, 50, 0, 0, 215, 50, 0, 0, 217, 50, 0, 0, 219, 50, 0, 0, 221, 50, 0, 0, 223, 50, 0, 0, 225, 50, 0, 0, 227, 50, 0, 0, 229, 50, 0, 0, 231, 50, 0, 0, 233, 50, 0, 0, 146, 54, 0, 0, 1, 0, 0, 0, 147, 54, 0, 0, 94, 58, 0, 0, 95, 58, 0, 0, 74, 62, 0, 0, 75, 62, 0, 0, 86, 66, 0, 0, 87, 66, 0, 0, 130, 70, 0, 0, 131, 70, 0, 0, 206, 74, 0, 0, 207, 74, 0, 0, 231, 77, 0, 0, 230, 77, 0, 0, 139, 73, 0, 0, 138, 73, 0, 0, 79, 69, 0, 0, 78, 69, 0, 0, 51, 65, 0, 0, 50, 65, 0, 0, 55, 61, 0, 0, 54, 61, 0, 0, 91, 57, 0, 0, 0, 0, 0, 0, 90, 57, 0, 0, 159, 53, 0, 0, 158, 53, 0, 0, 2, 50, 0, 0, 4, 50, 0, 0, 6, 50, 0, 0, 8, 50, 0, 0, 10, 50, 0, 0, 12, 50, 0, 0, 14, 50, 0, 0, 16, 50, 0, 0, 18, 50, 0, 0, 20, 50, 0, 0, 22, 50, 0, 0, 24, 50, 0, 0, 0, 0, 0, 0, 26, 50, 0, 0, 28, 50, 0, 0, 30, 50, 0, 0, 32, 50, 0, 0, 34, 50, 0, 0, 36, 50, 0, 0, 38, 50, 0, 0, 40, 50, 0, 0, 42, 50, 0, 0, 44, 50, 0, 0, 46, 50, 0, 0, 48, 50, 0, 0, 50, 50, 0, 0, 52, 50, 0, 0, 54, 50, 0, 0, 0, 0, 0, 0, 56, 50, 0, 0, 58, 50, 0, 0, 60, 50, 0, 0, 62, 50, 0, 0, 64, 50, 0, 0, 66, 50, 0, 0, 68, 50, 0, 0, 70, 50, 0, 0, 72, 50, 0, 0, 74, 50, 0, 0, 76, 50, 0, 0, 78, 50, 0, 0, 80, 50, 0, 0, 82, 50, 0, 0, 84, 50, 0, 0, 0, 0, 0, 0, 86, 50, 0, 0, 88, 50, 0, 0, 90, 50, 0, 0, 92, 50, 0, 0, 94, 50, 0, 0, 96, 50, 0, 0, 98, 50, 0, 0, 100, 50, 0, 0, 102, 50, 0, 0, 104, 50, 0, 0, 106, 50, 0, 0, 108, 50, 0, 0, 110, 50, 0, 0, 112, 50, 0, 0, 114, 50, 0, 0, 0, 0, 0, 0, 116, 50, 0, 0, 118, 50, 0, 0, 120, 50, 0, 0, 122, 50, 0, 0, 124, 50, 0, 0, 126, 50, 0, 0, 128, 50, 0, 0, 130, 50, 0, 0, 132, 50, 0, 0, 134, 50, 0, 0, 136, 50, 0, 0, 138, 50, 0, 0, 140, 50, 0, 0, 142, 50, 0, 0, 144, 50, 0, 0, 0, 0, 0, 0, 146, 50, 0, 0, 148, 50, 0, 0, 150, 50, 0, 0, 152, 50, 0, 0, 154, 50, 0, 0, 156, 50, 0, 0, 158, 50, 0, 0, 160, 50, 0, 0, 162, 50, 0, 0, 164, 50, 0, 0, 166, 50, 0, 0, 168, 50, 0, 0, 170, 50, 0, 0, 172, 50, 0, 0, 174, 50, 0, 0, 0, 0, 0, 0, 176, 50, 0, 0, 178, 50, 0, 0, 180, 50, 0, 0, 182, 50, 0, 0, 184, 50, 0, 0, 186, 50, 0, 0, 188, 50, 0, 0, 190, 50, 0, 0, 192, 50, 0, 0, 194, 50, 0, 0, 196, 50, 0, 0, 198, 50, 0, 0, 200, 50, 0, 0, 202, 50, 0, 0, 204, 50, 0, 0, 0, 0, 0, 0, 206, 50, 0, 0, 208, 50, 0, 0, 210, 50, 0, 0, 212, 50, 0, 0, 214, 50, 0, 0, 216, 50, 0, 0, 218, 50, 0, 0, 220, 50, 0, 0, 222, 50, 0, 0, 224, 50, 0, 0, 226, 50, 0, 0, 228, 50, 0, 0, 230, 50, 0, 0, 232, 50, 0, 0, 148, 54, 0, 0, 0, 0, 0, 0, 149, 54, 0, 0, 96, 58, 0, 0, 97, 58, 0, 0, 76, 62, 0, 0, 77, 62, 0, 0, 88, 66, 0, 0, 89, 66, 0, 0, 132, 70, 0, 0, 133, 70, 0, 0, 208, 74, 0, 0, 209, 74, 0, 0, 229, 77, 0, 0, 228, 77, 0, 0, 137, 73, 0, 0, 136, 73, 0, 0, 77, 69, 0, 0, 76, 69, 0, 0, 49, 65, 0, 0, 48, 65, 0, 0, 53, 61, 0, 0, 52, 61, 0, 0, 89, 57, 0, 0, 1, 0, 0, 0, 88, 57, 0, 0, 157, 53, 0, 0, 156, 53, 0, 0, 1, 50, 0, 0, 0, 50, 0, 0, 131, 46, 0, 0, 133, 46, 0, 0, 135, 46, 0, 0, 137, 46, 0, 0, 139, 46, 0, 0, 141, 46, 0, 0, 143, 46, 0, 0, 145, 46, 0, 0, 147, 46, 0, 0, 149, 46, 0, 0, 1, 0, 0, 0, 151, 46, 0, 0, 153, 46, 0, 0, 155, 46, 0, 0, 157, 46, 0, 0, 159, 46, 0, 0, 161, 46, 0, 0, 163, 46, 0, 0, 165, 46, 0, 0, 167, 46, 0, 0, 169, 46, 0, 0, 171, 46, 0, 0, 173, 46, 0, 0, 175, 46, 0, 0, 177, 46, 0, 0, 179, 46, 0, 0, 1, 0, 0, 0, 181, 46, 0, 0, 183, 46, 0, 0, 185, 46, 0, 0, 187, 46, 0, 0, 189, 46, 0, 0, 191, 46, 0, 0, 193, 46, 0, 0, 195, 46, 0, 0, 197, 46, 0, 0, 199, 46, 0, 0, 201, 46, 0, 0, 203, 46, 0, 0, 205, 46, 0, 0, 207, 46, 0, 0, 209, 46, 0, 0, 1, 0, 0, 0, 211, 46, 0, 0, 213, 46, 0, 0, 215, 46, 0, 0, 217, 46, 0, 0, 219, 46, 0, 0, 221, 46, 0, 0, 223, 46, 0, 0, 225, 46, 0, 0, 227, 46, 0, 0, 229, 46, 0, 0, 231, 46, 0, 0, 233, 46, 0, 0, 235, 46, 0, 0, 237, 46, 0, 0, 239, 46, 0, 0, 1, 0, 0, 0, 241, 46, 0, 0, 243, 46, 0, 0, 245, 46, 0, 0, 247, 46, 0, 0, 249, 46, 0, 0, 251, 46, 0, 0, 253, 46, 0, 0, 255, 46, 0, 0, 1, 47, 0, 0, 3, 47, 0, 0, 5, 47, 0, 0, 7, 47, 0, 0, 9, 47, 0, 0, 11, 47, 0, 0, 13, 47, 0, 0, 1, 0, 0, 0, 15, 47, 0, 0, 17, 47, 0, 0, 19, 47, 0, 0, 21, 47, 0, 0, 23, 47, 0, 0, 25, 47, 0, 0, 27, 47, 0, 0, 29, 47, 0, 0, 31, 47, 0, 0, 33, 47, 0, 0, 35, 47, 0, 0, 37, 47, 0, 0, 39, 47, 0, 0, 41, 47, 0, 0, 43, 47, 0, 0, 1, 0, 0, 0, 45, 47, 0, 0, 47, 47, 0, 0, 49, 47, 0, 0, 51, 47, 0, 0, 53, 47, 0, 0, 55, 47, 0, 0, 57, 47, 0, 0, 59, 47, 0, 0, 61, 47, 0, 0, 63, 47, 0, 0, 65, 47, 0, 0, 67, 47, 0, 0, 69, 47, 0, 0, 71, 47, 0, 0, 73, 47, 0, 0, 1, 0, 0, 0, 75, 47, 0, 0, 77, 47, 0, 0, 79, 47, 0, 0, 81, 47, 0, 0, 83, 47, 0, 0, 85, 47, 0, 0, 87, 47, 0, 0, 89, 47, 0, 0, 91, 47, 0, 0, 93, 47, 0, 0, 95, 47, 0, 0, 97, 47, 0, 0, 234, 50, 0, 0, 235, 50, 0, 0, 150, 54, 0, 0, 1, 0, 0, 0, 151, 54, 0, 0, 98, 58, 0, 0, 99, 58, 0, 0, 78, 62, 0, 0, 79, 62, 0, 0, 90, 66, 0, 0, 91, 66, 0, 0, 134, 70, 0, 0, 135, 70, 0, 0, 210, 74, 0, 0, 211, 74, 0, 0, 227, 77, 0, 0, 226, 77, 0, 0, 135, 73, 0, 0, 134, 73, 0, 0, 75, 69, 0, 0, 74, 69, 0, 0, 47, 65, 0, 0, 46, 65, 0, 0, 51, 61, 0, 0, 50, 61, 0, 0, 87, 57, 0, 0, 0, 0, 0, 0, 86, 57, 0, 0, 155, 53, 0, 0, 154, 53, 0, 0, 255, 49, 0, 0, 254, 49, 0, 0, 130, 46, 0, 0, 132, 46, 0, 0, 134, 46, 0, 0, 136, 46, 0, 0, 138, 46, 0, 0, 140, 46, 0, 0, 142, 46, 0, 0, 144, 46, 0, 0, 146, 46, 0, 0, 148, 46, 0, 0, 0, 0, 0, 0, 150, 46, 0, 0, 152, 46, 0, 0, 154, 46, 0, 0, 156, 46, 0, 0, 158, 46, 0, 0, 160, 46, 0, 0, 162, 46, 0, 0, 164, 46, 0, 0, 166, 46, 0, 0, 168, 46, 0, 0, 170, 46, 0, 0, 172, 46, 0, 0, 174, 46, 0, 0, 176, 46, 0, 0, 178, 46, 0, 0, 0, 0, 0, 0, 180, 46, 0, 0, 182, 46, 0, 0, 184, 46, 0, 0, 186, 46, 0, 0, 188, 46, 0, 0, 190, 46, 0, 0, 192, 46, 0, 0, 194, 46, 0, 0, 196, 46, 0, 0, 198, 46, 0, 0, 200, 46, 0, 0, 202, 46, 0, 0, 204, 46, 0, 0, 206, 46, 0, 0, 208, 46, 0, 0, 0, 0, 0, 0, 210, 46, 0, 0, 212, 46, 0, 0, 214, 46, 0, 0, 216, 46, 0, 0, 218, 46, 0, 0, 220, 46, 0, 0, 222, 46, 0, 0, 224, 46, 0, 0, 226, 46, 0, 0, 228, 46, 0, 0, 230, 46, 0, 0, 232, 46, 0, 0, 234, 46, 0, 0, 236, 46, 0, 0, 238, 46, 0, 0, 0, 0, 0, 0, 240, 46, 0, 0, 242, 46, 0, 0, 244, 46, 0, 0, 246, 46, 0, 0, 248, 46, 0, 0, 250, 46, 0, 0, 252, 46, 0, 0, 254, 46, 0, 0, 0, 47, 0, 0, 2, 47, 0, 0, 4, 47, 0, 0, 6, 47, 0, 0, 8, 47, 0, 0, 10, 47, 0, 0, 12, 47, 0, 0, 0, 0, 0, 0, 14, 47, 0, 0, 16, 47, 0, 0, 18, 47, 0, 0, 20, 47, 0, 0, 22, 47, 0, 0, 24, 47, 0, 0, 26, 47, 0, 0, 28, 47, 0, 0, 30, 47, 0, 0, 32, 47, 0, 0, 34, 47, 0, 0, 36, 47, 0, 0, 38, 47, 0, 0, 40, 47, 0, 0, 42, 47, 0, 0, 0, 0, 0, 0, 44, 47, 0, 0, 46, 47, 0, 0, 48, 47, 0, 0, 50, 47, 0, 0, 52, 47, 0, 0, 54, 47, 0, 0, 56, 47, 0, 0, 58, 47], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+allocate([60, 47, 0, 0, 62, 47, 0, 0, 64, 47, 0, 0, 66, 47, 0, 0, 68, 47, 0, 0, 70, 47, 0, 0, 72, 47, 0, 0, 0, 0, 0, 0, 74, 47, 0, 0, 76, 47, 0, 0, 78, 47, 0, 0, 80, 47, 0, 0, 82, 47, 0, 0, 84, 47, 0, 0, 86, 47, 0, 0, 88, 47, 0, 0, 90, 47, 0, 0, 92, 47, 0, 0, 94, 47, 0, 0, 96, 47, 0, 0, 236, 50, 0, 0, 237, 50, 0, 0, 152, 54, 0, 0, 0, 0, 0, 0, 153, 54, 0, 0, 100, 58, 0, 0, 101, 58, 0, 0, 80, 62, 0, 0, 81, 62, 0, 0, 92, 66, 0, 0, 93, 66, 0, 0, 136, 70, 0, 0, 137, 70, 0, 0, 212, 74, 0, 0, 213, 74, 0, 0, 225, 77, 0, 0, 224, 77, 0, 0, 133, 73, 0, 0, 132, 73, 0, 0, 73, 69, 0, 0, 72, 69, 0, 0, 45, 65, 0, 0, 44, 65, 0, 0, 49, 61, 0, 0, 48, 61, 0, 0, 85, 57, 0, 0, 1, 0, 0, 0, 84, 57, 0, 0, 153, 53, 0, 0, 152, 53, 0, 0, 253, 49, 0, 0, 252, 49, 0, 0, 129, 46, 0, 0, 128, 46, 0, 0, 35, 43, 0, 0, 37, 43, 0, 0, 39, 43, 0, 0, 41, 43, 0, 0, 43, 43, 0, 0, 45, 43, 0, 0, 47, 43, 0, 0, 49, 43, 0, 0, 1, 0, 0, 0, 51, 43, 0, 0, 53, 43, 0, 0, 55, 43, 0, 0, 57, 43, 0, 0, 59, 43, 0, 0, 61, 43, 0, 0, 63, 43, 0, 0, 65, 43, 0, 0, 67, 43, 0, 0, 69, 43, 0, 0, 71, 43, 0, 0, 73, 43, 0, 0, 75, 43, 0, 0, 77, 43, 0, 0, 79, 43, 0, 0, 1, 0, 0, 0, 81, 43, 0, 0, 83, 43, 0, 0, 85, 43, 0, 0, 87, 43, 0, 0, 89, 43, 0, 0, 91, 43, 0, 0, 93, 43, 0, 0, 95, 43, 0, 0, 97, 43, 0, 0, 99, 43, 0, 0, 101, 43, 0, 0, 103, 43, 0, 0, 105, 43, 0, 0, 107, 43, 0, 0, 109, 43, 0, 0, 1, 0, 0, 0, 111, 43, 0, 0, 113, 43, 0, 0, 115, 43, 0, 0, 117, 43, 0, 0, 119, 43, 0, 0, 121, 43, 0, 0, 123, 43, 0, 0, 125, 43, 0, 0, 127, 43, 0, 0, 129, 43, 0, 0, 131, 43, 0, 0, 133, 43, 0, 0, 135, 43, 0, 0, 137, 43, 0, 0, 139, 43, 0, 0, 1, 0, 0, 0, 141, 43, 0, 0, 143, 43, 0, 0, 145, 43, 0, 0, 147, 43, 0, 0, 149, 43, 0, 0, 151, 43, 0, 0, 153, 43, 0, 0, 155, 43, 0, 0, 157, 43, 0, 0, 159, 43, 0, 0, 161, 43, 0, 0, 163, 43, 0, 0, 165, 43, 0, 0, 167, 43, 0, 0, 169, 43, 0, 0, 1, 0, 0, 0, 171, 43, 0, 0, 173, 43, 0, 0, 175, 43, 0, 0, 177, 43, 0, 0, 179, 43, 0, 0, 181, 43, 0, 0, 183, 43, 0, 0, 185, 43, 0, 0, 187, 43, 0, 0, 189, 43, 0, 0, 191, 43, 0, 0, 193, 43, 0, 0, 195, 43, 0, 0, 197, 43, 0, 0, 199, 43, 0, 0, 1, 0, 0, 0, 201, 43, 0, 0, 203, 43, 0, 0, 205, 43, 0, 0, 207, 43, 0, 0, 209, 43, 0, 0, 211, 43, 0, 0, 213, 43, 0, 0, 215, 43, 0, 0, 217, 43, 0, 0, 219, 43, 0, 0, 221, 43, 0, 0, 223, 43, 0, 0, 225, 43, 0, 0, 227, 43, 0, 0, 229, 43, 0, 0, 1, 0, 0, 0, 231, 43, 0, 0, 233, 43, 0, 0, 235, 43, 0, 0, 237, 43, 0, 0, 239, 43, 0, 0, 241, 43, 0, 0, 243, 43, 0, 0, 245, 43, 0, 0, 247, 43, 0, 0, 249, 43, 0, 0, 98, 47, 0, 0, 99, 47, 0, 0, 238, 50, 0, 0, 239, 50, 0, 0, 154, 54, 0, 0, 1, 0, 0, 0, 155, 54, 0, 0, 102, 58, 0, 0, 103, 58, 0, 0, 82, 62, 0, 0, 83, 62, 0, 0, 94, 66, 0, 0, 95, 66, 0, 0, 138, 70, 0, 0, 139, 70, 0, 0, 214, 74, 0, 0, 215, 74, 0, 0, 223, 77, 0, 0, 222, 77, 0, 0, 131, 73, 0, 0, 130, 73, 0, 0, 71, 69, 0, 0, 70, 69, 0, 0, 43, 65, 0, 0, 42, 65, 0, 0, 47, 61, 0, 0, 46, 61, 0, 0, 83, 57, 0, 0, 0, 0, 0, 0, 82, 57, 0, 0, 151, 53, 0, 0, 150, 53, 0, 0, 251, 49, 0, 0, 250, 49, 0, 0, 127, 46, 0, 0, 126, 46, 0, 0, 34, 43, 0, 0, 36, 43, 0, 0, 38, 43, 0, 0, 40, 43, 0, 0, 42, 43, 0, 0, 44, 43, 0, 0, 46, 43, 0, 0, 48, 43, 0, 0, 0, 0, 0, 0, 50, 43, 0, 0, 52, 43, 0, 0, 54, 43, 0, 0, 56, 43, 0, 0, 58, 43, 0, 0, 60, 43, 0, 0, 62, 43, 0, 0, 64, 43, 0, 0, 66, 43, 0, 0, 68, 43, 0, 0, 70, 43, 0, 0, 72, 43, 0, 0, 74, 43, 0, 0, 76, 43, 0, 0, 78, 43, 0, 0, 0, 0, 0, 0, 80, 43, 0, 0, 82, 43, 0, 0, 84, 43, 0, 0, 86, 43, 0, 0, 88, 43, 0, 0, 90, 43, 0, 0, 92, 43, 0, 0, 94, 43, 0, 0, 96, 43, 0, 0, 98, 43, 0, 0, 100, 43, 0, 0, 102, 43, 0, 0, 104, 43, 0, 0, 106, 43, 0, 0, 108, 43, 0, 0, 0, 0, 0, 0, 110, 43, 0, 0, 112, 43, 0, 0, 114, 43, 0, 0, 116, 43, 0, 0, 118, 43, 0, 0, 120, 43, 0, 0, 122, 43, 0, 0, 124, 43, 0, 0, 126, 43, 0, 0, 128, 43, 0, 0, 130, 43, 0, 0, 132, 43, 0, 0, 134, 43, 0, 0, 136, 43, 0, 0, 138, 43, 0, 0, 0, 0, 0, 0, 140, 43, 0, 0, 142, 43, 0, 0, 144, 43, 0, 0, 146, 43, 0, 0, 148, 43, 0, 0, 150, 43, 0, 0, 152, 43, 0, 0, 154, 43, 0, 0, 156, 43, 0, 0, 158, 43, 0, 0, 160, 43, 0, 0, 162, 43, 0, 0, 164, 43, 0, 0, 166, 43, 0, 0, 168, 43, 0, 0, 0, 0, 0, 0, 170, 43, 0, 0, 172, 43, 0, 0, 174, 43, 0, 0, 176, 43, 0, 0, 178, 43, 0, 0, 180, 43, 0, 0, 182, 43, 0, 0, 184, 43, 0, 0, 186, 43, 0, 0, 188, 43, 0, 0, 190, 43, 0, 0, 192, 43, 0, 0, 194, 43, 0, 0, 196, 43, 0, 0, 198, 43, 0, 0, 0, 0, 0, 0, 200, 43, 0, 0, 202, 43, 0, 0, 204, 43, 0, 0, 206, 43, 0, 0, 208, 43, 0, 0, 210, 43, 0, 0, 212, 43, 0, 0, 214, 43, 0, 0, 216, 43, 0, 0, 218, 43, 0, 0, 220, 43, 0, 0, 222, 43, 0, 0, 224, 43, 0, 0, 226, 43, 0, 0, 228, 43, 0, 0, 0, 0, 0, 0, 230, 43, 0, 0, 232, 43, 0, 0, 234, 43, 0, 0, 236, 43, 0, 0, 238, 43, 0, 0, 240, 43, 0, 0, 242, 43, 0, 0, 244, 43, 0, 0, 246, 43, 0, 0, 248, 43, 0, 0, 100, 47, 0, 0, 101, 47, 0, 0, 240, 50, 0, 0, 241, 50, 0, 0, 156, 54, 0, 0, 0, 0, 0, 0, 157, 54, 0, 0, 104, 58, 0, 0, 105, 58, 0, 0, 84, 62, 0, 0, 85, 62, 0, 0, 96, 66, 0, 0, 97, 66, 0, 0, 140, 70, 0, 0, 141, 70, 0, 0, 216, 74, 0, 0, 217, 74, 0, 0, 221, 77, 0, 0, 220, 77, 0, 0, 129, 73, 0, 0, 128, 73, 0, 0, 69, 69, 0, 0, 68, 69, 0, 0, 41, 65, 0, 0, 40, 65, 0, 0, 45, 61, 0, 0, 44, 61, 0, 0, 81, 57, 0, 0, 1, 0, 0, 0, 80, 57, 0, 0, 149, 53, 0, 0, 148, 53, 0, 0, 249, 49, 0, 0, 248, 49, 0, 0, 125, 46, 0, 0, 124, 46, 0, 0, 33, 43, 0, 0, 32, 43, 0, 0, 227, 39, 0, 0, 229, 39, 0, 0, 231, 39, 0, 0, 233, 39, 0, 0, 235, 39, 0, 0, 237, 39, 0, 0, 1, 0, 0, 0, 239, 39, 0, 0, 241, 39, 0, 0, 243, 39, 0, 0, 245, 39, 0, 0, 247, 39, 0, 0, 249, 39, 0, 0, 251, 39, 0, 0, 253, 39, 0, 0, 255, 39, 0, 0, 1, 40, 0, 0, 3, 40, 0, 0, 5, 40, 0, 0, 7, 40, 0, 0, 9, 40, 0, 0, 11, 40, 0, 0, 1, 0, 0, 0, 13, 40, 0, 0, 15, 40, 0, 0, 17, 40, 0, 0, 19, 40, 0, 0, 21, 40, 0, 0, 23, 40, 0, 0, 25, 40, 0, 0, 27, 40, 0, 0, 29, 40, 0, 0, 31, 40, 0, 0, 33, 40, 0, 0, 35, 40, 0, 0, 37, 40, 0, 0, 39, 40, 0, 0, 41, 40, 0, 0, 1, 0, 0, 0, 43, 40, 0, 0, 45, 40, 0, 0, 47, 40, 0, 0, 49, 40, 0, 0, 51, 40, 0, 0, 53, 40, 0, 0, 55, 40, 0, 0, 57, 40, 0, 0, 59, 40, 0, 0, 61, 40, 0, 0, 63, 40, 0, 0, 65, 40, 0, 0, 67, 40, 0, 0, 69, 40, 0, 0, 71, 40, 0, 0, 1, 0, 0, 0, 73, 40, 0, 0, 75, 40, 0, 0, 77, 40, 0, 0, 79, 40, 0, 0, 81, 40, 0, 0, 83, 40, 0, 0, 85, 40, 0, 0, 87, 40, 0, 0, 89, 40, 0, 0, 91, 40, 0, 0, 93, 40, 0, 0, 95, 40, 0, 0, 97, 40, 0, 0, 99, 40, 0, 0, 101, 40, 0, 0, 1, 0, 0, 0, 103, 40, 0, 0, 105, 40, 0, 0, 107, 40, 0, 0, 109, 40, 0, 0, 111, 40, 0, 0, 113, 40, 0, 0, 115, 40, 0, 0, 117, 40, 0, 0, 119, 40, 0, 0, 121, 40, 0, 0, 123, 40, 0, 0, 125, 40, 0, 0, 127, 40, 0, 0, 129, 40, 0, 0, 131, 40, 0, 0, 1, 0, 0, 0, 133, 40, 0, 0, 135, 40, 0, 0, 137, 40, 0, 0, 139, 40, 0, 0, 141, 40, 0, 0, 143, 40, 0, 0, 145, 40, 0, 0, 147, 40, 0, 0, 149, 40, 0, 0, 151, 40, 0, 0, 153, 40, 0, 0, 155, 40, 0, 0, 157, 40, 0, 0, 159, 40, 0, 0, 161, 40, 0, 0, 1, 0, 0, 0, 163, 40, 0, 0, 165, 40, 0, 0, 167, 40, 0, 0, 169, 40, 0, 0, 171, 40, 0, 0, 173, 40, 0, 0, 175, 40, 0, 0, 177, 40, 0, 0, 250, 43, 0, 0, 251, 43, 0, 0, 102, 47, 0, 0, 103, 47, 0, 0, 242, 50, 0, 0, 243, 50, 0, 0, 158, 54, 0, 0, 1, 0, 0, 0, 159, 54, 0, 0, 106, 58, 0, 0, 107, 58, 0, 0, 86, 62, 0, 0, 87, 62, 0, 0, 98, 66, 0, 0, 99, 66, 0, 0, 142, 70, 0, 0, 143, 70, 0, 0, 218, 74, 0, 0, 219, 74, 0, 0, 219, 77, 0, 0, 218, 77, 0, 0, 127, 73, 0, 0, 126, 73, 0, 0, 67, 69, 0, 0, 66, 69, 0, 0, 39, 65, 0, 0, 38, 65, 0, 0, 43, 61, 0, 0, 42, 61, 0, 0, 79, 57, 0, 0, 0, 0, 0, 0, 78, 57, 0, 0, 147, 53, 0, 0, 146, 53, 0, 0, 247, 49, 0, 0, 246, 49, 0, 0, 123, 46, 0, 0, 122, 46, 0, 0, 31, 43, 0, 0, 30, 43, 0, 0, 226, 39, 0, 0, 228, 39, 0, 0, 230, 39, 0, 0, 232, 39, 0, 0, 234, 39, 0, 0, 236, 39, 0, 0, 0, 0, 0, 0, 238, 39, 0, 0, 240, 39, 0, 0, 242, 39, 0, 0, 244, 39, 0, 0, 246, 39, 0, 0, 248, 39, 0, 0, 250, 39, 0, 0, 252, 39, 0, 0, 254, 39, 0, 0, 0, 40, 0, 0, 2, 40, 0, 0, 4, 40, 0, 0, 6, 40, 0, 0, 8, 40, 0, 0, 10, 40, 0, 0, 0, 0, 0, 0, 12, 40, 0, 0, 14, 40, 0, 0, 16, 40, 0, 0, 18, 40, 0, 0, 20, 40, 0, 0, 22, 40, 0, 0, 24, 40, 0, 0, 26, 40, 0, 0, 28, 40, 0, 0, 30, 40, 0, 0, 32, 40, 0, 0, 34, 40, 0, 0, 36, 40, 0, 0, 38, 40, 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, 42, 40, 0, 0, 44, 40, 0, 0, 46, 40, 0, 0, 48, 40, 0, 0, 50, 40, 0, 0, 52, 40, 0, 0, 54, 40, 0, 0, 56, 40, 0, 0, 58, 40, 0, 0, 60, 40, 0, 0, 62, 40, 0, 0, 64, 40, 0, 0, 66, 40, 0, 0, 68, 40, 0, 0, 70, 40, 0, 0, 0, 0, 0, 0, 72, 40, 0, 0, 74, 40, 0, 0, 76, 40, 0, 0, 78, 40, 0, 0, 80, 40, 0, 0, 82, 40, 0, 0, 84, 40, 0, 0, 86, 40, 0, 0, 88, 40, 0, 0, 90, 40, 0, 0, 92, 40, 0, 0, 94, 40, 0, 0, 96, 40, 0, 0, 98, 40, 0, 0, 100, 40, 0, 0, 0, 0, 0, 0, 102, 40, 0, 0, 104, 40, 0, 0, 106, 40, 0, 0, 108, 40, 0, 0, 110, 40, 0, 0, 112, 40, 0, 0, 114, 40, 0, 0, 116, 40, 0, 0, 118, 40, 0, 0, 120, 40, 0, 0, 122, 40, 0, 0, 124, 40, 0, 0, 126, 40, 0, 0, 128, 40, 0, 0, 130, 40, 0, 0, 0, 0, 0, 0, 132, 40, 0, 0, 134, 40, 0, 0, 136, 40, 0, 0, 138, 40, 0, 0, 140, 40, 0, 0, 142, 40, 0, 0, 144, 40, 0, 0, 146, 40, 0, 0, 148, 40, 0, 0, 150, 40, 0, 0, 152, 40, 0, 0, 154, 40, 0, 0, 156, 40, 0, 0, 158, 40, 0, 0, 160, 40, 0, 0, 0, 0, 0, 0, 162, 40, 0, 0, 164, 40, 0, 0, 166, 40, 0, 0, 168, 40, 0, 0, 170, 40, 0, 0, 172, 40, 0, 0, 174, 40, 0, 0, 176, 40, 0, 0, 252, 43, 0, 0, 253, 43, 0, 0, 104, 47, 0, 0, 105, 47, 0, 0, 244, 50, 0, 0, 245, 50, 0, 0, 160, 54, 0, 0, 0, 0, 0, 0, 161, 54, 0, 0, 108, 58, 0, 0, 109, 58, 0, 0, 88, 62, 0, 0, 89, 62, 0, 0, 100, 66, 0, 0, 101, 66, 0, 0, 144, 70, 0, 0, 145, 70, 0, 0, 220, 74, 0, 0, 221, 74, 0, 0, 217, 77, 0, 0, 216, 77, 0, 0, 125, 73, 0, 0, 124, 73, 0, 0, 65, 69, 0, 0, 64, 69, 0, 0, 37, 65, 0, 0, 36, 65, 0, 0, 41, 61, 0, 0, 40, 61, 0, 0, 77, 57, 0, 0, 1, 0, 0, 0, 76, 57, 0, 0, 145, 53, 0, 0, 144, 53, 0, 0, 245, 49, 0, 0, 244, 49, 0, 0, 121, 46, 0, 0, 120, 46, 0, 0, 29, 43, 0, 0, 28, 43, 0, 0, 225, 39, 0, 0, 224, 39, 0, 0, 195, 36, 0, 0, 197, 36, 0, 0, 199, 36, 0, 0, 201, 36, 0, 0, 1, 0, 0, 0, 203, 36, 0, 0, 205, 36, 0, 0, 207, 36, 0, 0, 209, 36, 0, 0, 211, 36, 0, 0, 213, 36, 0, 0, 215, 36, 0, 0, 217, 36, 0, 0, 219, 36, 0, 0, 221, 36, 0, 0, 223, 36, 0, 0, 225, 36, 0, 0, 227, 36, 0, 0, 229, 36, 0, 0, 231, 36, 0, 0, 1, 0, 0, 0, 233, 36, 0, 0, 235, 36, 0, 0, 237, 36, 0, 0, 239, 36, 0, 0, 241, 36, 0, 0, 243, 36, 0, 0, 245, 36, 0, 0, 247, 36, 0, 0, 249, 36, 0, 0, 251, 36, 0, 0, 253, 36, 0, 0, 255, 36, 0, 0, 1, 37, 0, 0, 3, 37, 0, 0, 5, 37, 0, 0, 1, 0, 0, 0, 7, 37, 0, 0, 9, 37, 0, 0, 11, 37, 0, 0, 13, 37, 0, 0, 15, 37, 0, 0, 17, 37, 0, 0, 19, 37, 0, 0, 21, 37, 0, 0, 23, 37, 0, 0, 25, 37, 0, 0, 27, 37, 0, 0, 29, 37, 0, 0, 31, 37, 0, 0, 33, 37, 0, 0, 35, 37, 0, 0, 1, 0, 0, 0, 37, 37, 0, 0, 39, 37, 0, 0, 41, 37, 0, 0, 43, 37, 0, 0, 45, 37, 0, 0, 47, 37, 0, 0, 49, 37, 0, 0, 51, 37, 0, 0, 53, 37, 0, 0, 55, 37, 0, 0, 57, 37, 0, 0, 59, 37, 0, 0, 61, 37, 0, 0, 63, 37, 0, 0, 65, 37, 0, 0, 1, 0, 0, 0, 67, 37, 0, 0, 69, 37, 0, 0, 71, 37, 0, 0, 73, 37, 0, 0, 75, 37, 0, 0, 77, 37, 0, 0, 79, 37, 0, 0, 81, 37, 0, 0, 83, 37, 0, 0, 85, 37, 0, 0, 87, 37, 0, 0, 89, 37, 0, 0, 91, 37, 0, 0, 93, 37, 0, 0, 95, 37, 0, 0, 1, 0, 0, 0, 97, 37, 0, 0, 99, 37, 0, 0, 101, 37, 0, 0, 103, 37, 0, 0, 105, 37, 0, 0, 107, 37, 0, 0, 109, 37, 0, 0, 111, 37, 0, 0, 113, 37, 0, 0, 115, 37, 0, 0, 117, 37, 0, 0, 119, 37, 0, 0, 121, 37, 0, 0, 123, 37, 0, 0, 125, 37, 0, 0, 1, 0, 0, 0, 127, 37, 0, 0, 129, 37, 0, 0, 131, 37, 0, 0, 133, 37, 0, 0, 135, 37, 0, 0, 137, 37, 0, 0, 178, 40, 0, 0, 179, 40, 0, 0, 254, 43, 0, 0, 255, 43, 0, 0, 106, 47, 0, 0, 107, 47, 0, 0, 246, 50, 0, 0, 247, 50, 0, 0, 162, 54, 0, 0, 1, 0, 0, 0, 163, 54, 0, 0, 110, 58, 0, 0, 111, 58, 0, 0, 90, 62, 0, 0, 91, 62, 0, 0, 102, 66, 0, 0, 103, 66, 0, 0, 146, 70, 0, 0, 147, 70, 0, 0, 222, 74, 0, 0, 223, 74, 0, 0, 215, 77, 0, 0, 214, 77, 0, 0, 123, 73, 0, 0, 122, 73, 0, 0, 63, 69, 0, 0, 62, 69, 0, 0, 35, 65, 0, 0, 34, 65, 0, 0, 39, 61, 0, 0, 38, 61, 0, 0, 75, 57, 0, 0, 0, 0, 0, 0, 74, 57, 0, 0, 143, 53, 0, 0, 142, 53, 0, 0, 243, 49, 0, 0, 242, 49, 0, 0, 119, 46, 0, 0, 118, 46, 0, 0, 27, 43, 0, 0, 26, 43, 0, 0, 223, 39, 0, 0, 222, 39, 0, 0, 194, 36, 0, 0, 196, 36, 0, 0, 198, 36, 0, 0, 200, 36, 0, 0, 0, 0, 0, 0, 202, 36, 0, 0, 204, 36, 0, 0, 206, 36, 0, 0, 208, 36, 0, 0, 210, 36, 0, 0, 212, 36, 0, 0, 214, 36, 0, 0, 216, 36, 0, 0, 218, 36, 0, 0, 220, 36, 0, 0, 222, 36, 0, 0, 224, 36, 0, 0, 226, 36, 0, 0, 228, 36, 0, 0, 230, 36, 0, 0, 0, 0, 0, 0, 232, 36, 0, 0, 234, 36, 0, 0, 236, 36, 0, 0, 238, 36, 0, 0, 240, 36, 0, 0, 242, 36, 0, 0, 244, 36, 0, 0, 246, 36, 0, 0, 248, 36, 0, 0, 250, 36, 0, 0, 252, 36, 0, 0, 254, 36, 0, 0, 0, 37, 0, 0, 2, 37, 0, 0, 4, 37, 0, 0, 0, 0, 0, 0, 6, 37, 0, 0, 8, 37, 0, 0, 10, 37, 0, 0, 12, 37, 0, 0, 14, 37, 0, 0, 16, 37, 0, 0, 18, 37, 0, 0, 20, 37, 0, 0, 22, 37, 0, 0, 24, 37, 0, 0, 26, 37, 0, 0, 28, 37, 0, 0, 30, 37, 0, 0, 32, 37, 0, 0, 34, 37, 0, 0, 0, 0, 0, 0, 36, 37, 0, 0, 38, 37, 0, 0, 40, 37, 0, 0, 42, 37, 0, 0, 44, 37, 0, 0, 46, 37, 0, 0, 48, 37, 0, 0, 50, 37, 0, 0, 52, 37, 0, 0, 54, 37, 0, 0, 56, 37, 0, 0, 58, 37, 0, 0, 60, 37, 0, 0, 62, 37, 0, 0, 64, 37, 0, 0, 0, 0, 0, 0, 66, 37, 0, 0, 68, 37, 0, 0, 70, 37, 0, 0, 72, 37, 0, 0, 74, 37, 0, 0, 76, 37, 0, 0, 78, 37, 0, 0, 80, 37, 0, 0, 82, 37, 0, 0, 84, 37, 0, 0, 86, 37, 0, 0, 88, 37, 0, 0, 90, 37, 0, 0, 92, 37, 0, 0, 94, 37, 0, 0, 0, 0, 0, 0, 96, 37, 0, 0, 98, 37, 0, 0, 100, 37, 0, 0, 102, 37, 0, 0, 104, 37, 0, 0, 106, 37, 0, 0, 108, 37, 0, 0, 110, 37, 0, 0, 112, 37, 0, 0, 114, 37, 0, 0, 116, 37, 0, 0, 118, 37, 0, 0, 120, 37, 0, 0, 122, 37, 0, 0, 124, 37, 0, 0, 0, 0, 0, 0, 126, 37, 0, 0, 128, 37, 0, 0, 130, 37, 0, 0, 132, 37, 0, 0, 134, 37, 0, 0, 136, 37, 0, 0, 180, 40, 0, 0, 181, 40, 0, 0, 0, 44, 0, 0, 1, 44, 0, 0, 108, 47, 0, 0, 109, 47, 0, 0, 248, 50, 0, 0, 249, 50, 0, 0, 164, 54, 0, 0, 0, 0, 0, 0, 165, 54, 0, 0, 112, 58, 0, 0, 113, 58, 0, 0, 92, 62, 0, 0, 93, 62, 0, 0, 104, 66, 0, 0, 105, 66, 0, 0, 148, 70, 0, 0, 149, 70, 0, 0, 224, 74, 0, 0, 225, 74, 0, 0, 213, 77, 0, 0, 212, 77, 0, 0, 121, 73, 0, 0, 120, 73, 0, 0, 61, 69, 0, 0, 60, 69, 0, 0, 33, 65, 0, 0, 32, 65, 0, 0, 37, 61, 0, 0, 36, 61, 0, 0, 73, 57, 0, 0, 1, 0, 0, 0, 72, 57, 0, 0, 141, 53, 0, 0, 140, 53, 0, 0, 241, 49, 0, 0, 240, 49, 0, 0, 117, 46, 0, 0, 116, 46, 0, 0, 25, 43, 0, 0, 24, 43, 0, 0, 221, 39, 0, 0, 220, 39, 0, 0, 193, 36, 0, 0, 192, 36, 0, 0, 195, 33, 0, 0, 197, 33, 0, 0, 1, 0, 0, 0, 199, 33, 0, 0, 201, 33, 0, 0, 203, 33, 0, 0, 205, 33, 0, 0, 207, 33, 0, 0, 209, 33, 0, 0, 211, 33, 0, 0, 213, 33, 0, 0, 215, 33, 0, 0, 217, 33, 0, 0, 219, 33, 0, 0, 221, 33, 0, 0, 223, 33, 0, 0, 225, 33, 0, 0, 227, 33, 0, 0, 1, 0, 0, 0, 229, 33, 0, 0, 231, 33, 0, 0, 233, 33, 0, 0, 235, 33, 0, 0, 237, 33, 0, 0, 239, 33, 0, 0, 241, 33, 0, 0, 243, 33, 0, 0, 245, 33, 0, 0, 247, 33, 0, 0, 249, 33, 0, 0, 251, 33, 0, 0, 253, 33, 0, 0, 255, 33, 0, 0, 1, 34, 0, 0, 1, 0, 0, 0, 3, 34, 0, 0, 5, 34, 0, 0, 7, 34, 0, 0, 9, 34, 0, 0, 11, 34, 0, 0, 13, 34, 0, 0, 15, 34, 0, 0, 17, 34, 0, 0, 19, 34, 0, 0, 21, 34, 0, 0, 23, 34, 0, 0, 25, 34, 0, 0, 27, 34, 0, 0, 29, 34, 0, 0, 31, 34, 0, 0, 1, 0, 0, 0, 33, 34, 0, 0, 35, 34, 0, 0, 37, 34, 0, 0, 39, 34, 0, 0, 41, 34, 0, 0, 43, 34, 0, 0, 45, 34, 0, 0, 47, 34, 0, 0, 49, 34, 0, 0, 51, 34, 0, 0, 53, 34, 0, 0, 55, 34, 0, 0, 57, 34, 0, 0, 59, 34, 0, 0, 61, 34, 0, 0, 1, 0, 0, 0, 63, 34, 0, 0, 65, 34, 0, 0, 67, 34, 0, 0, 69, 34, 0, 0, 71, 34, 0, 0, 73, 34, 0, 0, 75, 34, 0, 0, 77, 34, 0, 0, 79, 34, 0, 0, 81, 34, 0, 0, 83, 34, 0, 0, 85, 34, 0, 0, 87, 34, 0, 0, 89, 34, 0, 0, 91, 34, 0, 0, 1, 0, 0, 0, 93, 34, 0, 0, 95, 34, 0, 0, 97, 34, 0, 0, 99, 34, 0, 0, 101, 34, 0, 0, 103, 34, 0, 0, 105, 34, 0, 0, 107, 34, 0, 0, 109, 34, 0, 0, 111, 34, 0, 0, 113, 34, 0, 0, 115, 34, 0, 0, 117, 34, 0, 0, 119, 34, 0, 0, 121, 34, 0, 0, 1, 0, 0, 0, 123, 34, 0, 0, 125, 34, 0, 0, 127, 34, 0, 0, 129, 34, 0, 0, 138, 37, 0, 0, 139, 37, 0, 0, 182, 40, 0, 0, 183, 40, 0, 0, 2, 44, 0, 0, 3, 44, 0, 0, 110, 47, 0, 0, 111, 47, 0, 0, 250, 50, 0, 0, 251, 50, 0, 0, 166, 54, 0, 0, 1, 0, 0, 0, 167, 54, 0, 0, 114, 58, 0, 0, 115, 58, 0, 0, 94, 62, 0, 0, 95, 62, 0, 0, 106, 66, 0, 0, 107, 66, 0, 0, 150, 70, 0, 0, 151, 70, 0, 0, 226, 74, 0, 0, 227, 74, 0, 0, 211, 77, 0, 0, 210, 77, 0, 0, 119, 73, 0, 0, 118, 73, 0, 0, 59, 69, 0, 0, 58, 69, 0, 0, 31, 65, 0, 0, 30, 65, 0, 0, 35, 61, 0, 0, 34, 61, 0, 0, 71, 57, 0, 0, 0, 0, 0, 0, 70, 57, 0, 0, 139, 53, 0, 0, 138, 53, 0, 0, 239, 49, 0, 0, 238, 49, 0, 0, 115, 46, 0, 0, 114, 46, 0, 0, 23, 43, 0, 0, 22, 43, 0, 0, 219, 39, 0, 0, 218, 39, 0, 0, 191, 36, 0, 0, 190, 36, 0, 0, 194, 33, 0, 0, 196, 33, 0, 0, 0, 0, 0, 0, 198, 33, 0, 0, 200, 33, 0, 0, 202, 33, 0, 0, 204, 33, 0, 0, 206, 33, 0, 0, 208, 33, 0, 0, 210, 33, 0, 0, 212, 33, 0, 0, 214, 33, 0, 0, 216, 33, 0, 0, 218, 33, 0, 0, 220, 33, 0, 0, 222, 33, 0, 0, 224, 33, 0, 0, 226, 33, 0, 0, 0, 0, 0, 0, 228, 33, 0, 0, 230, 33, 0, 0, 232, 33, 0, 0, 234, 33, 0, 0, 236, 33, 0, 0, 238, 33, 0, 0, 240, 33, 0, 0, 242, 33, 0, 0, 244, 33, 0, 0, 246, 33, 0, 0, 248, 33, 0, 0, 250, 33, 0, 0, 252, 33, 0, 0, 254, 33, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 2, 34, 0, 0, 4, 34, 0, 0, 6, 34, 0, 0, 8, 34, 0, 0, 10, 34, 0, 0, 12, 34, 0, 0, 14, 34, 0, 0, 16, 34, 0, 0, 18, 34, 0, 0, 20, 34, 0, 0, 22, 34, 0, 0, 24, 34, 0, 0, 26, 34, 0, 0, 28, 34, 0, 0, 30, 34, 0, 0, 0, 0, 0, 0, 32, 34, 0, 0, 34, 34, 0, 0, 36, 34, 0, 0, 38, 34, 0, 0, 40, 34, 0, 0, 42, 34, 0, 0, 44, 34, 0, 0, 46, 34, 0, 0, 48, 34, 0, 0, 50, 34, 0, 0, 52, 34, 0, 0, 54, 34, 0, 0, 56, 34, 0, 0, 58, 34, 0, 0, 60, 34, 0, 0, 0, 0, 0, 0, 62, 34, 0, 0, 64, 34, 0, 0, 66, 34, 0, 0, 68, 34, 0, 0, 70, 34, 0, 0, 72, 34, 0, 0, 74, 34, 0, 0, 76, 34, 0, 0, 78, 34, 0, 0, 80, 34, 0, 0, 82, 34, 0, 0, 84, 34, 0, 0, 86, 34, 0, 0, 88, 34, 0, 0, 90, 34, 0, 0, 0, 0, 0, 0, 92, 34, 0, 0, 94, 34, 0, 0, 96, 34, 0, 0, 98, 34, 0, 0, 100, 34, 0, 0, 102, 34, 0, 0, 104, 34, 0, 0, 106, 34, 0, 0, 108, 34, 0, 0, 110, 34, 0, 0, 112, 34, 0, 0, 114, 34, 0, 0, 116, 34, 0, 0, 118, 34, 0, 0, 120, 34, 0, 0, 0, 0, 0, 0, 122, 34, 0, 0, 124, 34, 0, 0, 126, 34, 0, 0, 128, 34, 0, 0, 140, 37, 0, 0, 141, 37, 0, 0, 184, 40, 0, 0, 185, 40, 0, 0, 4, 44, 0, 0, 5, 44, 0, 0, 112, 47, 0, 0, 113, 47, 0, 0, 252, 50, 0, 0, 253, 50, 0, 0, 168, 54, 0, 0, 0, 0, 0, 0, 169, 54, 0, 0, 116, 58, 0, 0, 117, 58, 0, 0, 96, 62, 0, 0, 97, 62, 0, 0, 108, 66, 0, 0, 109, 66, 0, 0, 152, 70, 0, 0, 153, 70, 0, 0, 228, 74, 0, 0, 229, 74, 0, 0, 209, 77, 0, 0, 208, 77, 0, 0, 117, 73, 0, 0, 116, 73, 0, 0, 57, 69, 0, 0, 56, 69, 0, 0, 29, 65, 0, 0, 28, 65, 0, 0, 33, 61, 0, 0, 32, 61, 0, 0, 69, 57, 0, 0, 1, 0, 0, 0, 68, 57, 0, 0, 137, 53, 0, 0, 136, 53, 0, 0, 237, 49, 0, 0, 236, 49, 0, 0, 113, 46, 0, 0, 112, 46, 0, 0, 21, 43, 0, 0, 20, 43, 0, 0, 217, 39, 0, 0, 216, 39, 0, 0, 189, 36, 0, 0, 188, 36, 0, 0, 193, 33, 0, 0, 192, 33, 0, 0, 1, 0, 0, 0, 227, 30, 0, 0, 229, 30, 0, 0, 231, 30, 0, 0, 233, 30, 0, 0, 235, 30, 0, 0, 237, 30, 0, 0, 239, 30, 0, 0, 241, 30, 0, 0, 243, 30, 0, 0, 245, 30, 0, 0, 247, 30, 0, 0, 249, 30, 0, 0, 251, 30, 0, 0, 253, 30, 0, 0, 255, 30, 0, 0, 1, 0, 0, 0, 1, 31, 0, 0, 3, 31, 0, 0, 5, 31, 0, 0, 7, 31, 0, 0, 9, 31, 0, 0, 11, 31, 0, 0, 13, 31, 0, 0, 15, 31, 0, 0, 17, 31, 0, 0, 19, 31, 0, 0, 21, 31, 0, 0, 23, 31, 0, 0, 25, 31, 0, 0, 27, 31, 0, 0, 29, 31, 0, 0, 1, 0, 0, 0, 31, 31, 0, 0, 33, 31, 0, 0, 35, 31, 0, 0, 37, 31, 0, 0, 39, 31, 0, 0, 41, 31, 0, 0, 43, 31, 0, 0, 45, 31, 0, 0, 47, 31, 0, 0, 49, 31, 0, 0, 51, 31, 0, 0, 53, 31, 0, 0, 55, 31, 0, 0, 57, 31, 0, 0, 59, 31, 0, 0, 1, 0, 0, 0, 61, 31, 0, 0, 63, 31, 0, 0, 65, 31, 0, 0, 67, 31, 0, 0, 69, 31, 0, 0, 71, 31, 0, 0, 73, 31, 0, 0, 75, 31, 0, 0, 77, 31, 0, 0, 79, 31, 0, 0, 81, 31, 0, 0, 83, 31, 0, 0, 85, 31, 0, 0, 87, 31, 0, 0, 89, 31, 0, 0, 1, 0, 0, 0, 91, 31, 0, 0, 93, 31, 0, 0, 95, 31, 0, 0, 97, 31, 0, 0, 99, 31, 0, 0, 101, 31, 0, 0, 103, 31, 0, 0, 105, 31, 0, 0, 107, 31, 0, 0, 109, 31, 0, 0, 111, 31, 0, 0, 113, 31, 0, 0, 115, 31, 0, 0, 117, 31, 0, 0, 119, 31, 0, 0, 1, 0, 0, 0, 121, 31, 0, 0, 123, 31, 0, 0, 125, 31, 0, 0, 127, 31, 0, 0, 129, 31, 0, 0, 131, 31, 0, 0, 133, 31, 0, 0, 135, 31, 0, 0, 137, 31, 0, 0, 139, 31, 0, 0, 141, 31, 0, 0, 143, 31, 0, 0, 145, 31, 0, 0, 147, 31, 0, 0, 149, 31, 0, 0, 1, 0, 0, 0, 151, 31, 0, 0, 153, 31, 0, 0, 130, 34, 0, 0, 131, 34, 0, 0, 142, 37, 0, 0, 143, 37, 0, 0, 186, 40, 0, 0, 187, 40, 0, 0, 6, 44, 0, 0, 7, 44, 0, 0, 114, 47, 0, 0, 115, 47, 0, 0, 254, 50, 0, 0, 255, 50, 0, 0, 170, 54, 0, 0, 1, 0, 0, 0, 171, 54, 0, 0, 118, 58, 0, 0, 119, 58, 0, 0, 98, 62, 0, 0, 99, 62, 0, 0, 110, 66, 0, 0, 111, 66, 0, 0, 154, 70, 0, 0, 155, 70, 0, 0, 230, 74, 0, 0, 231, 74, 0, 0, 207, 77, 0, 0, 206, 77, 0, 0, 115, 73, 0, 0, 114, 73, 0, 0, 55, 69, 0, 0, 54, 69, 0, 0, 27, 65, 0, 0, 26, 65, 0, 0, 31, 61, 0, 0, 30, 61, 0, 0, 67, 57, 0, 0, 0, 0, 0, 0, 66, 57, 0, 0, 135, 53, 0, 0, 134, 53, 0, 0, 235, 49, 0, 0, 234, 49, 0, 0, 111, 46, 0, 0, 110, 46, 0, 0, 19, 43, 0, 0, 18, 43, 0, 0, 215, 39, 0, 0, 214, 39, 0, 0, 187, 36, 0, 0, 186, 36, 0, 0, 191, 33, 0, 0, 190, 33, 0, 0, 0, 0, 0, 0, 226, 30, 0, 0, 228, 30, 0, 0, 230, 30, 0, 0, 232, 30, 0, 0, 234, 30, 0, 0, 236, 30, 0, 0, 238, 30, 0, 0, 240, 30, 0, 0, 242, 30, 0, 0, 244, 30, 0, 0, 246, 30, 0, 0, 248, 30, 0, 0, 250, 30, 0, 0, 252, 30, 0, 0, 254, 30, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2, 31, 0, 0, 4, 31, 0, 0, 6, 31, 0, 0, 8, 31, 0, 0, 10, 31, 0, 0, 12, 31, 0, 0, 14, 31, 0, 0, 16, 31, 0, 0, 18, 31, 0, 0, 20, 31, 0, 0, 22, 31, 0, 0, 24, 31, 0, 0, 26, 31, 0, 0, 28, 31, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, 32, 31, 0, 0, 34, 31, 0, 0, 36, 31, 0, 0, 38, 31, 0, 0, 40, 31, 0, 0, 42, 31, 0, 0, 44, 31, 0, 0, 46, 31, 0, 0, 48, 31, 0, 0, 50, 31, 0, 0, 52, 31, 0, 0, 54, 31, 0, 0, 56, 31, 0, 0, 58, 31, 0, 0, 0, 0, 0, 0, 60, 31, 0, 0, 62, 31, 0, 0, 64, 31, 0, 0, 66, 31, 0, 0, 68, 31, 0, 0, 70, 31, 0, 0, 72, 31, 0, 0, 74, 31, 0, 0, 76, 31, 0, 0, 78, 31, 0, 0, 80, 31, 0, 0, 82, 31, 0, 0, 84, 31, 0, 0, 86, 31, 0, 0, 88, 31, 0, 0, 0, 0, 0, 0, 90, 31, 0, 0, 92, 31, 0, 0, 94, 31, 0, 0, 96, 31, 0, 0, 98, 31, 0, 0, 100, 31, 0, 0, 102, 31, 0, 0, 104, 31, 0, 0, 106, 31, 0, 0, 108, 31, 0, 0, 110, 31, 0, 0, 112, 31, 0, 0, 114, 31, 0, 0, 116, 31, 0, 0, 118, 31, 0, 0, 0, 0, 0, 0, 120, 31, 0, 0, 122, 31, 0, 0, 124, 31, 0, 0, 126, 31, 0, 0, 128, 31, 0, 0, 130, 31, 0, 0, 132, 31, 0, 0, 134, 31, 0, 0, 136, 31, 0, 0, 138, 31, 0, 0, 140, 31, 0, 0, 142, 31, 0, 0, 144, 31, 0, 0, 146, 31, 0, 0, 148, 31, 0, 0, 0, 0, 0, 0, 150, 31, 0, 0, 152, 31, 0, 0, 132, 34, 0, 0, 133, 34, 0, 0, 144, 37, 0, 0, 145, 37, 0, 0, 188, 40, 0, 0, 189, 40, 0, 0, 8, 44, 0, 0, 9, 44, 0, 0, 116, 47, 0, 0, 117, 47, 0, 0, 0, 51, 0, 0, 1, 51, 0, 0, 172, 54, 0, 0, 0, 0, 0, 0, 173, 54, 0, 0, 120, 58, 0, 0, 121, 58, 0, 0, 100, 62, 0, 0, 101, 62, 0, 0, 112, 66, 0, 0, 113, 66, 0, 0, 156, 70, 0, 0, 157, 70, 0, 0, 232, 74, 0, 0, 233, 74, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 205, 77, 0, 0, 204, 77, 0, 0, 113, 73, 0, 0, 112, 73, 0, 0, 53, 69, 0, 0, 52, 69, 0, 0, 25, 65, 0, 0, 24, 65, 0, 0, 29, 61, 0, 0, 28, 61, 0, 0, 65, 57, 0, 0, 0, 0, 0, 0, 64, 57, 0, 0, 133, 53, 0, 0, 132, 53, 0, 0, 233, 49, 0, 0, 232, 49, 0, 0, 109, 46, 0, 0, 108, 46, 0, 0, 17, 43, 0, 0, 16, 43, 0, 0, 213, 39, 0, 0, 212, 39, 0, 0, 185, 36, 0, 0, 184, 36, 0, 0, 189, 33, 0, 0, 188, 33, 0, 0, 0, 0, 0, 0, 225, 30, 0, 0, 224, 30, 0, 0, 35, 28, 0, 0, 37, 28, 0, 0, 39, 28, 0, 0, 41, 28, 0, 0, 43, 28, 0, 0, 45, 28, 0, 0, 47, 28, 0, 0, 49, 28, 0, 0, 51, 28, 0, 0, 53, 28, 0, 0, 55, 28, 0, 0, 57, 28, 0, 0, 59, 28, 0, 0, 0, 0, 0, 0, 61, 28, 0, 0, 63, 28, 0, 0, 65, 28, 0, 0, 67, 28, 0, 0, 69, 28, 0, 0, 71, 28, 0, 0, 73, 28, 0, 0, 75, 28, 0, 0, 77, 28, 0, 0, 79, 28, 0, 0, 81, 28, 0, 0, 83, 28, 0, 0, 85, 28, 0, 0, 87, 28, 0, 0, 89, 28, 0, 0, 0, 0, 0, 0, 91, 28, 0, 0, 93, 28, 0, 0, 95, 28, 0, 0, 97, 28, 0, 0, 99, 28, 0, 0, 101, 28, 0, 0, 103, 28, 0, 0, 105, 28, 0, 0, 107, 28, 0, 0, 109, 28, 0, 0, 111, 28, 0, 0, 113, 28, 0, 0, 115, 28, 0, 0, 117, 28, 0, 0, 119, 28, 0, 0, 0, 0, 0, 0, 121, 28, 0, 0, 123, 28, 0, 0, 125, 28, 0, 0, 127, 28, 0, 0, 129, 28, 0, 0, 131, 28, 0, 0, 133, 28, 0, 0, 135, 28, 0, 0, 137, 28, 0, 0, 139, 28, 0, 0, 141, 28, 0, 0, 143, 28, 0, 0, 145, 28, 0, 0, 147, 28, 0, 0, 149, 28, 0, 0, 0, 0, 0, 0, 151, 28, 0, 0, 153, 28, 0, 0, 155, 28, 0, 0, 157, 28, 0, 0, 159, 28, 0, 0, 161, 28, 0, 0, 163, 28, 0, 0, 165, 28, 0, 0, 167, 28, 0, 0, 169, 28, 0, 0, 171, 28, 0, 0, 173, 28, 0, 0, 175, 28, 0, 0, 177, 28, 0, 0, 179, 28, 0, 0, 0, 0, 0, 0, 181, 28, 0, 0, 183, 28, 0, 0, 185, 28, 0, 0, 187, 28, 0, 0, 189, 28, 0, 0, 191, 28, 0, 0, 193, 28, 0, 0, 195, 28, 0, 0, 197, 28, 0, 0, 199, 28, 0, 0, 201, 28, 0, 0, 203, 28, 0, 0, 205, 28, 0, 0, 207, 28, 0, 0, 209, 28, 0, 0, 0, 0, 0, 0, 154, 31, 0, 0, 155, 31, 0, 0, 134, 34, 0, 0, 135, 34, 0, 0, 146, 37, 0, 0, 147, 37, 0, 0, 190, 40, 0, 0, 191, 40, 0, 0, 10, 44, 0, 0, 11, 44, 0, 0, 118, 47, 0, 0, 119, 47, 0, 0, 2, 51, 0, 0, 3, 51, 0, 0, 174, 54, 0, 0, 0, 0, 0, 0, 175, 54, 0, 0, 122, 58, 0, 0, 123, 58, 0, 0, 102, 62, 0, 0, 103, 62, 0, 0, 114, 66, 0, 0, 115, 66, 0, 0, 158, 70, 0, 0, 159, 70, 0, 0, 234, 74, 0, 0, 235, 74, 0, 0, 203, 77, 0, 0, 202, 77, 0, 0, 111, 73, 0, 0, 110, 73, 0, 0, 51, 69, 0, 0, 50, 69, 0, 0, 23, 65, 0, 0, 22, 65, 0, 0, 27, 61, 0, 0, 26, 61, 0, 0, 63, 57, 0, 0, 1, 0, 0, 0, 62, 57, 0, 0, 131, 53, 0, 0, 130, 53, 0, 0, 231, 49, 0, 0, 230, 49, 0, 0, 107, 46, 0, 0, 106, 46, 0, 0, 15, 43, 0, 0, 14, 43, 0, 0, 211, 39, 0, 0, 210, 39, 0, 0, 183, 36, 0, 0, 182, 36, 0, 0, 187, 33, 0, 0, 186, 33, 0, 0, 1, 0, 0, 0, 223, 30, 0, 0, 222, 30, 0, 0, 34, 28, 0, 0, 36, 28, 0, 0, 38, 28, 0, 0, 40, 28, 0, 0, 42, 28, 0, 0, 44, 28, 0, 0, 46, 28, 0, 0, 48, 28, 0, 0, 50, 28, 0, 0, 52, 28, 0, 0, 54, 28, 0, 0, 56, 28, 0, 0, 58, 28, 0, 0, 1, 0, 0, 0, 60, 28, 0, 0, 62, 28, 0, 0, 64, 28, 0, 0, 66, 28, 0, 0, 68, 28, 0, 0, 70, 28, 0, 0, 72, 28, 0, 0, 74, 28, 0, 0, 76, 28, 0, 0, 78, 28, 0, 0, 80, 28, 0, 0, 82, 28, 0, 0, 84, 28, 0, 0, 86, 28, 0, 0, 88, 28, 0, 0, 1, 0, 0, 0, 90, 28, 0, 0, 92, 28, 0, 0, 94, 28, 0, 0, 96, 28, 0, 0, 98, 28, 0, 0, 100, 28, 0, 0, 102, 28, 0, 0, 104, 28, 0, 0, 106, 28, 0, 0, 108, 28, 0, 0, 110, 28, 0, 0, 112, 28, 0, 0, 114, 28, 0, 0, 116, 28, 0, 0, 118, 28, 0, 0, 1, 0, 0, 0, 120, 28, 0, 0, 122, 28, 0, 0, 124, 28, 0, 0, 126, 28, 0, 0, 128, 28, 0, 0, 130, 28, 0, 0, 132, 28, 0, 0, 134, 28, 0, 0, 136, 28, 0, 0, 138, 28, 0, 0, 140, 28, 0, 0, 142, 28, 0, 0, 144, 28, 0, 0, 146, 28, 0, 0, 148, 28, 0, 0, 1, 0, 0, 0, 150, 28, 0, 0, 152, 28, 0, 0, 154, 28, 0, 0, 156, 28, 0, 0, 158, 28, 0, 0, 160, 28, 0, 0, 162, 28, 0, 0, 164, 28, 0, 0, 166, 28, 0, 0, 168, 28, 0, 0, 170, 28, 0, 0, 172, 28, 0, 0, 174, 28, 0, 0, 176, 28, 0, 0, 178, 28, 0, 0, 1, 0, 0, 0, 180, 28, 0, 0, 182, 28, 0, 0, 184, 28, 0, 0, 186, 28, 0, 0, 188, 28, 0, 0, 190, 28, 0, 0, 192, 28, 0, 0, 194, 28, 0, 0, 196, 28, 0, 0, 198, 28, 0, 0, 200, 28, 0, 0, 202, 28, 0, 0, 204, 28, 0, 0, 206, 28, 0, 0, 208, 28, 0, 0, 1, 0, 0, 0, 156, 31, 0, 0, 157, 31, 0, 0, 136, 34, 0, 0, 137, 34, 0, 0, 148, 37, 0, 0, 149, 37, 0, 0, 192, 40, 0, 0, 193, 40, 0, 0, 12, 44, 0, 0, 13, 44, 0, 0, 120, 47, 0, 0, 121, 47, 0, 0, 4, 51, 0, 0, 5, 51, 0, 0, 176, 54, 0, 0, 1, 0, 0, 0, 177, 54, 0, 0, 124, 58, 0, 0, 125, 58, 0, 0, 104, 62, 0, 0, 105, 62, 0, 0, 116, 66, 0, 0, 117, 66, 0, 0, 160, 70, 0, 0, 161, 70, 0, 0, 236, 74, 0, 0, 237, 74, 0, 0, 201, 77, 0, 0, 200, 77, 0, 0, 109, 73, 0, 0, 108, 73, 0, 0, 49, 69, 0, 0, 48, 69, 0, 0, 21, 65, 0, 0, 20, 65, 0, 0, 25, 61, 0, 0, 24, 61, 0, 0, 61, 57, 0, 0, 0, 0, 0, 0, 60, 57, 0, 0, 129, 53, 0, 0, 128, 53, 0, 0, 229, 49, 0, 0, 228, 49, 0, 0, 105, 46, 0, 0, 104, 46, 0, 0, 13, 43, 0, 0, 12, 43, 0, 0, 209, 39, 0, 0, 208, 39, 0, 0, 181, 36, 0, 0, 180, 36, 0, 0, 185, 33, 0, 0, 184, 33, 0, 0, 0, 0, 0, 0, 221, 30, 0, 0, 220, 30, 0, 0, 33, 28, 0, 0, 32, 28, 0, 0, 131, 25, 0, 0, 133, 25, 0, 0, 135, 25, 0, 0, 137, 25, 0, 0, 139, 25, 0, 0, 141, 25, 0, 0, 143, 25, 0, 0, 145, 25, 0, 0, 147, 25, 0, 0, 149, 25, 0, 0, 151, 25, 0, 0, 0, 0, 0, 0, 153, 25, 0, 0, 155, 25, 0, 0, 157, 25, 0, 0, 159, 25, 0, 0, 161, 25, 0, 0, 163, 25, 0, 0, 165, 25, 0, 0, 167, 25, 0, 0, 169, 25, 0, 0, 171, 25, 0, 0, 173, 25, 0, 0, 175, 25, 0, 0, 177, 25, 0, 0, 179, 25, 0, 0, 181, 25, 0, 0, 0, 0, 0, 0, 183, 25, 0, 0, 185, 25, 0, 0, 187, 25, 0, 0, 189, 25, 0, 0, 191, 25, 0, 0, 193, 25, 0, 0, 195, 25, 0, 0, 197, 25, 0, 0, 199, 25, 0, 0, 201, 25, 0, 0, 203, 25, 0, 0, 205, 25, 0, 0, 207, 25, 0, 0, 209, 25, 0, 0, 211, 25, 0, 0, 0, 0, 0, 0, 213, 25, 0, 0, 215, 25, 0, 0, 217, 25, 0, 0, 219, 25, 0, 0, 221, 25, 0, 0, 223, 25, 0, 0, 225, 25, 0, 0, 227, 25, 0, 0, 229, 25, 0, 0, 231, 25, 0, 0, 233, 25, 0, 0, 235, 25, 0, 0, 237, 25, 0, 0, 239, 25, 0, 0, 241, 25, 0, 0, 0, 0, 0, 0, 243, 25, 0, 0, 245, 25, 0, 0, 247, 25, 0, 0, 249, 25, 0, 0, 251, 25, 0, 0, 253, 25, 0, 0, 255, 25, 0, 0, 1, 26, 0, 0, 3, 26, 0, 0, 5, 26, 0, 0, 7, 26, 0, 0, 9, 26, 0, 0, 11, 26, 0, 0, 13, 26, 0, 0, 15, 26, 0, 0, 0, 0, 0, 0, 17, 26, 0, 0, 19, 26, 0, 0, 21, 26, 0, 0, 23, 26, 0, 0, 25, 26, 0, 0, 27, 26, 0, 0, 29, 26, 0, 0, 31, 26, 0, 0, 33, 26, 0, 0, 35, 26, 0, 0, 37, 26, 0, 0, 39, 26, 0, 0, 41, 26, 0, 0, 210, 28, 0, 0, 211, 28, 0, 0, 0, 0, 0, 0, 158, 31, 0, 0, 159, 31, 0, 0, 138, 34, 0, 0, 139, 34, 0, 0, 150, 37, 0, 0, 151, 37, 0, 0, 194, 40, 0, 0, 195, 40, 0, 0, 14, 44, 0, 0, 15, 44, 0, 0, 122, 47, 0, 0, 123, 47, 0, 0, 6, 51, 0, 0, 7, 51, 0, 0, 178, 54, 0, 0, 0, 0, 0, 0, 179, 54, 0, 0, 126, 58, 0, 0, 127, 58, 0, 0, 106, 62, 0, 0, 107, 62, 0, 0, 118, 66, 0, 0, 119, 66, 0, 0, 162, 70, 0, 0, 163, 70, 0, 0, 238, 74, 0, 0, 239, 74, 0, 0, 199, 77, 0, 0, 198, 77, 0, 0, 107, 73, 0, 0, 106, 73, 0, 0, 47, 69, 0, 0, 46, 69, 0, 0, 19, 65, 0, 0, 18, 65, 0, 0, 23, 61, 0, 0, 22, 61, 0, 0, 59, 57, 0, 0, 1, 0, 0, 0, 58, 57, 0, 0, 127, 53, 0, 0, 126, 53, 0, 0, 227, 49, 0, 0, 226, 49, 0, 0, 103, 46, 0, 0, 102, 46, 0, 0, 11, 43, 0, 0, 10, 43, 0, 0, 207, 39, 0, 0, 206, 39, 0, 0, 179, 36, 0, 0, 178, 36, 0, 0, 183, 33, 0, 0, 182, 33, 0, 0, 1, 0, 0, 0, 219, 30, 0, 0, 218, 30, 0, 0, 31, 28, 0, 0, 30, 28, 0, 0, 130, 25, 0, 0, 132, 25, 0, 0, 134, 25, 0, 0, 136, 25, 0, 0, 138, 25, 0, 0, 140, 25, 0, 0, 142, 25, 0, 0, 144, 25, 0, 0, 146, 25, 0, 0, 148, 25, 0, 0, 150, 25, 0, 0, 1, 0, 0, 0, 152, 25, 0, 0, 154, 25, 0, 0, 156, 25, 0, 0, 158, 25, 0, 0, 160, 25, 0, 0, 162, 25, 0, 0, 164, 25, 0, 0, 166, 25, 0, 0, 168, 25, 0, 0, 170, 25, 0, 0, 172, 25, 0, 0, 174, 25, 0, 0, 176, 25, 0, 0, 178, 25, 0, 0, 180, 25, 0, 0, 1, 0, 0, 0, 182, 25, 0, 0, 184, 25, 0, 0, 186, 25, 0, 0, 188, 25, 0, 0, 190, 25, 0, 0, 192, 25, 0, 0, 194, 25, 0, 0, 196, 25, 0, 0, 198, 25, 0, 0, 200, 25, 0, 0, 202, 25, 0, 0, 204, 25, 0, 0, 206, 25, 0, 0, 208, 25, 0, 0, 210, 25, 0, 0, 1, 0, 0, 0, 212, 25, 0, 0, 214, 25, 0, 0, 216, 25, 0, 0, 218, 25, 0, 0, 220, 25, 0, 0, 222, 25, 0, 0, 224, 25, 0, 0, 226, 25, 0, 0, 228, 25, 0, 0, 230, 25, 0, 0, 232, 25, 0, 0, 234, 25, 0, 0, 236, 25, 0, 0, 238, 25, 0, 0, 240, 25, 0, 0, 1, 0, 0, 0, 242, 25, 0, 0, 244, 25, 0, 0, 246, 25, 0, 0, 248, 25, 0, 0, 250, 25, 0, 0, 252, 25, 0, 0, 254, 25, 0, 0, 0, 26, 0, 0, 2, 26, 0, 0, 4, 26, 0, 0, 6, 26, 0, 0, 8, 26, 0, 0, 10, 26, 0, 0, 12, 26, 0, 0, 14, 26, 0, 0, 1, 0, 0, 0, 16, 26, 0, 0, 18, 26, 0, 0, 20, 26, 0, 0, 22, 26, 0, 0, 24, 26, 0, 0, 26, 26, 0, 0, 28, 26, 0, 0, 30, 26, 0, 0, 32, 26, 0, 0, 34, 26, 0, 0, 36, 26, 0, 0, 38, 26, 0, 0, 40, 26, 0, 0, 212, 28, 0, 0, 213, 28, 0, 0, 1, 0, 0, 0, 160, 31, 0, 0, 161, 31, 0, 0, 140, 34, 0, 0, 141, 34, 0, 0, 152, 37, 0, 0, 153, 37, 0, 0, 196, 40, 0, 0, 197, 40, 0, 0, 16, 44, 0, 0, 17, 44, 0, 0, 124, 47, 0, 0, 125, 47, 0, 0, 8, 51, 0, 0, 9, 51, 0, 0, 180, 54, 0, 0, 1, 0, 0, 0, 181, 54, 0, 0, 128, 58, 0, 0, 129, 58, 0, 0, 108, 62, 0, 0, 109, 62, 0, 0, 120, 66, 0, 0, 121, 66, 0, 0, 164, 70, 0, 0, 165, 70, 0, 0, 240, 74, 0, 0, 241, 74, 0, 0, 197, 77, 0, 0, 196, 77, 0, 0, 105, 73, 0, 0, 104, 73, 0, 0, 45, 69, 0, 0, 44, 69, 0, 0, 17, 65, 0, 0, 16, 65, 0, 0, 21, 61, 0, 0, 20, 61, 0, 0, 57, 57, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 125, 53, 0, 0, 124, 53, 0, 0, 225, 49, 0, 0, 224, 49, 0, 0, 101, 46, 0, 0, 100, 46, 0, 0, 9, 43, 0, 0, 8, 43, 0, 0, 205, 39, 0, 0, 204, 39, 0, 0, 177, 36, 0, 0, 176, 36, 0, 0, 181, 33, 0, 0, 180, 33, 0, 0, 0, 0, 0, 0, 217, 30, 0, 0, 216, 30, 0, 0, 29, 28, 0, 0, 28, 28, 0, 0, 129, 25, 0, 0, 128, 25, 0, 0, 3, 23, 0, 0, 5, 23, 0, 0, 7, 23, 0, 0, 9, 23, 0, 0, 11, 23, 0, 0, 13, 23, 0, 0, 15, 23, 0, 0, 17, 23, 0, 0, 19, 23, 0, 0, 0, 0, 0, 0, 21, 23, 0, 0, 23, 23, 0, 0, 25, 23, 0, 0, 27, 23, 0, 0, 29, 23, 0, 0, 31, 23, 0, 0, 33, 23, 0, 0, 35, 23, 0, 0, 37, 23, 0, 0, 39, 23, 0, 0, 41, 23, 0, 0, 43, 23, 0, 0, 45, 23, 0, 0, 47, 23, 0, 0, 49, 23, 0, 0, 0, 0, 0, 0, 51, 23, 0, 0, 53, 23, 0, 0, 55, 23, 0, 0, 57, 23, 0, 0, 59, 23, 0, 0, 61, 23, 0, 0, 63, 23, 0, 0, 65, 23, 0, 0, 67, 23, 0, 0, 69, 23, 0, 0, 71, 23, 0, 0, 73, 23, 0, 0, 75, 23, 0, 0, 77, 23, 0, 0, 79, 23, 0, 0, 0, 0, 0, 0, 81, 23, 0, 0, 83, 23, 0, 0, 85, 23, 0, 0, 87, 23, 0, 0, 89, 23, 0, 0, 91, 23, 0, 0, 93, 23, 0, 0, 95, 23, 0, 0, 97, 23, 0, 0, 99, 23, 0, 0, 101, 23, 0, 0, 103, 23, 0, 0, 105, 23, 0, 0, 107, 23, 0, 0, 109, 23, 0, 0, 0, 0, 0, 0, 111, 23, 0, 0, 113, 23, 0, 0, 115, 23, 0, 0, 117, 23, 0, 0, 119, 23, 0, 0, 121, 23, 0, 0, 123, 23, 0, 0, 125, 23, 0, 0, 127, 23, 0, 0, 129, 23, 0, 0, 131, 23, 0, 0, 133, 23, 0, 0, 135, 23, 0, 0, 137, 23, 0, 0, 139, 23, 0, 0, 0, 0, 0, 0, 141, 23, 0, 0, 143, 23, 0, 0, 145, 23, 0, 0, 147, 23, 0, 0, 149, 23, 0, 0, 151, 23, 0, 0, 153, 23, 0, 0, 155, 23, 0, 0, 157, 23, 0, 0, 159, 23, 0, 0, 161, 23, 0, 0, 42, 26, 0, 0, 43, 26, 0, 0, 214, 28, 0, 0, 215, 28, 0, 0, 0, 0, 0, 0, 162, 31, 0, 0, 163, 31, 0, 0, 142, 34, 0, 0, 143, 34, 0, 0, 154, 37, 0, 0, 155, 37, 0, 0, 198, 40, 0, 0, 199, 40, 0, 0, 18, 44, 0, 0, 19, 44, 0, 0, 126, 47, 0, 0, 127, 47, 0, 0, 10, 51, 0, 0, 11, 51, 0, 0, 182, 54, 0, 0, 0, 0, 0, 0, 183, 54, 0, 0, 130, 58, 0, 0, 131, 58, 0, 0, 110, 62, 0, 0, 111, 62, 0, 0, 122, 66, 0, 0, 123, 66, 0, 0, 166, 70, 0, 0, 167, 70, 0, 0, 242, 74, 0, 0, 243, 74, 0, 0, 195, 77, 0, 0, 194, 77, 0, 0, 103, 73, 0, 0, 102, 73, 0, 0, 43, 69, 0, 0, 42, 69, 0, 0, 15, 65, 0, 0, 14, 65, 0, 0, 19, 61, 0, 0, 18, 61, 0, 0, 55, 57, 0, 0, 1, 0, 0, 0, 54, 57, 0, 0, 123, 53, 0, 0, 122, 53, 0, 0, 223, 49, 0, 0, 222, 49, 0, 0, 99, 46, 0, 0, 98, 46, 0, 0, 7, 43, 0, 0, 6, 43, 0, 0, 203, 39, 0, 0, 202, 39, 0, 0, 175, 36, 0, 0, 174, 36, 0, 0, 179, 33, 0, 0, 178, 33, 0, 0, 1, 0, 0, 0, 215, 30, 0, 0, 214, 30, 0, 0, 27, 28, 0, 0, 26, 28, 0, 0, 127, 25, 0, 0, 126, 25, 0, 0, 2, 23, 0, 0, 4, 23, 0, 0, 6, 23, 0, 0, 8, 23, 0, 0, 10, 23, 0, 0, 12, 23, 0, 0, 14, 23, 0, 0, 16, 23, 0, 0, 18, 23, 0, 0, 1, 0, 0, 0, 20, 23, 0, 0, 22, 23, 0, 0, 24, 23, 0, 0, 26, 23, 0, 0, 28, 23, 0, 0, 30, 23, 0, 0, 32, 23, 0, 0, 34, 23, 0, 0, 36, 23, 0, 0, 38, 23, 0, 0, 40, 23, 0, 0, 42, 23, 0, 0, 44, 23, 0, 0, 46, 23, 0, 0, 48, 23, 0, 0, 1, 0, 0, 0, 50, 23, 0, 0, 52, 23, 0, 0, 54, 23, 0, 0, 56, 23, 0, 0, 58, 23, 0, 0, 60, 23, 0, 0, 62, 23, 0, 0, 64, 23, 0, 0, 66, 23, 0, 0, 68, 23, 0, 0, 70, 23, 0, 0, 72, 23, 0, 0, 74, 23, 0, 0, 76, 23, 0, 0, 78, 23, 0, 0, 1, 0, 0, 0, 80, 23, 0, 0, 82, 23, 0, 0, 84, 23, 0, 0, 86, 23, 0, 0, 88, 23, 0, 0, 90, 23, 0, 0, 92, 23, 0, 0, 94, 23, 0, 0, 96, 23, 0, 0, 98, 23, 0, 0, 100, 23, 0, 0, 102, 23, 0, 0, 104, 23, 0, 0, 106, 23, 0, 0, 108, 23, 0, 0, 1, 0, 0, 0, 110, 23, 0, 0, 112, 23, 0, 0, 114, 23, 0, 0, 116, 23, 0, 0, 118, 23, 0, 0, 120, 23, 0, 0, 122, 23, 0, 0, 124, 23, 0, 0, 126, 23, 0, 0, 128, 23, 0, 0, 130, 23, 0, 0, 132, 23, 0, 0, 134, 23, 0, 0, 136, 23, 0, 0, 138, 23, 0, 0, 1, 0, 0, 0, 140, 23], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 10240);
+allocate([142, 23, 0, 0, 144, 23, 0, 0, 146, 23, 0, 0, 148, 23, 0, 0, 150, 23, 0, 0, 152, 23, 0, 0, 154, 23, 0, 0, 156, 23, 0, 0, 158, 23, 0, 0, 160, 23, 0, 0, 44, 26, 0, 0, 45, 26, 0, 0, 216, 28, 0, 0, 217, 28, 0, 0, 1, 0, 0, 0, 164, 31, 0, 0, 165, 31, 0, 0, 144, 34, 0, 0, 145, 34, 0, 0, 156, 37, 0, 0, 157, 37, 0, 0, 200, 40, 0, 0, 201, 40, 0, 0, 20, 44, 0, 0, 21, 44, 0, 0, 128, 47, 0, 0, 129, 47, 0, 0, 12, 51, 0, 0, 13, 51, 0, 0, 184, 54, 0, 0, 1, 0, 0, 0, 185, 54, 0, 0, 132, 58, 0, 0, 133, 58, 0, 0, 112, 62, 0, 0, 113, 62, 0, 0, 124, 66, 0, 0, 125, 66, 0, 0, 168, 70, 0, 0, 169, 70, 0, 0, 244, 74, 0, 0, 245, 74, 0, 0, 193, 77, 0, 0, 192, 77, 0, 0, 101, 73, 0, 0, 100, 73, 0, 0, 41, 69, 0, 0, 40, 69, 0, 0, 13, 65, 0, 0, 12, 65, 0, 0, 17, 61, 0, 0, 16, 61, 0, 0, 53, 57, 0, 0, 0, 0, 0, 0, 52, 57, 0, 0, 121, 53, 0, 0, 120, 53, 0, 0, 221, 49, 0, 0, 220, 49, 0, 0, 97, 46, 0, 0, 96, 46, 0, 0, 5, 43, 0, 0, 4, 43, 0, 0, 201, 39, 0, 0, 200, 39, 0, 0, 173, 36, 0, 0, 172, 36, 0, 0, 177, 33, 0, 0, 176, 33, 0, 0, 0, 0, 0, 0, 213, 30, 0, 0, 212, 30, 0, 0, 25, 28, 0, 0, 24, 28, 0, 0, 125, 25, 0, 0, 124, 25, 0, 0, 1, 23, 0, 0, 0, 23, 0, 0, 163, 20, 0, 0, 165, 20, 0, 0, 167, 20, 0, 0, 169, 20, 0, 0, 171, 20, 0, 0, 173, 20, 0, 0, 175, 20, 0, 0, 0, 0, 0, 0, 177, 20, 0, 0, 179, 20, 0, 0, 181, 20, 0, 0, 183, 20, 0, 0, 185, 20, 0, 0, 187, 20, 0, 0, 189, 20, 0, 0, 191, 20, 0, 0, 193, 20, 0, 0, 195, 20, 0, 0, 197, 20, 0, 0, 199, 20, 0, 0, 201, 20, 0, 0, 203, 20, 0, 0, 205, 20, 0, 0, 0, 0, 0, 0, 207, 20, 0, 0, 209, 20, 0, 0, 211, 20, 0, 0, 213, 20, 0, 0, 215, 20, 0, 0, 217, 20, 0, 0, 219, 20, 0, 0, 221, 20, 0, 0, 223, 20, 0, 0, 225, 20, 0, 0, 227, 20, 0, 0, 229, 20, 0, 0, 231, 20, 0, 0, 233, 20, 0, 0, 235, 20, 0, 0, 0, 0, 0, 0, 237, 20, 0, 0, 239, 20, 0, 0, 241, 20, 0, 0, 243, 20, 0, 0, 245, 20, 0, 0, 247, 20, 0, 0, 249, 20, 0, 0, 251, 20, 0, 0, 253, 20, 0, 0, 255, 20, 0, 0, 1, 21, 0, 0, 3, 21, 0, 0, 5, 21, 0, 0, 7, 21, 0, 0, 9, 21, 0, 0, 0, 0, 0, 0, 11, 21, 0, 0, 13, 21, 0, 0, 15, 21, 0, 0, 17, 21, 0, 0, 19, 21, 0, 0, 21, 21, 0, 0, 23, 21, 0, 0, 25, 21, 0, 0, 27, 21, 0, 0, 29, 21, 0, 0, 31, 21, 0, 0, 33, 21, 0, 0, 35, 21, 0, 0, 37, 21, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 41, 21, 0, 0, 43, 21, 0, 0, 45, 21, 0, 0, 47, 21, 0, 0, 49, 21, 0, 0, 51, 21, 0, 0, 53, 21, 0, 0, 55, 21, 0, 0, 57, 21, 0, 0, 162, 23, 0, 0, 163, 23, 0, 0, 46, 26, 0, 0, 47, 26, 0, 0, 218, 28, 0, 0, 219, 28, 0, 0, 0, 0, 0, 0, 166, 31, 0, 0, 167, 31, 0, 0, 146, 34, 0, 0, 147, 34, 0, 0, 158, 37, 0, 0, 159, 37, 0, 0, 202, 40, 0, 0, 203, 40, 0, 0, 22, 44, 0, 0, 23, 44, 0, 0, 130, 47, 0, 0, 131, 47, 0, 0, 14, 51, 0, 0, 15, 51, 0, 0, 186, 54, 0, 0, 0, 0, 0, 0, 187, 54, 0, 0, 134, 58, 0, 0, 135, 58, 0, 0, 114, 62, 0, 0, 115, 62, 0, 0, 126, 66, 0, 0, 127, 66, 0, 0, 170, 70, 0, 0, 171, 70, 0, 0, 246, 74, 0, 0, 247, 74, 0, 0, 191, 77, 0, 0, 190, 77, 0, 0, 99, 73, 0, 0, 98, 73, 0, 0, 39, 69, 0, 0, 38, 69, 0, 0, 11, 65, 0, 0, 10, 65, 0, 0, 15, 61, 0, 0, 14, 61, 0, 0, 51, 57, 0, 0, 1, 0, 0, 0, 50, 57, 0, 0, 119, 53, 0, 0, 118, 53, 0, 0, 219, 49, 0, 0, 218, 49, 0, 0, 95, 46, 0, 0, 94, 46, 0, 0, 3, 43, 0, 0, 2, 43, 0, 0, 199, 39, 0, 0, 198, 39, 0, 0, 171, 36, 0, 0, 170, 36, 0, 0, 175, 33, 0, 0, 174, 33, 0, 0, 1, 0, 0, 0, 211, 30, 0, 0, 210, 30, 0, 0, 23, 28, 0, 0, 22, 28, 0, 0, 123, 25, 0, 0, 122, 25, 0, 0, 255, 22, 0, 0, 254, 22, 0, 0, 162, 20, 0, 0, 164, 20, 0, 0, 166, 20, 0, 0, 168, 20, 0, 0, 170, 20, 0, 0, 172, 20, 0, 0, 174, 20, 0, 0, 1, 0, 0, 0, 176, 20, 0, 0, 178, 20, 0, 0, 180, 20, 0, 0, 182, 20, 0, 0, 184, 20, 0, 0, 186, 20, 0, 0, 188, 20, 0, 0, 190, 20, 0, 0, 192, 20, 0, 0, 194, 20, 0, 0, 196, 20, 0, 0, 198, 20, 0, 0, 200, 20, 0, 0, 202, 20, 0, 0, 204, 20, 0, 0, 1, 0, 0, 0, 206, 20, 0, 0, 208, 20, 0, 0, 210, 20, 0, 0, 212, 20, 0, 0, 214, 20, 0, 0, 216, 20, 0, 0, 218, 20, 0, 0, 220, 20, 0, 0, 222, 20, 0, 0, 224, 20, 0, 0, 226, 20, 0, 0, 228, 20, 0, 0, 230, 20, 0, 0, 232, 20, 0, 0, 234, 20, 0, 0, 1, 0, 0, 0, 236, 20, 0, 0, 238, 20, 0, 0, 240, 20, 0, 0, 242, 20, 0, 0, 244, 20, 0, 0, 246, 20, 0, 0, 248, 20, 0, 0, 250, 20, 0, 0, 252, 20, 0, 0, 254, 20, 0, 0, 0, 21, 0, 0, 2, 21, 0, 0, 4, 21, 0, 0, 6, 21, 0, 0, 8, 21, 0, 0, 1, 0, 0, 0, 10, 21, 0, 0, 12, 21, 0, 0, 14, 21, 0, 0, 16, 21, 0, 0, 18, 21, 0, 0, 20, 21, 0, 0, 22, 21, 0, 0, 24, 21, 0, 0, 26, 21, 0, 0, 28, 21, 0, 0, 30, 21, 0, 0, 32, 21, 0, 0, 34, 21, 0, 0, 36, 21, 0, 0, 38, 21, 0, 0, 1, 0, 0, 0, 40, 21, 0, 0, 42, 21, 0, 0, 44, 21, 0, 0, 46, 21, 0, 0, 48, 21, 0, 0, 50, 21, 0, 0, 52, 21, 0, 0, 54, 21, 0, 0, 56, 21, 0, 0, 164, 23, 0, 0, 165, 23, 0, 0, 48, 26, 0, 0, 49, 26, 0, 0, 220, 28, 0, 0, 221, 28, 0, 0, 1, 0, 0, 0, 168, 31, 0, 0, 169, 31, 0, 0, 148, 34, 0, 0, 149, 34, 0, 0, 160, 37, 0, 0, 161, 37, 0, 0, 204, 40, 0, 0, 205, 40, 0, 0, 24, 44, 0, 0, 25, 44, 0, 0, 132, 47, 0, 0, 133, 47, 0, 0, 16, 51, 0, 0, 17, 51, 0, 0, 188, 54, 0, 0, 1, 0, 0, 0, 189, 54, 0, 0, 136, 58, 0, 0, 137, 58, 0, 0, 116, 62, 0, 0, 117, 62, 0, 0, 128, 66, 0, 0, 129, 66, 0, 0, 172, 70, 0, 0, 173, 70, 0, 0, 248, 74, 0, 0, 249, 74, 0, 0, 189, 77, 0, 0, 188, 77, 0, 0, 97, 73, 0, 0, 96, 73, 0, 0, 37, 69, 0, 0, 36, 69, 0, 0, 9, 65, 0, 0, 8, 65, 0, 0, 13, 61, 0, 0, 12, 61, 0, 0, 49, 57, 0, 0, 0, 0, 0, 0, 48, 57, 0, 0, 117, 53, 0, 0, 116, 53, 0, 0, 217, 49, 0, 0, 216, 49, 0, 0, 93, 46, 0, 0, 92, 46, 0, 0, 1, 43, 0, 0, 0, 43, 0, 0, 197, 39, 0, 0, 196, 39, 0, 0, 169, 36, 0, 0, 168, 36, 0, 0, 173, 33, 0, 0, 172, 33, 0, 0, 0, 0, 0, 0, 209, 30, 0, 0, 208, 30, 0, 0, 21, 28, 0, 0, 20, 28, 0, 0, 121, 25, 0, 0, 120, 25, 0, 0, 253, 22, 0, 0, 252, 22, 0, 0, 161, 20, 0, 0, 160, 20, 0, 0, 99, 18, 0, 0, 101, 18, 0, 0, 103, 18, 0, 0, 105, 18, 0, 0, 107, 18, 0, 0, 0, 0, 0, 0, 109, 18, 0, 0, 111, 18, 0, 0, 113, 18, 0, 0, 115, 18, 0, 0, 117, 18, 0, 0, 119, 18, 0, 0, 121, 18, 0, 0, 123, 18, 0, 0, 125, 18, 0, 0, 127, 18, 0, 0, 129, 18, 0, 0, 131, 18, 0, 0, 133, 18, 0, 0, 135, 18, 0, 0, 137, 18, 0, 0, 0, 0, 0, 0, 139, 18, 0, 0, 141, 18, 0, 0, 143, 18, 0, 0, 145, 18, 0, 0, 147, 18, 0, 0, 149, 18, 0, 0, 151, 18, 0, 0, 153, 18, 0, 0, 155, 18, 0, 0, 157, 18, 0, 0, 159, 18, 0, 0, 161, 18, 0, 0, 163, 18, 0, 0, 165, 18, 0, 0, 167, 18, 0, 0, 0, 0, 0, 0, 169, 18, 0, 0, 171, 18, 0, 0, 173, 18, 0, 0, 175, 18, 0, 0, 177, 18, 0, 0, 179, 18, 0, 0, 181, 18, 0, 0, 183, 18, 0, 0, 185, 18, 0, 0, 187, 18, 0, 0, 189, 18, 0, 0, 191, 18, 0, 0, 193, 18, 0, 0, 195, 18, 0, 0, 197, 18, 0, 0, 0, 0, 0, 0, 199, 18, 0, 0, 201, 18, 0, 0, 203, 18, 0, 0, 205, 18, 0, 0, 207, 18, 0, 0, 209, 18, 0, 0, 211, 18, 0, 0, 213, 18, 0, 0, 215, 18, 0, 0, 217, 18, 0, 0, 219, 18, 0, 0, 221, 18, 0, 0, 223, 18, 0, 0, 225, 18, 0, 0, 227, 18, 0, 0, 0, 0, 0, 0, 229, 18, 0, 0, 231, 18, 0, 0, 233, 18, 0, 0, 235, 18, 0, 0, 237, 18, 0, 0, 239, 18, 0, 0, 241, 18, 0, 0, 58, 21, 0, 0, 59, 21, 0, 0, 166, 23, 0, 0, 167, 23, 0, 0, 50, 26, 0, 0, 51, 26, 0, 0, 222, 28, 0, 0, 223, 28, 0, 0, 0, 0, 0, 0, 170, 31, 0, 0, 171, 31, 0, 0, 150, 34, 0, 0, 151, 34, 0, 0, 162, 37, 0, 0, 163, 37, 0, 0, 206, 40, 0, 0, 207, 40, 0, 0, 26, 44, 0, 0, 27, 44, 0, 0, 134, 47, 0, 0, 135, 47, 0, 0, 18, 51, 0, 0, 19, 51, 0, 0, 190, 54, 0, 0, 0, 0, 0, 0, 191, 54, 0, 0, 138, 58, 0, 0, 139, 58, 0, 0, 118, 62, 0, 0, 119, 62, 0, 0, 130, 66, 0, 0, 131, 66, 0, 0, 174, 70, 0, 0, 175, 70, 0, 0, 250, 74, 0, 0, 251, 74, 0, 0, 187, 77, 0, 0, 186, 77, 0, 0, 95, 73, 0, 0, 94, 73, 0, 0, 35, 69, 0, 0, 34, 69, 0, 0, 7, 65, 0, 0, 6, 65, 0, 0, 11, 61, 0, 0, 10, 61, 0, 0, 47, 57, 0, 0, 1, 0, 0, 0, 46, 57, 0, 0, 115, 53, 0, 0, 114, 53, 0, 0, 215, 49, 0, 0, 214, 49, 0, 0, 91, 46, 0, 0, 90, 46, 0, 0, 255, 42, 0, 0, 254, 42, 0, 0, 195, 39, 0, 0, 194, 39, 0, 0, 167, 36, 0, 0, 166, 36, 0, 0, 171, 33, 0, 0, 170, 33, 0, 0, 1, 0, 0, 0, 207, 30, 0, 0, 206, 30, 0, 0, 19, 28, 0, 0, 18, 28, 0, 0, 119, 25, 0, 0, 118, 25, 0, 0, 251, 22, 0, 0, 250, 22, 0, 0, 159, 20, 0, 0, 158, 20, 0, 0, 98, 18, 0, 0, 100, 18, 0, 0, 102, 18, 0, 0, 104, 18, 0, 0, 106, 18, 0, 0, 1, 0, 0, 0, 108, 18, 0, 0, 110, 18, 0, 0, 112, 18, 0, 0, 114, 18, 0, 0, 116, 18, 0, 0, 118, 18, 0, 0, 120, 18, 0, 0, 122, 18, 0, 0, 124, 18, 0, 0, 126, 18, 0, 0, 128, 18, 0, 0, 130, 18, 0, 0, 132, 18, 0, 0, 134, 18, 0, 0, 136, 18, 0, 0, 1, 0, 0, 0, 138, 18, 0, 0, 140, 18, 0, 0, 142, 18, 0, 0, 144, 18, 0, 0, 146, 18, 0, 0, 148, 18, 0, 0, 150, 18, 0, 0, 152, 18, 0, 0, 154, 18, 0, 0, 156, 18, 0, 0, 158, 18, 0, 0, 160, 18, 0, 0, 162, 18, 0, 0, 164, 18, 0, 0, 166, 18, 0, 0, 1, 0, 0, 0, 168, 18, 0, 0, 170, 18, 0, 0, 172, 18, 0, 0, 174, 18, 0, 0, 176, 18, 0, 0, 178, 18, 0, 0, 180, 18, 0, 0, 182, 18, 0, 0, 184, 18, 0, 0, 186, 18, 0, 0, 188, 18, 0, 0, 190, 18, 0, 0, 192, 18, 0, 0, 194, 18, 0, 0, 196, 18, 0, 0, 1, 0, 0, 0, 198, 18, 0, 0, 200, 18, 0, 0, 202, 18, 0, 0, 204, 18, 0, 0, 206, 18, 0, 0, 208, 18, 0, 0, 210, 18, 0, 0, 212, 18, 0, 0, 214, 18, 0, 0, 216, 18, 0, 0, 218, 18, 0, 0, 220, 18, 0, 0, 222, 18, 0, 0, 224, 18, 0, 0, 226, 18, 0, 0, 1, 0, 0, 0, 228, 18, 0, 0, 230, 18, 0, 0, 232, 18, 0, 0, 234, 18, 0, 0, 236, 18, 0, 0, 238, 18, 0, 0, 240, 18, 0, 0, 60, 21, 0, 0, 61, 21, 0, 0, 168, 23, 0, 0, 169, 23, 0, 0, 52, 26, 0, 0, 53, 26, 0, 0, 224, 28, 0, 0, 225, 28, 0, 0, 1, 0, 0, 0, 172, 31, 0, 0, 173, 31, 0, 0, 152, 34, 0, 0, 153, 34, 0, 0, 164, 37, 0, 0, 165, 37, 0, 0, 208, 40, 0, 0, 209, 40, 0, 0, 28, 44, 0, 0, 29, 44, 0, 0, 136, 47, 0, 0, 137, 47, 0, 0, 20, 51, 0, 0, 21, 51, 0, 0, 192, 54, 0, 0, 1, 0, 0, 0, 193, 54, 0, 0, 140, 58, 0, 0, 141, 58, 0, 0, 120, 62, 0, 0, 121, 62, 0, 0, 132, 66, 0, 0, 133, 66, 0, 0, 176, 70, 0, 0, 177, 70, 0, 0, 252, 74, 0, 0, 253, 74, 0, 0, 185, 77, 0, 0, 184, 77, 0, 0, 93, 73, 0, 0, 92, 73, 0, 0, 33, 69, 0, 0, 32, 69, 0, 0, 5, 65, 0, 0, 4, 65, 0, 0, 9, 61, 0, 0, 8, 61, 0, 0, 45, 57, 0, 0, 0, 0, 0, 0, 44, 57, 0, 0, 113, 53, 0, 0, 112, 53, 0, 0, 213, 49, 0, 0, 212, 49, 0, 0, 89, 46, 0, 0, 88, 46, 0, 0, 253, 42, 0, 0, 252, 42, 0, 0, 193, 39, 0, 0, 192, 39, 0, 0, 165, 36, 0, 0, 164, 36, 0, 0, 169, 33, 0, 0, 168, 33, 0, 0, 0, 0, 0, 0, 205, 30, 0, 0, 204, 30, 0, 0, 17, 28, 0, 0, 16, 28, 0, 0, 117, 25, 0, 0, 116, 25, 0, 0, 249, 22, 0, 0, 248, 22, 0, 0, 157, 20, 0, 0, 156, 20, 0, 0, 97, 18, 0, 0, 96, 18, 0, 0, 67, 16, 0, 0, 69, 16, 0, 0, 71, 16, 0, 0, 0, 0, 0, 0, 73, 16, 0, 0, 75, 16, 0, 0, 77, 16, 0, 0, 79, 16, 0, 0, 81, 16, 0, 0, 83, 16, 0, 0, 85, 16, 0, 0, 87, 16, 0, 0, 89, 16, 0, 0, 91, 16, 0, 0, 93, 16, 0, 0, 95, 16, 0, 0, 97, 16, 0, 0, 99, 16, 0, 0, 101, 16, 0, 0, 0, 0, 0, 0, 103, 16, 0, 0, 105, 16, 0, 0, 107, 16, 0, 0, 109, 16, 0, 0, 111, 16, 0, 0, 113, 16, 0, 0, 115, 16, 0, 0, 117, 16, 0, 0, 119, 16, 0, 0, 121, 16, 0, 0, 123, 16, 0, 0, 125, 16, 0, 0, 127, 16, 0, 0, 129, 16, 0, 0, 131, 16, 0, 0, 0, 0, 0, 0, 133, 16, 0, 0, 135, 16, 0, 0, 137, 16, 0, 0, 139, 16, 0, 0, 141, 16, 0, 0, 143, 16, 0, 0, 145, 16, 0, 0, 147, 16, 0, 0, 149, 16, 0, 0, 151, 16, 0, 0, 153, 16, 0, 0, 155, 16, 0, 0, 157, 16, 0, 0, 159, 16, 0, 0, 161, 16, 0, 0, 0, 0, 0, 0, 163, 16, 0, 0, 165, 16, 0, 0, 167, 16, 0, 0, 169, 16, 0, 0, 171, 16, 0, 0, 173, 16, 0, 0, 175, 16, 0, 0, 177, 16, 0, 0, 179, 16, 0, 0, 181, 16, 0, 0, 183, 16, 0, 0, 185, 16, 0, 0, 187, 16, 0, 0, 189, 16, 0, 0, 191, 16, 0, 0, 0, 0, 0, 0, 193, 16, 0, 0, 195, 16, 0, 0, 197, 16, 0, 0, 199, 16, 0, 0, 201, 16, 0, 0, 242, 18, 0, 0, 243, 18, 0, 0, 62, 21, 0, 0, 63, 21, 0, 0, 170, 23, 0, 0, 171, 23, 0, 0, 54, 26, 0, 0, 55, 26, 0, 0, 226, 28, 0, 0, 227, 28, 0, 0, 0, 0, 0, 0, 174, 31, 0, 0, 175, 31, 0, 0, 154, 34, 0, 0, 155, 34, 0, 0, 166, 37, 0, 0, 167, 37, 0, 0, 210, 40, 0, 0, 211, 40, 0, 0, 30, 44, 0, 0, 31, 44, 0, 0, 138, 47, 0, 0, 139, 47, 0, 0, 22, 51, 0, 0, 23, 51, 0, 0, 194, 54, 0, 0, 0, 0, 0, 0, 195, 54, 0, 0, 142, 58, 0, 0, 143, 58, 0, 0, 122, 62, 0, 0, 123, 62, 0, 0, 134, 66, 0, 0, 135, 66, 0, 0, 178, 70, 0, 0, 179, 70, 0, 0, 254, 74, 0, 0, 255, 74, 0, 0, 183, 77, 0, 0, 182, 77, 0, 0, 91, 73, 0, 0, 90, 73, 0, 0, 31, 69, 0, 0, 30, 69, 0, 0, 3, 65, 0, 0, 2, 65, 0, 0, 7, 61, 0, 0, 6, 61, 0, 0, 43, 57, 0, 0, 1, 0, 0, 0, 42, 57, 0, 0, 111, 53, 0, 0, 110, 53, 0, 0, 211, 49, 0, 0, 210, 49, 0, 0, 87, 46, 0, 0, 86, 46, 0, 0, 251, 42, 0, 0, 250, 42, 0, 0, 191, 39, 0, 0, 190, 39, 0, 0, 163, 36, 0, 0, 162, 36, 0, 0, 167, 33, 0, 0, 166, 33, 0, 0, 1, 0, 0, 0, 203, 30, 0, 0, 202, 30, 0, 0, 15, 28, 0, 0, 14, 28, 0, 0, 115, 25, 0, 0, 114, 25, 0, 0, 247, 22, 0, 0, 246, 22, 0, 0, 155, 20, 0, 0, 154, 20, 0, 0, 95, 18, 0, 0, 94, 18, 0, 0, 66, 16, 0, 0, 68, 16, 0, 0, 70, 16, 0, 0, 1, 0, 0, 0, 72, 16, 0, 0, 74, 16, 0, 0, 76, 16, 0, 0, 78, 16, 0, 0, 80, 16, 0, 0, 82, 16, 0, 0, 84, 16, 0, 0, 86, 16, 0, 0, 88, 16, 0, 0, 90, 16, 0, 0, 92, 16, 0, 0, 94, 16, 0, 0, 96, 16, 0, 0, 98, 16, 0, 0, 100, 16, 0, 0, 1, 0, 0, 0, 102, 16, 0, 0, 104, 16, 0, 0, 106, 16, 0, 0, 108, 16, 0, 0, 110, 16, 0, 0, 112, 16, 0, 0, 114, 16, 0, 0, 116, 16, 0, 0, 118, 16, 0, 0, 120, 16, 0, 0, 122, 16, 0, 0, 124, 16, 0, 0, 126, 16, 0, 0, 128, 16, 0, 0, 130, 16, 0, 0, 1, 0, 0, 0, 132, 16, 0, 0, 134, 16, 0, 0, 136, 16, 0, 0, 138, 16, 0, 0, 140, 16, 0, 0, 142, 16, 0, 0, 144, 16, 0, 0, 146, 16, 0, 0, 148, 16, 0, 0, 150, 16, 0, 0, 152, 16, 0, 0, 154, 16, 0, 0, 156, 16, 0, 0, 158, 16, 0, 0, 160, 16, 0, 0, 1, 0, 0, 0, 162, 16, 0, 0, 164, 16, 0, 0, 166, 16, 0, 0, 168, 16, 0, 0, 170, 16, 0, 0, 172, 16, 0, 0, 174, 16, 0, 0, 176, 16, 0, 0, 178, 16, 0, 0, 180, 16, 0, 0, 182, 16, 0, 0, 184, 16, 0, 0, 186, 16, 0, 0, 188, 16, 0, 0, 190, 16, 0, 0, 1, 0, 0, 0, 192, 16, 0, 0, 194, 16, 0, 0, 196, 16, 0, 0, 198, 16, 0, 0, 200, 16, 0, 0, 244, 18, 0, 0, 245, 18, 0, 0, 64, 21, 0, 0, 65, 21, 0, 0, 172, 23, 0, 0, 173, 23, 0, 0, 56, 26, 0, 0, 57, 26, 0, 0, 228, 28, 0, 0, 229, 28, 0, 0, 1, 0, 0, 0, 176, 31, 0, 0, 177, 31, 0, 0, 156, 34, 0, 0, 157, 34, 0, 0, 168, 37, 0, 0, 169, 37, 0, 0, 212, 40, 0, 0, 213, 40, 0, 0, 32, 44, 0, 0, 33, 44, 0, 0, 140, 47, 0, 0, 141, 47, 0, 0, 24, 51, 0, 0, 25, 51, 0, 0, 196, 54, 0, 0, 1, 0, 0, 0, 197, 54, 0, 0, 144, 58, 0, 0, 145, 58, 0, 0, 124, 62, 0, 0, 125, 62, 0, 0, 136, 66, 0, 0, 137, 66, 0, 0, 180, 70, 0, 0, 181, 70, 0, 0, 0, 75, 0, 0, 1, 75, 0, 0, 181, 77, 0, 0, 180, 77, 0, 0, 89, 73, 0, 0, 88, 73, 0, 0, 29, 69, 0, 0, 28, 69, 0, 0, 1, 65, 0, 0, 0, 65, 0, 0, 5, 61, 0, 0, 4, 61, 0, 0, 41, 57, 0, 0, 0, 0, 0, 0, 40, 57, 0, 0, 109, 53, 0, 0, 108, 53, 0, 0, 209, 49, 0, 0, 208, 49, 0, 0, 85, 46, 0, 0, 84, 46, 0, 0, 249, 42, 0, 0, 248, 42, 0, 0, 189, 39, 0, 0, 188, 39, 0, 0, 161, 36, 0, 0, 160, 36, 0, 0, 165, 33, 0, 0, 164, 33, 0, 0, 0, 0, 0, 0, 201, 30, 0, 0, 200, 30, 0, 0, 13, 28, 0, 0, 12, 28, 0, 0, 113, 25, 0, 0, 112, 25, 0, 0, 245, 22, 0, 0, 244, 22, 0, 0, 153, 20, 0, 0, 152, 20, 0, 0, 93, 18, 0, 0, 92, 18, 0, 0, 65, 16, 0, 0, 64, 16, 0, 0, 67, 14, 0, 0, 0, 0, 0, 0, 69, 14, 0, 0, 71, 14, 0, 0, 73, 14, 0, 0, 75, 14, 0, 0, 77, 14, 0, 0, 79, 14, 0, 0, 81, 14, 0, 0, 83, 14, 0, 0, 85, 14, 0, 0, 87, 14, 0, 0, 89, 14, 0, 0, 91, 14, 0, 0, 93, 14, 0, 0, 95, 14, 0, 0, 97, 14, 0, 0, 0, 0, 0, 0, 99, 14, 0, 0, 101, 14, 0, 0, 103, 14, 0, 0, 105, 14, 0, 0, 107, 14, 0, 0, 109, 14, 0, 0, 111, 14, 0, 0, 113, 14, 0, 0, 115, 14, 0, 0, 117, 14, 0, 0, 119, 14, 0, 0, 121, 14, 0, 0, 123, 14, 0, 0, 125, 14, 0, 0, 127, 14, 0, 0, 0, 0, 0, 0, 129, 14, 0, 0, 131, 14, 0, 0, 133, 14, 0, 0, 135, 14, 0, 0, 137, 14, 0, 0, 139, 14, 0, 0, 141, 14, 0, 0, 143, 14, 0, 0, 145, 14, 0, 0, 147, 14, 0, 0, 149, 14, 0, 0, 151, 14, 0, 0, 153, 14, 0, 0, 155, 14, 0, 0, 157, 14, 0, 0, 0, 0, 0, 0, 159, 14, 0, 0, 161, 14, 0, 0, 163, 14, 0, 0, 165, 14, 0, 0, 167, 14, 0, 0, 169, 14, 0, 0, 171, 14, 0, 0, 173, 14, 0, 0, 175, 14, 0, 0, 177, 14, 0, 0, 179, 14, 0, 0, 181, 14, 0, 0, 183, 14, 0, 0, 185, 14, 0, 0, 187, 14, 0, 0, 0, 0, 0, 0, 189, 14, 0, 0, 191, 14, 0, 0, 193, 14, 0, 0, 202, 16, 0, 0, 203, 16, 0, 0, 246, 18, 0, 0, 247, 18, 0, 0, 66, 21, 0, 0, 67, 21, 0, 0, 174, 23, 0, 0, 175, 23, 0, 0, 58, 26, 0, 0, 59, 26, 0, 0, 230, 28, 0, 0, 231, 28, 0, 0, 0, 0, 0, 0, 178, 31, 0, 0, 179, 31, 0, 0, 158, 34, 0, 0, 159, 34, 0, 0, 170, 37, 0, 0, 171, 37, 0, 0, 214, 40, 0, 0, 215, 40, 0, 0, 34, 44, 0, 0, 35, 44, 0, 0, 142, 47, 0, 0, 143, 47, 0, 0, 26, 51, 0, 0, 27, 51, 0, 0, 198, 54, 0, 0, 0, 0, 0, 0, 199, 54, 0, 0, 146, 58, 0, 0, 147, 58, 0, 0, 126, 62, 0, 0, 127, 62, 0, 0, 138, 66, 0, 0, 139, 66, 0, 0, 182, 70, 0, 0, 183, 70, 0, 0, 2, 75, 0, 0, 3, 75, 0, 0, 179, 77, 0, 0, 178, 77, 0, 0, 87, 73, 0, 0, 86, 73, 0, 0, 27, 69, 0, 0, 26, 69, 0, 0, 255, 64, 0, 0, 254, 64, 0, 0, 3, 61, 0, 0, 2, 61, 0, 0, 39, 57, 0, 0, 1, 0, 0, 0, 38, 57, 0, 0, 107, 53, 0, 0, 106, 53, 0, 0, 207, 49, 0, 0, 206, 49, 0, 0, 83, 46, 0, 0, 82, 46, 0, 0, 247, 42, 0, 0, 246, 42, 0, 0, 187, 39, 0, 0, 186, 39, 0, 0, 159, 36, 0, 0, 158, 36, 0, 0, 163, 33, 0, 0, 162, 33, 0, 0, 1, 0, 0, 0, 199, 30, 0, 0, 198, 30, 0, 0, 11, 28, 0, 0, 10, 28, 0, 0, 111, 25, 0, 0, 110, 25, 0, 0, 243, 22, 0, 0, 242, 22, 0, 0, 151, 20, 0, 0, 150, 20, 0, 0, 91, 18, 0, 0, 90, 18, 0, 0, 63, 16, 0, 0, 62, 16, 0, 0, 66, 14, 0, 0, 1, 0, 0, 0, 68, 14, 0, 0, 70, 14, 0, 0, 72, 14, 0, 0, 74, 14, 0, 0, 76, 14, 0, 0, 78, 14, 0, 0, 80, 14, 0, 0, 82, 14, 0, 0, 84, 14, 0, 0, 86, 14, 0, 0, 88, 14, 0, 0, 90, 14, 0, 0, 92, 14, 0, 0, 94, 14, 0, 0, 96, 14, 0, 0, 1, 0, 0, 0, 98, 14, 0, 0, 100, 14, 0, 0, 102, 14, 0, 0, 104, 14, 0, 0, 106, 14, 0, 0, 108, 14, 0, 0, 110, 14, 0, 0, 112, 14, 0, 0, 114, 14, 0, 0, 116, 14, 0, 0, 118, 14, 0, 0, 120, 14, 0, 0, 122, 14, 0, 0, 124, 14, 0, 0, 126, 14, 0, 0, 1, 0, 0, 0, 128, 14, 0, 0, 130, 14, 0, 0, 132, 14, 0, 0, 134, 14, 0, 0, 136, 14, 0, 0, 138, 14, 0, 0, 140, 14, 0, 0, 142, 14, 0, 0, 144, 14, 0, 0, 146, 14, 0, 0, 148, 14, 0, 0, 150, 14, 0, 0, 152, 14, 0, 0, 154, 14, 0, 0, 156, 14, 0, 0, 1, 0, 0, 0, 158, 14, 0, 0, 160, 14, 0, 0, 162, 14, 0, 0, 164, 14, 0, 0, 166, 14, 0, 0, 168, 14, 0, 0, 170, 14, 0, 0, 172, 14, 0, 0, 174, 14, 0, 0, 176, 14, 0, 0, 178, 14, 0, 0, 180, 14, 0, 0, 182, 14, 0, 0, 184, 14, 0, 0, 186, 14, 0, 0, 1, 0, 0, 0, 188, 14, 0, 0, 190, 14, 0, 0, 192, 14, 0, 0, 204, 16, 0, 0, 205, 16, 0, 0, 248, 18, 0, 0, 249, 18, 0, 0, 68, 21, 0, 0, 69, 21, 0, 0, 176, 23, 0, 0, 177, 23, 0, 0, 60, 26, 0, 0, 61, 26, 0, 0, 232, 28, 0, 0, 233, 28, 0, 0, 1, 0, 0, 0, 180, 31, 0, 0, 181, 31, 0, 0, 160, 34, 0, 0, 161, 34, 0, 0, 172, 37, 0, 0, 173, 37, 0, 0, 216, 40, 0, 0, 217, 40, 0, 0, 36, 44, 0, 0, 37, 44, 0, 0, 144, 47, 0, 0, 145, 47, 0, 0, 28, 51, 0, 0, 29, 51, 0, 0, 200, 54, 0, 0, 1, 0, 0, 0, 201, 54, 0, 0, 148, 58, 0, 0, 149, 58, 0, 0, 128, 62, 0, 0, 129, 62, 0, 0, 140, 66, 0, 0, 141, 66, 0, 0, 184, 70, 0, 0, 185, 70, 0, 0, 4, 75, 0, 0, 5, 75, 0, 0, 177, 77, 0, 0, 176, 77, 0, 0, 85, 73, 0, 0, 84, 73, 0, 0, 25, 69, 0, 0, 24, 69, 0, 0, 253, 64, 0, 0, 252, 64, 0, 0, 1, 61, 0, 0, 0, 61, 0, 0, 37, 57, 0, 0, 0, 0, 0, 0, 36, 57, 0, 0, 105, 53, 0, 0, 104, 53, 0, 0, 205, 49, 0, 0, 204, 49, 0, 0, 81, 46, 0, 0, 80, 46, 0, 0, 245, 42, 0, 0, 244, 42, 0, 0, 185, 39, 0, 0, 184, 39, 0, 0, 157, 36, 0, 0, 156, 36, 0, 0, 161, 33, 0, 0, 160, 33, 0, 0, 0, 0, 0, 0, 197, 30, 0, 0, 196, 30, 0, 0, 9, 28, 0, 0, 8, 28, 0, 0, 109, 25, 0, 0, 108, 25, 0, 0, 241, 22, 0, 0, 240, 22, 0, 0, 149, 20, 0, 0, 148, 20, 0, 0, 89, 18, 0, 0, 88, 18, 0, 0, 61, 16, 0, 0, 60, 16, 0, 0, 65, 14, 0, 0, 0, 0, 0, 0, 64, 14, 0, 0, 99, 12, 0, 0, 101, 12, 0, 0, 103, 12, 0, 0, 105, 12, 0, 0, 107, 12, 0, 0, 109, 12, 0, 0, 111, 12, 0, 0, 113, 12, 0, 0, 115, 12, 0, 0, 117, 12, 0, 0, 119, 12, 0, 0, 121, 12, 0, 0, 123, 12, 0, 0, 125, 12, 0, 0, 0, 0, 0, 0, 127, 12, 0, 0, 129, 12, 0, 0, 131, 12, 0, 0, 133, 12, 0, 0, 135, 12, 0, 0, 137, 12, 0, 0, 139, 12, 0, 0, 141, 12, 0, 0, 143, 12, 0, 0, 145, 12, 0, 0, 147, 12, 0, 0, 149, 12, 0, 0, 151, 12, 0, 0, 153, 12, 0, 0, 155, 12, 0, 0, 0, 0, 0, 0, 157, 12, 0, 0, 159, 12, 0, 0, 161, 12, 0, 0, 163, 12, 0, 0, 165, 12, 0, 0, 167, 12, 0, 0, 169, 12, 0, 0, 171, 12, 0, 0, 173, 12, 0, 0, 175, 12, 0, 0, 177, 12, 0, 0, 179, 12, 0, 0, 181, 12, 0, 0, 183, 12, 0, 0, 185, 12, 0, 0, 0, 0, 0, 0, 187, 12, 0, 0, 189, 12, 0, 0, 191, 12, 0, 0, 193, 12, 0, 0, 195, 12, 0, 0, 197, 12, 0, 0, 199, 12, 0, 0, 201, 12, 0, 0, 203, 12, 0, 0, 205, 12, 0, 0, 207, 12, 0, 0, 209, 12, 0, 0, 211, 12, 0, 0, 213, 12, 0, 0, 215, 12, 0, 0, 0, 0, 0, 0, 217, 12, 0, 0, 194, 14, 0, 0, 195, 14, 0, 0, 206, 16, 0, 0, 207, 16, 0, 0, 250, 18, 0, 0, 251, 18, 0, 0, 70, 21, 0, 0, 71, 21, 0, 0, 178, 23, 0, 0, 179, 23, 0, 0, 62, 26, 0, 0, 63, 26, 0, 0, 234, 28, 0, 0, 235, 28, 0, 0, 0, 0, 0, 0, 182, 31, 0, 0, 183, 31, 0, 0, 162, 34, 0, 0, 163, 34, 0, 0, 174, 37, 0, 0, 175, 37, 0, 0, 218, 40, 0, 0, 219, 40, 0, 0, 38, 44, 0, 0, 39, 44, 0, 0, 146, 47, 0, 0, 147, 47, 0, 0, 30, 51, 0, 0, 31, 51, 0, 0, 202, 54, 0, 0, 0, 0, 0, 0, 203, 54, 0, 0, 150, 58, 0, 0, 151, 58, 0, 0, 130, 62, 0, 0, 131, 62, 0, 0, 142, 66, 0, 0, 143, 66, 0, 0, 186, 70, 0, 0, 187, 70, 0, 0, 6, 75, 0, 0, 7, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 175, 77, 0, 0, 174, 77, 0, 0, 83, 73, 0, 0, 82, 73, 0, 0, 23, 69, 0, 0, 22, 69, 0, 0, 251, 64, 0, 0, 250, 64, 0, 0, 255, 60, 0, 0, 254, 60, 0, 0, 35, 57, 0, 0, 0, 0, 0, 0, 34, 57, 0, 0, 103, 53, 0, 0, 102, 53, 0, 0, 203, 49, 0, 0, 202, 49, 0, 0, 79, 46, 0, 0, 78, 46, 0, 0, 243, 42, 0, 0, 242, 42, 0, 0, 183, 39, 0, 0, 182, 39, 0, 0, 155, 36, 0, 0, 154, 36, 0, 0, 159, 33, 0, 0, 158, 33, 0, 0, 0, 0, 0, 0, 195, 30, 0, 0, 194, 30, 0, 0, 7, 28, 0, 0, 6, 28, 0, 0, 107, 25, 0, 0, 106, 25, 0, 0, 239, 22, 0, 0, 238, 22, 0, 0, 147, 20, 0, 0, 146, 20, 0, 0, 87, 18, 0, 0, 86, 18, 0, 0, 59, 16, 0, 0, 58, 16, 0, 0, 63, 14, 0, 0, 0, 0, 0, 0, 62, 14, 0, 0, 98, 12, 0, 0, 100, 12, 0, 0, 102, 12, 0, 0, 104, 12, 0, 0, 106, 12, 0, 0, 108, 12, 0, 0, 110, 12, 0, 0, 112, 12, 0, 0, 114, 12, 0, 0, 116, 12, 0, 0, 118, 12, 0, 0, 120, 12, 0, 0, 122, 12, 0, 0, 124, 12, 0, 0, 0, 0, 0, 0, 126, 12, 0, 0, 128, 12, 0, 0, 130, 12, 0, 0, 132, 12, 0, 0, 134, 12, 0, 0, 136, 12, 0, 0, 138, 12, 0, 0, 140, 12, 0, 0, 142, 12, 0, 0, 144, 12, 0, 0, 146, 12, 0, 0, 148, 12, 0, 0, 150, 12, 0, 0, 152, 12, 0, 0, 154, 12, 0, 0, 0, 0, 0, 0, 156, 12, 0, 0, 158, 12, 0, 0, 160, 12, 0, 0, 162, 12, 0, 0, 164, 12, 0, 0, 166, 12, 0, 0, 168, 12, 0, 0, 170, 12, 0, 0, 172, 12, 0, 0, 174, 12, 0, 0, 176, 12, 0, 0, 178, 12, 0, 0, 180, 12, 0, 0, 182, 12, 0, 0, 184, 12, 0, 0, 0, 0, 0, 0, 186, 12, 0, 0, 188, 12, 0, 0, 190, 12, 0, 0, 192, 12, 0, 0, 194, 12, 0, 0, 196, 12, 0, 0, 198, 12, 0, 0, 200, 12, 0, 0, 202, 12, 0, 0, 204, 12, 0, 0, 206, 12, 0, 0, 208, 12, 0, 0, 210, 12, 0, 0, 212, 12, 0, 0, 214, 12, 0, 0, 0, 0, 0, 0, 216, 12, 0, 0, 196, 14, 0, 0, 197, 14, 0, 0, 208, 16, 0, 0, 209, 16, 0, 0, 252, 18, 0, 0, 253, 18, 0, 0, 72, 21, 0, 0, 73, 21, 0, 0, 180, 23, 0, 0, 181, 23, 0, 0, 64, 26, 0, 0, 65, 26, 0, 0, 236, 28, 0, 0, 237, 28, 0, 0, 0, 0, 0, 0, 184, 31, 0, 0, 185, 31, 0, 0, 164, 34, 0, 0, 165, 34, 0, 0, 176, 37, 0, 0, 177, 37, 0, 0, 220, 40, 0, 0, 221, 40, 0, 0, 40, 44, 0, 0, 41, 44, 0, 0, 148, 47, 0, 0, 149, 47, 0, 0, 32, 51, 0, 0, 33, 51, 0, 0, 204, 54, 0, 0, 0, 0, 0, 0, 205, 54, 0, 0, 152, 58, 0, 0, 153, 58, 0, 0, 132, 62, 0, 0, 133, 62, 0, 0, 144, 66, 0, 0, 145, 66, 0, 0, 188, 70, 0, 0, 189, 70, 0, 0, 8, 75, 0, 0, 9, 75, 0, 0, 173, 77, 0, 0, 172, 77, 0, 0, 81, 73, 0, 0, 80, 73, 0, 0, 21, 69, 0, 0, 20, 69, 0, 0, 249, 64, 0, 0, 248, 64, 0, 0, 253, 60, 0, 0, 252, 60, 0, 0, 33, 57, 0, 0, 1, 0, 0, 0, 32, 57, 0, 0, 101, 53, 0, 0, 100, 53, 0, 0, 201, 49, 0, 0, 200, 49, 0, 0, 77, 46, 0, 0, 76, 46, 0, 0, 241, 42, 0, 0, 240, 42, 0, 0, 181, 39, 0, 0, 180, 39, 0, 0, 153, 36, 0, 0, 152, 36, 0, 0, 157, 33, 0, 0, 156, 33, 0, 0, 1, 0, 0, 0, 193, 30, 0, 0, 192, 30, 0, 0, 5, 28, 0, 0, 4, 28, 0, 0, 105, 25, 0, 0, 104, 25, 0, 0, 237, 22, 0, 0, 236, 22, 0, 0, 145, 20, 0, 0, 144, 20, 0, 0, 85, 18, 0, 0, 84, 18, 0, 0, 57, 16, 0, 0, 56, 16, 0, 0, 61, 14, 0, 0, 1, 0, 0, 0, 60, 14, 0, 0, 97, 12, 0, 0, 96, 12, 0, 0, 163, 10, 0, 0, 165, 10, 0, 0, 167, 10, 0, 0, 169, 10, 0, 0, 171, 10, 0, 0, 173, 10, 0, 0, 175, 10, 0, 0, 177, 10, 0, 0, 179, 10, 0, 0, 181, 10, 0, 0, 183, 10, 0, 0, 185, 10, 0, 0, 1, 0, 0, 0, 187, 10, 0, 0, 189, 10, 0, 0, 191, 10, 0, 0, 193, 10, 0, 0, 195, 10, 0, 0, 197, 10, 0, 0, 199, 10, 0, 0, 201, 10, 0, 0, 203, 10, 0, 0, 205, 10, 0, 0, 207, 10, 0, 0, 209, 10, 0, 0, 211, 10, 0, 0, 213, 10, 0, 0, 215, 10, 0, 0, 1, 0, 0, 0, 217, 10, 0, 0, 219, 10, 0, 0, 221, 10, 0, 0, 223, 10, 0, 0, 225, 10, 0, 0, 227, 10, 0, 0, 229, 10, 0, 0, 231, 10, 0, 0, 233, 10, 0, 0, 235, 10, 0, 0, 237, 10, 0, 0, 239, 10, 0, 0, 241, 10, 0, 0, 243, 10, 0, 0, 245, 10, 0, 0, 1, 0, 0, 0, 247, 10, 0, 0, 249, 10, 0, 0, 251, 10, 0, 0, 253, 10, 0, 0, 255, 10, 0, 0, 1, 11, 0, 0, 3, 11, 0, 0, 5, 11, 0, 0, 7, 11, 0, 0, 9, 11, 0, 0, 11, 11, 0, 0, 13, 11, 0, 0, 15, 11, 0, 0, 17, 11, 0, 0, 218, 12, 0, 0, 1, 0, 0, 0, 219, 12, 0, 0, 198, 14, 0, 0, 199, 14, 0, 0, 210, 16, 0, 0, 211, 16, 0, 0, 254, 18, 0, 0, 255, 18, 0, 0, 74, 21, 0, 0, 75, 21, 0, 0, 182, 23, 0, 0, 183, 23, 0, 0, 66, 26, 0, 0, 67, 26, 0, 0, 238, 28, 0, 0, 239, 28, 0, 0, 1, 0, 0, 0, 186, 31, 0, 0, 187, 31, 0, 0, 166, 34, 0, 0, 167, 34, 0, 0, 178, 37, 0, 0, 179, 37, 0, 0, 222, 40, 0, 0, 223, 40, 0, 0, 42, 44, 0, 0, 43, 44, 0, 0, 150, 47, 0, 0, 151, 47, 0, 0, 34, 51, 0, 0, 35, 51, 0, 0, 206, 54, 0, 0, 1, 0, 0, 0, 207, 54, 0, 0, 154, 58, 0, 0, 155, 58, 0, 0, 134, 62, 0, 0, 135, 62, 0, 0, 146, 66, 0, 0, 147, 66, 0, 0, 190, 70, 0, 0, 191, 70, 0, 0, 10, 75, 0, 0, 11, 75, 0, 0, 171, 77, 0, 0, 170, 77, 0, 0, 79, 73, 0, 0, 78, 73, 0, 0, 19, 69, 0, 0, 18, 69, 0, 0, 247, 64, 0, 0, 246, 64, 0, 0, 251, 60, 0, 0, 250, 60, 0, 0, 31, 57, 0, 0, 0, 0, 0, 0, 30, 57, 0, 0, 99, 53, 0, 0, 98, 53, 0, 0, 199, 49, 0, 0, 198, 49, 0, 0, 75, 46, 0, 0, 74, 46, 0, 0, 239, 42, 0, 0, 238, 42, 0, 0, 179, 39, 0, 0, 178, 39, 0, 0, 151, 36, 0, 0, 150, 36, 0, 0, 155, 33, 0, 0, 154, 33, 0, 0, 0, 0, 0, 0, 191, 30, 0, 0, 190, 30, 0, 0, 3, 28, 0, 0, 2, 28, 0, 0, 103, 25, 0, 0, 102, 25, 0, 0, 235, 22, 0, 0, 234, 22, 0, 0, 143, 20, 0, 0, 142, 20, 0, 0, 83, 18, 0, 0, 82, 18, 0, 0, 55, 16, 0, 0, 54, 16, 0, 0, 59, 14, 0, 0, 0, 0, 0, 0, 58, 14, 0, 0, 95, 12, 0, 0, 94, 12, 0, 0, 162, 10, 0, 0, 164, 10, 0, 0, 166, 10, 0, 0, 168, 10, 0, 0, 170, 10, 0, 0, 172, 10, 0, 0, 174, 10, 0, 0, 176, 10, 0, 0, 178, 10, 0, 0, 180, 10, 0, 0, 182, 10, 0, 0, 184, 10, 0, 0, 0, 0, 0, 0, 186, 10, 0, 0, 188, 10, 0, 0, 190, 10, 0, 0, 192, 10, 0, 0, 194, 10, 0, 0, 196, 10, 0, 0, 198, 10, 0, 0, 200, 10, 0, 0, 202, 10, 0, 0, 204, 10, 0, 0, 206, 10, 0, 0, 208, 10, 0, 0, 210, 10, 0, 0, 212, 10, 0, 0, 214, 10, 0, 0, 0, 0, 0, 0, 216, 10, 0, 0, 218, 10, 0, 0, 220, 10, 0, 0, 222, 10, 0, 0, 224, 10, 0, 0, 226, 10, 0, 0, 228, 10, 0, 0, 230, 10, 0, 0, 232, 10, 0, 0, 234, 10, 0, 0, 236, 10, 0, 0, 238, 10, 0, 0, 240, 10, 0, 0, 242, 10, 0, 0, 244, 10, 0, 0, 0, 0, 0, 0, 246, 10, 0, 0, 248, 10, 0, 0, 250, 10, 0, 0, 252, 10, 0, 0, 254, 10, 0, 0, 0, 11, 0, 0, 2, 11, 0, 0, 4, 11, 0, 0, 6, 11, 0, 0, 8, 11, 0, 0, 10, 11, 0, 0, 12, 11, 0, 0, 14, 11, 0, 0, 16, 11, 0, 0, 220, 12, 0, 0, 0, 0, 0, 0, 221, 12, 0, 0, 200, 14, 0, 0, 201, 14, 0, 0, 212, 16, 0, 0, 213, 16, 0, 0, 0, 19, 0, 0, 1, 19, 0, 0, 76, 21, 0, 0, 77, 21, 0, 0, 184, 23, 0, 0, 185, 23, 0, 0, 68, 26, 0, 0, 69, 26, 0, 0, 240, 28, 0, 0, 241, 28, 0, 0, 0, 0, 0, 0, 188, 31, 0, 0, 189, 31, 0, 0, 168, 34, 0, 0, 169, 34, 0, 0, 180, 37, 0, 0, 181, 37, 0, 0, 224, 40, 0, 0, 225, 40, 0, 0, 44, 44, 0, 0, 45, 44, 0, 0, 152, 47, 0, 0, 153, 47, 0, 0, 36, 51, 0, 0, 37, 51, 0, 0, 208, 54, 0, 0, 0, 0, 0, 0, 209, 54, 0, 0, 156, 58, 0, 0, 157, 58, 0, 0, 136, 62, 0, 0, 137, 62, 0, 0, 148, 66, 0, 0, 149, 66, 0, 0, 192, 70, 0, 0, 193, 70, 0, 0, 12, 75, 0, 0, 13, 75, 0, 0, 169, 77, 0, 0, 168, 77, 0, 0, 77, 73, 0, 0, 76, 73, 0, 0, 17, 69, 0, 0, 16, 69, 0, 0, 245, 64, 0, 0, 244, 64, 0, 0, 249, 60, 0, 0, 248, 60, 0, 0, 29, 57, 0, 0, 1, 0, 0, 0, 28, 57, 0, 0, 97, 53, 0, 0, 96, 53, 0, 0, 197, 49, 0, 0, 196, 49, 0, 0, 73, 46, 0, 0, 72, 46, 0, 0, 237, 42, 0, 0, 236, 42, 0, 0, 177, 39, 0, 0, 176, 39, 0, 0, 149, 36, 0, 0, 148, 36, 0, 0, 153, 33, 0, 0, 152, 33, 0, 0, 1, 0, 0, 0, 189, 30, 0, 0, 188, 30, 0, 0, 1, 28, 0, 0, 0, 28, 0, 0, 101, 25, 0, 0, 100, 25, 0, 0, 233, 22, 0, 0, 232, 22, 0, 0, 141, 20, 0, 0, 140, 20, 0, 0, 81, 18, 0, 0, 80, 18, 0, 0, 53, 16, 0, 0, 52, 16, 0, 0, 57, 14, 0, 0, 1, 0, 0, 0, 56, 14, 0, 0, 93, 12, 0, 0, 92, 12, 0, 0, 161, 10, 0, 0, 160, 10, 0, 0, 3, 9, 0, 0, 5, 9, 0, 0, 7, 9, 0, 0, 9, 9, 0, 0, 11, 9, 0, 0, 13, 9, 0, 0, 15, 9, 0, 0, 17, 9, 0, 0, 19, 9, 0, 0, 21, 9, 0, 0, 1, 0, 0, 0, 23, 9, 0, 0, 25, 9, 0, 0, 27, 9, 0, 0, 29, 9, 0, 0, 31, 9, 0, 0, 33, 9, 0, 0, 35, 9, 0, 0, 37, 9, 0, 0, 39, 9, 0, 0, 41, 9, 0, 0, 43, 9, 0, 0, 45, 9, 0, 0, 47, 9, 0, 0, 49, 9, 0, 0, 51, 9, 0, 0, 1, 0, 0, 0, 53, 9, 0, 0, 55, 9, 0, 0, 57, 9, 0, 0, 59, 9, 0, 0, 61, 9, 0, 0, 63, 9, 0, 0, 65, 9, 0, 0, 67, 9, 0, 0, 69, 9, 0, 0, 71, 9, 0, 0, 73, 9, 0, 0, 75, 9, 0, 0, 77, 9, 0, 0, 79, 9, 0, 0, 81, 9, 0, 0, 1, 0, 0, 0, 83, 9, 0, 0, 85, 9, 0, 0, 87, 9, 0, 0, 89, 9, 0, 0, 91, 9, 0, 0, 93, 9, 0, 0, 95, 9, 0, 0, 97, 9, 0, 0, 99, 9, 0, 0, 101, 9, 0, 0, 103, 9, 0, 0, 105, 9, 0, 0, 18, 11, 0, 0, 19, 11, 0, 0, 222, 12, 0, 0, 1, 0, 0, 0, 223, 12, 0, 0, 202, 14, 0, 0, 203, 14, 0, 0, 214, 16, 0, 0, 215, 16, 0, 0, 2, 19, 0, 0, 3, 19, 0, 0, 78, 21, 0, 0, 79, 21, 0, 0, 186, 23, 0, 0, 187, 23, 0, 0, 70, 26, 0, 0, 71, 26, 0, 0, 242, 28, 0, 0, 243, 28, 0, 0, 1, 0, 0, 0, 190, 31, 0, 0, 191, 31, 0, 0, 170, 34, 0, 0, 171, 34, 0, 0, 182, 37, 0, 0, 183, 37, 0, 0, 226, 40, 0, 0, 227, 40, 0, 0, 46, 44, 0, 0, 47, 44, 0, 0, 154, 47, 0, 0, 155, 47, 0, 0, 38, 51, 0, 0, 39, 51, 0, 0, 210, 54, 0, 0, 1, 0, 0, 0, 211, 54, 0, 0, 158, 58, 0, 0, 159, 58, 0, 0, 138, 62, 0, 0, 139, 62, 0, 0, 150, 66, 0, 0, 151, 66, 0, 0, 194, 70, 0, 0, 195, 70, 0, 0, 14, 75, 0, 0, 15, 75, 0, 0, 167, 77, 0, 0, 166, 77, 0, 0, 75, 73, 0, 0, 74, 73, 0, 0, 15, 69, 0, 0, 14, 69, 0, 0, 243, 64, 0, 0, 242, 64, 0, 0, 247, 60, 0, 0, 246, 60, 0, 0, 27, 57, 0, 0, 0, 0, 0, 0, 26, 57, 0, 0, 95, 53, 0, 0, 94, 53, 0, 0, 195, 49, 0, 0, 194, 49, 0, 0, 71, 46, 0, 0, 70, 46, 0, 0, 235, 42, 0, 0, 234, 42, 0, 0, 175, 39, 0, 0, 174, 39, 0, 0, 147, 36, 0, 0, 146, 36, 0, 0, 151, 33, 0, 0, 150, 33, 0, 0, 0, 0, 0, 0, 187, 30, 0, 0, 186, 30, 0, 0, 255, 27, 0, 0, 254, 27, 0, 0, 99, 25, 0, 0, 98, 25, 0, 0, 231, 22, 0, 0, 230, 22, 0, 0, 139, 20, 0, 0, 138, 20, 0, 0, 79, 18, 0, 0, 78, 18, 0, 0, 51, 16, 0, 0, 50, 16, 0, 0, 55, 14, 0, 0, 0, 0, 0, 0, 54, 14, 0, 0, 91, 12, 0, 0, 90, 12, 0, 0, 159, 10, 0, 0, 158, 10, 0, 0, 2, 9, 0, 0, 4, 9, 0, 0, 6, 9, 0, 0, 8, 9, 0, 0, 10, 9, 0, 0, 12, 9, 0, 0, 14, 9, 0, 0, 16, 9, 0, 0, 18, 9, 0, 0, 20, 9, 0, 0, 0, 0, 0, 0, 22, 9, 0, 0, 24, 9, 0, 0, 26, 9, 0, 0, 28, 9, 0, 0, 30, 9, 0, 0, 32, 9, 0, 0, 34, 9, 0, 0, 36, 9, 0, 0, 38, 9, 0, 0, 40, 9, 0, 0, 42, 9, 0, 0, 44, 9, 0, 0, 46, 9, 0, 0, 48, 9, 0, 0, 50, 9, 0, 0, 0, 0, 0, 0, 52, 9, 0, 0, 54, 9, 0, 0, 56, 9, 0, 0, 58, 9, 0, 0, 60, 9, 0, 0, 62, 9, 0, 0, 64, 9, 0, 0, 66, 9, 0, 0, 68, 9, 0, 0, 70, 9, 0, 0, 72, 9, 0, 0, 74, 9, 0, 0, 76, 9, 0, 0, 78, 9, 0, 0, 80, 9, 0, 0, 0, 0, 0, 0, 82, 9, 0, 0, 84, 9, 0, 0, 86, 9, 0, 0, 88, 9, 0, 0, 90, 9, 0, 0, 92, 9, 0, 0, 94, 9, 0, 0, 96, 9, 0, 0, 98, 9, 0, 0, 100, 9, 0, 0, 102, 9, 0, 0, 104, 9, 0, 0, 20, 11, 0, 0, 21, 11, 0, 0, 224, 12, 0, 0, 0, 0, 0, 0, 225, 12, 0, 0, 204, 14, 0, 0, 205, 14, 0, 0, 216, 16, 0, 0, 217, 16, 0, 0, 4, 19, 0, 0, 5, 19, 0, 0, 80, 21, 0, 0, 81, 21, 0, 0, 188, 23, 0, 0, 189, 23, 0, 0, 72, 26, 0, 0, 73, 26, 0, 0, 244, 28, 0, 0, 245, 28, 0, 0, 0, 0, 0, 0, 192, 31, 0, 0, 193, 31, 0, 0, 172, 34, 0, 0, 173, 34, 0, 0, 184, 37, 0, 0, 185, 37, 0, 0, 228, 40, 0, 0, 229, 40, 0, 0, 48, 44, 0, 0, 49, 44, 0, 0, 156, 47, 0, 0, 157, 47, 0, 0, 40, 51, 0, 0, 41, 51, 0, 0, 212, 54, 0, 0, 0, 0, 0, 0, 213, 54, 0, 0, 160, 58, 0, 0, 161, 58, 0, 0, 140, 62, 0, 0, 141, 62, 0, 0, 152, 66, 0, 0, 153, 66, 0, 0, 196, 70, 0, 0, 197, 70, 0, 0, 16, 75, 0, 0, 17, 75, 0, 0, 165, 77, 0, 0, 164, 77, 0, 0, 73, 73, 0, 0, 72, 73, 0, 0, 13, 69, 0, 0, 12, 69, 0, 0, 241, 64, 0, 0, 240, 64, 0, 0, 245, 60, 0, 0, 244, 60, 0, 0, 25, 57, 0, 0, 1, 0, 0, 0, 24, 57, 0, 0, 93, 53, 0, 0, 92, 53, 0, 0, 193, 49, 0, 0, 192, 49, 0, 0, 69, 46, 0, 0, 68, 46, 0, 0, 233, 42, 0, 0, 232, 42, 0, 0, 173, 39, 0, 0, 172, 39, 0, 0, 145, 36, 0, 0, 144, 36, 0, 0, 149, 33, 0, 0, 148, 33, 0, 0, 1, 0, 0, 0, 185, 30, 0, 0, 184, 30, 0, 0, 253, 27, 0, 0, 252, 27, 0, 0, 97, 25, 0, 0, 96, 25, 0, 0, 229, 22, 0, 0, 228, 22, 0, 0, 137, 20, 0, 0, 136, 20, 0, 0, 77, 18, 0, 0, 76, 18, 0, 0, 49, 16, 0, 0, 48, 16, 0, 0, 53, 14, 0, 0, 1, 0, 0, 0, 52, 14, 0, 0, 89, 12, 0, 0, 88, 12, 0, 0, 157, 10, 0, 0, 156, 10, 0, 0, 1, 9, 0, 0, 0, 9, 0, 0, 131, 7, 0, 0, 133, 7, 0, 0, 135, 7, 0, 0, 137, 7, 0, 0, 139, 7, 0, 0, 141, 7, 0, 0, 143, 7, 0, 0, 145, 7, 0, 0, 1, 0, 0, 0, 147, 7, 0, 0, 149, 7, 0, 0, 151, 7, 0, 0, 153, 7, 0, 0, 155, 7, 0, 0, 157, 7, 0, 0, 159, 7, 0, 0, 161, 7, 0, 0, 163, 7, 0, 0, 165, 7, 0, 0, 167, 7, 0, 0, 169, 7, 0, 0, 171, 7, 0, 0, 173, 7, 0, 0, 175, 7, 0, 0, 1, 0, 0, 0, 177, 7, 0, 0, 179, 7, 0, 0, 181, 7, 0, 0, 183, 7, 0, 0, 185, 7, 0, 0, 187, 7, 0, 0, 189, 7, 0, 0, 191, 7, 0, 0, 193, 7, 0, 0, 195, 7, 0, 0, 197, 7, 0, 0, 199, 7, 0, 0, 201, 7, 0, 0, 203, 7, 0, 0, 205, 7, 0, 0, 1, 0, 0, 0, 207, 7, 0, 0, 209, 7, 0, 0, 211, 7, 0, 0, 213, 7, 0, 0, 215, 7, 0, 0, 217, 7, 0, 0, 219, 7, 0, 0, 221, 7, 0, 0, 223, 7, 0, 0, 225, 7, 0, 0, 106, 9, 0, 0, 107, 9, 0, 0, 22, 11, 0, 0, 23, 11, 0, 0, 226, 12, 0, 0, 1, 0, 0, 0, 227, 12, 0, 0, 206, 14, 0, 0, 207, 14, 0, 0, 218, 16, 0, 0, 219, 16, 0, 0, 6, 19, 0, 0, 7, 19, 0, 0, 82, 21, 0, 0, 83, 21, 0, 0, 190, 23, 0, 0, 191, 23, 0, 0, 74, 26, 0, 0, 75, 26, 0, 0, 246, 28, 0, 0, 247, 28, 0, 0, 1, 0, 0, 0, 194, 31, 0, 0, 195, 31, 0, 0, 174, 34, 0, 0, 175, 34, 0, 0, 186, 37, 0, 0, 187, 37, 0, 0, 230, 40, 0, 0, 231, 40, 0, 0, 50, 44, 0, 0, 51, 44, 0, 0, 158, 47, 0, 0, 159, 47, 0, 0, 42, 51, 0, 0, 43, 51, 0, 0, 214, 54, 0, 0, 1, 0, 0, 0, 215, 54, 0, 0, 162, 58, 0, 0, 163, 58, 0, 0, 142, 62, 0, 0, 143, 62, 0, 0, 154, 66, 0, 0, 155, 66, 0, 0, 198, 70, 0, 0, 199, 70, 0, 0, 18, 75, 0, 0, 19, 75, 0, 0, 163, 77, 0, 0, 162, 77, 0, 0, 71, 73, 0, 0, 70, 73, 0, 0, 11, 69, 0, 0, 10, 69, 0, 0, 239, 64, 0, 0, 238, 64, 0, 0, 243, 60, 0, 0, 242, 60, 0, 0, 23, 57, 0, 0, 0, 0, 0, 0, 22, 57, 0, 0, 91, 53, 0, 0, 90, 53, 0, 0, 191, 49, 0, 0, 190, 49, 0, 0, 67, 46, 0, 0, 66, 46, 0, 0, 231, 42, 0, 0, 230, 42, 0, 0, 171, 39, 0, 0, 170, 39, 0, 0, 143, 36, 0, 0, 142, 36, 0, 0, 147, 33, 0, 0, 146, 33, 0, 0, 0, 0, 0, 0, 183, 30, 0, 0, 182, 30, 0, 0, 251, 27, 0, 0, 250, 27, 0, 0, 95, 25, 0, 0, 94, 25, 0, 0, 227, 22, 0, 0, 226, 22, 0, 0, 135, 20, 0, 0, 134, 20, 0, 0, 75, 18, 0, 0, 74, 18, 0, 0, 47, 16, 0, 0, 46, 16, 0, 0, 51, 14, 0, 0, 0, 0, 0, 0, 50, 14, 0, 0, 87, 12, 0, 0, 86, 12, 0, 0, 155, 10, 0, 0, 154, 10, 0, 0, 255, 8, 0, 0, 254, 8, 0, 0, 130, 7, 0, 0, 132, 7, 0, 0, 134, 7, 0, 0, 136, 7, 0, 0, 138, 7, 0, 0, 140, 7, 0, 0, 142, 7, 0, 0, 144, 7, 0, 0, 0, 0, 0, 0, 146, 7, 0, 0, 148, 7, 0, 0, 150, 7, 0, 0, 152, 7, 0, 0, 154, 7, 0, 0, 156, 7, 0, 0, 158, 7, 0, 0, 160, 7, 0, 0, 162, 7, 0, 0, 164, 7, 0, 0, 166, 7, 0, 0, 168, 7, 0, 0, 170, 7, 0, 0, 172, 7, 0, 0, 174, 7, 0, 0, 0, 0, 0, 0, 176, 7, 0, 0, 178, 7, 0, 0, 180, 7, 0, 0, 182, 7, 0, 0, 184, 7, 0, 0, 186, 7, 0, 0, 188, 7, 0, 0, 190, 7, 0, 0, 192, 7, 0, 0, 194, 7, 0, 0, 196, 7, 0, 0, 198, 7, 0, 0, 200, 7, 0, 0, 202, 7, 0, 0, 204, 7, 0, 0, 0, 0, 0, 0, 206, 7, 0, 0, 208, 7, 0, 0, 210, 7, 0, 0, 212, 7, 0, 0, 214, 7, 0, 0, 216, 7, 0, 0, 218, 7, 0, 0, 220, 7, 0, 0, 222, 7, 0, 0, 224, 7], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 20480);
+allocate([108, 9, 0, 0, 109, 9, 0, 0, 24, 11, 0, 0, 25, 11, 0, 0, 228, 12, 0, 0, 0, 0, 0, 0, 229, 12, 0, 0, 208, 14, 0, 0, 209, 14, 0, 0, 220, 16, 0, 0, 221, 16, 0, 0, 8, 19, 0, 0, 9, 19, 0, 0, 84, 21, 0, 0, 85, 21, 0, 0, 192, 23, 0, 0, 193, 23, 0, 0, 76, 26, 0, 0, 77, 26, 0, 0, 248, 28, 0, 0, 249, 28, 0, 0, 0, 0, 0, 0, 196, 31, 0, 0, 197, 31, 0, 0, 176, 34, 0, 0, 177, 34, 0, 0, 188, 37, 0, 0, 189, 37, 0, 0, 232, 40, 0, 0, 233, 40, 0, 0, 52, 44, 0, 0, 53, 44, 0, 0, 160, 47, 0, 0, 161, 47, 0, 0, 44, 51, 0, 0, 45, 51, 0, 0, 216, 54, 0, 0, 0, 0, 0, 0, 217, 54, 0, 0, 164, 58, 0, 0, 165, 58, 0, 0, 144, 62, 0, 0, 145, 62, 0, 0, 156, 66, 0, 0, 157, 66, 0, 0, 200, 70, 0, 0, 201, 70, 0, 0, 20, 75, 0, 0, 21, 75, 0, 0, 161, 77, 0, 0, 160, 77, 0, 0, 69, 73, 0, 0, 68, 73, 0, 0, 9, 69, 0, 0, 8, 69, 0, 0, 237, 64, 0, 0, 236, 64, 0, 0, 241, 60, 0, 0, 240, 60, 0, 0, 21, 57, 0, 0, 1, 0, 0, 0, 20, 57, 0, 0, 89, 53, 0, 0, 88, 53, 0, 0, 189, 49, 0, 0, 188, 49, 0, 0, 65, 46, 0, 0, 64, 46, 0, 0, 229, 42, 0, 0, 228, 42, 0, 0, 169, 39, 0, 0, 168, 39, 0, 0, 141, 36, 0, 0, 140, 36, 0, 0, 145, 33, 0, 0, 144, 33, 0, 0, 1, 0, 0, 0, 181, 30, 0, 0, 180, 30, 0, 0, 249, 27, 0, 0, 248, 27, 0, 0, 93, 25, 0, 0, 92, 25, 0, 0, 225, 22, 0, 0, 224, 22, 0, 0, 133, 20, 0, 0, 132, 20, 0, 0, 73, 18, 0, 0, 72, 18, 0, 0, 45, 16, 0, 0, 44, 16, 0, 0, 49, 14, 0, 0, 1, 0, 0, 0, 48, 14, 0, 0, 85, 12, 0, 0, 84, 12, 0, 0, 153, 10, 0, 0, 152, 10, 0, 0, 253, 8, 0, 0, 252, 8, 0, 0, 129, 7, 0, 0, 128, 7, 0, 0, 35, 6, 0, 0, 37, 6, 0, 0, 39, 6, 0, 0, 41, 6, 0, 0, 43, 6, 0, 0, 45, 6, 0, 0, 1, 0, 0, 0, 47, 6, 0, 0, 49, 6, 0, 0, 51, 6, 0, 0, 53, 6, 0, 0, 55, 6, 0, 0, 57, 6, 0, 0, 59, 6, 0, 0, 61, 6, 0, 0, 63, 6, 0, 0, 65, 6, 0, 0, 67, 6, 0, 0, 69, 6, 0, 0, 71, 6, 0, 0, 73, 6, 0, 0, 75, 6, 0, 0, 1, 0, 0, 0, 77, 6, 0, 0, 79, 6, 0, 0, 81, 6, 0, 0, 83, 6, 0, 0, 85, 6, 0, 0, 87, 6, 0, 0, 89, 6, 0, 0, 91, 6, 0, 0, 93, 6, 0, 0, 95, 6, 0, 0, 97, 6, 0, 0, 99, 6, 0, 0, 101, 6, 0, 0, 103, 6, 0, 0, 105, 6, 0, 0, 1, 0, 0, 0, 107, 6, 0, 0, 109, 6, 0, 0, 111, 6, 0, 0, 113, 6, 0, 0, 115, 6, 0, 0, 117, 6, 0, 0, 119, 6, 0, 0, 121, 6, 0, 0, 226, 7, 0, 0, 227, 7, 0, 0, 110, 9, 0, 0, 111, 9, 0, 0, 26, 11, 0, 0, 27, 11, 0, 0, 230, 12, 0, 0, 1, 0, 0, 0, 231, 12, 0, 0, 210, 14, 0, 0, 211, 14, 0, 0, 222, 16, 0, 0, 223, 16, 0, 0, 10, 19, 0, 0, 11, 19, 0, 0, 86, 21, 0, 0, 87, 21, 0, 0, 194, 23, 0, 0, 195, 23, 0, 0, 78, 26, 0, 0, 79, 26, 0, 0, 250, 28, 0, 0, 251, 28, 0, 0, 1, 0, 0, 0, 198, 31, 0, 0, 199, 31, 0, 0, 178, 34, 0, 0, 179, 34, 0, 0, 190, 37, 0, 0, 191, 37, 0, 0, 234, 40, 0, 0, 235, 40, 0, 0, 54, 44, 0, 0, 55, 44, 0, 0, 162, 47, 0, 0, 163, 47, 0, 0, 46, 51, 0, 0, 47, 51, 0, 0, 218, 54, 0, 0, 1, 0, 0, 0, 219, 54, 0, 0, 166, 58, 0, 0, 167, 58, 0, 0, 146, 62, 0, 0, 147, 62, 0, 0, 158, 66, 0, 0, 159, 66, 0, 0, 202, 70, 0, 0, 203, 70, 0, 0, 22, 75, 0, 0, 23, 75, 0, 0, 159, 77, 0, 0, 158, 77, 0, 0, 67, 73, 0, 0, 66, 73, 0, 0, 7, 69, 0, 0, 6, 69, 0, 0, 235, 64, 0, 0, 234, 64, 0, 0, 239, 60, 0, 0, 238, 60, 0, 0, 19, 57, 0, 0, 0, 0, 0, 0, 18, 57, 0, 0, 87, 53, 0, 0, 86, 53, 0, 0, 187, 49, 0, 0, 186, 49, 0, 0, 63, 46, 0, 0, 62, 46, 0, 0, 227, 42, 0, 0, 226, 42, 0, 0, 167, 39, 0, 0, 166, 39, 0, 0, 139, 36, 0, 0, 138, 36, 0, 0, 143, 33, 0, 0, 142, 33, 0, 0, 0, 0, 0, 0, 179, 30, 0, 0, 178, 30, 0, 0, 247, 27, 0, 0, 246, 27, 0, 0, 91, 25, 0, 0, 90, 25, 0, 0, 223, 22, 0, 0, 222, 22, 0, 0, 131, 20, 0, 0, 130, 20, 0, 0, 71, 18, 0, 0, 70, 18, 0, 0, 43, 16, 0, 0, 42, 16, 0, 0, 47, 14, 0, 0, 0, 0, 0, 0, 46, 14, 0, 0, 83, 12, 0, 0, 82, 12, 0, 0, 151, 10, 0, 0, 150, 10, 0, 0, 251, 8, 0, 0, 250, 8, 0, 0, 127, 7, 0, 0, 126, 7, 0, 0, 34, 6, 0, 0, 36, 6, 0, 0, 38, 6, 0, 0, 40, 6, 0, 0, 42, 6, 0, 0, 44, 6, 0, 0, 0, 0, 0, 0, 46, 6, 0, 0, 48, 6, 0, 0, 50, 6, 0, 0, 52, 6, 0, 0, 54, 6, 0, 0, 56, 6, 0, 0, 58, 6, 0, 0, 60, 6, 0, 0, 62, 6, 0, 0, 64, 6, 0, 0, 66, 6, 0, 0, 68, 6, 0, 0, 70, 6, 0, 0, 72, 6, 0, 0, 74, 6, 0, 0, 0, 0, 0, 0, 76, 6, 0, 0, 78, 6, 0, 0, 80, 6, 0, 0, 82, 6, 0, 0, 84, 6, 0, 0, 86, 6, 0, 0, 88, 6, 0, 0, 90, 6, 0, 0, 92, 6, 0, 0, 94, 6, 0, 0, 96, 6, 0, 0, 98, 6, 0, 0, 100, 6, 0, 0, 102, 6, 0, 0, 104, 6, 0, 0, 0, 0, 0, 0, 106, 6, 0, 0, 108, 6, 0, 0, 110, 6, 0, 0, 112, 6, 0, 0, 114, 6, 0, 0, 116, 6, 0, 0, 118, 6, 0, 0, 120, 6, 0, 0, 228, 7, 0, 0, 229, 7, 0, 0, 112, 9, 0, 0, 113, 9, 0, 0, 28, 11, 0, 0, 29, 11, 0, 0, 232, 12, 0, 0, 0, 0, 0, 0, 233, 12, 0, 0, 212, 14, 0, 0, 213, 14, 0, 0, 224, 16, 0, 0, 225, 16, 0, 0, 12, 19, 0, 0, 13, 19, 0, 0, 88, 21, 0, 0, 89, 21, 0, 0, 196, 23, 0, 0, 197, 23, 0, 0, 80, 26, 0, 0, 81, 26, 0, 0, 252, 28, 0, 0, 253, 28, 0, 0, 0, 0, 0, 0, 200, 31, 0, 0, 201, 31, 0, 0, 180, 34, 0, 0, 181, 34, 0, 0, 192, 37, 0, 0, 193, 37, 0, 0, 236, 40, 0, 0, 237, 40, 0, 0, 56, 44, 0, 0, 57, 44, 0, 0, 164, 47, 0, 0, 165, 47, 0, 0, 48, 51, 0, 0, 49, 51, 0, 0, 220, 54, 0, 0, 0, 0, 0, 0, 221, 54, 0, 0, 168, 58, 0, 0, 169, 58, 0, 0, 148, 62, 0, 0, 149, 62, 0, 0, 160, 66, 0, 0, 161, 66, 0, 0, 204, 70, 0, 0, 205, 70, 0, 0, 24, 75, 0, 0, 25, 75, 0, 0, 157, 77, 0, 0, 156, 77, 0, 0, 65, 73, 0, 0, 64, 73, 0, 0, 5, 69, 0, 0, 4, 69, 0, 0, 233, 64, 0, 0, 232, 64, 0, 0, 237, 60, 0, 0, 236, 60, 0, 0, 17, 57, 0, 0, 1, 0, 0, 0, 16, 57, 0, 0, 85, 53, 0, 0, 84, 53, 0, 0, 185, 49, 0, 0, 184, 49, 0, 0, 61, 46, 0, 0, 60, 46, 0, 0, 225, 42, 0, 0, 224, 42, 0, 0, 165, 39, 0, 0, 164, 39, 0, 0, 137, 36, 0, 0, 136, 36, 0, 0, 141, 33, 0, 0, 140, 33, 0, 0, 1, 0, 0, 0, 177, 30, 0, 0, 176, 30, 0, 0, 245, 27, 0, 0, 244, 27, 0, 0, 89, 25, 0, 0, 88, 25, 0, 0, 221, 22, 0, 0, 220, 22, 0, 0, 129, 20, 0, 0, 128, 20, 0, 0, 69, 18, 0, 0, 68, 18, 0, 0, 41, 16, 0, 0, 40, 16, 0, 0, 45, 14, 0, 0, 1, 0, 0, 0, 44, 14, 0, 0, 81, 12, 0, 0, 80, 12, 0, 0, 149, 10, 0, 0, 148, 10, 0, 0, 249, 8, 0, 0, 248, 8, 0, 0, 125, 7, 0, 0, 124, 7, 0, 0, 33, 6, 0, 0, 32, 6, 0, 0, 227, 4, 0, 0, 229, 4, 0, 0, 231, 4, 0, 0, 233, 4, 0, 0, 1, 0, 0, 0, 235, 4, 0, 0, 237, 4, 0, 0, 239, 4, 0, 0, 241, 4, 0, 0, 243, 4, 0, 0, 245, 4, 0, 0, 247, 4, 0, 0, 249, 4, 0, 0, 251, 4, 0, 0, 253, 4, 0, 0, 255, 4, 0, 0, 1, 5, 0, 0, 3, 5, 0, 0, 5, 5, 0, 0, 7, 5, 0, 0, 1, 0, 0, 0, 9, 5, 0, 0, 11, 5, 0, 0, 13, 5, 0, 0, 15, 5, 0, 0, 17, 5, 0, 0, 19, 5, 0, 0, 21, 5, 0, 0, 23, 5, 0, 0, 25, 5, 0, 0, 27, 5, 0, 0, 29, 5, 0, 0, 31, 5, 0, 0, 33, 5, 0, 0, 35, 5, 0, 0, 37, 5, 0, 0, 1, 0, 0, 0, 39, 5, 0, 0, 41, 5, 0, 0, 43, 5, 0, 0, 45, 5, 0, 0, 47, 5, 0, 0, 49, 5, 0, 0, 122, 6, 0, 0, 123, 6, 0, 0, 230, 7, 0, 0, 231, 7, 0, 0, 114, 9, 0, 0, 115, 9, 0, 0, 30, 11, 0, 0, 31, 11, 0, 0, 234, 12, 0, 0, 1, 0, 0, 0, 235, 12, 0, 0, 214, 14, 0, 0, 215, 14, 0, 0, 226, 16, 0, 0, 227, 16, 0, 0, 14, 19, 0, 0, 15, 19, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 198, 23, 0, 0, 199, 23, 0, 0, 82, 26, 0, 0, 83, 26, 0, 0, 254, 28, 0, 0, 255, 28, 0, 0, 1, 0, 0, 0, 202, 31, 0, 0, 203, 31, 0, 0, 182, 34, 0, 0, 183, 34, 0, 0, 194, 37, 0, 0, 195, 37, 0, 0, 238, 40, 0, 0, 239, 40, 0, 0, 58, 44, 0, 0, 59, 44, 0, 0, 166, 47, 0, 0, 167, 47, 0, 0, 50, 51, 0, 0, 51, 51, 0, 0, 222, 54, 0, 0, 1, 0, 0, 0, 223, 54, 0, 0, 170, 58, 0, 0, 171, 58, 0, 0, 150, 62, 0, 0, 151, 62, 0, 0, 162, 66, 0, 0, 163, 66, 0, 0, 206, 70, 0, 0, 207, 70, 0, 0, 26, 75, 0, 0, 27, 75, 0, 0, 155, 77, 0, 0, 154, 77, 0, 0, 63, 73, 0, 0, 62, 73, 0, 0, 3, 69, 0, 0, 2, 69, 0, 0, 231, 64, 0, 0, 230, 64, 0, 0, 235, 60, 0, 0, 234, 60, 0, 0, 15, 57, 0, 0, 0, 0, 0, 0, 14, 57, 0, 0, 83, 53, 0, 0, 82, 53, 0, 0, 183, 49, 0, 0, 182, 49, 0, 0, 59, 46, 0, 0, 58, 46, 0, 0, 223, 42, 0, 0, 222, 42, 0, 0, 163, 39, 0, 0, 162, 39, 0, 0, 135, 36, 0, 0, 134, 36, 0, 0, 139, 33, 0, 0, 138, 33, 0, 0, 0, 0, 0, 0, 175, 30, 0, 0, 174, 30, 0, 0, 243, 27, 0, 0, 242, 27, 0, 0, 87, 25, 0, 0, 86, 25, 0, 0, 219, 22, 0, 0, 218, 22, 0, 0, 127, 20, 0, 0, 126, 20, 0, 0, 67, 18, 0, 0, 66, 18, 0, 0, 39, 16, 0, 0, 38, 16, 0, 0, 43, 14, 0, 0, 0, 0, 0, 0, 42, 14, 0, 0, 79, 12, 0, 0, 78, 12, 0, 0, 147, 10, 0, 0, 146, 10, 0, 0, 247, 8, 0, 0, 246, 8, 0, 0, 123, 7, 0, 0, 122, 7, 0, 0, 31, 6, 0, 0, 30, 6, 0, 0, 226, 4, 0, 0, 228, 4, 0, 0, 230, 4, 0, 0, 232, 4, 0, 0, 0, 0, 0, 0, 234, 4, 0, 0, 236, 4, 0, 0, 238, 4, 0, 0, 240, 4, 0, 0, 242, 4, 0, 0, 244, 4, 0, 0, 246, 4, 0, 0, 248, 4, 0, 0, 250, 4, 0, 0, 252, 4, 0, 0, 254, 4, 0, 0, 0, 5, 0, 0, 2, 5, 0, 0, 4, 5, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 8, 5, 0, 0, 10, 5, 0, 0, 12, 5, 0, 0, 14, 5, 0, 0, 16, 5, 0, 0, 18, 5, 0, 0, 20, 5, 0, 0, 22, 5, 0, 0, 24, 5, 0, 0, 26, 5, 0, 0, 28, 5, 0, 0, 30, 5, 0, 0, 32, 5, 0, 0, 34, 5, 0, 0, 36, 5, 0, 0, 0, 0, 0, 0, 38, 5, 0, 0, 40, 5, 0, 0, 42, 5, 0, 0, 44, 5, 0, 0, 46, 5, 0, 0, 48, 5, 0, 0, 124, 6, 0, 0, 125, 6, 0, 0, 232, 7, 0, 0, 233, 7, 0, 0, 116, 9, 0, 0, 117, 9, 0, 0, 32, 11, 0, 0, 33, 11, 0, 0, 236, 12, 0, 0, 0, 0, 0, 0, 237, 12, 0, 0, 216, 14, 0, 0, 217, 14, 0, 0, 228, 16, 0, 0, 229, 16, 0, 0, 16, 19, 0, 0, 17, 19, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 200, 23, 0, 0, 201, 23, 0, 0, 84, 26, 0, 0, 85, 26, 0, 0, 0, 29, 0, 0, 1, 29, 0, 0, 0, 0, 0, 0, 204, 31, 0, 0, 205, 31, 0, 0, 184, 34, 0, 0, 185, 34, 0, 0, 196, 37, 0, 0, 197, 37, 0, 0, 240, 40, 0, 0, 241, 40, 0, 0, 60, 44, 0, 0, 61, 44, 0, 0, 168, 47, 0, 0, 169, 47, 0, 0, 52, 51, 0, 0, 53, 51, 0, 0, 224, 54, 0, 0, 0, 0, 0, 0, 225, 54, 0, 0, 172, 58, 0, 0, 173, 58, 0, 0, 152, 62, 0, 0, 153, 62, 0, 0, 164, 66, 0, 0, 165, 66, 0, 0, 208, 70, 0, 0, 209, 70, 0, 0, 28, 75, 0, 0, 29, 75, 0, 0, 153, 77, 0, 0, 152, 77, 0, 0, 61, 73, 0, 0, 60, 73, 0, 0, 1, 69, 0, 0, 0, 69, 0, 0, 229, 64, 0, 0, 228, 64, 0, 0, 233, 60, 0, 0, 232, 60, 0, 0, 13, 57, 0, 0, 1, 0, 0, 0, 12, 57, 0, 0, 81, 53, 0, 0, 80, 53, 0, 0, 181, 49, 0, 0, 180, 49, 0, 0, 57, 46, 0, 0, 56, 46, 0, 0, 221, 42, 0, 0, 220, 42, 0, 0, 161, 39, 0, 0, 160, 39, 0, 0, 133, 36, 0, 0, 132, 36, 0, 0, 137, 33, 0, 0, 136, 33, 0, 0, 1, 0, 0, 0, 173, 30, 0, 0, 172, 30, 0, 0, 241, 27, 0, 0, 240, 27, 0, 0, 85, 25, 0, 0, 84, 25, 0, 0, 217, 22, 0, 0, 216, 22, 0, 0, 125, 20, 0, 0, 124, 20, 0, 0, 65, 18, 0, 0, 64, 18, 0, 0, 37, 16, 0, 0, 36, 16, 0, 0, 41, 14, 0, 0, 1, 0, 0, 0, 40, 14, 0, 0, 77, 12, 0, 0, 76, 12, 0, 0, 145, 10, 0, 0, 144, 10, 0, 0, 245, 8, 0, 0, 244, 8, 0, 0, 121, 7, 0, 0, 120, 7, 0, 0, 29, 6, 0, 0, 28, 6, 0, 0, 225, 4, 0, 0, 224, 4, 0, 0, 195, 3, 0, 0, 197, 3, 0, 0, 1, 0, 0, 0, 199, 3, 0, 0, 201, 3, 0, 0, 203, 3, 0, 0, 205, 3, 0, 0, 207, 3, 0, 0, 209, 3, 0, 0, 211, 3, 0, 0, 213, 3, 0, 0, 215, 3, 0, 0, 217, 3, 0, 0, 219, 3, 0, 0, 221, 3, 0, 0, 223, 3, 0, 0, 225, 3, 0, 0, 227, 3, 0, 0, 1, 0, 0, 0, 229, 3, 0, 0, 231, 3, 0, 0, 233, 3, 0, 0, 235, 3, 0, 0, 237, 3, 0, 0, 239, 3, 0, 0, 241, 3, 0, 0, 243, 3, 0, 0, 245, 3, 0, 0, 247, 3, 0, 0, 249, 3, 0, 0, 251, 3, 0, 0, 253, 3, 0, 0, 255, 3, 0, 0, 1, 4, 0, 0, 1, 0, 0, 0, 3, 4, 0, 0, 5, 4, 0, 0, 7, 4, 0, 0, 9, 4, 0, 0, 50, 5, 0, 0, 51, 5, 0, 0, 126, 6, 0, 0, 127, 6, 0, 0, 234, 7, 0, 0, 235, 7, 0, 0, 118, 9, 0, 0, 119, 9, 0, 0, 34, 11, 0, 0, 35, 11, 0, 0, 238, 12, 0, 0, 1, 0, 0, 0, 239, 12, 0, 0, 218, 14, 0, 0, 219, 14, 0, 0, 230, 16, 0, 0, 231, 16, 0, 0, 18, 19, 0, 0, 19, 19, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 202, 23, 0, 0, 203, 23, 0, 0, 86, 26, 0, 0, 87, 26, 0, 0, 2, 29, 0, 0, 3, 29, 0, 0, 1, 0, 0, 0, 206, 31, 0, 0, 207, 31, 0, 0, 186, 34, 0, 0, 187, 34, 0, 0, 198, 37, 0, 0, 199, 37, 0, 0, 242, 40, 0, 0, 243, 40, 0, 0, 62, 44, 0, 0, 63, 44, 0, 0, 170, 47, 0, 0, 171, 47, 0, 0, 54, 51, 0, 0, 55, 51, 0, 0, 226, 54, 0, 0, 1, 0, 0, 0, 227, 54, 0, 0, 174, 58, 0, 0, 175, 58, 0, 0, 154, 62, 0, 0, 155, 62, 0, 0, 166, 66, 0, 0, 167, 66, 0, 0, 210, 70, 0, 0, 211, 70, 0, 0, 30, 75, 0, 0, 31, 75, 0, 0, 151, 77, 0, 0, 150, 77, 0, 0, 59, 73, 0, 0, 58, 73, 0, 0, 255, 68, 0, 0, 254, 68, 0, 0, 227, 64, 0, 0, 226, 64, 0, 0, 231, 60, 0, 0, 230, 60, 0, 0, 11, 57, 0, 0, 0, 0, 0, 0, 10, 57, 0, 0, 79, 53, 0, 0, 78, 53, 0, 0, 179, 49, 0, 0, 178, 49, 0, 0, 55, 46, 0, 0, 54, 46, 0, 0, 219, 42, 0, 0, 218, 42, 0, 0, 159, 39, 0, 0, 158, 39, 0, 0, 131, 36, 0, 0, 130, 36, 0, 0, 135, 33, 0, 0, 134, 33, 0, 0, 0, 0, 0, 0, 171, 30, 0, 0, 170, 30, 0, 0, 239, 27, 0, 0, 238, 27, 0, 0, 83, 25, 0, 0, 82, 25, 0, 0, 215, 22, 0, 0, 214, 22, 0, 0, 123, 20, 0, 0, 122, 20, 0, 0, 63, 18, 0, 0, 62, 18, 0, 0, 35, 16, 0, 0, 34, 16, 0, 0, 39, 14, 0, 0, 0, 0, 0, 0, 38, 14, 0, 0, 75, 12, 0, 0, 74, 12, 0, 0, 143, 10, 0, 0, 142, 10, 0, 0, 243, 8, 0, 0, 242, 8, 0, 0, 119, 7, 0, 0, 118, 7, 0, 0, 27, 6, 0, 0, 26, 6, 0, 0, 223, 4, 0, 0, 222, 4, 0, 0, 194, 3, 0, 0, 196, 3, 0, 0, 0, 0, 0, 0, 198, 3, 0, 0, 200, 3, 0, 0, 202, 3, 0, 0, 204, 3, 0, 0, 206, 3, 0, 0, 208, 3, 0, 0, 210, 3, 0, 0, 212, 3, 0, 0, 214, 3, 0, 0, 216, 3, 0, 0, 218, 3, 0, 0, 220, 3, 0, 0, 222, 3, 0, 0, 224, 3, 0, 0, 226, 3, 0, 0, 0, 0, 0, 0, 228, 3, 0, 0, 230, 3, 0, 0, 232, 3, 0, 0, 234, 3, 0, 0, 236, 3, 0, 0, 238, 3, 0, 0, 240, 3, 0, 0, 242, 3, 0, 0, 244, 3, 0, 0, 246, 3, 0, 0, 248, 3, 0, 0, 250, 3, 0, 0, 252, 3, 0, 0, 254, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 4, 0, 0, 6, 4, 0, 0, 8, 4, 0, 0, 52, 5, 0, 0, 53, 5, 0, 0, 128, 6, 0, 0, 129, 6, 0, 0, 236, 7, 0, 0, 237, 7, 0, 0, 120, 9, 0, 0, 121, 9, 0, 0, 36, 11, 0, 0, 37, 11, 0, 0, 240, 12, 0, 0, 0, 0, 0, 0, 241, 12, 0, 0, 220, 14, 0, 0, 221, 14, 0, 0, 232, 16, 0, 0, 233, 16, 0, 0, 20, 19, 0, 0, 21, 19, 0, 0, 96, 21, 0, 0, 97, 21, 0, 0, 204, 23, 0, 0, 205, 23, 0, 0, 88, 26, 0, 0, 89, 26, 0, 0, 4, 29, 0, 0, 5, 29, 0, 0, 0, 0, 0, 0, 208, 31, 0, 0, 209, 31, 0, 0, 188, 34, 0, 0, 189, 34, 0, 0, 200, 37, 0, 0, 201, 37, 0, 0, 244, 40, 0, 0, 245, 40, 0, 0, 64, 44, 0, 0, 65, 44, 0, 0, 172, 47, 0, 0, 173, 47, 0, 0, 56, 51, 0, 0, 57, 51, 0, 0, 228, 54, 0, 0, 0, 0, 0, 0, 229, 54, 0, 0, 176, 58, 0, 0, 177, 58, 0, 0, 156, 62, 0, 0, 157, 62, 0, 0, 168, 66, 0, 0, 169, 66, 0, 0, 212, 70, 0, 0, 213, 70, 0, 0, 32, 75, 0, 0, 33, 75, 0, 0, 149, 77, 0, 0, 148, 77, 0, 0, 57, 73, 0, 0, 56, 73, 0, 0, 253, 68, 0, 0, 252, 68, 0, 0, 225, 64, 0, 0, 224, 64, 0, 0, 229, 60, 0, 0, 228, 60, 0, 0, 9, 57, 0, 0, 1, 0, 0, 0, 8, 57, 0, 0, 77, 53, 0, 0, 76, 53, 0, 0, 177, 49, 0, 0, 176, 49, 0, 0, 53, 46, 0, 0, 52, 46, 0, 0, 217, 42, 0, 0, 216, 42, 0, 0, 157, 39, 0, 0, 156, 39, 0, 0, 129, 36, 0, 0, 128, 36, 0, 0, 133, 33, 0, 0, 132, 33, 0, 0, 1, 0, 0, 0, 169, 30, 0, 0, 168, 30, 0, 0, 237, 27, 0, 0, 236, 27, 0, 0, 81, 25, 0, 0, 80, 25, 0, 0, 213, 22, 0, 0, 212, 22, 0, 0, 121, 20, 0, 0, 120, 20, 0, 0, 61, 18, 0, 0, 60, 18, 0, 0, 33, 16, 0, 0, 32, 16, 0, 0, 37, 14, 0, 0, 1, 0, 0, 0, 36, 14, 0, 0, 73, 12, 0, 0, 72, 12, 0, 0, 141, 10, 0, 0, 140, 10, 0, 0, 241, 8, 0, 0, 240, 8, 0, 0, 117, 7, 0, 0, 116, 7, 0, 0, 25, 6, 0, 0, 24, 6, 0, 0, 221, 4, 0, 0, 220, 4, 0, 0, 193, 3, 0, 0, 192, 3, 0, 0, 1, 0, 0, 0, 195, 2, 0, 0, 197, 2, 0, 0, 199, 2, 0, 0, 201, 2, 0, 0, 203, 2, 0, 0, 205, 2, 0, 0, 207, 2, 0, 0, 209, 2, 0, 0, 211, 2, 0, 0, 213, 2, 0, 0, 215, 2, 0, 0, 217, 2, 0, 0, 219, 2, 0, 0, 221, 2, 0, 0, 223, 2, 0, 0, 1, 0, 0, 0, 225, 2, 0, 0, 227, 2, 0, 0, 229, 2, 0, 0, 231, 2, 0, 0, 233, 2, 0, 0, 235, 2, 0, 0, 237, 2, 0, 0, 239, 2, 0, 0, 241, 2, 0, 0, 243, 2, 0, 0, 245, 2, 0, 0, 247, 2, 0, 0, 249, 2, 0, 0, 251, 2, 0, 0, 253, 2, 0, 0, 1, 0, 0, 0, 255, 2, 0, 0, 1, 3, 0, 0, 10, 4, 0, 0, 11, 4, 0, 0, 54, 5, 0, 0, 55, 5, 0, 0, 130, 6, 0, 0, 131, 6, 0, 0, 238, 7, 0, 0, 239, 7, 0, 0, 122, 9, 0, 0, 123, 9, 0, 0, 38, 11, 0, 0, 39, 11, 0, 0, 242, 12, 0, 0, 1, 0, 0, 0, 243, 12, 0, 0, 222, 14, 0, 0, 223, 14, 0, 0, 234, 16, 0, 0, 235, 16, 0, 0, 22, 19, 0, 0, 23, 19, 0, 0, 98, 21, 0, 0, 99, 21, 0, 0, 206, 23, 0, 0, 207, 23, 0, 0, 90, 26, 0, 0, 91, 26, 0, 0, 6, 29, 0, 0, 7, 29, 0, 0, 1, 0, 0, 0, 210, 31, 0, 0, 211, 31, 0, 0, 190, 34, 0, 0, 191, 34, 0, 0, 202, 37, 0, 0, 203, 37, 0, 0, 246, 40, 0, 0, 247, 40, 0, 0, 66, 44, 0, 0, 67, 44, 0, 0, 174, 47, 0, 0, 175, 47, 0, 0, 58, 51, 0, 0, 59, 51, 0, 0, 230, 54, 0, 0, 1, 0, 0, 0, 231, 54, 0, 0, 178, 58, 0, 0, 179, 58, 0, 0, 158, 62, 0, 0, 159, 62, 0, 0, 170, 66, 0, 0, 171, 66, 0, 0, 214, 70, 0, 0, 215, 70, 0, 0, 34, 75, 0, 0, 35, 75, 0, 0, 147, 77, 0, 0, 146, 77, 0, 0, 55, 73, 0, 0, 54, 73, 0, 0, 251, 68, 0, 0, 250, 68, 0, 0, 223, 64, 0, 0, 222, 64, 0, 0, 227, 60, 0, 0, 226, 60, 0, 0, 7, 57, 0, 0, 0, 0, 0, 0, 6, 57, 0, 0, 75, 53, 0, 0, 74, 53, 0, 0, 175, 49, 0, 0, 174, 49, 0, 0, 51, 46, 0, 0, 50, 46, 0, 0, 215, 42, 0, 0, 214, 42, 0, 0, 155, 39, 0, 0, 154, 39, 0, 0, 127, 36, 0, 0, 126, 36, 0, 0, 131, 33, 0, 0, 130, 33, 0, 0, 0, 0, 0, 0, 167, 30, 0, 0, 166, 30, 0, 0, 235, 27, 0, 0, 234, 27, 0, 0, 79, 25, 0, 0, 78, 25, 0, 0, 211, 22, 0, 0, 210, 22, 0, 0, 119, 20, 0, 0, 118, 20, 0, 0, 59, 18, 0, 0, 58, 18, 0, 0, 31, 16, 0, 0, 30, 16, 0, 0, 35, 14, 0, 0, 0, 0, 0, 0, 34, 14, 0, 0, 71, 12, 0, 0, 70, 12, 0, 0, 139, 10, 0, 0, 138, 10, 0, 0, 239, 8, 0, 0, 238, 8, 0, 0, 115, 7, 0, 0, 114, 7, 0, 0, 23, 6, 0, 0, 22, 6, 0, 0, 219, 4, 0, 0, 218, 4, 0, 0, 191, 3, 0, 0, 190, 3, 0, 0, 0, 0, 0, 0, 194, 2, 0, 0, 196, 2, 0, 0, 198, 2, 0, 0, 200, 2, 0, 0, 202, 2, 0, 0, 204, 2, 0, 0, 206, 2, 0, 0, 208, 2, 0, 0, 210, 2, 0, 0, 212, 2, 0, 0, 214, 2, 0, 0, 216, 2, 0, 0, 218, 2, 0, 0, 220, 2, 0, 0, 222, 2, 0, 0, 0, 0, 0, 0, 224, 2, 0, 0, 226, 2, 0, 0, 228, 2, 0, 0, 230, 2, 0, 0, 232, 2, 0, 0, 234, 2, 0, 0, 236, 2, 0, 0, 238, 2, 0, 0, 240, 2, 0, 0, 242, 2, 0, 0, 244, 2, 0, 0, 246, 2, 0, 0, 248, 2, 0, 0, 250, 2, 0, 0, 252, 2, 0, 0, 0, 0, 0, 0, 254, 2, 0, 0, 0, 3, 0, 0, 12, 4, 0, 0, 13, 4, 0, 0, 56, 5, 0, 0, 57, 5, 0, 0, 132, 6, 0, 0, 133, 6, 0, 0, 240, 7, 0, 0, 241, 7, 0, 0, 124, 9, 0, 0, 125, 9, 0, 0, 40, 11, 0, 0, 41, 11, 0, 0, 244, 12, 0, 0, 0, 0, 0, 0, 245, 12, 0, 0, 224, 14, 0, 0, 225, 14, 0, 0, 236, 16, 0, 0, 237, 16, 0, 0, 24, 19, 0, 0, 25, 19, 0, 0, 100, 21, 0, 0, 101, 21, 0, 0, 208, 23, 0, 0, 209, 23, 0, 0, 92, 26, 0, 0, 93, 26, 0, 0, 8, 29, 0, 0, 9, 29, 0, 0, 0, 0, 0, 0, 212, 31, 0, 0, 213, 31, 0, 0, 192, 34, 0, 0, 193, 34, 0, 0, 204, 37, 0, 0, 205, 37, 0, 0, 248, 40, 0, 0, 249, 40, 0, 0, 68, 44, 0, 0, 69, 44, 0, 0, 176, 47, 0, 0, 177, 47, 0, 0, 60, 51, 0, 0, 61, 51, 0, 0, 232, 54, 0, 0, 0, 0, 0, 0, 233, 54, 0, 0, 180, 58, 0, 0, 181, 58, 0, 0, 160, 62, 0, 0, 161, 62, 0, 0, 172, 66, 0, 0, 173, 66, 0, 0, 216, 70, 0, 0, 217, 70, 0, 0, 36, 75, 0, 0, 37, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 145, 77, 0, 0, 144, 77, 0, 0, 53, 73, 0, 0, 52, 73, 0, 0, 249, 68, 0, 0, 248, 68, 0, 0, 221, 64, 0, 0, 220, 64, 0, 0, 225, 60, 0, 0, 224, 60, 0, 0, 5, 57, 0, 0, 0, 0, 0, 0, 4, 57, 0, 0, 73, 53, 0, 0, 72, 53, 0, 0, 173, 49, 0, 0, 172, 49, 0, 0, 49, 46, 0, 0, 48, 46, 0, 0, 213, 42, 0, 0, 212, 42, 0, 0, 153, 39, 0, 0, 152, 39, 0, 0, 125, 36, 0, 0, 124, 36, 0, 0, 129, 33, 0, 0, 128, 33, 0, 0, 0, 0, 0, 0, 165, 30, 0, 0, 164, 30, 0, 0, 233, 27, 0, 0, 232, 27, 0, 0, 77, 25, 0, 0, 76, 25, 0, 0, 209, 22, 0, 0, 208, 22, 0, 0, 117, 20, 0, 0, 116, 20, 0, 0, 57, 18, 0, 0, 56, 18, 0, 0, 29, 16, 0, 0, 28, 16, 0, 0, 33, 14, 0, 0, 0, 0, 0, 0, 32, 14, 0, 0, 69, 12, 0, 0, 68, 12, 0, 0, 137, 10, 0, 0, 136, 10, 0, 0, 237, 8, 0, 0, 236, 8, 0, 0, 113, 7, 0, 0, 112, 7, 0, 0, 21, 6, 0, 0, 20, 6, 0, 0, 217, 4, 0, 0, 216, 4, 0, 0, 189, 3, 0, 0, 188, 3, 0, 0, 0, 0, 0, 0, 193, 2, 0, 0, 192, 2, 0, 0, 227, 1, 0, 0, 229, 1, 0, 0, 231, 1, 0, 0, 233, 1, 0, 0, 235, 1, 0, 0, 237, 1, 0, 0, 239, 1, 0, 0, 241, 1, 0, 0, 243, 1, 0, 0, 245, 1, 0, 0, 247, 1, 0, 0, 249, 1, 0, 0, 251, 1, 0, 0, 0, 0, 0, 0, 253, 1, 0, 0, 255, 1, 0, 0, 1, 2, 0, 0, 3, 2, 0, 0, 5, 2, 0, 0, 7, 2, 0, 0, 9, 2, 0, 0, 11, 2, 0, 0, 13, 2, 0, 0, 15, 2, 0, 0, 17, 2, 0, 0, 19, 2, 0, 0, 21, 2, 0, 0, 23, 2, 0, 0, 25, 2, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 3, 3, 0, 0, 14, 4, 0, 0, 15, 4, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 134, 6, 0, 0, 135, 6, 0, 0, 242, 7, 0, 0, 243, 7, 0, 0, 126, 9, 0, 0, 127, 9, 0, 0, 42, 11, 0, 0, 43, 11, 0, 0, 246, 12, 0, 0, 0, 0, 0, 0, 247, 12, 0, 0, 226, 14, 0, 0, 227, 14, 0, 0, 238, 16, 0, 0, 239, 16, 0, 0, 26, 19, 0, 0, 27, 19, 0, 0, 102, 21, 0, 0, 103, 21, 0, 0, 210, 23, 0, 0, 211, 23, 0, 0, 94, 26, 0, 0, 95, 26, 0, 0, 10, 29, 0, 0, 11, 29, 0, 0, 0, 0, 0, 0, 214, 31, 0, 0, 215, 31, 0, 0, 194, 34, 0, 0, 195, 34, 0, 0, 206, 37, 0, 0, 207, 37, 0, 0, 250, 40, 0, 0, 251, 40, 0, 0, 70, 44, 0, 0, 71, 44, 0, 0, 178, 47, 0, 0, 179, 47, 0, 0, 62, 51, 0, 0, 63, 51, 0, 0, 234, 54, 0, 0, 0, 0, 0, 0, 235, 54, 0, 0, 182, 58, 0, 0, 183, 58, 0, 0, 162, 62, 0, 0, 163, 62, 0, 0, 174, 66, 0, 0, 175, 66, 0, 0, 218, 70, 0, 0, 219, 70, 0, 0, 38, 75, 0, 0, 39, 75, 0, 0, 143, 77, 0, 0, 142, 77, 0, 0, 51, 73, 0, 0, 50, 73, 0, 0, 247, 68, 0, 0, 246, 68, 0, 0, 219, 64, 0, 0, 218, 64, 0, 0, 223, 60, 0, 0, 222, 60, 0, 0, 3, 57, 0, 0, 1, 0, 0, 0, 2, 57, 0, 0, 71, 53, 0, 0, 70, 53, 0, 0, 171, 49, 0, 0, 170, 49, 0, 0, 47, 46, 0, 0, 46, 46, 0, 0, 211, 42, 0, 0, 210, 42, 0, 0, 151, 39, 0, 0, 150, 39, 0, 0, 123, 36, 0, 0, 122, 36, 0, 0, 127, 33, 0, 0, 126, 33, 0, 0, 1, 0, 0, 0, 163, 30, 0, 0, 162, 30, 0, 0, 231, 27, 0, 0, 230, 27, 0, 0, 75, 25, 0, 0, 74, 25, 0, 0, 207, 22, 0, 0, 206, 22, 0, 0, 115, 20, 0, 0, 114, 20, 0, 0, 55, 18, 0, 0, 54, 18, 0, 0, 27, 16, 0, 0, 26, 16, 0, 0, 31, 14, 0, 0, 1, 0, 0, 0, 30, 14, 0, 0, 67, 12, 0, 0, 66, 12, 0, 0, 135, 10, 0, 0, 134, 10, 0, 0, 235, 8, 0, 0, 234, 8, 0, 0, 111, 7, 0, 0, 110, 7, 0, 0, 19, 6, 0, 0, 18, 6, 0, 0, 215, 4, 0, 0, 214, 4, 0, 0, 187, 3, 0, 0, 186, 3, 0, 0, 1, 0, 0, 0, 191, 2, 0, 0, 190, 2, 0, 0, 226, 1, 0, 0, 228, 1, 0, 0, 230, 1, 0, 0, 232, 1, 0, 0, 234, 1, 0, 0, 236, 1, 0, 0, 238, 1, 0, 0, 240, 1, 0, 0, 242, 1, 0, 0, 244, 1, 0, 0, 246, 1, 0, 0, 248, 1, 0, 0, 250, 1, 0, 0, 1, 0, 0, 0, 252, 1, 0, 0, 254, 1, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 4, 2, 0, 0, 6, 2, 0, 0, 8, 2, 0, 0, 10, 2, 0, 0, 12, 2, 0, 0, 14, 2, 0, 0, 16, 2, 0, 0, 18, 2, 0, 0, 20, 2, 0, 0, 22, 2, 0, 0, 24, 2, 0, 0, 1, 0, 0, 0, 4, 3, 0, 0, 5, 3, 0, 0, 16, 4, 0, 0, 17, 4, 0, 0, 60, 5, 0, 0, 61, 5, 0, 0, 136, 6, 0, 0, 137, 6, 0, 0, 244, 7, 0, 0, 245, 7, 0, 0, 128, 9, 0, 0, 129, 9, 0, 0, 44, 11, 0, 0, 45, 11, 0, 0, 248, 12, 0, 0, 1, 0, 0, 0, 249, 12, 0, 0, 228, 14, 0, 0, 229, 14, 0, 0, 240, 16, 0, 0, 241, 16, 0, 0, 28, 19, 0, 0, 29, 19, 0, 0, 104, 21, 0, 0, 105, 21, 0, 0, 212, 23, 0, 0, 213, 23, 0, 0, 96, 26, 0, 0, 97, 26, 0, 0, 12, 29, 0, 0, 13, 29, 0, 0, 1, 0, 0, 0, 216, 31, 0, 0, 217, 31, 0, 0, 196, 34, 0, 0, 197, 34, 0, 0, 208, 37, 0, 0, 209, 37, 0, 0, 252, 40, 0, 0, 253, 40, 0, 0, 72, 44, 0, 0, 73, 44, 0, 0, 180, 47, 0, 0, 181, 47, 0, 0, 64, 51, 0, 0, 65, 51, 0, 0, 236, 54, 0, 0, 1, 0, 0, 0, 237, 54, 0, 0, 184, 58, 0, 0, 185, 58, 0, 0, 164, 62, 0, 0, 165, 62, 0, 0, 176, 66, 0, 0, 177, 66, 0, 0, 220, 70, 0, 0, 221, 70, 0, 0, 40, 75, 0, 0, 41, 75, 0, 0, 141, 77, 0, 0, 140, 77, 0, 0, 49, 73, 0, 0, 48, 73, 0, 0, 245, 68, 0, 0, 244, 68, 0, 0, 217, 64, 0, 0, 216, 64, 0, 0, 221, 60, 0, 0, 220, 60, 0, 0, 1, 57, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 69, 53, 0, 0, 68, 53, 0, 0, 169, 49, 0, 0, 168, 49, 0, 0, 45, 46, 0, 0, 44, 46, 0, 0, 209, 42, 0, 0, 208, 42, 0, 0, 149, 39, 0, 0, 148, 39, 0, 0, 121, 36, 0, 0, 120, 36, 0, 0, 125, 33, 0, 0, 124, 33, 0, 0, 0, 0, 0, 0, 161, 30, 0, 0, 160, 30, 0, 0, 229, 27, 0, 0, 228, 27, 0, 0, 73, 25, 0, 0, 72, 25, 0, 0, 205, 22, 0, 0, 204, 22, 0, 0, 113, 20, 0, 0, 112, 20, 0, 0, 53, 18, 0, 0, 52, 18, 0, 0, 25, 16, 0, 0, 24, 16, 0, 0, 29, 14, 0, 0, 0, 0, 0, 0, 28, 14, 0, 0, 65, 12, 0, 0, 64, 12, 0, 0, 133, 10, 0, 0, 132, 10, 0, 0, 233, 8, 0, 0, 232, 8, 0, 0, 109, 7, 0, 0, 108, 7, 0, 0, 17, 6, 0, 0, 16, 6, 0, 0, 213, 4, 0, 0, 212, 4, 0, 0, 185, 3, 0, 0, 184, 3, 0, 0, 0, 0, 0, 0, 189, 2, 0, 0, 188, 2, 0, 0, 225, 1, 0, 0, 224, 1, 0, 0, 35, 1, 0, 0, 37, 1, 0, 0, 39, 1, 0, 0, 41, 1, 0, 0, 43, 1, 0, 0, 45, 1, 0, 0, 47, 1, 0, 0, 49, 1, 0, 0, 51, 1, 0, 0, 53, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 57, 1, 0, 0, 59, 1, 0, 0, 61, 1, 0, 0, 63, 1, 0, 0, 65, 1, 0, 0, 67, 1, 0, 0, 69, 1, 0, 0, 71, 1, 0, 0, 73, 1, 0, 0, 75, 1, 0, 0, 77, 1, 0, 0, 79, 1, 0, 0, 81, 1, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 7, 3, 0, 0, 18, 4, 0, 0, 19, 4, 0, 0, 62, 5, 0, 0, 63, 5, 0, 0, 138, 6, 0, 0, 139, 6, 0, 0, 246, 7, 0, 0, 247, 7, 0, 0, 130, 9, 0, 0, 131, 9, 0, 0, 46, 11, 0, 0, 47, 11, 0, 0, 250, 12, 0, 0, 0, 0, 0, 0, 251, 12, 0, 0, 230, 14, 0, 0, 231, 14, 0, 0, 242, 16, 0, 0, 243, 16, 0, 0, 30, 19, 0, 0, 31, 19, 0, 0, 106, 21, 0, 0, 107, 21, 0, 0, 214, 23, 0, 0, 215, 23, 0, 0, 98, 26, 0, 0, 99, 26, 0, 0, 14, 29, 0, 0, 15, 29, 0, 0, 0, 0, 0, 0, 218, 31, 0, 0, 219, 31, 0, 0, 198, 34, 0, 0, 199, 34, 0, 0, 210, 37, 0, 0, 211, 37, 0, 0, 254, 40, 0, 0, 255, 40, 0, 0, 74, 44, 0, 0, 75, 44, 0, 0, 182, 47, 0, 0, 183, 47, 0, 0, 66, 51, 0, 0, 67, 51, 0, 0, 238, 54, 0, 0, 0, 0, 0, 0, 239, 54, 0, 0, 186, 58, 0, 0, 187, 58, 0, 0, 166, 62, 0, 0, 167, 62, 0, 0, 178, 66, 0, 0, 179, 66, 0, 0, 222, 70, 0, 0, 223, 70, 0, 0, 42, 75, 0, 0, 43, 75, 0, 0, 139, 77, 0, 0, 138, 77, 0, 0, 47, 73, 0, 0, 46, 73, 0, 0, 243, 68, 0, 0, 242, 68, 0, 0, 215, 64, 0, 0, 214, 64, 0, 0, 219, 60, 0, 0, 218, 60, 0, 0, 255, 56, 0, 0, 1, 0, 0, 0, 254, 56, 0, 0, 67, 53, 0, 0, 66, 53, 0, 0, 167, 49, 0, 0, 166, 49, 0, 0, 43, 46, 0, 0, 42, 46, 0, 0, 207, 42, 0, 0, 206, 42, 0, 0, 147, 39, 0, 0, 146, 39, 0, 0, 119, 36, 0, 0, 118, 36, 0, 0, 123, 33, 0, 0, 122, 33, 0, 0, 1, 0, 0, 0, 159, 30, 0, 0, 158, 30, 0, 0, 227, 27, 0, 0, 226, 27, 0, 0, 71, 25, 0, 0, 70, 25, 0, 0, 203, 22, 0, 0, 202, 22, 0, 0, 111, 20, 0, 0, 110, 20, 0, 0, 51, 18, 0, 0, 50, 18, 0, 0, 23, 16, 0, 0, 22, 16, 0, 0, 27, 14, 0, 0, 1, 0, 0, 0, 26, 14, 0, 0, 63, 12, 0, 0, 62, 12, 0, 0, 131, 10, 0, 0, 130, 10, 0, 0, 231, 8, 0, 0, 230, 8, 0, 0, 107, 7, 0, 0, 106, 7, 0, 0, 15, 6, 0, 0, 14, 6, 0, 0, 211, 4, 0, 0, 210, 4, 0, 0, 183, 3, 0, 0, 182, 3, 0, 0, 1, 0, 0, 0, 187, 2, 0, 0, 186, 2, 0, 0, 223, 1, 0, 0, 222, 1, 0, 0, 34, 1, 0, 0, 36, 1, 0, 0, 38, 1, 0, 0, 40, 1, 0, 0, 42, 1, 0, 0, 44, 1, 0, 0, 46, 1, 0, 0, 48, 1, 0, 0, 50, 1, 0, 0, 52, 1, 0, 0, 54, 1, 0, 0, 1, 0, 0, 0, 56, 1, 0, 0, 58, 1, 0, 0, 60, 1, 0, 0, 62, 1, 0, 0, 64, 1, 0, 0, 66, 1, 0, 0, 68, 1, 0, 0, 70, 1, 0, 0, 72, 1, 0, 0, 74, 1, 0, 0, 76, 1, 0, 0, 78, 1, 0, 0, 80, 1, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 1, 0, 0, 0, 8, 3, 0, 0, 9, 3, 0, 0, 20, 4, 0, 0, 21, 4, 0, 0, 64, 5, 0, 0, 65, 5, 0, 0, 140, 6, 0, 0, 141, 6, 0, 0, 248, 7, 0, 0, 249, 7, 0, 0, 132, 9, 0, 0, 133, 9, 0, 0, 48, 11, 0, 0, 49, 11, 0, 0, 252, 12, 0, 0, 1, 0, 0, 0, 253, 12, 0, 0, 232, 14, 0, 0, 233, 14, 0, 0, 244, 16, 0, 0, 245, 16, 0, 0, 32, 19, 0, 0, 33, 19, 0, 0, 108, 21, 0, 0, 109, 21, 0, 0, 216, 23, 0, 0, 217, 23, 0, 0, 100, 26, 0, 0, 101, 26, 0, 0, 16, 29, 0, 0, 17, 29, 0, 0, 1, 0, 0, 0, 220, 31, 0, 0, 221, 31, 0, 0, 200, 34, 0, 0, 201, 34, 0, 0, 212, 37, 0, 0, 213, 37, 0, 0, 0, 41, 0, 0, 1, 41, 0, 0, 76, 44, 0, 0, 77, 44, 0, 0, 184, 47, 0, 0, 185, 47, 0, 0, 68, 51, 0, 0, 69, 51, 0, 0, 240, 54, 0, 0, 1, 0, 0, 0, 241, 54, 0, 0, 188, 58, 0, 0, 189, 58, 0, 0, 168, 62, 0, 0, 169, 62, 0, 0, 180, 66, 0, 0, 181, 66, 0, 0, 224, 70, 0, 0, 225, 70, 0, 0, 44, 75, 0, 0, 45, 75, 0, 0, 137, 77, 0, 0, 136, 77, 0, 0, 45, 73, 0, 0, 44, 73, 0, 0, 241, 68, 0, 0, 240, 68, 0, 0, 213, 64, 0, 0, 212, 64, 0, 0, 217, 60, 0, 0, 216, 60, 0, 0, 253, 56, 0, 0, 0, 0, 0, 0, 252, 56, 0, 0, 65, 53, 0, 0, 64, 53, 0, 0, 165, 49, 0, 0, 164, 49, 0, 0, 41, 46, 0, 0, 40, 46, 0, 0, 205, 42, 0, 0, 204, 42, 0, 0, 145, 39, 0, 0, 144, 39, 0, 0, 117, 36, 0, 0, 116, 36, 0, 0, 121, 33, 0, 0, 120, 33, 0, 0, 0, 0, 0, 0, 157, 30, 0, 0, 156, 30, 0, 0, 225, 27, 0, 0, 224, 27, 0, 0, 69, 25, 0, 0, 68, 25, 0, 0, 201, 22, 0, 0, 200, 22, 0, 0, 109, 20, 0, 0, 108, 20, 0, 0, 49, 18, 0, 0, 48, 18, 0, 0, 21, 16, 0, 0, 20, 16, 0, 0, 25, 14, 0, 0, 0, 0, 0, 0, 24, 14, 0, 0, 61, 12, 0, 0, 60, 12, 0, 0, 129, 10, 0, 0, 128, 10, 0, 0, 229, 8, 0, 0, 228, 8, 0, 0, 105, 7, 0, 0, 104, 7, 0, 0, 13, 6, 0, 0, 12, 6, 0, 0, 209, 4, 0, 0, 208, 4, 0, 0, 181, 3, 0, 0, 180, 3, 0, 0, 0, 0, 0, 0, 185, 2, 0, 0, 184, 2, 0, 0, 221, 1, 0, 0, 220, 1, 0, 0, 33, 1, 0, 0, 32, 1, 0, 0, 131, 0, 0, 0, 133, 0, 0, 0, 135, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 141, 0, 0, 0, 143, 0, 0, 0, 145, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 151, 0, 0, 0, 153, 0, 0, 0, 155, 0, 0, 0, 157, 0, 0, 0, 159, 0, 0, 0, 161, 0, 0, 0, 163, 0, 0, 0, 165, 0, 0, 0, 167, 0, 0, 0, 169, 0, 0, 0, 82, 1, 0, 0, 83, 1, 0, 0, 30, 2, 0, 0, 31, 2, 0, 0, 0, 0, 0, 0, 10, 3, 0, 0, 11, 3, 0, 0, 22, 4, 0, 0, 23, 4, 0, 0, 66, 5, 0, 0, 67, 5, 0, 0, 142, 6, 0, 0, 143, 6, 0, 0, 250, 7, 0, 0, 251, 7, 0, 0, 134, 9, 0, 0, 135, 9, 0, 0, 50, 11, 0, 0, 51, 11, 0, 0, 254, 12, 0, 0, 0, 0, 0, 0, 255, 12, 0, 0, 234, 14, 0, 0, 235, 14, 0, 0, 246, 16, 0, 0, 247, 16, 0, 0, 34, 19, 0, 0, 35, 19, 0, 0, 110, 21, 0, 0, 111, 21, 0, 0, 218, 23, 0, 0, 219, 23, 0, 0, 102, 26, 0, 0, 103, 26, 0, 0, 18, 29, 0, 0, 19, 29, 0, 0, 0, 0, 0, 0, 222, 31, 0, 0, 223, 31, 0, 0, 202, 34, 0, 0, 203, 34, 0, 0, 214, 37, 0, 0, 215, 37, 0, 0, 2, 41, 0, 0, 3, 41, 0, 0, 78, 44, 0, 0, 79, 44, 0, 0, 186, 47, 0, 0, 187, 47, 0, 0, 70, 51, 0, 0, 71, 51, 0, 0, 242, 54, 0, 0, 0, 0, 0, 0, 243, 54, 0, 0, 190, 58, 0, 0, 191, 58, 0, 0, 170, 62, 0, 0, 171, 62, 0, 0, 182, 66, 0, 0, 183, 66, 0, 0, 226, 70, 0, 0, 227, 70, 0, 0, 46, 75, 0, 0, 47, 75, 0, 0, 135, 77, 0, 0, 134, 77, 0, 0, 43, 73, 0, 0, 42, 73, 0, 0, 239, 68, 0, 0, 238, 68, 0, 0, 211, 64, 0, 0, 210, 64, 0, 0, 215, 60, 0, 0, 214, 60, 0, 0, 251, 56, 0, 0, 1, 0, 0, 0, 250, 56, 0, 0, 63, 53, 0, 0, 62, 53, 0, 0, 163, 49, 0, 0, 162, 49, 0, 0, 39, 46, 0, 0, 38, 46, 0, 0, 203, 42, 0, 0, 202, 42, 0, 0, 143, 39, 0, 0, 142, 39, 0, 0, 115, 36, 0, 0, 114, 36, 0, 0, 119, 33, 0, 0, 118, 33, 0, 0, 1, 0, 0, 0, 155, 30, 0, 0, 154, 30, 0, 0, 223, 27, 0, 0, 222, 27, 0, 0, 67, 25, 0, 0, 66, 25, 0, 0, 199, 22, 0, 0, 198, 22, 0, 0, 107, 20, 0, 0, 106, 20, 0, 0, 47, 18, 0, 0, 46, 18, 0, 0, 19, 16, 0, 0, 18, 16, 0, 0, 23, 14, 0, 0, 1, 0, 0, 0, 22, 14, 0, 0, 59, 12, 0, 0, 58, 12, 0, 0, 127, 10, 0, 0, 126, 10, 0, 0, 227, 8, 0, 0, 226, 8, 0, 0, 103, 7, 0, 0, 102, 7, 0, 0, 11, 6, 0, 0, 10, 6, 0, 0, 207, 4, 0, 0, 206, 4, 0, 0, 179, 3, 0, 0, 178, 3, 0, 0, 1, 0, 0, 0, 183, 2, 0, 0, 182, 2, 0, 0, 219, 1, 0, 0, 218, 1, 0, 0, 31, 1, 0, 0, 30, 1, 0, 0, 130, 0, 0, 0, 132, 0, 0, 0, 134, 0, 0, 0, 136, 0, 0, 0, 138, 0, 0, 0, 140, 0, 0, 0, 142, 0, 0, 0, 144, 0, 0, 0, 146, 0, 0, 0, 1, 0, 0, 0, 148, 0, 0, 0, 150, 0, 0, 0, 152, 0, 0, 0, 154, 0, 0, 0, 156, 0, 0, 0, 158, 0, 0, 0, 160, 0, 0, 0, 162, 0, 0, 0, 164, 0, 0, 0, 166, 0, 0, 0, 168, 0, 0, 0, 84, 1, 0, 0, 85, 1, 0, 0, 32, 2, 0, 0, 33, 2, 0, 0, 1, 0, 0, 0, 12, 3, 0, 0, 13, 3, 0, 0, 24, 4, 0, 0, 25, 4, 0, 0, 68, 5, 0, 0, 69, 5, 0, 0, 144, 6, 0, 0, 145, 6, 0, 0, 252, 7, 0, 0, 253, 7, 0, 0, 136, 9, 0, 0, 137, 9, 0, 0, 52, 11, 0, 0, 53, 11, 0, 0, 0, 13, 0, 0, 1, 0, 0, 0, 1, 13, 0, 0, 236, 14, 0, 0, 237, 14, 0, 0, 248, 16, 0, 0, 249, 16, 0, 0, 36, 19, 0, 0, 37, 19, 0, 0, 112, 21, 0, 0, 113, 21, 0, 0, 220, 23, 0, 0, 221, 23, 0, 0, 104, 26, 0, 0, 105, 26, 0, 0, 20, 29, 0, 0, 21, 29, 0, 0, 1, 0, 0, 0, 224, 31, 0, 0, 225, 31, 0, 0, 204, 34, 0, 0, 205, 34, 0, 0, 216, 37, 0, 0, 217, 37, 0, 0, 4, 41, 0, 0, 5, 41, 0, 0, 80, 44, 0, 0, 81, 44, 0, 0, 188, 47, 0, 0, 189, 47, 0, 0, 72, 51, 0, 0, 73, 51, 0, 0, 244, 54, 0, 0, 1, 0, 0, 0, 245, 54, 0, 0, 192, 58, 0, 0, 193, 58, 0, 0, 172, 62, 0, 0, 173, 62, 0, 0, 184, 66, 0, 0, 185, 66, 0, 0, 228, 70, 0, 0, 229, 70, 0, 0, 48, 75, 0, 0, 49, 75, 0, 0, 133, 77, 0, 0, 132, 77, 0, 0, 41, 73, 0, 0, 40, 73, 0, 0, 237, 68, 0, 0, 236, 68, 0, 0, 209, 64, 0, 0, 208, 64, 0, 0, 213, 60, 0, 0, 212, 60, 0, 0, 249, 56, 0, 0, 0, 0, 0, 0, 248, 56, 0, 0, 61, 53, 0, 0, 60, 53, 0, 0, 161, 49, 0, 0, 160, 49, 0, 0, 37, 46, 0, 0, 36, 46, 0, 0, 201, 42, 0, 0, 200, 42, 0, 0, 141, 39, 0, 0, 140, 39, 0, 0, 113, 36, 0, 0, 112, 36, 0, 0, 117, 33, 0, 0, 116, 33, 0, 0, 0, 0, 0, 0, 153, 30, 0, 0, 152, 30, 0, 0, 221, 27, 0, 0, 220, 27, 0, 0, 65, 25, 0, 0, 64, 25, 0, 0, 197, 22, 0, 0, 196, 22, 0, 0, 105, 20, 0, 0, 104, 20, 0, 0, 45, 18, 0, 0, 44, 18, 0, 0, 17, 16, 0, 0, 16, 16, 0, 0, 21, 14, 0, 0, 0, 0, 0, 0, 20, 14, 0, 0, 57, 12, 0, 0, 56, 12, 0, 0, 125, 10, 0, 0, 124, 10, 0, 0, 225, 8, 0, 0, 224, 8, 0, 0, 101, 7, 0, 0, 100, 7, 0, 0, 9, 6, 0, 0, 8, 6, 0, 0, 205, 4, 0, 0, 204, 4, 0, 0, 177, 3, 0, 0, 176, 3, 0, 0, 0, 0, 0, 0, 181, 2, 0, 0, 180, 2, 0, 0, 217, 1, 0, 0, 216, 1, 0, 0, 29, 1, 0, 0, 28, 1, 0, 0, 129, 0, 0, 0, 128, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 33, 0, 0, 0, 170, 0, 0, 0, 171, 0, 0, 0, 86, 1, 0, 0, 87, 1, 0, 0, 34, 2, 0, 0, 35, 2, 0, 0, 0, 0, 0, 0, 14, 3, 0, 0, 15, 3, 0, 0, 26, 4, 0, 0, 27, 4, 0, 0, 70, 5, 0, 0, 71, 5, 0, 0, 146, 6, 0, 0, 147, 6, 0, 0, 254, 7, 0, 0, 255, 7, 0, 0, 138, 9, 0, 0, 139, 9, 0, 0, 54, 11, 0, 0, 55, 11, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 3, 13, 0, 0, 238, 14, 0, 0, 239, 14, 0, 0, 250, 16, 0, 0, 251, 16, 0, 0, 38, 19, 0, 0, 39, 19, 0, 0, 114, 21, 0, 0, 115, 21, 0, 0, 222, 23, 0, 0, 223, 23, 0, 0, 106, 26, 0, 0, 107, 26, 0, 0, 22, 29, 0, 0, 23, 29, 0, 0, 0, 0, 0, 0, 226, 31, 0, 0, 227, 31, 0, 0, 206, 34, 0, 0, 207, 34, 0, 0, 218, 37, 0, 0, 219, 37, 0, 0, 6, 41, 0, 0, 7, 41, 0, 0, 82, 44, 0, 0, 83, 44, 0, 0, 190, 47, 0, 0, 191, 47, 0, 0, 74, 51, 0, 0, 75, 51, 0, 0, 246, 54, 0, 0, 0, 0, 0, 0, 247, 54, 0, 0, 194, 58, 0, 0, 195, 58, 0, 0, 174, 62, 0, 0, 175, 62, 0, 0, 186, 66, 0, 0, 187, 66, 0, 0, 230, 70, 0, 0, 231, 70, 0, 0, 50, 75, 0, 0, 51, 75, 0, 0, 131, 77, 0, 0, 130, 77, 0, 0, 39, 73, 0, 0, 38, 73, 0, 0, 235, 68, 0, 0, 234, 68, 0, 0, 207, 64, 0, 0, 206, 64, 0, 0, 211, 60, 0, 0, 210, 60, 0, 0, 247, 56, 0, 0, 1, 0, 0, 0, 246, 56, 0, 0, 59, 53, 0, 0, 58, 53, 0, 0, 159, 49, 0, 0, 158, 49, 0, 0, 35, 46, 0, 0, 34, 46, 0, 0, 199, 42, 0, 0, 198, 42, 0, 0, 139, 39, 0, 0, 138, 39, 0, 0, 111, 36, 0, 0, 110, 36, 0, 0, 115, 33, 0, 0, 114, 33, 0, 0, 1, 0, 0, 0, 151, 30, 0, 0, 150, 30, 0, 0, 219, 27, 0, 0, 218, 27, 0, 0, 63, 25, 0, 0, 62, 25, 0, 0, 195, 22, 0, 0, 194, 22, 0, 0, 103, 20, 0, 0, 102, 20, 0, 0, 43, 18, 0, 0, 42, 18, 0, 0, 15, 16, 0, 0, 14, 16, 0, 0, 19, 14, 0, 0, 1, 0, 0, 0, 18, 14, 0, 0, 55, 12, 0, 0, 54, 12, 0, 0, 123, 10, 0, 0, 122, 10, 0, 0, 223, 8, 0, 0, 222, 8, 0, 0, 99, 7, 0, 0, 98, 7, 0, 0, 7, 6, 0, 0, 6, 6, 0, 0, 203, 4, 0, 0, 202, 4, 0, 0, 175, 3, 0, 0, 174, 3, 0, 0, 1, 0, 0, 0, 179, 2, 0, 0, 178, 2, 0, 0, 215, 1, 0, 0, 214, 1, 0, 0, 27, 1, 0, 0, 26, 1, 0, 0, 127, 0, 0, 0, 126, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 172, 0, 0, 0, 173, 0, 0, 0, 88, 1, 0, 0, 89, 1, 0, 0, 36, 2, 0, 0, 37, 2, 0, 0, 1, 0, 0, 0, 16, 3, 0, 0, 17, 3, 0, 0, 28, 4], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 30720);
+allocate([29, 4, 0, 0, 72, 5, 0, 0, 73, 5, 0, 0, 148, 6, 0, 0, 149, 6, 0, 0, 0, 8, 0, 0, 1, 8, 0, 0, 140, 9, 0, 0, 141, 9, 0, 0, 56, 11, 0, 0, 57, 11, 0, 0, 4, 13, 0, 0, 1, 0, 0, 0, 5, 13, 0, 0, 240, 14, 0, 0, 241, 14, 0, 0, 252, 16, 0, 0, 253, 16, 0, 0, 40, 19, 0, 0, 41, 19, 0, 0, 116, 21, 0, 0, 117, 21, 0, 0, 224, 23, 0, 0, 225, 23, 0, 0, 108, 26, 0, 0, 109, 26, 0, 0, 24, 29, 0, 0, 25, 29, 0, 0, 1, 0, 0, 0, 228, 31, 0, 0, 229, 31, 0, 0, 208, 34, 0, 0, 209, 34, 0, 0, 220, 37, 0, 0, 221, 37, 0, 0, 8, 41, 0, 0, 9, 41, 0, 0, 84, 44, 0, 0, 85, 44, 0, 0, 192, 47, 0, 0, 193, 47, 0, 0, 76, 51, 0, 0, 77, 51, 0, 0, 248, 54, 0, 0, 1, 0, 0, 0, 249, 54, 0, 0, 196, 58, 0, 0, 197, 58, 0, 0, 176, 62, 0, 0, 177, 62, 0, 0, 188, 66, 0, 0, 189, 66, 0, 0, 232, 70, 0, 0, 233, 70, 0, 0, 52, 75, 0, 0, 53, 75, 0, 0, 129, 77, 0, 0, 128, 77, 0, 0, 37, 73, 0, 0, 36, 73, 0, 0, 233, 68, 0, 0, 232, 68, 0, 0, 205, 64, 0, 0, 204, 64, 0, 0, 209, 60, 0, 0, 208, 60, 0, 0, 245, 56, 0, 0, 0, 0, 0, 0, 244, 56, 0, 0, 57, 53, 0, 0, 56, 53, 0, 0, 157, 49, 0, 0, 156, 49, 0, 0, 33, 46, 0, 0, 32, 46, 0, 0, 197, 42, 0, 0, 196, 42, 0, 0, 137, 39, 0, 0, 136, 39, 0, 0, 109, 36, 0, 0, 108, 36, 0, 0, 113, 33, 0, 0, 112, 33, 0, 0, 0, 0, 0, 0, 149, 30, 0, 0, 148, 30, 0, 0, 217, 27, 0, 0, 216, 27, 0, 0, 61, 25, 0, 0, 60, 25, 0, 0, 193, 22, 0, 0, 192, 22, 0, 0, 101, 20, 0, 0, 100, 20, 0, 0, 41, 18, 0, 0, 40, 18, 0, 0, 13, 16, 0, 0, 12, 16, 0, 0, 17, 14, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 53, 12, 0, 0, 52, 12, 0, 0, 121, 10, 0, 0, 120, 10, 0, 0, 221, 8, 0, 0, 220, 8, 0, 0, 97, 7, 0, 0, 96, 7, 0, 0, 5, 6, 0, 0, 4, 6, 0, 0, 201, 4, 0, 0, 200, 4, 0, 0, 173, 3, 0, 0, 172, 3, 0, 0, 0, 0, 0, 0, 177, 2, 0, 0, 176, 2, 0, 0, 213, 1, 0, 0, 212, 1, 0, 0, 25, 1, 0, 0, 24, 1, 0, 0, 125, 0, 0, 0, 124, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 32, 78, 0, 0, 33, 78, 0, 0, 34, 78, 0, 0, 35, 78, 0, 0, 36, 78, 0, 0, 0, 0, 0, 0, 37, 78, 0, 0, 38, 78, 0, 0, 39, 78, 0, 0, 40, 78, 0, 0, 41, 78, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 174, 0, 0, 0, 175, 0, 0, 0, 90, 1, 0, 0, 91, 1, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 0, 0, 0, 0, 18, 3, 0, 0, 19, 3, 0, 0, 30, 4, 0, 0, 31, 4, 0, 0, 74, 5, 0, 0, 75, 5, 0, 0, 150, 6, 0, 0, 151, 6, 0, 0, 2, 8, 0, 0, 3, 8, 0, 0, 142, 9, 0, 0, 143, 9, 0, 0, 58, 11, 0, 0, 59, 11, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 7, 13, 0, 0, 242, 14, 0, 0, 243, 14, 0, 0, 254, 16, 0, 0, 255, 16, 0, 0, 42, 19, 0, 0, 43, 19, 0, 0, 118, 21, 0, 0, 119, 21, 0, 0, 226, 23, 0, 0, 227, 23, 0, 0, 110, 26, 0, 0, 111, 26, 0, 0, 26, 29, 0, 0, 27, 29, 0, 0, 0, 0, 0, 0, 230, 31, 0, 0, 231, 31, 0, 0, 210, 34, 0, 0, 211, 34, 0, 0, 222, 37, 0, 0, 223, 37, 0, 0, 10, 41, 0, 0, 11, 41, 0, 0, 86, 44, 0, 0, 87, 44, 0, 0, 194, 47, 0, 0, 195, 47, 0, 0, 78, 51, 0, 0, 79, 51, 0, 0, 250, 54, 0, 0, 0, 0, 0, 0, 251, 54, 0, 0, 198, 58, 0, 0, 199, 58, 0, 0, 178, 62, 0, 0, 179, 62, 0, 0, 190, 66, 0, 0, 191, 66, 0, 0, 234, 70, 0, 0, 235, 70, 0, 0, 54, 75, 0, 0, 55, 75, 0, 0, 127, 77, 0, 0, 126, 77, 0, 0, 35, 73, 0, 0, 34, 73, 0, 0, 231, 68, 0, 0, 230, 68, 0, 0, 203, 64, 0, 0, 202, 64, 0, 0, 207, 60, 0, 0, 206, 60, 0, 0, 243, 56, 0, 0, 1, 0, 0, 0, 242, 56, 0, 0, 55, 53, 0, 0, 54, 53, 0, 0, 155, 49, 0, 0, 154, 49, 0, 0, 31, 46, 0, 0, 30, 46, 0, 0, 195, 42, 0, 0, 194, 42, 0, 0, 135, 39, 0, 0, 134, 39, 0, 0, 107, 36, 0, 0, 106, 36, 0, 0, 111, 33, 0, 0, 110, 33, 0, 0, 1, 0, 0, 0, 147, 30, 0, 0, 146, 30, 0, 0, 215, 27, 0, 0, 214, 27, 0, 0, 59, 25, 0, 0, 58, 25, 0, 0, 191, 22, 0, 0, 190, 22, 0, 0, 99, 20, 0, 0, 98, 20, 0, 0, 39, 18, 0, 0, 38, 18, 0, 0, 11, 16, 0, 0, 10, 16, 0, 0, 15, 14, 0, 0, 1, 0, 0, 0, 14, 14, 0, 0, 51, 12, 0, 0, 50, 12, 0, 0, 119, 10, 0, 0, 118, 10, 0, 0, 219, 8, 0, 0, 218, 8, 0, 0, 95, 7, 0, 0, 94, 7, 0, 0, 3, 6, 0, 0, 2, 6, 0, 0, 199, 4, 0, 0, 198, 4, 0, 0, 171, 3, 0, 0, 170, 3, 0, 0, 1, 0, 0, 0, 175, 2, 0, 0, 174, 2, 0, 0, 211, 1, 0, 0, 210, 1, 0, 0, 23, 1, 0, 0, 22, 1, 0, 0, 123, 0, 0, 0, 122, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 176, 0, 0, 0, 177, 0, 0, 0, 92, 1, 0, 0, 93, 1, 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 1, 0, 0, 0, 20, 3, 0, 0, 21, 3, 0, 0, 32, 4, 0, 0, 33, 4, 0, 0, 76, 5, 0, 0, 77, 5, 0, 0, 152, 6, 0, 0, 153, 6, 0, 0, 4, 8, 0, 0, 5, 8, 0, 0, 144, 9, 0, 0, 145, 9, 0, 0, 60, 11, 0, 0, 61, 11, 0, 0, 8, 13, 0, 0, 1, 0, 0, 0, 9, 13, 0, 0, 244, 14, 0, 0, 245, 14, 0, 0, 0, 17, 0, 0, 1, 17, 0, 0, 44, 19, 0, 0, 45, 19, 0, 0, 120, 21, 0, 0, 121, 21, 0, 0, 228, 23, 0, 0, 229, 23, 0, 0, 112, 26, 0, 0, 113, 26, 0, 0, 28, 29, 0, 0, 29, 29, 0, 0, 1, 0, 0, 0, 232, 31, 0, 0, 233, 31, 0, 0, 212, 34, 0, 0, 213, 34, 0, 0, 224, 37, 0, 0, 225, 37, 0, 0, 12, 41, 0, 0, 13, 41, 0, 0, 88, 44, 0, 0, 89, 44, 0, 0, 196, 47, 0, 0, 197, 47, 0, 0, 80, 51, 0, 0, 81, 51, 0, 0, 252, 54, 0, 0, 1, 0, 0, 0, 253, 54, 0, 0, 200, 58, 0, 0, 201, 58, 0, 0, 180, 62, 0, 0, 181, 62, 0, 0, 192, 66, 0, 0, 193, 66, 0, 0, 236, 70, 0, 0, 237, 70, 0, 0, 56, 75, 0, 0, 57, 75, 0, 0, 125, 77, 0, 0, 124, 77, 0, 0, 33, 73, 0, 0, 32, 73, 0, 0, 229, 68, 0, 0, 228, 68, 0, 0, 201, 64, 0, 0, 200, 64, 0, 0, 205, 60, 0, 0, 204, 60, 0, 0, 241, 56, 0, 0, 0, 0, 0, 0, 240, 56, 0, 0, 53, 53, 0, 0, 52, 53, 0, 0, 153, 49, 0, 0, 152, 49, 0, 0, 29, 46, 0, 0, 28, 46, 0, 0, 193, 42, 0, 0, 192, 42, 0, 0, 133, 39, 0, 0, 132, 39, 0, 0, 105, 36, 0, 0, 104, 36, 0, 0, 109, 33, 0, 0, 108, 33, 0, 0, 0, 0, 0, 0, 145, 30, 0, 0, 144, 30, 0, 0, 213, 27, 0, 0, 212, 27, 0, 0, 57, 25, 0, 0, 56, 25, 0, 0, 189, 22, 0, 0, 188, 22, 0, 0, 97, 20, 0, 0, 96, 20, 0, 0, 37, 18, 0, 0, 36, 18, 0, 0, 9, 16, 0, 0, 8, 16, 0, 0, 13, 14, 0, 0, 0, 0, 0, 0, 12, 14, 0, 0, 49, 12, 0, 0, 48, 12, 0, 0, 117, 10, 0, 0, 116, 10, 0, 0, 217, 8, 0, 0, 216, 8, 0, 0, 93, 7, 0, 0, 92, 7, 0, 0, 1, 6, 0, 0, 0, 6, 0, 0, 197, 4, 0, 0, 196, 4, 0, 0, 169, 3, 0, 0, 168, 3, 0, 0, 0, 0, 0, 0, 173, 2, 0, 0, 172, 2, 0, 0, 209, 1, 0, 0, 208, 1, 0, 0, 21, 1, 0, 0, 20, 1, 0, 0, 121, 0, 0, 0, 120, 0, 0, 0, 71, 78, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 42, 78, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 178, 0, 0, 0, 179, 0, 0, 0, 94, 1, 0, 0, 95, 1, 0, 0, 42, 2, 0, 0, 43, 2, 0, 0, 0, 0, 0, 0, 22, 3, 0, 0, 23, 3, 0, 0, 34, 4, 0, 0, 35, 4, 0, 0, 78, 5, 0, 0, 79, 5, 0, 0, 154, 6, 0, 0, 155, 6, 0, 0, 6, 8, 0, 0, 7, 8, 0, 0, 146, 9, 0, 0, 147, 9, 0, 0, 62, 11, 0, 0, 63, 11, 0, 0, 10, 13, 0, 0, 0, 0, 0, 0, 11, 13, 0, 0, 246, 14, 0, 0, 247, 14, 0, 0, 2, 17, 0, 0, 3, 17, 0, 0, 46, 19, 0, 0, 47, 19, 0, 0, 122, 21, 0, 0, 123, 21, 0, 0, 230, 23, 0, 0, 231, 23, 0, 0, 114, 26, 0, 0, 115, 26, 0, 0, 30, 29, 0, 0, 31, 29, 0, 0, 0, 0, 0, 0, 234, 31, 0, 0, 235, 31, 0, 0, 214, 34, 0, 0, 215, 34, 0, 0, 226, 37, 0, 0, 227, 37, 0, 0, 14, 41, 0, 0, 15, 41, 0, 0, 90, 44, 0, 0, 91, 44, 0, 0, 198, 47, 0, 0, 199, 47, 0, 0, 82, 51, 0, 0, 83, 51, 0, 0, 254, 54, 0, 0, 0, 0, 0, 0, 255, 54, 0, 0, 202, 58, 0, 0, 203, 58, 0, 0, 182, 62, 0, 0, 183, 62, 0, 0, 194, 66, 0, 0, 195, 66, 0, 0, 238, 70, 0, 0, 239, 70, 0, 0, 58, 75, 0, 0, 59, 75, 0, 0, 123, 77, 0, 0, 122, 77, 0, 0, 31, 73, 0, 0, 30, 73, 0, 0, 227, 68, 0, 0, 226, 68, 0, 0, 199, 64, 0, 0, 198, 64, 0, 0, 203, 60, 0, 0, 202, 60, 0, 0, 239, 56, 0, 0, 1, 0, 0, 0, 238, 56, 0, 0, 51, 53, 0, 0, 50, 53, 0, 0, 151, 49, 0, 0, 150, 49, 0, 0, 27, 46, 0, 0, 26, 46, 0, 0, 191, 42, 0, 0, 190, 42, 0, 0, 131, 39, 0, 0, 130, 39, 0, 0, 103, 36, 0, 0, 102, 36, 0, 0, 107, 33, 0, 0, 106, 33, 0, 0, 1, 0, 0, 0, 143, 30, 0, 0, 142, 30, 0, 0, 211, 27, 0, 0, 210, 27, 0, 0, 55, 25, 0, 0, 54, 25, 0, 0, 187, 22, 0, 0, 186, 22, 0, 0, 95, 20, 0, 0, 94, 20, 0, 0, 35, 18, 0, 0, 34, 18, 0, 0, 7, 16, 0, 0, 6, 16, 0, 0, 11, 14, 0, 0, 1, 0, 0, 0, 10, 14, 0, 0, 47, 12, 0, 0, 46, 12, 0, 0, 115, 10, 0, 0, 114, 10, 0, 0, 215, 8, 0, 0, 214, 8, 0, 0, 91, 7, 0, 0, 90, 7, 0, 0, 255, 5, 0, 0, 254, 5, 0, 0, 195, 4, 0, 0, 194, 4, 0, 0, 167, 3, 0, 0, 166, 3, 0, 0, 1, 0, 0, 0, 171, 2, 0, 0, 170, 2, 0, 0, 207, 1, 0, 0, 206, 1, 0, 0, 19, 1, 0, 0, 18, 1, 0, 0, 119, 0, 0, 0, 118, 0, 0, 0, 70, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 43, 78, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, 0, 96, 1, 0, 0, 97, 1, 0, 0, 44, 2, 0, 0, 45, 2, 0, 0, 1, 0, 0, 0, 24, 3, 0, 0, 25, 3, 0, 0, 36, 4, 0, 0, 37, 4, 0, 0, 80, 5, 0, 0, 81, 5, 0, 0, 156, 6, 0, 0, 157, 6, 0, 0, 8, 8, 0, 0, 9, 8, 0, 0, 148, 9, 0, 0, 149, 9, 0, 0, 64, 11, 0, 0, 65, 11, 0, 0, 12, 13, 0, 0, 1, 0, 0, 0, 13, 13, 0, 0, 248, 14, 0, 0, 249, 14, 0, 0, 4, 17, 0, 0, 5, 17, 0, 0, 48, 19, 0, 0, 49, 19, 0, 0, 124, 21, 0, 0, 125, 21, 0, 0, 232, 23, 0, 0, 233, 23, 0, 0, 116, 26, 0, 0, 117, 26, 0, 0, 32, 29, 0, 0, 33, 29, 0, 0, 1, 0, 0, 0, 236, 31, 0, 0, 237, 31, 0, 0, 216, 34, 0, 0, 217, 34, 0, 0, 228, 37, 0, 0, 229, 37, 0, 0, 16, 41, 0, 0, 17, 41, 0, 0, 92, 44, 0, 0, 93, 44, 0, 0, 200, 47, 0, 0, 201, 47, 0, 0, 84, 51, 0, 0, 85, 51, 0, 0, 0, 55, 0, 0, 1, 0, 0, 0, 1, 55, 0, 0, 204, 58, 0, 0, 205, 58, 0, 0, 184, 62, 0, 0, 185, 62, 0, 0, 196, 66, 0, 0, 197, 66, 0, 0, 240, 70, 0, 0, 241, 70, 0, 0, 60, 75, 0, 0, 61, 75, 0, 0, 121, 77, 0, 0, 120, 77, 0, 0, 29, 73, 0, 0, 28, 73, 0, 0, 225, 68, 0, 0, 224, 68, 0, 0, 197, 64, 0, 0, 196, 64, 0, 0, 201, 60, 0, 0, 200, 60, 0, 0, 237, 56, 0, 0, 0, 0, 0, 0, 236, 56, 0, 0, 49, 53, 0, 0, 48, 53, 0, 0, 149, 49, 0, 0, 148, 49, 0, 0, 25, 46, 0, 0, 24, 46, 0, 0, 189, 42, 0, 0, 188, 42, 0, 0, 129, 39, 0, 0, 128, 39, 0, 0, 101, 36, 0, 0, 100, 36, 0, 0, 105, 33, 0, 0, 104, 33, 0, 0, 0, 0, 0, 0, 141, 30, 0, 0, 140, 30, 0, 0, 209, 27, 0, 0, 208, 27, 0, 0, 53, 25, 0, 0, 52, 25, 0, 0, 185, 22, 0, 0, 184, 22, 0, 0, 93, 20, 0, 0, 92, 20, 0, 0, 33, 18, 0, 0, 32, 18, 0, 0, 5, 16, 0, 0, 4, 16, 0, 0, 9, 14, 0, 0, 0, 0, 0, 0, 8, 14, 0, 0, 45, 12, 0, 0, 44, 12, 0, 0, 113, 10, 0, 0, 112, 10, 0, 0, 213, 8, 0, 0, 212, 8, 0, 0, 89, 7, 0, 0, 88, 7, 0, 0, 253, 5, 0, 0, 252, 5, 0, 0, 193, 4, 0, 0, 192, 4, 0, 0, 165, 3, 0, 0, 164, 3, 0, 0, 0, 0, 0, 0, 169, 2, 0, 0, 168, 2, 0, 0, 205, 1, 0, 0, 204, 1, 0, 0, 17, 1, 0, 0, 16, 1, 0, 0, 117, 0, 0, 0, 116, 0, 0, 0, 69, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 44, 78, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 182, 0, 0, 0, 183, 0, 0, 0, 98, 1, 0, 0, 99, 1, 0, 0, 46, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 26, 3, 0, 0, 27, 3, 0, 0, 38, 4, 0, 0, 39, 4, 0, 0, 82, 5, 0, 0, 83, 5, 0, 0, 158, 6, 0, 0, 159, 6, 0, 0, 10, 8, 0, 0, 11, 8, 0, 0, 150, 9, 0, 0, 151, 9, 0, 0, 66, 11, 0, 0, 67, 11, 0, 0, 14, 13, 0, 0, 0, 0, 0, 0, 15, 13, 0, 0, 250, 14, 0, 0, 251, 14, 0, 0, 6, 17, 0, 0, 7, 17, 0, 0, 50, 19, 0, 0, 51, 19, 0, 0, 126, 21, 0, 0, 127, 21, 0, 0, 234, 23, 0, 0, 235, 23, 0, 0, 118, 26, 0, 0, 119, 26, 0, 0, 34, 29, 0, 0, 35, 29, 0, 0, 0, 0, 0, 0, 238, 31, 0, 0, 239, 31, 0, 0, 218, 34, 0, 0, 219, 34, 0, 0, 230, 37, 0, 0, 231, 37, 0, 0, 18, 41, 0, 0, 19, 41, 0, 0, 94, 44, 0, 0, 95, 44, 0, 0, 202, 47, 0, 0, 203, 47, 0, 0, 86, 51, 0, 0, 87, 51, 0, 0, 2, 55, 0, 0, 0, 0, 0, 0, 3, 55, 0, 0, 206, 58, 0, 0, 207, 58, 0, 0, 186, 62, 0, 0, 187, 62, 0, 0, 198, 66, 0, 0, 199, 66, 0, 0, 242, 70, 0, 0, 243, 70, 0, 0, 62, 75, 0, 0, 63, 75, 0, 0, 119, 77, 0, 0, 118, 77, 0, 0, 27, 73, 0, 0, 26, 73, 0, 0, 223, 68, 0, 0, 222, 68, 0, 0, 195, 64, 0, 0, 194, 64, 0, 0, 199, 60, 0, 0, 198, 60, 0, 0, 235, 56, 0, 0, 1, 0, 0, 0, 234, 56, 0, 0, 47, 53, 0, 0, 46, 53, 0, 0, 147, 49, 0, 0, 146, 49, 0, 0, 23, 46, 0, 0, 22, 46, 0, 0, 187, 42, 0, 0, 186, 42, 0, 0, 127, 39, 0, 0, 126, 39, 0, 0, 99, 36, 0, 0, 98, 36, 0, 0, 103, 33, 0, 0, 102, 33, 0, 0, 1, 0, 0, 0, 139, 30, 0, 0, 138, 30, 0, 0, 207, 27, 0, 0, 206, 27, 0, 0, 51, 25, 0, 0, 50, 25, 0, 0, 183, 22, 0, 0, 182, 22, 0, 0, 91, 20, 0, 0, 90, 20, 0, 0, 31, 18, 0, 0, 30, 18, 0, 0, 3, 16, 0, 0, 2, 16, 0, 0, 7, 14, 0, 0, 1, 0, 0, 0, 6, 14, 0, 0, 43, 12, 0, 0, 42, 12, 0, 0, 111, 10, 0, 0, 110, 10, 0, 0, 211, 8, 0, 0, 210, 8, 0, 0, 87, 7, 0, 0, 86, 7, 0, 0, 251, 5, 0, 0, 250, 5, 0, 0, 191, 4, 0, 0, 190, 4, 0, 0, 163, 3, 0, 0, 162, 3, 0, 0, 1, 0, 0, 0, 167, 2, 0, 0, 166, 2, 0, 0, 203, 1, 0, 0, 202, 1, 0, 0, 15, 1, 0, 0, 14, 1, 0, 0, 115, 0, 0, 0, 114, 0, 0, 0, 68, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 45, 78, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 184, 0, 0, 0, 185, 0, 0, 0, 100, 1, 0, 0, 101, 1, 0, 0, 48, 2, 0, 0, 49, 2, 0, 0, 1, 0, 0, 0, 28, 3, 0, 0, 29, 3, 0, 0, 40, 4, 0, 0, 41, 4, 0, 0, 84, 5, 0, 0, 85, 5, 0, 0, 160, 6, 0, 0, 161, 6, 0, 0, 12, 8, 0, 0, 13, 8, 0, 0, 152, 9, 0, 0, 153, 9, 0, 0, 68, 11, 0, 0, 69, 11, 0, 0, 16, 13, 0, 0, 1, 0, 0, 0, 17, 13, 0, 0, 252, 14, 0, 0, 253, 14, 0, 0, 8, 17, 0, 0, 9, 17, 0, 0, 52, 19, 0, 0, 53, 19, 0, 0, 128, 21, 0, 0, 129, 21, 0, 0, 236, 23, 0, 0, 237, 23, 0, 0, 120, 26, 0, 0, 121, 26, 0, 0, 36, 29, 0, 0, 37, 29, 0, 0, 1, 0, 0, 0, 240, 31, 0, 0, 241, 31, 0, 0, 220, 34, 0, 0, 221, 34, 0, 0, 232, 37, 0, 0, 233, 37, 0, 0, 20, 41, 0, 0, 21, 41, 0, 0, 96, 44, 0, 0, 97, 44, 0, 0, 204, 47, 0, 0, 205, 47, 0, 0, 88, 51, 0, 0, 89, 51, 0, 0, 4, 55, 0, 0, 1, 0, 0, 0, 5, 55, 0, 0, 208, 58, 0, 0, 209, 58, 0, 0, 188, 62, 0, 0, 189, 62, 0, 0, 200, 66, 0, 0, 201, 66, 0, 0, 244, 70, 0, 0, 245, 70, 0, 0, 64, 75, 0, 0, 65, 75, 0, 0, 117, 77, 0, 0, 116, 77, 0, 0, 25, 73, 0, 0, 24, 73, 0, 0, 221, 68, 0, 0, 220, 68, 0, 0, 193, 64, 0, 0, 192, 64, 0, 0, 197, 60, 0, 0, 196, 60, 0, 0, 233, 56, 0, 0, 0, 0, 0, 0, 232, 56, 0, 0, 45, 53, 0, 0, 44, 53, 0, 0, 145, 49, 0, 0, 144, 49, 0, 0, 21, 46, 0, 0, 20, 46, 0, 0, 185, 42, 0, 0, 184, 42, 0, 0, 125, 39, 0, 0, 124, 39, 0, 0, 97, 36, 0, 0, 96, 36, 0, 0, 101, 33, 0, 0, 100, 33, 0, 0, 0, 0, 0, 0, 137, 30, 0, 0, 136, 30, 0, 0, 205, 27, 0, 0, 204, 27, 0, 0, 49, 25, 0, 0, 48, 25, 0, 0, 181, 22, 0, 0, 180, 22, 0, 0, 89, 20, 0, 0, 88, 20, 0, 0, 29, 18, 0, 0, 28, 18, 0, 0, 1, 16, 0, 0, 0, 16, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 41, 12, 0, 0, 40, 12, 0, 0, 109, 10, 0, 0, 108, 10, 0, 0, 209, 8, 0, 0, 208, 8, 0, 0, 85, 7, 0, 0, 84, 7, 0, 0, 249, 5, 0, 0, 248, 5, 0, 0, 189, 4, 0, 0, 188, 4, 0, 0, 161, 3, 0, 0, 160, 3, 0, 0, 0, 0, 0, 0, 165, 2, 0, 0, 164, 2, 0, 0, 201, 1, 0, 0, 200, 1, 0, 0, 13, 1, 0, 0, 12, 1, 0, 0, 113, 0, 0, 0, 112, 0, 0, 0, 67, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 46, 78, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 186, 0, 0, 0, 187, 0, 0, 0, 102, 1, 0, 0, 103, 1, 0, 0, 50, 2, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 30, 3, 0, 0, 31, 3, 0, 0, 42, 4, 0, 0, 43, 4, 0, 0, 86, 5, 0, 0, 87, 5, 0, 0, 162, 6, 0, 0, 163, 6, 0, 0, 14, 8, 0, 0, 15, 8, 0, 0, 154, 9, 0, 0, 155, 9, 0, 0, 70, 11, 0, 0, 71, 11, 0, 0, 18, 13, 0, 0, 0, 0, 0, 0, 19, 13, 0, 0, 254, 14, 0, 0, 255, 14, 0, 0, 10, 17, 0, 0, 11, 17, 0, 0, 54, 19, 0, 0, 55, 19, 0, 0, 130, 21, 0, 0, 131, 21, 0, 0, 238, 23, 0, 0, 239, 23, 0, 0, 122, 26, 0, 0, 123, 26, 0, 0, 38, 29, 0, 0, 39, 29, 0, 0, 0, 0, 0, 0, 242, 31, 0, 0, 243, 31, 0, 0, 222, 34, 0, 0, 223, 34, 0, 0, 234, 37, 0, 0, 235, 37, 0, 0, 22, 41, 0, 0, 23, 41, 0, 0, 98, 44, 0, 0, 99, 44, 0, 0, 206, 47, 0, 0, 207, 47, 0, 0, 90, 51, 0, 0, 91, 51, 0, 0, 6, 55, 0, 0, 0, 0, 0, 0, 7, 55, 0, 0, 210, 58, 0, 0, 211, 58, 0, 0, 190, 62, 0, 0, 191, 62, 0, 0, 202, 66, 0, 0, 203, 66, 0, 0, 246, 70, 0, 0, 247, 70, 0, 0, 66, 75, 0, 0, 67, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 115, 77, 0, 0, 114, 77, 0, 0, 23, 73, 0, 0, 22, 73, 0, 0, 219, 68, 0, 0, 218, 68, 0, 0, 191, 64, 0, 0, 190, 64, 0, 0, 195, 60, 0, 0, 194, 60, 0, 0, 231, 56, 0, 0, 0, 0, 0, 0, 230, 56, 0, 0, 43, 53, 0, 0, 42, 53, 0, 0, 143, 49, 0, 0, 142, 49, 0, 0, 19, 46, 0, 0, 18, 46, 0, 0, 183, 42, 0, 0, 182, 42, 0, 0, 123, 39, 0, 0, 122, 39, 0, 0, 95, 36, 0, 0, 94, 36, 0, 0, 99, 33, 0, 0, 98, 33, 0, 0, 0, 0, 0, 0, 135, 30, 0, 0, 134, 30, 0, 0, 203, 27, 0, 0, 202, 27, 0, 0, 47, 25, 0, 0, 46, 25, 0, 0, 179, 22, 0, 0, 178, 22, 0, 0, 87, 20, 0, 0, 86, 20, 0, 0, 27, 18, 0, 0, 26, 18, 0, 0, 255, 15, 0, 0, 254, 15, 0, 0, 3, 14, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 39, 12, 0, 0, 38, 12, 0, 0, 107, 10, 0, 0, 106, 10, 0, 0, 207, 8, 0, 0, 206, 8, 0, 0, 83, 7, 0, 0, 82, 7, 0, 0, 247, 5, 0, 0, 246, 5, 0, 0, 187, 4, 0, 0, 186, 4, 0, 0, 159, 3, 0, 0, 158, 3, 0, 0, 0, 0, 0, 0, 163, 2, 0, 0, 162, 2, 0, 0, 199, 1, 0, 0, 198, 1, 0, 0, 11, 1, 0, 0, 10, 1, 0, 0, 111, 0, 0, 0, 110, 0, 0, 0, 66, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 47, 78, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 188, 0, 0, 0, 189, 0, 0, 0, 104, 1, 0, 0, 105, 1, 0, 0, 52, 2, 0, 0, 53, 2, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 33, 3, 0, 0, 44, 4, 0, 0, 45, 4, 0, 0, 88, 5, 0, 0, 89, 5, 0, 0, 164, 6, 0, 0, 165, 6, 0, 0, 16, 8, 0, 0, 17, 8, 0, 0, 156, 9, 0, 0, 157, 9, 0, 0, 72, 11, 0, 0, 73, 11, 0, 0, 20, 13, 0, 0, 0, 0, 0, 0, 21, 13, 0, 0, 0, 15, 0, 0, 1, 15, 0, 0, 12, 17, 0, 0, 13, 17, 0, 0, 56, 19, 0, 0, 57, 19, 0, 0, 132, 21, 0, 0, 133, 21, 0, 0, 240, 23, 0, 0, 241, 23, 0, 0, 124, 26, 0, 0, 125, 26, 0, 0, 40, 29, 0, 0, 41, 29, 0, 0, 0, 0, 0, 0, 244, 31, 0, 0, 245, 31, 0, 0, 224, 34, 0, 0, 225, 34, 0, 0, 236, 37, 0, 0, 237, 37, 0, 0, 24, 41, 0, 0, 25, 41, 0, 0, 100, 44, 0, 0, 101, 44, 0, 0, 208, 47, 0, 0, 209, 47, 0, 0, 92, 51, 0, 0, 93, 51, 0, 0, 8, 55, 0, 0, 0, 0, 0, 0, 9, 55, 0, 0, 212, 58, 0, 0, 213, 58, 0, 0, 192, 62, 0, 0, 193, 62, 0, 0, 204, 66, 0, 0, 205, 66, 0, 0, 248, 70, 0, 0, 249, 70, 0, 0, 68, 75, 0, 0, 69, 75, 0, 0, 113, 77, 0, 0, 112, 77, 0, 0, 21, 73, 0, 0, 20, 73, 0, 0, 217, 68, 0, 0, 216, 68, 0, 0, 189, 64, 0, 0, 188, 64, 0, 0, 193, 60, 0, 0, 192, 60, 0, 0, 229, 56, 0, 0, 1, 0, 0, 0, 228, 56, 0, 0, 41, 53, 0, 0, 40, 53, 0, 0, 141, 49, 0, 0, 140, 49, 0, 0, 17, 46, 0, 0, 16, 46, 0, 0, 181, 42, 0, 0, 180, 42, 0, 0, 121, 39, 0, 0, 120, 39, 0, 0, 93, 36, 0, 0, 92, 36, 0, 0, 97, 33, 0, 0, 96, 33, 0, 0, 1, 0, 0, 0, 133, 30, 0, 0, 132, 30, 0, 0, 201, 27, 0, 0, 200, 27, 0, 0, 45, 25, 0, 0, 44, 25, 0, 0, 177, 22, 0, 0, 176, 22, 0, 0, 85, 20, 0, 0, 84, 20, 0, 0, 25, 18, 0, 0, 24, 18, 0, 0, 253, 15, 0, 0, 252, 15, 0, 0, 1, 14, 0, 0, 1, 0, 0, 0, 0, 14, 0, 0, 37, 12, 0, 0, 36, 12, 0, 0, 105, 10, 0, 0, 104, 10, 0, 0, 205, 8, 0, 0, 204, 8, 0, 0, 81, 7, 0, 0, 80, 7, 0, 0, 245, 5, 0, 0, 244, 5, 0, 0, 185, 4, 0, 0, 184, 4, 0, 0, 157, 3, 0, 0, 156, 3, 0, 0, 1, 0, 0, 0, 161, 2, 0, 0, 160, 2, 0, 0, 197, 1, 0, 0, 196, 1, 0, 0, 9, 1, 0, 0, 8, 1, 0, 0, 109, 0, 0, 0, 108, 0, 0, 0, 65, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 48, 78, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 190, 0, 0, 0, 191, 0, 0, 0, 106, 1, 0, 0, 107, 1, 0, 0, 54, 2, 0, 0, 55, 2, 0, 0, 1, 0, 0, 0, 34, 3, 0, 0, 35, 3, 0, 0, 46, 4, 0, 0, 47, 4, 0, 0, 90, 5, 0, 0, 91, 5, 0, 0, 166, 6, 0, 0, 167, 6, 0, 0, 18, 8, 0, 0, 19, 8, 0, 0, 158, 9, 0, 0, 159, 9, 0, 0, 74, 11, 0, 0, 75, 11, 0, 0, 22, 13, 0, 0, 1, 0, 0, 0, 23, 13, 0, 0, 2, 15, 0, 0, 3, 15, 0, 0, 14, 17, 0, 0, 15, 17, 0, 0, 58, 19, 0, 0, 59, 19, 0, 0, 134, 21, 0, 0, 135, 21, 0, 0, 242, 23, 0, 0, 243, 23, 0, 0, 126, 26, 0, 0, 127, 26, 0, 0, 42, 29, 0, 0, 43, 29, 0, 0, 1, 0, 0, 0, 246, 31, 0, 0, 247, 31, 0, 0, 226, 34, 0, 0, 227, 34, 0, 0, 238, 37, 0, 0, 239, 37, 0, 0, 26, 41, 0, 0, 27, 41, 0, 0, 102, 44, 0, 0, 103, 44, 0, 0, 210, 47, 0, 0, 211, 47, 0, 0, 94, 51, 0, 0, 95, 51, 0, 0, 10, 55, 0, 0, 1, 0, 0, 0, 11, 55, 0, 0, 214, 58, 0, 0, 215, 58, 0, 0, 194, 62, 0, 0, 195, 62, 0, 0, 206, 66, 0, 0, 207, 66, 0, 0, 250, 70, 0, 0, 251, 70, 0, 0, 70, 75, 0, 0, 71, 75, 0, 0, 111, 77, 0, 0, 110, 77, 0, 0, 19, 73, 0, 0, 18, 73, 0, 0, 215, 68, 0, 0, 214, 68, 0, 0, 187, 64, 0, 0, 186, 64, 0, 0, 191, 60, 0, 0, 190, 60, 0, 0, 227, 56, 0, 0, 0, 0, 0, 0, 226, 56, 0, 0, 39, 53, 0, 0, 38, 53, 0, 0, 139, 49, 0, 0, 138, 49, 0, 0, 15, 46, 0, 0, 14, 46, 0, 0, 179, 42, 0, 0, 178, 42, 0, 0, 119, 39, 0, 0, 118, 39, 0, 0, 91, 36, 0, 0, 90, 36, 0, 0, 95, 33, 0, 0, 94, 33, 0, 0, 0, 0, 0, 0, 131, 30, 0, 0, 130, 30, 0, 0, 199, 27, 0, 0, 198, 27, 0, 0, 43, 25, 0, 0, 42, 25, 0, 0, 175, 22, 0, 0, 174, 22, 0, 0, 83, 20, 0, 0, 82, 20, 0, 0, 23, 18, 0, 0, 22, 18, 0, 0, 251, 15, 0, 0, 250, 15, 0, 0, 255, 13, 0, 0, 0, 0, 0, 0, 254, 13, 0, 0, 35, 12, 0, 0, 34, 12, 0, 0, 103, 10, 0, 0, 102, 10, 0, 0, 203, 8, 0, 0, 202, 8, 0, 0, 79, 7, 0, 0, 78, 7, 0, 0, 243, 5, 0, 0, 242, 5, 0, 0, 183, 4, 0, 0, 182, 4, 0, 0, 155, 3, 0, 0, 154, 3, 0, 0, 0, 0, 0, 0, 159, 2, 0, 0, 158, 2, 0, 0, 195, 1, 0, 0, 194, 1, 0, 0, 7, 1, 0, 0, 6, 1, 0, 0, 107, 0, 0, 0, 106, 0, 0, 0, 64, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 49, 78, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 192, 0, 0, 0, 193, 0, 0, 0, 108, 1, 0, 0, 109, 1, 0, 0, 56, 2, 0, 0, 57, 2, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 37, 3, 0, 0, 48, 4, 0, 0, 49, 4, 0, 0, 92, 5, 0, 0, 93, 5, 0, 0, 168, 6, 0, 0, 169, 6, 0, 0, 20, 8, 0, 0, 21, 8, 0, 0, 160, 9, 0, 0, 161, 9, 0, 0, 76, 11, 0, 0, 77, 11, 0, 0, 24, 13, 0, 0, 0, 0, 0, 0, 25, 13, 0, 0, 4, 15, 0, 0, 5, 15, 0, 0, 16, 17, 0, 0, 17, 17, 0, 0, 60, 19, 0, 0, 61, 19, 0, 0, 136, 21, 0, 0, 137, 21, 0, 0, 244, 23, 0, 0, 245, 23, 0, 0, 128, 26, 0, 0, 129, 26, 0, 0, 44, 29, 0, 0, 45, 29, 0, 0, 0, 0, 0, 0, 248, 31, 0, 0, 249, 31, 0, 0, 228, 34, 0, 0, 229, 34, 0, 0, 240, 37, 0, 0, 241, 37, 0, 0, 28, 41, 0, 0, 29, 41, 0, 0, 104, 44, 0, 0, 105, 44, 0, 0, 212, 47, 0, 0, 213, 47, 0, 0, 96, 51, 0, 0, 97, 51, 0, 0, 12, 55, 0, 0, 0, 0, 0, 0, 13, 55, 0, 0, 216, 58, 0, 0, 217, 58, 0, 0, 196, 62, 0, 0, 197, 62, 0, 0, 208, 66, 0, 0, 209, 66, 0, 0, 252, 70, 0, 0, 253, 70, 0, 0, 72, 75, 0, 0, 73, 75, 0, 0, 109, 77, 0, 0, 108, 77, 0, 0, 17, 73, 0, 0, 16, 73, 0, 0, 213, 68, 0, 0, 212, 68, 0, 0, 185, 64, 0, 0, 184, 64, 0, 0, 189, 60, 0, 0, 188, 60, 0, 0, 225, 56, 0, 0, 1, 0, 0, 0, 224, 56, 0, 0, 37, 53, 0, 0, 36, 53, 0, 0, 137, 49, 0, 0, 136, 49, 0, 0, 13, 46, 0, 0, 12, 46, 0, 0, 177, 42, 0, 0, 176, 42, 0, 0, 117, 39, 0, 0, 116, 39, 0, 0, 89, 36, 0, 0, 88, 36, 0, 0, 93, 33, 0, 0, 92, 33, 0, 0, 1, 0, 0, 0, 129, 30, 0, 0, 128, 30, 0, 0, 197, 27, 0, 0, 196, 27, 0, 0, 41, 25, 0, 0, 40, 25, 0, 0, 173, 22, 0, 0, 172, 22, 0, 0, 81, 20, 0, 0, 80, 20, 0, 0, 21, 18, 0, 0, 20, 18, 0, 0, 249, 15, 0, 0, 248, 15, 0, 0, 253, 13, 0, 0, 1, 0, 0, 0, 252, 13, 0, 0, 33, 12, 0, 0, 32, 12, 0, 0, 101, 10, 0, 0, 100, 10, 0, 0, 201, 8, 0, 0, 200, 8, 0, 0, 77, 7, 0, 0, 76, 7, 0, 0, 241, 5, 0, 0, 240, 5, 0, 0, 181, 4, 0, 0, 180, 4, 0, 0, 153, 3, 0, 0, 152, 3, 0, 0, 1, 0, 0, 0, 157, 2, 0, 0, 156, 2, 0, 0, 193, 1, 0, 0, 192, 1, 0, 0, 5, 1, 0, 0, 4, 1, 0, 0, 105, 0, 0, 0, 104, 0, 0, 0, 63, 78, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 50, 78, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 194, 0, 0, 0, 195, 0, 0, 0, 110, 1, 0, 0, 111, 1, 0, 0, 58, 2, 0, 0, 59, 2, 0, 0, 1, 0, 0, 0, 38, 3, 0, 0, 39, 3, 0, 0, 50, 4, 0, 0, 51, 4, 0, 0, 94, 5, 0, 0, 95, 5, 0, 0, 170, 6, 0, 0, 171, 6, 0, 0, 22, 8, 0, 0, 23, 8, 0, 0, 162, 9, 0, 0, 163, 9, 0, 0, 78, 11, 0, 0, 79, 11, 0, 0, 26, 13, 0, 0, 1, 0, 0, 0, 27, 13, 0, 0, 6, 15, 0, 0, 7, 15, 0, 0, 18, 17, 0, 0, 19, 17, 0, 0, 62, 19, 0, 0, 63, 19, 0, 0, 138, 21, 0, 0, 139, 21, 0, 0, 246, 23, 0, 0, 247, 23, 0, 0, 130, 26, 0, 0, 131, 26, 0, 0, 46, 29, 0, 0, 47, 29, 0, 0, 1, 0, 0, 0, 250, 31, 0, 0, 251, 31, 0, 0, 230, 34, 0, 0, 231, 34, 0, 0, 242, 37, 0, 0, 243, 37, 0, 0, 30, 41, 0, 0, 31, 41, 0, 0, 106, 44, 0, 0, 107, 44, 0, 0, 214, 47, 0, 0, 215, 47, 0, 0, 98, 51, 0, 0, 99, 51, 0, 0, 14, 55, 0, 0, 1, 0, 0, 0, 15, 55, 0, 0, 218, 58, 0, 0, 219, 58, 0, 0, 198, 62, 0, 0, 199, 62, 0, 0, 210, 66, 0, 0, 211, 66, 0, 0, 254, 70, 0, 0, 255, 70, 0, 0, 74, 75, 0, 0, 75, 75, 0, 0, 107, 77, 0, 0, 106, 77, 0, 0, 15, 73, 0, 0, 14, 73, 0, 0, 211, 68, 0, 0, 210, 68, 0, 0, 183, 64, 0, 0, 182, 64, 0, 0, 187, 60, 0, 0, 186, 60, 0, 0, 223, 56, 0, 0, 0, 0, 0, 0, 222, 56, 0, 0, 35, 53, 0, 0, 34, 53, 0, 0, 135, 49, 0, 0, 134, 49, 0, 0, 11, 46, 0, 0, 10, 46, 0, 0, 175, 42, 0, 0, 174, 42, 0, 0, 115, 39, 0, 0, 114, 39, 0, 0, 87, 36, 0, 0, 86, 36, 0, 0, 91, 33, 0, 0, 90, 33, 0, 0, 0, 0, 0, 0, 127, 30, 0, 0, 126, 30, 0, 0, 195, 27, 0, 0, 194, 27, 0, 0, 39, 25, 0, 0, 38, 25, 0, 0, 171, 22, 0, 0, 170, 22, 0, 0, 79, 20, 0, 0, 78, 20, 0, 0, 19, 18, 0, 0, 18, 18, 0, 0, 247, 15, 0, 0, 246, 15, 0, 0, 251, 13, 0, 0, 0, 0, 0, 0, 250, 13, 0, 0, 31, 12, 0, 0, 30, 12, 0, 0, 99, 10, 0, 0, 98, 10, 0, 0, 199, 8, 0, 0, 198, 8, 0, 0, 75, 7, 0, 0, 74, 7, 0, 0, 239, 5, 0, 0, 238, 5, 0, 0, 179, 4, 0, 0, 178, 4, 0, 0, 151, 3, 0, 0, 150, 3, 0, 0, 0, 0, 0, 0, 155, 2, 0, 0, 154, 2, 0, 0, 191, 1, 0, 0, 190, 1, 0, 0, 3, 1, 0, 0, 2, 1, 0, 0, 103, 0, 0, 0, 102, 0, 0, 0, 62, 78, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 78, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 196, 0, 0, 0, 197, 0, 0, 0, 112, 1, 0, 0, 113, 1, 0, 0, 60, 2, 0, 0, 61, 2, 0, 0, 0, 0, 0, 0, 40, 3, 0, 0, 41, 3, 0, 0, 52, 4, 0, 0, 53, 4, 0, 0, 96, 5, 0, 0, 97, 5, 0, 0, 172, 6, 0, 0, 173, 6, 0, 0, 24, 8, 0, 0, 25, 8, 0, 0, 164, 9, 0, 0, 165, 9, 0, 0, 80, 11, 0, 0, 81, 11, 0, 0, 28, 13, 0, 0, 0, 0, 0, 0, 29, 13, 0, 0, 8, 15, 0, 0, 9, 15, 0, 0, 20, 17, 0, 0, 21, 17, 0, 0, 64, 19, 0, 0, 65, 19, 0, 0, 140, 21, 0, 0, 141, 21, 0, 0, 248, 23, 0, 0, 249, 23, 0, 0, 132, 26, 0, 0, 133, 26, 0, 0, 48, 29, 0, 0, 49, 29, 0, 0, 0, 0, 0, 0, 252, 31, 0, 0, 253, 31, 0, 0, 232, 34, 0, 0, 233, 34, 0, 0, 244, 37, 0, 0, 245, 37, 0, 0, 32, 41, 0, 0, 33, 41, 0, 0, 108, 44, 0, 0, 109, 44, 0, 0, 216, 47, 0, 0, 217, 47, 0, 0, 100, 51, 0, 0, 101, 51, 0, 0, 16, 55, 0, 0, 0, 0, 0, 0, 17, 55, 0, 0, 220, 58, 0, 0, 221, 58, 0, 0, 200, 62, 0, 0, 201, 62, 0, 0, 212, 66, 0, 0, 213, 66, 0, 0, 0, 71, 0, 0, 1, 71, 0, 0, 76, 75, 0, 0, 77, 75, 0, 0, 105, 77, 0, 0, 104, 77, 0, 0, 13, 73, 0, 0, 12, 73, 0, 0, 209, 68, 0, 0, 208, 68, 0, 0, 181, 64, 0, 0, 180, 64, 0, 0, 185, 60, 0, 0, 184, 60, 0, 0, 221, 56, 0, 0, 1, 0, 0, 0, 220, 56, 0, 0, 33, 53, 0, 0, 32, 53, 0, 0, 133, 49, 0, 0, 132, 49, 0, 0, 9, 46, 0, 0, 8, 46, 0, 0, 173, 42, 0, 0, 172, 42, 0, 0, 113, 39, 0, 0, 112, 39, 0, 0, 85, 36, 0, 0, 84, 36, 0, 0, 89, 33, 0, 0, 88, 33, 0, 0, 1, 0, 0, 0, 125, 30, 0, 0, 124, 30, 0, 0, 193, 27, 0, 0, 192, 27, 0, 0, 37, 25, 0, 0, 36, 25, 0, 0, 169, 22, 0, 0, 168, 22, 0, 0, 77, 20, 0, 0, 76, 20, 0, 0, 17, 18, 0, 0, 16, 18, 0, 0, 245, 15, 0, 0, 244, 15, 0, 0, 249, 13, 0, 0, 1, 0, 0, 0, 248, 13, 0, 0, 29, 12, 0, 0, 28, 12, 0, 0, 97, 10, 0, 0, 96, 10, 0, 0, 197, 8, 0, 0, 196, 8, 0, 0, 73, 7, 0, 0, 72, 7, 0, 0, 237, 5, 0, 0, 236, 5, 0, 0, 177, 4, 0, 0, 176, 4, 0, 0, 149, 3, 0, 0, 148, 3, 0, 0, 1, 0, 0, 0, 153, 2, 0, 0, 152, 2, 0, 0, 189, 1, 0, 0, 188, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 198, 0, 0, 0, 199, 0, 0, 0, 114, 1, 0, 0, 115, 1, 0, 0, 62, 2, 0, 0, 63, 2, 0, 0, 1, 0, 0, 0, 42, 3, 0, 0, 43, 3, 0, 0, 54, 4, 0, 0, 55, 4, 0, 0, 98, 5, 0, 0, 99, 5, 0, 0, 174, 6, 0, 0, 175, 6, 0, 0, 26, 8, 0, 0, 27, 8, 0, 0, 166, 9, 0, 0, 167, 9, 0, 0, 82, 11, 0, 0, 83, 11, 0, 0, 30, 13, 0, 0, 1, 0, 0, 0, 31, 13, 0, 0, 10, 15, 0, 0, 11, 15, 0, 0, 22, 17, 0, 0, 23, 17, 0, 0, 66, 19, 0, 0, 67, 19, 0, 0, 142, 21, 0, 0, 143, 21, 0, 0, 250, 23, 0, 0, 251, 23, 0, 0, 134, 26, 0, 0, 135, 26, 0, 0, 50, 29, 0, 0, 51, 29, 0, 0, 1, 0, 0, 0, 254, 31, 0, 0, 255, 31, 0, 0, 234, 34, 0, 0, 235, 34, 0, 0, 246, 37, 0, 0, 247, 37, 0, 0, 34, 41, 0, 0, 35, 41, 0, 0, 110, 44, 0, 0, 111, 44, 0, 0, 218, 47, 0, 0, 219, 47, 0, 0, 102, 51, 0, 0, 103, 51, 0, 0, 18, 55, 0, 0, 1, 0, 0, 0, 19, 55, 0, 0, 222, 58, 0, 0, 223, 58, 0, 0, 202, 62, 0, 0, 203, 62, 0, 0, 214, 66, 0, 0, 215, 66, 0, 0, 2, 71, 0, 0, 3, 71, 0, 0, 78, 75, 0, 0, 79, 75, 0, 0, 103, 77, 0, 0, 102, 77, 0, 0, 11, 73, 0, 0, 10, 73, 0, 0, 207, 68, 0, 0, 206, 68, 0, 0, 179, 64, 0, 0, 178, 64, 0, 0, 183, 60, 0, 0, 182, 60, 0, 0, 219, 56, 0, 0, 0, 0, 0, 0, 218, 56, 0, 0, 31, 53, 0, 0, 30, 53, 0, 0, 131, 49, 0, 0, 130, 49, 0, 0, 7, 46, 0, 0, 6, 46, 0, 0, 171, 42, 0, 0, 170, 42, 0, 0, 111, 39, 0, 0, 110, 39, 0, 0, 83, 36, 0, 0, 82, 36, 0, 0, 87, 33, 0, 0, 86, 33, 0, 0, 0, 0, 0, 0, 123, 30, 0, 0, 122, 30, 0, 0, 191, 27, 0, 0, 190, 27, 0, 0, 35, 25, 0, 0, 34, 25, 0, 0, 167, 22, 0, 0, 166, 22, 0, 0, 75, 20, 0, 0, 74, 20, 0, 0, 15, 18, 0, 0, 14, 18, 0, 0, 243, 15, 0, 0, 242, 15, 0, 0, 247, 13, 0, 0, 0, 0, 0, 0, 246, 13, 0, 0, 27, 12, 0, 0, 26, 12, 0, 0, 95, 10, 0, 0, 94, 10, 0, 0, 195, 8, 0, 0, 194, 8, 0, 0, 71, 7, 0, 0, 70, 7, 0, 0, 235, 5, 0, 0, 234, 5, 0, 0, 175, 4, 0, 0, 174, 4, 0, 0, 147, 3, 0, 0, 146, 3, 0, 0, 0, 0, 0, 0, 151, 2, 0, 0, 150, 2, 0, 0, 187, 1, 0, 0, 186, 1, 0, 0, 255, 0, 0, 0, 254, 0, 0, 0, 99, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 78, 0, 0, 60, 78, 0, 0, 59, 78, 0, 0, 58, 78, 0, 0, 57, 78, 0, 0, 0, 0, 0, 0, 56, 78, 0, 0, 55, 78, 0, 0, 54, 78, 0, 0, 53, 78, 0, 0, 52, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 200, 0, 0, 0, 201, 0, 0, 0, 116, 1, 0, 0, 117, 1, 0, 0, 64, 2, 0, 0, 65, 2, 0, 0, 0, 0, 0, 0, 44, 3, 0, 0, 45, 3, 0, 0, 56, 4, 0, 0, 57, 4, 0, 0, 100, 5, 0, 0, 101, 5, 0, 0, 176, 6, 0, 0, 177, 6, 0, 0, 28, 8, 0, 0, 29, 8, 0, 0, 168, 9, 0, 0, 169, 9, 0, 0, 84, 11, 0, 0, 85, 11, 0, 0, 32, 13, 0, 0, 0, 0, 0, 0, 33, 13, 0, 0, 12, 15, 0, 0, 13, 15, 0, 0, 24, 17, 0, 0, 25, 17, 0, 0, 68, 19, 0, 0, 69, 19, 0, 0, 144, 21, 0, 0, 145, 21, 0, 0, 252, 23, 0, 0, 253, 23, 0, 0, 136, 26, 0, 0, 137, 26, 0, 0, 52, 29, 0, 0, 53, 29, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 1, 32, 0, 0, 236, 34, 0, 0, 237, 34, 0, 0, 248, 37, 0, 0, 249, 37, 0, 0, 36, 41, 0, 0, 37, 41, 0, 0, 112, 44, 0, 0, 113, 44, 0, 0, 220, 47, 0, 0, 221, 47, 0, 0, 104, 51, 0, 0, 105, 51, 0, 0, 20, 55, 0, 0, 0, 0, 0, 0, 21, 55, 0, 0, 224, 58, 0, 0, 225, 58, 0, 0, 204, 62, 0, 0, 205, 62, 0, 0, 216, 66, 0, 0, 217, 66, 0, 0, 4, 71, 0, 0, 5, 71, 0, 0, 80, 75, 0, 0, 81, 75, 0, 0, 101, 77, 0, 0, 100, 77, 0, 0, 9, 73, 0, 0, 8, 73, 0, 0, 205, 68, 0, 0, 204, 68, 0, 0, 177, 64, 0, 0, 176, 64, 0, 0, 181, 60, 0, 0, 180, 60, 0, 0, 217, 56, 0, 0, 1, 0, 0, 0, 216, 56, 0, 0, 29, 53, 0, 0, 28, 53, 0, 0, 129, 49, 0, 0, 128, 49, 0, 0, 5, 46, 0, 0, 4, 46, 0, 0, 169, 42, 0, 0, 168, 42, 0, 0, 109, 39, 0, 0, 108, 39, 0, 0, 81, 36, 0, 0, 80, 36, 0, 0, 85, 33, 0, 0, 84, 33, 0, 0, 1, 0, 0, 0, 121, 30, 0, 0, 120, 30, 0, 0, 189, 27, 0, 0, 188, 27, 0, 0, 33, 25, 0, 0, 32, 25, 0, 0, 165, 22, 0, 0, 164, 22, 0, 0, 73, 20, 0, 0, 72, 20, 0, 0, 13, 18, 0, 0, 12, 18, 0, 0, 241, 15, 0, 0, 240, 15, 0, 0, 245, 13, 0, 0, 1, 0, 0, 0, 244, 13, 0, 0, 25, 12, 0, 0, 24, 12, 0, 0, 93, 10, 0, 0, 92, 10, 0, 0, 193, 8, 0, 0, 192, 8, 0, 0, 69, 7, 0, 0, 68, 7, 0, 0, 233, 5, 0, 0, 232, 5, 0, 0, 173, 4, 0, 0, 172, 4, 0, 0, 145, 3, 0, 0, 144, 3, 0, 0, 1, 0, 0, 0, 149, 2, 0, 0, 148, 2, 0, 0, 185, 1, 0, 0, 184, 1, 0, 0, 253, 0, 0, 0, 252, 0, 0, 0, 96, 0, 0, 0, 94, 0, 0, 0, 92, 0, 0, 0, 90, 0, 0, 0, 88, 0, 0, 0, 86, 0, 0, 0, 84, 0, 0, 0, 82, 0, 0, 0, 80, 0, 0, 0, 1, 0, 0, 0, 78, 0, 0, 0, 76, 0, 0, 0, 74, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, 68, 0, 0, 0, 66, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 202, 0, 0, 0, 203, 0, 0, 0, 118, 1, 0, 0, 119, 1, 0, 0, 66, 2, 0, 0, 67, 2, 0, 0, 1, 0, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 58, 4, 0, 0, 59, 4, 0, 0, 102, 5, 0, 0, 103, 5, 0, 0, 178, 6, 0, 0, 179, 6, 0, 0, 30, 8, 0, 0, 31, 8, 0, 0, 170, 9, 0, 0, 171, 9, 0, 0, 86, 11, 0, 0, 87, 11, 0, 0, 34, 13, 0, 0, 1, 0, 0, 0, 35, 13, 0, 0, 14, 15, 0, 0, 15, 15, 0, 0, 26, 17, 0, 0, 27, 17, 0, 0, 70, 19, 0, 0, 71, 19, 0, 0, 146, 21, 0, 0, 147, 21, 0, 0, 254, 23, 0, 0, 255, 23, 0, 0, 138, 26, 0, 0, 139, 26, 0, 0, 54, 29, 0, 0, 55, 29, 0, 0, 1, 0, 0, 0, 2, 32, 0, 0, 3, 32, 0, 0, 238, 34, 0, 0, 239, 34, 0, 0, 250, 37, 0, 0, 251, 37, 0, 0, 38, 41, 0, 0, 39, 41, 0, 0, 114, 44, 0, 0, 115, 44, 0, 0, 222, 47, 0, 0, 223, 47, 0, 0, 106, 51, 0, 0, 107, 51, 0, 0, 22, 55, 0, 0, 1, 0, 0, 0, 23, 55, 0, 0, 226, 58, 0, 0, 227, 58, 0, 0, 206, 62, 0, 0, 207, 62, 0, 0, 218, 66, 0, 0, 219, 66, 0, 0, 6, 71, 0, 0, 7, 71, 0, 0, 82, 75, 0, 0, 83, 75, 0, 0, 99, 77, 0, 0, 98, 77, 0, 0, 7, 73, 0, 0, 6, 73, 0, 0, 203, 68, 0, 0, 202, 68, 0, 0, 175, 64, 0, 0, 174, 64, 0, 0, 179, 60, 0, 0, 178, 60, 0, 0, 215, 56, 0, 0, 0, 0, 0, 0, 214, 56, 0, 0, 27, 53, 0, 0, 26, 53, 0, 0, 127, 49, 0, 0, 126, 49, 0, 0, 3, 46, 0, 0, 2, 46, 0, 0, 167, 42, 0, 0, 166, 42, 0, 0, 107, 39, 0, 0, 106, 39, 0, 0, 79, 36, 0, 0, 78, 36, 0, 0, 83, 33, 0, 0, 82, 33, 0, 0, 0, 0, 0, 0, 119, 30, 0, 0, 118, 30, 0, 0, 187, 27, 0, 0, 186, 27, 0, 0, 31, 25, 0, 0, 30, 25, 0, 0, 163, 22, 0, 0, 162, 22, 0, 0, 71, 20, 0, 0, 70, 20, 0, 0, 11, 18, 0, 0, 10, 18, 0, 0, 239, 15, 0, 0, 238, 15, 0, 0, 243, 13, 0, 0, 0, 0, 0, 0, 242, 13, 0, 0, 23, 12, 0, 0, 22, 12, 0, 0, 91, 10, 0, 0, 90, 10, 0, 0, 191, 8, 0, 0, 190, 8, 0, 0, 67, 7, 0, 0, 66, 7, 0, 0, 231, 5, 0, 0, 230, 5, 0, 0, 171, 4, 0, 0, 170, 4, 0, 0, 143, 3, 0, 0, 142, 3, 0, 0, 0, 0, 0, 0, 147, 2, 0, 0, 146, 2, 0, 0, 183, 1, 0, 0, 182, 1, 0, 0, 251, 0, 0, 0, 250, 0, 0, 0, 97, 0, 0, 0, 95, 0, 0, 0, 93, 0, 0, 0, 91, 0, 0, 0, 89, 0, 0, 0, 87, 0, 0, 0, 85, 0, 0, 0, 83, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 77, 0, 0, 0, 75, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 69, 0, 0, 0, 67, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 204, 0, 0, 0, 205, 0, 0, 0, 120, 1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 40960);
+allocate([121, 1, 0, 0, 68, 2, 0, 0, 69, 2, 0, 0, 0, 0, 0, 0, 48, 3, 0, 0, 49, 3, 0, 0, 60, 4, 0, 0, 61, 4, 0, 0, 104, 5, 0, 0, 105, 5, 0, 0, 180, 6, 0, 0, 181, 6, 0, 0, 32, 8, 0, 0, 33, 8, 0, 0, 172, 9, 0, 0, 173, 9, 0, 0, 88, 11, 0, 0, 89, 11, 0, 0, 36, 13, 0, 0, 0, 0, 0, 0, 37, 13, 0, 0, 16, 15, 0, 0, 17, 15, 0, 0, 28, 17, 0, 0, 29, 17, 0, 0, 72, 19, 0, 0, 73, 19, 0, 0, 148, 21, 0, 0, 149, 21, 0, 0, 0, 24, 0, 0, 1, 24, 0, 0, 140, 26, 0, 0, 141, 26, 0, 0, 56, 29, 0, 0, 57, 29, 0, 0, 0, 0, 0, 0, 4, 32, 0, 0, 5, 32, 0, 0, 240, 34, 0, 0, 241, 34, 0, 0, 252, 37, 0, 0, 253, 37, 0, 0, 40, 41, 0, 0, 41, 41, 0, 0, 116, 44, 0, 0, 117, 44, 0, 0, 224, 47, 0, 0, 225, 47, 0, 0, 108, 51, 0, 0, 109, 51, 0, 0, 24, 55, 0, 0, 0, 0, 0, 0, 25, 55, 0, 0, 228, 58, 0, 0, 229, 58, 0, 0, 208, 62, 0, 0, 209, 62, 0, 0, 220, 66, 0, 0, 221, 66, 0, 0, 8, 71, 0, 0, 9, 71, 0, 0, 84, 75, 0, 0, 85, 75, 0, 0, 97, 77, 0, 0, 96, 77, 0, 0, 5, 73, 0, 0, 4, 73, 0, 0, 201, 68, 0, 0, 200, 68, 0, 0, 173, 64, 0, 0, 172, 64, 0, 0, 177, 60, 0, 0, 176, 60, 0, 0, 213, 56, 0, 0, 1, 0, 0, 0, 212, 56, 0, 0, 25, 53, 0, 0, 24, 53, 0, 0, 125, 49, 0, 0, 124, 49, 0, 0, 1, 46, 0, 0, 0, 46, 0, 0, 165, 42, 0, 0, 164, 42, 0, 0, 105, 39, 0, 0, 104, 39, 0, 0, 77, 36, 0, 0, 76, 36, 0, 0, 81, 33, 0, 0, 80, 33, 0, 0, 1, 0, 0, 0, 117, 30, 0, 0, 116, 30, 0, 0, 185, 27, 0, 0, 184, 27, 0, 0, 29, 25, 0, 0, 28, 25, 0, 0, 161, 22, 0, 0, 160, 22, 0, 0, 69, 20, 0, 0, 68, 20, 0, 0, 9, 18, 0, 0, 8, 18, 0, 0, 237, 15, 0, 0, 236, 15, 0, 0, 241, 13, 0, 0, 1, 0, 0, 0, 240, 13, 0, 0, 21, 12, 0, 0, 20, 12, 0, 0, 89, 10, 0, 0, 88, 10, 0, 0, 189, 8, 0, 0, 188, 8, 0, 0, 65, 7, 0, 0, 64, 7, 0, 0, 229, 5, 0, 0, 228, 5, 0, 0, 169, 4, 0, 0, 168, 4, 0, 0, 141, 3, 0, 0, 140, 3, 0, 0, 1, 0, 0, 0, 145, 2, 0, 0, 144, 2, 0, 0, 181, 1, 0, 0, 180, 1, 0, 0, 248, 0, 0, 0, 246, 0, 0, 0, 244, 0, 0, 0, 242, 0, 0, 0, 240, 0, 0, 0, 238, 0, 0, 0, 236, 0, 0, 0, 234, 0, 0, 0, 232, 0, 0, 0, 230, 0, 0, 0, 228, 0, 0, 0, 1, 0, 0, 0, 226, 0, 0, 0, 224, 0, 0, 0, 222, 0, 0, 0, 220, 0, 0, 0, 218, 0, 0, 0, 216, 0, 0, 0, 214, 0, 0, 0, 212, 0, 0, 0, 210, 0, 0, 0, 206, 0, 0, 0, 207, 0, 0, 0, 122, 1, 0, 0, 123, 1, 0, 0, 70, 2, 0, 0, 71, 2, 0, 0, 1, 0, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0, 62, 4, 0, 0, 63, 4, 0, 0, 106, 5, 0, 0, 107, 5, 0, 0, 182, 6, 0, 0, 183, 6, 0, 0, 34, 8, 0, 0, 35, 8, 0, 0, 174, 9, 0, 0, 175, 9, 0, 0, 90, 11, 0, 0, 91, 11, 0, 0, 38, 13, 0, 0, 1, 0, 0, 0, 39, 13, 0, 0, 18, 15, 0, 0, 19, 15, 0, 0, 30, 17, 0, 0, 31, 17, 0, 0, 74, 19, 0, 0, 75, 19, 0, 0, 150, 21, 0, 0, 151, 21, 0, 0, 2, 24, 0, 0, 3, 24, 0, 0, 142, 26, 0, 0, 143, 26, 0, 0, 58, 29, 0, 0, 59, 29, 0, 0, 1, 0, 0, 0, 6, 32, 0, 0, 7, 32, 0, 0, 242, 34, 0, 0, 243, 34, 0, 0, 254, 37, 0, 0, 255, 37, 0, 0, 42, 41, 0, 0, 43, 41, 0, 0, 118, 44, 0, 0, 119, 44, 0, 0, 226, 47, 0, 0, 227, 47, 0, 0, 110, 51, 0, 0, 111, 51, 0, 0, 26, 55, 0, 0, 1, 0, 0, 0, 27, 55, 0, 0, 230, 58, 0, 0, 231, 58, 0, 0, 210, 62, 0, 0, 211, 62, 0, 0, 222, 66, 0, 0, 223, 66, 0, 0, 10, 71, 0, 0, 11, 71, 0, 0, 86, 75, 0, 0, 87, 75, 0, 0, 95, 77, 0, 0, 94, 77, 0, 0, 3, 73, 0, 0, 2, 73, 0, 0, 199, 68, 0, 0, 198, 68, 0, 0, 171, 64, 0, 0, 170, 64, 0, 0, 175, 60, 0, 0, 174, 60, 0, 0, 211, 56, 0, 0, 0, 0, 0, 0, 210, 56, 0, 0, 23, 53, 0, 0, 22, 53, 0, 0, 123, 49, 0, 0, 122, 49, 0, 0, 255, 45, 0, 0, 254, 45, 0, 0, 163, 42, 0, 0, 162, 42, 0, 0, 103, 39, 0, 0, 102, 39, 0, 0, 75, 36, 0, 0, 74, 36, 0, 0, 79, 33, 0, 0, 78, 33, 0, 0, 0, 0, 0, 0, 115, 30, 0, 0, 114, 30, 0, 0, 183, 27, 0, 0, 182, 27, 0, 0, 27, 25, 0, 0, 26, 25, 0, 0, 159, 22, 0, 0, 158, 22, 0, 0, 67, 20, 0, 0, 66, 20, 0, 0, 7, 18, 0, 0, 6, 18, 0, 0, 235, 15, 0, 0, 234, 15, 0, 0, 239, 13, 0, 0, 0, 0, 0, 0, 238, 13, 0, 0, 19, 12, 0, 0, 18, 12, 0, 0, 87, 10, 0, 0, 86, 10, 0, 0, 187, 8, 0, 0, 186, 8, 0, 0, 63, 7, 0, 0, 62, 7, 0, 0, 227, 5, 0, 0, 226, 5, 0, 0, 167, 4, 0, 0, 166, 4, 0, 0, 139, 3, 0, 0, 138, 3, 0, 0, 0, 0, 0, 0, 143, 2, 0, 0, 142, 2, 0, 0, 179, 1, 0, 0, 178, 1, 0, 0, 249, 0, 0, 0, 247, 0, 0, 0, 245, 0, 0, 0, 243, 0, 0, 0, 241, 0, 0, 0, 239, 0, 0, 0, 237, 0, 0, 0, 235, 0, 0, 0, 233, 0, 0, 0, 231, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 225, 0, 0, 0, 223, 0, 0, 0, 221, 0, 0, 0, 219, 0, 0, 0, 217, 0, 0, 0, 215, 0, 0, 0, 213, 0, 0, 0, 211, 0, 0, 0, 208, 0, 0, 0, 209, 0, 0, 0, 124, 1, 0, 0, 125, 1, 0, 0, 72, 2, 0, 0, 73, 2, 0, 0, 0, 0, 0, 0, 52, 3, 0, 0, 53, 3, 0, 0, 64, 4, 0, 0, 65, 4, 0, 0, 108, 5, 0, 0, 109, 5, 0, 0, 184, 6, 0, 0, 185, 6, 0, 0, 36, 8, 0, 0, 37, 8, 0, 0, 176, 9, 0, 0, 177, 9, 0, 0, 92, 11, 0, 0, 93, 11, 0, 0, 40, 13, 0, 0, 0, 0, 0, 0, 41, 13, 0, 0, 20, 15, 0, 0, 21, 15, 0, 0, 32, 17, 0, 0, 33, 17, 0, 0, 76, 19, 0, 0, 77, 19, 0, 0, 152, 21, 0, 0, 153, 21, 0, 0, 4, 24, 0, 0, 5, 24, 0, 0, 144, 26, 0, 0, 145, 26, 0, 0, 60, 29, 0, 0, 61, 29, 0, 0, 0, 0, 0, 0, 8, 32, 0, 0, 9, 32, 0, 0, 244, 34, 0, 0, 245, 34, 0, 0, 0, 38, 0, 0, 1, 38, 0, 0, 44, 41, 0, 0, 45, 41, 0, 0, 120, 44, 0, 0, 121, 44, 0, 0, 228, 47, 0, 0, 229, 47, 0, 0, 112, 51, 0, 0, 113, 51, 0, 0, 28, 55, 0, 0, 0, 0, 0, 0, 29, 55, 0, 0, 232, 58, 0, 0, 233, 58, 0, 0, 212, 62, 0, 0, 213, 62, 0, 0, 224, 66, 0, 0, 225, 66, 0, 0, 12, 71, 0, 0, 13, 71, 0, 0, 88, 75, 0, 0, 89, 75, 0, 0, 93, 77, 0, 0, 92, 77, 0, 0, 1, 73, 0, 0, 0, 73, 0, 0, 197, 68, 0, 0, 196, 68, 0, 0, 169, 64, 0, 0, 168, 64, 0, 0, 173, 60, 0, 0, 172, 60, 0, 0, 209, 56, 0, 0, 1, 0, 0, 0, 208, 56, 0, 0, 21, 53, 0, 0, 20, 53, 0, 0, 121, 49, 0, 0, 120, 49, 0, 0, 253, 45, 0, 0, 252, 45, 0, 0, 161, 42, 0, 0, 160, 42, 0, 0, 101, 39, 0, 0, 100, 39, 0, 0, 73, 36, 0, 0, 72, 36, 0, 0, 77, 33, 0, 0, 76, 33, 0, 0, 1, 0, 0, 0, 113, 30, 0, 0, 112, 30, 0, 0, 181, 27, 0, 0, 180, 27, 0, 0, 25, 25, 0, 0, 24, 25, 0, 0, 157, 22, 0, 0, 156, 22, 0, 0, 65, 20, 0, 0, 64, 20, 0, 0, 5, 18, 0, 0, 4, 18, 0, 0, 233, 15, 0, 0, 232, 15, 0, 0, 237, 13, 0, 0, 1, 0, 0, 0, 236, 13, 0, 0, 17, 12, 0, 0, 16, 12, 0, 0, 85, 10, 0, 0, 84, 10, 0, 0, 185, 8, 0, 0, 184, 8, 0, 0, 61, 7, 0, 0, 60, 7, 0, 0, 225, 5, 0, 0, 224, 5, 0, 0, 165, 4, 0, 0, 164, 4, 0, 0, 137, 3, 0, 0, 136, 3, 0, 0, 1, 0, 0, 0, 141, 2, 0, 0, 140, 2, 0, 0, 176, 1, 0, 0, 174, 1, 0, 0, 172, 1, 0, 0, 170, 1, 0, 0, 168, 1, 0, 0, 166, 1, 0, 0, 164, 1, 0, 0, 162, 1, 0, 0, 160, 1, 0, 0, 158, 1, 0, 0, 156, 1, 0, 0, 154, 1, 0, 0, 152, 1, 0, 0, 1, 0, 0, 0, 150, 1, 0, 0, 148, 1, 0, 0, 146, 1, 0, 0, 144, 1, 0, 0, 142, 1, 0, 0, 140, 1, 0, 0, 138, 1, 0, 0, 136, 1, 0, 0, 134, 1, 0, 0, 132, 1, 0, 0, 130, 1, 0, 0, 126, 1, 0, 0, 127, 1, 0, 0, 74, 2, 0, 0, 75, 2, 0, 0, 1, 0, 0, 0, 54, 3, 0, 0, 55, 3, 0, 0, 66, 4, 0, 0, 67, 4, 0, 0, 110, 5, 0, 0, 111, 5, 0, 0, 186, 6, 0, 0, 187, 6, 0, 0, 38, 8, 0, 0, 39, 8, 0, 0, 178, 9, 0, 0, 179, 9, 0, 0, 94, 11, 0, 0, 95, 11, 0, 0, 42, 13, 0, 0, 1, 0, 0, 0, 43, 13, 0, 0, 22, 15, 0, 0, 23, 15, 0, 0, 34, 17, 0, 0, 35, 17, 0, 0, 78, 19, 0, 0, 79, 19, 0, 0, 154, 21, 0, 0, 155, 21, 0, 0, 6, 24, 0, 0, 7, 24, 0, 0, 146, 26, 0, 0, 147, 26, 0, 0, 62, 29, 0, 0, 63, 29, 0, 0, 1, 0, 0, 0, 10, 32, 0, 0, 11, 32, 0, 0, 246, 34, 0, 0, 247, 34, 0, 0, 2, 38, 0, 0, 3, 38, 0, 0, 46, 41, 0, 0, 47, 41, 0, 0, 122, 44, 0, 0, 123, 44, 0, 0, 230, 47, 0, 0, 231, 47, 0, 0, 114, 51, 0, 0, 115, 51, 0, 0, 30, 55, 0, 0, 1, 0, 0, 0, 31, 55, 0, 0, 234, 58, 0, 0, 235, 58, 0, 0, 214, 62, 0, 0, 215, 62, 0, 0, 226, 66, 0, 0, 227, 66, 0, 0, 14, 71, 0, 0, 15, 71, 0, 0, 90, 75, 0, 0, 91, 75, 0, 0, 91, 77, 0, 0, 90, 77, 0, 0, 255, 72, 0, 0, 254, 72, 0, 0, 195, 68, 0, 0, 194, 68, 0, 0, 167, 64, 0, 0, 166, 64, 0, 0, 171, 60, 0, 0, 170, 60, 0, 0, 207, 56, 0, 0, 0, 0, 0, 0, 206, 56, 0, 0, 19, 53, 0, 0, 18, 53, 0, 0, 119, 49, 0, 0, 118, 49, 0, 0, 251, 45, 0, 0, 250, 45, 0, 0, 159, 42, 0, 0, 158, 42, 0, 0, 99, 39, 0, 0, 98, 39, 0, 0, 71, 36, 0, 0, 70, 36, 0, 0, 75, 33, 0, 0, 74, 33, 0, 0, 0, 0, 0, 0, 111, 30, 0, 0, 110, 30, 0, 0, 179, 27, 0, 0, 178, 27, 0, 0, 23, 25, 0, 0, 22, 25, 0, 0, 155, 22, 0, 0, 154, 22, 0, 0, 63, 20, 0, 0, 62, 20, 0, 0, 3, 18, 0, 0, 2, 18, 0, 0, 231, 15, 0, 0, 230, 15, 0, 0, 235, 13, 0, 0, 0, 0, 0, 0, 234, 13, 0, 0, 15, 12, 0, 0, 14, 12, 0, 0, 83, 10, 0, 0, 82, 10, 0, 0, 183, 8, 0, 0, 182, 8, 0, 0, 59, 7, 0, 0, 58, 7, 0, 0, 223, 5, 0, 0, 222, 5, 0, 0, 163, 4, 0, 0, 162, 4, 0, 0, 135, 3, 0, 0, 134, 3, 0, 0, 0, 0, 0, 0, 139, 2, 0, 0, 138, 2, 0, 0, 177, 1, 0, 0, 175, 1, 0, 0, 173, 1, 0, 0, 171, 1, 0, 0, 169, 1, 0, 0, 167, 1, 0, 0, 165, 1, 0, 0, 163, 1, 0, 0, 161, 1, 0, 0, 159, 1, 0, 0, 157, 1, 0, 0, 155, 1, 0, 0, 153, 1, 0, 0, 0, 0, 0, 0, 151, 1, 0, 0, 149, 1, 0, 0, 147, 1, 0, 0, 145, 1, 0, 0, 143, 1, 0, 0, 141, 1, 0, 0, 139, 1, 0, 0, 137, 1, 0, 0, 135, 1, 0, 0, 133, 1, 0, 0, 131, 1, 0, 0, 128, 1, 0, 0, 129, 1, 0, 0, 76, 2, 0, 0, 77, 2, 0, 0, 0, 0, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0, 68, 4, 0, 0, 69, 4, 0, 0, 112, 5, 0, 0, 113, 5, 0, 0, 188, 6, 0, 0, 189, 6, 0, 0, 40, 8, 0, 0, 41, 8, 0, 0, 180, 9, 0, 0, 181, 9, 0, 0, 96, 11, 0, 0, 97, 11, 0, 0, 44, 13, 0, 0, 0, 0, 0, 0, 45, 13, 0, 0, 24, 15, 0, 0, 25, 15, 0, 0, 36, 17, 0, 0, 37, 17, 0, 0, 80, 19, 0, 0, 81, 19, 0, 0, 156, 21, 0, 0, 157, 21, 0, 0, 8, 24, 0, 0, 9, 24, 0, 0, 148, 26, 0, 0, 149, 26, 0, 0, 64, 29, 0, 0, 65, 29, 0, 0, 0, 0, 0, 0, 12, 32, 0, 0, 13, 32, 0, 0, 248, 34, 0, 0, 249, 34, 0, 0, 4, 38, 0, 0, 5, 38, 0, 0, 48, 41, 0, 0, 49, 41, 0, 0, 124, 44, 0, 0, 125, 44, 0, 0, 232, 47, 0, 0, 233, 47, 0, 0, 116, 51, 0, 0, 117, 51, 0, 0, 32, 55, 0, 0, 0, 0, 0, 0, 33, 55, 0, 0, 236, 58, 0, 0, 237, 58, 0, 0, 216, 62, 0, 0, 217, 62, 0, 0, 228, 66, 0, 0, 229, 66, 0, 0, 16, 71, 0, 0, 17, 71, 0, 0, 92, 75, 0, 0, 93, 75, 0, 0, 89, 77, 0, 0, 88, 77, 0, 0, 253, 72, 0, 0, 252, 72, 0, 0, 193, 68, 0, 0, 192, 68, 0, 0, 165, 64, 0, 0, 164, 64, 0, 0, 169, 60, 0, 0, 168, 60, 0, 0, 205, 56, 0, 0, 1, 0, 0, 0, 204, 56, 0, 0, 17, 53, 0, 0, 16, 53, 0, 0, 117, 49, 0, 0, 116, 49, 0, 0, 249, 45, 0, 0, 248, 45, 0, 0, 157, 42, 0, 0, 156, 42, 0, 0, 97, 39, 0, 0, 96, 39, 0, 0, 69, 36, 0, 0, 68, 36, 0, 0, 73, 33, 0, 0, 72, 33, 0, 0, 1, 0, 0, 0, 109, 30, 0, 0, 108, 30, 0, 0, 177, 27, 0, 0, 176, 27, 0, 0, 21, 25, 0, 0, 20, 25, 0, 0, 153, 22, 0, 0, 152, 22, 0, 0, 61, 20, 0, 0, 60, 20, 0, 0, 1, 18, 0, 0, 0, 18, 0, 0, 229, 15, 0, 0, 228, 15, 0, 0, 233, 13, 0, 0, 1, 0, 0, 0, 232, 13, 0, 0, 13, 12, 0, 0, 12, 12, 0, 0, 81, 10, 0, 0, 80, 10, 0, 0, 181, 8, 0, 0, 180, 8, 0, 0, 57, 7, 0, 0, 56, 7, 0, 0, 221, 5, 0, 0, 220, 5, 0, 0, 161, 4, 0, 0, 160, 4, 0, 0, 133, 3, 0, 0, 132, 3, 0, 0, 1, 0, 0, 0, 136, 2, 0, 0, 134, 2, 0, 0, 132, 2, 0, 0, 130, 2, 0, 0, 128, 2, 0, 0, 126, 2, 0, 0, 124, 2, 0, 0, 122, 2, 0, 0, 120, 2, 0, 0, 118, 2, 0, 0, 116, 2, 0, 0, 114, 2, 0, 0, 112, 2, 0, 0, 110, 2, 0, 0, 108, 2, 0, 0, 1, 0, 0, 0, 106, 2, 0, 0, 104, 2, 0, 0, 102, 2, 0, 0, 100, 2, 0, 0, 98, 2, 0, 0, 96, 2, 0, 0, 94, 2, 0, 0, 92, 2, 0, 0, 90, 2, 0, 0, 88, 2, 0, 0, 86, 2, 0, 0, 84, 2, 0, 0, 82, 2, 0, 0, 78, 2, 0, 0, 79, 2, 0, 0, 1, 0, 0, 0, 58, 3, 0, 0, 59, 3, 0, 0, 70, 4, 0, 0, 71, 4, 0, 0, 114, 5, 0, 0, 115, 5, 0, 0, 190, 6, 0, 0, 191, 6, 0, 0, 42, 8, 0, 0, 43, 8, 0, 0, 182, 9, 0, 0, 183, 9, 0, 0, 98, 11, 0, 0, 99, 11, 0, 0, 46, 13, 0, 0, 1, 0, 0, 0, 47, 13, 0, 0, 26, 15, 0, 0, 27, 15, 0, 0, 38, 17, 0, 0, 39, 17, 0, 0, 82, 19, 0, 0, 83, 19, 0, 0, 158, 21, 0, 0, 159, 21, 0, 0, 10, 24, 0, 0, 11, 24, 0, 0, 150, 26, 0, 0, 151, 26, 0, 0, 66, 29, 0, 0, 67, 29, 0, 0, 1, 0, 0, 0, 14, 32, 0, 0, 15, 32, 0, 0, 250, 34, 0, 0, 251, 34, 0, 0, 6, 38, 0, 0, 7, 38, 0, 0, 50, 41, 0, 0, 51, 41, 0, 0, 126, 44, 0, 0, 127, 44, 0, 0, 234, 47, 0, 0, 235, 47, 0, 0, 118, 51, 0, 0, 119, 51, 0, 0, 34, 55, 0, 0, 1, 0, 0, 0, 35, 55, 0, 0, 238, 58, 0, 0, 239, 58, 0, 0, 218, 62, 0, 0, 219, 62, 0, 0, 230, 66, 0, 0, 231, 66, 0, 0, 18, 71, 0, 0, 19, 71, 0, 0, 94, 75, 0, 0, 95, 75, 0, 0, 87, 77, 0, 0, 86, 77, 0, 0, 251, 72, 0, 0, 250, 72, 0, 0, 191, 68, 0, 0, 190, 68, 0, 0, 163, 64, 0, 0, 162, 64, 0, 0, 167, 60, 0, 0, 166, 60, 0, 0, 203, 56, 0, 0, 0, 0, 0, 0, 202, 56, 0, 0, 15, 53, 0, 0, 14, 53, 0, 0, 115, 49, 0, 0, 114, 49, 0, 0, 247, 45, 0, 0, 246, 45, 0, 0, 155, 42, 0, 0, 154, 42, 0, 0, 95, 39, 0, 0, 94, 39, 0, 0, 67, 36, 0, 0, 66, 36, 0, 0, 71, 33, 0, 0, 70, 33, 0, 0, 0, 0, 0, 0, 107, 30, 0, 0, 106, 30, 0, 0, 175, 27, 0, 0, 174, 27, 0, 0, 19, 25, 0, 0, 18, 25, 0, 0, 151, 22, 0, 0, 150, 22, 0, 0, 59, 20, 0, 0, 58, 20, 0, 0, 255, 17, 0, 0, 254, 17, 0, 0, 227, 15, 0, 0, 226, 15, 0, 0, 231, 13, 0, 0, 0, 0, 0, 0, 230, 13, 0, 0, 11, 12, 0, 0, 10, 12, 0, 0, 79, 10, 0, 0, 78, 10, 0, 0, 179, 8, 0, 0, 178, 8, 0, 0, 55, 7, 0, 0, 54, 7, 0, 0, 219, 5, 0, 0, 218, 5, 0, 0, 159, 4, 0, 0, 158, 4, 0, 0, 131, 3, 0, 0, 130, 3, 0, 0, 0, 0, 0, 0, 137, 2, 0, 0, 135, 2, 0, 0, 133, 2, 0, 0, 131, 2, 0, 0, 129, 2, 0, 0, 127, 2, 0, 0, 125, 2, 0, 0, 123, 2, 0, 0, 121, 2, 0, 0, 119, 2, 0, 0, 117, 2, 0, 0, 115, 2, 0, 0, 113, 2, 0, 0, 111, 2, 0, 0, 109, 2, 0, 0, 0, 0, 0, 0, 107, 2, 0, 0, 105, 2, 0, 0, 103, 2, 0, 0, 101, 2, 0, 0, 99, 2, 0, 0, 97, 2, 0, 0, 95, 2, 0, 0, 93, 2, 0, 0, 91, 2, 0, 0, 89, 2, 0, 0, 87, 2, 0, 0, 85, 2, 0, 0, 83, 2, 0, 0, 80, 2, 0, 0, 81, 2, 0, 0, 0, 0, 0, 0, 60, 3, 0, 0, 61, 3, 0, 0, 72, 4, 0, 0, 73, 4, 0, 0, 116, 5, 0, 0, 117, 5, 0, 0, 192, 6, 0, 0, 193, 6, 0, 0, 44, 8, 0, 0, 45, 8, 0, 0, 184, 9, 0, 0, 185, 9, 0, 0, 100, 11, 0, 0, 101, 11, 0, 0, 48, 13, 0, 0, 0, 0, 0, 0, 49, 13, 0, 0, 28, 15, 0, 0, 29, 15, 0, 0, 40, 17, 0, 0, 41, 17, 0, 0, 84, 19, 0, 0, 85, 19, 0, 0, 160, 21, 0, 0, 161, 21, 0, 0, 12, 24, 0, 0, 13, 24, 0, 0, 152, 26, 0, 0, 153, 26, 0, 0, 68, 29, 0, 0, 69, 29, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 17, 32, 0, 0, 252, 34, 0, 0, 253, 34, 0, 0, 8, 38, 0, 0, 9, 38, 0, 0, 52, 41, 0, 0, 53, 41, 0, 0, 128, 44, 0, 0, 129, 44, 0, 0, 236, 47, 0, 0, 237, 47, 0, 0, 120, 51, 0, 0, 121, 51, 0, 0, 36, 55, 0, 0, 0, 0, 0, 0, 37, 55, 0, 0, 240, 58, 0, 0, 241, 58, 0, 0, 220, 62, 0, 0, 221, 62, 0, 0, 232, 66, 0, 0, 233, 66, 0, 0, 20, 71, 0, 0, 21, 71, 0, 0, 96, 75, 0, 0, 97, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 85, 77, 0, 0, 84, 77, 0, 0, 249, 72, 0, 0, 248, 72, 0, 0, 189, 68, 0, 0, 188, 68, 0, 0, 161, 64, 0, 0, 160, 64, 0, 0, 165, 60, 0, 0, 164, 60, 0, 0, 201, 56, 0, 0, 0, 0, 0, 0, 200, 56, 0, 0, 13, 53, 0, 0, 12, 53, 0, 0, 113, 49, 0, 0, 112, 49, 0, 0, 245, 45, 0, 0, 244, 45, 0, 0, 153, 42, 0, 0, 152, 42, 0, 0, 93, 39, 0, 0, 92, 39, 0, 0, 65, 36, 0, 0, 64, 36, 0, 0, 69, 33, 0, 0, 68, 33, 0, 0, 0, 0, 0, 0, 105, 30, 0, 0, 104, 30, 0, 0, 173, 27, 0, 0, 172, 27, 0, 0, 17, 25, 0, 0, 16, 25, 0, 0, 149, 22, 0, 0, 148, 22, 0, 0, 57, 20, 0, 0, 56, 20, 0, 0, 253, 17, 0, 0, 252, 17, 0, 0, 225, 15, 0, 0, 224, 15, 0, 0, 229, 13, 0, 0, 0, 0, 0, 0, 228, 13, 0, 0, 9, 12, 0, 0, 8, 12, 0, 0, 77, 10, 0, 0, 76, 10, 0, 0, 177, 8, 0, 0, 176, 8, 0, 0, 53, 7, 0, 0, 52, 7, 0, 0, 217, 5, 0, 0, 216, 5, 0, 0, 157, 4, 0, 0, 156, 4, 0, 0, 128, 3, 0, 0, 126, 3, 0, 0, 0, 0, 0, 0, 124, 3, 0, 0, 122, 3, 0, 0, 120, 3, 0, 0, 118, 3, 0, 0, 116, 3, 0, 0, 114, 3, 0, 0, 112, 3, 0, 0, 110, 3, 0, 0, 108, 3, 0, 0, 106, 3, 0, 0, 104, 3, 0, 0, 102, 3, 0, 0, 100, 3, 0, 0, 98, 3, 0, 0, 96, 3, 0, 0, 0, 0, 0, 0, 94, 3, 0, 0, 92, 3, 0, 0, 90, 3, 0, 0, 88, 3, 0, 0, 86, 3, 0, 0, 84, 3, 0, 0, 82, 3, 0, 0, 80, 3, 0, 0, 78, 3, 0, 0, 76, 3, 0, 0, 74, 3, 0, 0, 72, 3, 0, 0, 70, 3, 0, 0, 68, 3, 0, 0, 66, 3, 0, 0, 0, 0, 0, 0, 62, 3, 0, 0, 63, 3, 0, 0, 74, 4, 0, 0, 75, 4, 0, 0, 118, 5, 0, 0, 119, 5, 0, 0, 194, 6, 0, 0, 195, 6, 0, 0, 46, 8, 0, 0, 47, 8, 0, 0, 186, 9, 0, 0, 187, 9, 0, 0, 102, 11, 0, 0, 103, 11, 0, 0, 50, 13, 0, 0, 0, 0, 0, 0, 51, 13, 0, 0, 30, 15, 0, 0, 31, 15, 0, 0, 42, 17, 0, 0, 43, 17, 0, 0, 86, 19, 0, 0, 87, 19, 0, 0, 162, 21, 0, 0, 163, 21, 0, 0, 14, 24, 0, 0, 15, 24, 0, 0, 154, 26, 0, 0, 155, 26, 0, 0, 70, 29, 0, 0, 71, 29, 0, 0, 0, 0, 0, 0, 18, 32, 0, 0, 19, 32, 0, 0, 254, 34, 0, 0, 255, 34, 0, 0, 10, 38, 0, 0, 11, 38, 0, 0, 54, 41, 0, 0, 55, 41, 0, 0, 130, 44, 0, 0, 131, 44, 0, 0, 238, 47, 0, 0, 239, 47, 0, 0, 122, 51, 0, 0, 123, 51, 0, 0, 38, 55, 0, 0, 0, 0, 0, 0, 39, 55, 0, 0, 242, 58, 0, 0, 243, 58, 0, 0, 222, 62, 0, 0, 223, 62, 0, 0, 234, 66, 0, 0, 235, 66, 0, 0, 22, 71, 0, 0, 23, 71, 0, 0, 98, 75, 0, 0, 99, 75, 0, 0, 83, 77, 0, 0, 82, 77, 0, 0, 247, 72, 0, 0, 246, 72, 0, 0, 187, 68, 0, 0, 186, 68, 0, 0, 159, 64, 0, 0, 158, 64, 0, 0, 163, 60, 0, 0, 162, 60, 0, 0, 199, 56, 0, 0, 1, 0, 0, 0, 198, 56, 0, 0, 11, 53, 0, 0, 10, 53, 0, 0, 111, 49, 0, 0, 110, 49, 0, 0, 243, 45, 0, 0, 242, 45, 0, 0, 151, 42, 0, 0, 150, 42, 0, 0, 91, 39, 0, 0, 90, 39, 0, 0, 63, 36, 0, 0, 62, 36, 0, 0, 67, 33, 0, 0, 66, 33, 0, 0, 1, 0, 0, 0, 103, 30, 0, 0, 102, 30, 0, 0, 171, 27, 0, 0, 170, 27, 0, 0, 15, 25, 0, 0, 14, 25, 0, 0, 147, 22, 0, 0, 146, 22, 0, 0, 55, 20, 0, 0, 54, 20, 0, 0, 251, 17, 0, 0, 250, 17, 0, 0, 223, 15, 0, 0, 222, 15, 0, 0, 227, 13, 0, 0, 1, 0, 0, 0, 226, 13, 0, 0, 7, 12, 0, 0, 6, 12, 0, 0, 75, 10, 0, 0, 74, 10, 0, 0, 175, 8, 0, 0, 174, 8, 0, 0, 51, 7, 0, 0, 50, 7, 0, 0, 215, 5, 0, 0, 214, 5, 0, 0, 155, 4, 0, 0, 154, 4, 0, 0, 129, 3, 0, 0, 127, 3, 0, 0, 1, 0, 0, 0, 125, 3, 0, 0, 123, 3, 0, 0, 121, 3, 0, 0, 119, 3, 0, 0, 117, 3, 0, 0, 115, 3, 0, 0, 113, 3, 0, 0, 111, 3, 0, 0, 109, 3, 0, 0, 107, 3, 0, 0, 105, 3, 0, 0, 103, 3, 0, 0, 101, 3, 0, 0, 99, 3, 0, 0, 97, 3, 0, 0, 1, 0, 0, 0, 95, 3, 0, 0, 93, 3, 0, 0, 91, 3, 0, 0, 89, 3, 0, 0, 87, 3, 0, 0, 85, 3, 0, 0, 83, 3, 0, 0, 81, 3, 0, 0, 79, 3, 0, 0, 77, 3, 0, 0, 75, 3, 0, 0, 73, 3, 0, 0, 71, 3, 0, 0, 69, 3, 0, 0, 67, 3, 0, 0, 1, 0, 0, 0, 64, 3, 0, 0, 65, 3, 0, 0, 76, 4, 0, 0, 77, 4, 0, 0, 120, 5, 0, 0, 121, 5, 0, 0, 196, 6, 0, 0, 197, 6, 0, 0, 48, 8, 0, 0, 49, 8, 0, 0, 188, 9, 0, 0, 189, 9, 0, 0, 104, 11, 0, 0, 105, 11, 0, 0, 52, 13, 0, 0, 1, 0, 0, 0, 53, 13, 0, 0, 32, 15, 0, 0, 33, 15, 0, 0, 44, 17, 0, 0, 45, 17, 0, 0, 88, 19, 0, 0, 89, 19, 0, 0, 164, 21, 0, 0, 165, 21, 0, 0, 16, 24, 0, 0, 17, 24, 0, 0, 156, 26, 0, 0, 157, 26, 0, 0, 72, 29, 0, 0, 73, 29, 0, 0, 1, 0, 0, 0, 20, 32, 0, 0, 21, 32, 0, 0, 0, 35, 0, 0, 1, 35, 0, 0, 12, 38, 0, 0, 13, 38, 0, 0, 56, 41, 0, 0, 57, 41, 0, 0, 132, 44, 0, 0, 133, 44, 0, 0, 240, 47, 0, 0, 241, 47, 0, 0, 124, 51, 0, 0, 125, 51, 0, 0, 40, 55, 0, 0, 1, 0, 0, 0, 41, 55, 0, 0, 244, 58, 0, 0, 245, 58, 0, 0, 224, 62, 0, 0, 225, 62, 0, 0, 236, 66, 0, 0, 237, 66, 0, 0, 24, 71, 0, 0, 25, 71, 0, 0, 100, 75, 0, 0, 101, 75, 0, 0, 81, 77, 0, 0, 80, 77, 0, 0, 245, 72, 0, 0, 244, 72, 0, 0, 185, 68, 0, 0, 184, 68, 0, 0, 157, 64, 0, 0, 156, 64, 0, 0, 161, 60, 0, 0, 160, 60, 0, 0, 197, 56, 0, 0, 0, 0, 0, 0, 196, 56, 0, 0, 9, 53, 0, 0, 8, 53, 0, 0, 109, 49, 0, 0, 108, 49, 0, 0, 241, 45, 0, 0, 240, 45, 0, 0, 149, 42, 0, 0, 148, 42, 0, 0, 89, 39, 0, 0, 88, 39, 0, 0, 61, 36, 0, 0, 60, 36, 0, 0, 65, 33, 0, 0, 64, 33, 0, 0, 0, 0, 0, 0, 101, 30, 0, 0, 100, 30, 0, 0, 169, 27, 0, 0, 168, 27, 0, 0, 13, 25, 0, 0, 12, 25, 0, 0, 145, 22, 0, 0, 144, 22, 0, 0, 53, 20, 0, 0, 52, 20, 0, 0, 249, 17, 0, 0, 248, 17, 0, 0, 221, 15, 0, 0, 220, 15, 0, 0, 225, 13, 0, 0, 0, 0, 0, 0, 224, 13, 0, 0, 5, 12, 0, 0, 4, 12, 0, 0, 73, 10, 0, 0, 72, 10, 0, 0, 173, 8, 0, 0, 172, 8, 0, 0, 49, 7, 0, 0, 48, 7, 0, 0, 213, 5, 0, 0, 212, 5, 0, 0, 152, 4, 0, 0, 150, 4, 0, 0, 148, 4, 0, 0, 146, 4, 0, 0, 0, 0, 0, 0, 144, 4, 0, 0, 142, 4, 0, 0, 140, 4, 0, 0, 138, 4, 0, 0, 136, 4, 0, 0, 134, 4, 0, 0, 132, 4, 0, 0, 130, 4, 0, 0, 128, 4, 0, 0, 126, 4, 0, 0, 124, 4, 0, 0, 122, 4, 0, 0, 120, 4, 0, 0, 118, 4, 0, 0, 116, 4, 0, 0, 0, 0, 0, 0, 114, 4, 0, 0, 112, 4, 0, 0, 110, 4, 0, 0, 108, 4, 0, 0, 106, 4, 0, 0, 104, 4, 0, 0, 102, 4, 0, 0, 100, 4, 0, 0, 98, 4, 0, 0, 96, 4, 0, 0, 94, 4, 0, 0, 92, 4, 0, 0, 90, 4, 0, 0, 88, 4, 0, 0, 86, 4, 0, 0, 0, 0, 0, 0, 84, 4, 0, 0, 82, 4, 0, 0, 78, 4, 0, 0, 79, 4, 0, 0, 122, 5, 0, 0, 123, 5, 0, 0, 198, 6, 0, 0, 199, 6, 0, 0, 50, 8, 0, 0, 51, 8, 0, 0, 190, 9, 0, 0, 191, 9, 0, 0, 106, 11, 0, 0, 107, 11, 0, 0, 54, 13, 0, 0, 0, 0, 0, 0, 55, 13, 0, 0, 34, 15, 0, 0, 35, 15, 0, 0, 46, 17, 0, 0, 47, 17, 0, 0, 90, 19, 0, 0, 91, 19, 0, 0, 166, 21, 0, 0, 167, 21, 0, 0, 18, 24, 0, 0, 19, 24, 0, 0, 158, 26, 0, 0, 159, 26, 0, 0, 74, 29, 0, 0, 75, 29, 0, 0, 0, 0, 0, 0, 22, 32, 0, 0, 23, 32, 0, 0, 2, 35, 0, 0, 3, 35, 0, 0, 14, 38, 0, 0, 15, 38, 0, 0, 58, 41, 0, 0, 59, 41, 0, 0, 134, 44, 0, 0, 135, 44, 0, 0, 242, 47, 0, 0, 243, 47, 0, 0, 126, 51, 0, 0, 127, 51, 0, 0, 42, 55, 0, 0, 0, 0, 0, 0, 43, 55, 0, 0, 246, 58, 0, 0, 247, 58, 0, 0, 226, 62, 0, 0, 227, 62, 0, 0, 238, 66, 0, 0, 239, 66, 0, 0, 26, 71, 0, 0, 27, 71, 0, 0, 102, 75, 0, 0, 103, 75, 0, 0, 79, 77, 0, 0, 78, 77, 0, 0, 243, 72, 0, 0, 242, 72, 0, 0, 183, 68, 0, 0, 182, 68, 0, 0, 155, 64, 0, 0, 154, 64, 0, 0, 159, 60, 0, 0, 158, 60, 0, 0, 195, 56, 0, 0, 1, 0, 0, 0, 194, 56, 0, 0, 7, 53, 0, 0, 6, 53, 0, 0, 107, 49, 0, 0, 106, 49, 0, 0, 239, 45, 0, 0, 238, 45, 0, 0, 147, 42, 0, 0, 146, 42, 0, 0, 87, 39, 0, 0, 86, 39, 0, 0, 59, 36, 0, 0, 58, 36, 0, 0, 63, 33, 0, 0, 62, 33, 0, 0, 1, 0, 0, 0, 99, 30, 0, 0, 98, 30, 0, 0, 167, 27, 0, 0, 166, 27, 0, 0, 11, 25, 0, 0, 10, 25, 0, 0, 143, 22, 0, 0, 142, 22, 0, 0, 51, 20, 0, 0, 50, 20, 0, 0, 247, 17, 0, 0, 246, 17, 0, 0, 219, 15, 0, 0, 218, 15, 0, 0, 223, 13, 0, 0, 1, 0, 0, 0, 222, 13, 0, 0, 3, 12, 0, 0, 2, 12, 0, 0, 71, 10, 0, 0, 70, 10, 0, 0, 171, 8, 0, 0, 170, 8, 0, 0, 47, 7, 0, 0, 46, 7, 0, 0, 211, 5, 0, 0, 210, 5, 0, 0, 153, 4, 0, 0, 151, 4, 0, 0, 149, 4, 0, 0, 147, 4, 0, 0, 1, 0, 0, 0, 145, 4, 0, 0, 143, 4, 0, 0, 141, 4, 0, 0, 139, 4, 0, 0, 137, 4, 0, 0, 135, 4, 0, 0, 133, 4, 0, 0, 131, 4, 0, 0, 129, 4, 0, 0, 127, 4, 0, 0, 125, 4, 0, 0, 123, 4, 0, 0, 121, 4, 0, 0, 119, 4, 0, 0, 117, 4, 0, 0, 1, 0, 0, 0, 115, 4, 0, 0, 113, 4, 0, 0, 111, 4, 0, 0, 109, 4, 0, 0, 107, 4, 0, 0, 105, 4, 0, 0, 103, 4, 0, 0, 101, 4, 0, 0, 99, 4, 0, 0, 97, 4, 0, 0, 95, 4, 0, 0, 93, 4, 0, 0, 91, 4, 0, 0, 89, 4, 0, 0, 87, 4, 0, 0, 1, 0, 0, 0, 85, 4, 0, 0, 83, 4, 0, 0, 80, 4, 0, 0, 81, 4, 0, 0, 124, 5, 0, 0, 125, 5, 0, 0, 200, 6, 0, 0, 201, 6, 0, 0, 52, 8, 0, 0, 53, 8, 0, 0, 192, 9, 0, 0, 193, 9, 0, 0, 108, 11, 0, 0, 109, 11, 0, 0, 56, 13, 0, 0, 1, 0, 0, 0, 57, 13, 0, 0, 36, 15, 0, 0, 37, 15, 0, 0, 48, 17, 0, 0, 49, 17, 0, 0, 92, 19, 0, 0, 93, 19, 0, 0, 168, 21, 0, 0, 169, 21, 0, 0, 20, 24, 0, 0, 21, 24, 0, 0, 160, 26, 0, 0, 161, 26, 0, 0, 76, 29, 0, 0, 77, 29, 0, 0, 1, 0, 0, 0, 24, 32, 0, 0, 25, 32, 0, 0, 4, 35, 0, 0, 5, 35, 0, 0, 16, 38, 0, 0, 17, 38, 0, 0, 60, 41, 0, 0, 61, 41, 0, 0, 136, 44, 0, 0, 137, 44, 0, 0, 244, 47, 0, 0, 245, 47, 0, 0, 128, 51, 0, 0, 129, 51, 0, 0, 44, 55, 0, 0, 1, 0, 0, 0, 45, 55, 0, 0, 248, 58, 0, 0, 249, 58, 0, 0, 228, 62, 0, 0, 229, 62, 0, 0, 240, 66, 0, 0, 241, 66, 0, 0, 28, 71, 0, 0, 29, 71, 0, 0, 104, 75, 0, 0, 105, 75, 0, 0, 77, 77, 0, 0, 76, 77, 0, 0, 241, 72, 0, 0, 240, 72, 0, 0, 181, 68, 0, 0, 180, 68, 0, 0, 153, 64, 0, 0, 152, 64, 0, 0, 157, 60, 0, 0, 156, 60, 0, 0, 193, 56, 0, 0, 0, 0, 0, 0, 192, 56, 0, 0, 5, 53, 0, 0, 4, 53, 0, 0, 105, 49, 0, 0, 104, 49, 0, 0, 237, 45, 0, 0, 236, 45, 0, 0, 145, 42, 0, 0, 144, 42, 0, 0, 85, 39, 0, 0, 84, 39, 0, 0, 57, 36, 0, 0, 56, 36, 0, 0, 61, 33, 0, 0, 60, 33, 0, 0, 0, 0, 0, 0, 97, 30, 0, 0, 96, 30, 0, 0, 165, 27, 0, 0, 164, 27, 0, 0, 9, 25, 0, 0, 8, 25, 0, 0, 141, 22, 0, 0, 140, 22, 0, 0, 49, 20, 0, 0, 48, 20, 0, 0, 245, 17, 0, 0, 244, 17, 0, 0, 217, 15, 0, 0, 216, 15, 0, 0, 221, 13, 0, 0, 0, 0, 0, 0, 220, 13, 0, 0, 1, 12, 0, 0, 0, 12, 0, 0, 69, 10, 0, 0, 68, 10, 0, 0, 169, 8, 0, 0, 168, 8, 0, 0, 45, 7, 0, 0, 44, 7, 0, 0, 208, 5, 0, 0, 206, 5, 0, 0, 204, 5, 0, 0, 202, 5, 0, 0, 200, 5, 0, 0, 198, 5, 0, 0, 0, 0, 0, 0, 196, 5, 0, 0, 194, 5, 0, 0, 192, 5, 0, 0, 190, 5, 0, 0, 188, 5, 0, 0, 186, 5, 0, 0, 184, 5, 0, 0, 182, 5, 0, 0, 180, 5, 0, 0, 178, 5, 0, 0, 176, 5, 0, 0, 174, 5, 0, 0, 172, 5, 0, 0, 170, 5, 0, 0, 168, 5, 0, 0, 0, 0, 0, 0, 166, 5, 0, 0, 164, 5, 0, 0, 162, 5, 0, 0, 160, 5, 0, 0, 158, 5, 0, 0, 156, 5, 0, 0, 154, 5, 0, 0, 152, 5, 0, 0, 150, 5, 0, 0, 148, 5, 0, 0, 146, 5, 0, 0, 144, 5, 0, 0, 142, 5, 0, 0, 140, 5, 0, 0, 138, 5, 0, 0, 0, 0, 0, 0, 136, 5, 0, 0, 134, 5, 0, 0, 132, 5, 0, 0, 130, 5, 0, 0, 126, 5, 0, 0, 127, 5, 0, 0, 202, 6, 0, 0, 203, 6, 0, 0, 54, 8, 0, 0, 55, 8, 0, 0, 194, 9, 0, 0, 195, 9, 0, 0, 110, 11, 0, 0, 111, 11, 0, 0, 58, 13, 0, 0, 0, 0, 0, 0, 59, 13, 0, 0, 38, 15, 0, 0, 39, 15, 0, 0, 50, 17, 0, 0, 51, 17, 0, 0, 94, 19, 0, 0, 95, 19, 0, 0, 170, 21, 0, 0, 171, 21, 0, 0, 22, 24, 0, 0, 23, 24, 0, 0, 162, 26, 0, 0, 163, 26, 0, 0, 78, 29, 0, 0, 79, 29, 0, 0, 0, 0, 0, 0, 26, 32, 0, 0, 27, 32, 0, 0, 6, 35, 0, 0, 7, 35, 0, 0, 18, 38, 0, 0, 19, 38, 0, 0, 62, 41, 0, 0, 63, 41, 0, 0, 138, 44, 0, 0, 139, 44, 0, 0, 246, 47, 0, 0, 247, 47, 0, 0, 130, 51, 0, 0, 131, 51, 0, 0, 46, 55, 0, 0, 0, 0, 0, 0, 47, 55, 0, 0, 250, 58, 0, 0, 251, 58, 0, 0, 230, 62, 0, 0, 231, 62, 0, 0, 242, 66, 0, 0, 243, 66, 0, 0, 30, 71, 0, 0, 31, 71, 0, 0, 106, 75, 0, 0, 107, 75, 0, 0, 75, 77, 0, 0, 74, 77, 0, 0, 239, 72, 0, 0, 238, 72, 0, 0, 179, 68, 0, 0, 178, 68, 0, 0, 151, 64, 0, 0, 150, 64, 0, 0, 155, 60, 0, 0, 154, 60, 0, 0, 191, 56, 0, 0, 1, 0, 0, 0, 190, 56, 0, 0, 3, 53, 0, 0, 2, 53, 0, 0, 103, 49, 0, 0, 102, 49, 0, 0, 235, 45, 0, 0, 234, 45, 0, 0, 143, 42, 0, 0, 142, 42, 0, 0, 83, 39, 0, 0, 82, 39, 0, 0, 55, 36, 0, 0, 54, 36, 0, 0, 59, 33, 0, 0, 58, 33, 0, 0, 1, 0, 0, 0, 95, 30, 0, 0, 94, 30, 0, 0, 163, 27, 0, 0, 162, 27, 0, 0, 7, 25, 0, 0, 6, 25, 0, 0, 139, 22, 0, 0, 138, 22, 0, 0, 47, 20, 0, 0, 46, 20, 0, 0, 243, 17, 0, 0, 242, 17, 0, 0, 215, 15, 0, 0, 214, 15, 0, 0, 219, 13, 0, 0, 1, 0, 0, 0, 218, 13, 0, 0, 255, 11, 0, 0, 254, 11, 0, 0, 67, 10, 0, 0, 66, 10, 0, 0, 167, 8, 0, 0, 166, 8, 0, 0, 43, 7, 0, 0, 42, 7, 0, 0, 209, 5, 0, 0, 207, 5, 0, 0, 205, 5, 0, 0, 203, 5, 0, 0, 201, 5, 0, 0, 199, 5, 0, 0, 1, 0, 0, 0, 197, 5, 0, 0, 195, 5, 0, 0, 193, 5, 0, 0, 191, 5, 0, 0, 189, 5, 0, 0, 187, 5, 0, 0, 185, 5, 0, 0, 183, 5, 0, 0, 181, 5, 0, 0, 179, 5, 0, 0, 177, 5, 0, 0, 175, 5, 0, 0, 173, 5, 0, 0, 171, 5, 0, 0, 169, 5, 0, 0, 1, 0, 0, 0, 167, 5, 0, 0, 165, 5, 0, 0, 163, 5, 0, 0, 161, 5, 0, 0, 159, 5, 0, 0, 157, 5, 0, 0, 155, 5, 0, 0, 153, 5, 0, 0, 151, 5, 0, 0, 149, 5, 0, 0, 147, 5, 0, 0, 145, 5, 0, 0, 143, 5, 0, 0, 141, 5, 0, 0, 139, 5, 0, 0, 1, 0, 0, 0, 137, 5, 0, 0, 135, 5, 0, 0, 133, 5, 0, 0, 131, 5, 0, 0, 128, 5, 0, 0, 129, 5, 0, 0, 204, 6, 0, 0, 205, 6, 0, 0, 56, 8, 0, 0, 57, 8, 0, 0, 196, 9, 0, 0, 197, 9, 0, 0, 112, 11, 0, 0, 113, 11, 0, 0, 60, 13, 0, 0, 1, 0, 0, 0, 61, 13, 0, 0, 40, 15, 0, 0, 41, 15, 0, 0, 52, 17, 0, 0, 53, 17, 0, 0, 96, 19, 0, 0, 97, 19, 0, 0, 172, 21, 0, 0, 173, 21, 0, 0, 24, 24, 0, 0, 25, 24, 0, 0, 164, 26, 0, 0, 165, 26, 0, 0, 80, 29, 0, 0, 81, 29, 0, 0, 1, 0, 0, 0, 28, 32, 0, 0, 29, 32, 0, 0, 8, 35, 0, 0, 9, 35, 0, 0, 20, 38, 0, 0, 21, 38, 0, 0, 64, 41, 0, 0, 65, 41, 0, 0, 140, 44, 0, 0, 141, 44, 0, 0, 248, 47, 0, 0, 249, 47, 0, 0, 132, 51, 0, 0, 133, 51, 0, 0, 48, 55, 0, 0, 1, 0, 0, 0, 49, 55, 0, 0, 252, 58, 0, 0, 253, 58, 0, 0, 232, 62, 0, 0, 233, 62, 0, 0, 244, 66, 0, 0, 245, 66, 0, 0, 32, 71, 0, 0, 33, 71, 0, 0, 108, 75, 0, 0, 109, 75, 0, 0, 73, 77, 0, 0, 72, 77, 0, 0, 237, 72, 0, 0, 236, 72, 0, 0, 177, 68, 0, 0, 176, 68, 0, 0, 149, 64, 0, 0, 148, 64, 0, 0, 153, 60, 0, 0, 152, 60, 0, 0, 189, 56, 0, 0, 0, 0, 0, 0, 188, 56, 0, 0, 1, 53, 0, 0, 0, 53, 0, 0, 101, 49, 0, 0, 100, 49, 0, 0, 233, 45, 0, 0, 232, 45, 0, 0, 141, 42, 0, 0, 140, 42, 0, 0, 81, 39, 0, 0, 80, 39, 0, 0, 53, 36, 0, 0, 52, 36, 0, 0, 57, 33, 0, 0, 56, 33, 0, 0, 0, 0, 0, 0, 93, 30, 0, 0, 92, 30, 0, 0, 161, 27, 0, 0, 160, 27, 0, 0, 5, 25, 0, 0, 4, 25, 0, 0, 137, 22, 0, 0, 136, 22, 0, 0, 45, 20, 0, 0, 44, 20, 0, 0, 241, 17, 0, 0, 240, 17, 0, 0, 213, 15, 0, 0, 212, 15, 0, 0, 217, 13, 0, 0, 0, 0, 0, 0, 216, 13, 0, 0, 253, 11, 0, 0, 252, 11, 0, 0, 65, 10, 0, 0, 64, 10, 0, 0, 165, 8, 0, 0, 164, 8, 0, 0, 40, 7, 0, 0, 38, 7, 0, 0, 36, 7, 0, 0, 34, 7, 0, 0, 32, 7, 0, 0, 30, 7, 0, 0, 28, 7, 0, 0, 26, 7, 0, 0, 0, 0, 0, 0, 24, 7, 0, 0, 22, 7, 0, 0, 20, 7, 0, 0, 18, 7, 0, 0, 16, 7, 0, 0, 14, 7, 0, 0, 12, 7, 0, 0, 10, 7, 0, 0, 8, 7, 0, 0, 6, 7, 0, 0, 4, 7, 0, 0, 2, 7, 0, 0, 0, 7, 0, 0, 254, 6, 0, 0, 252, 6, 0, 0, 0, 0, 0, 0, 250, 6, 0, 0, 248, 6, 0, 0, 246, 6, 0, 0, 244, 6, 0, 0, 242, 6, 0, 0, 240, 6, 0, 0, 238, 6, 0, 0, 236, 6, 0, 0, 234, 6, 0, 0, 232, 6, 0, 0, 230, 6, 0, 0, 228, 6, 0, 0, 226, 6, 0, 0, 224, 6, 0, 0, 222, 6, 0, 0, 0, 0, 0, 0, 220, 6, 0, 0, 218, 6, 0, 0, 216, 6, 0, 0, 214, 6, 0, 0, 212, 6, 0, 0, 210, 6, 0, 0, 206, 6, 0, 0, 207, 6, 0, 0, 58, 8, 0, 0, 59, 8, 0, 0, 198, 9, 0, 0, 199, 9, 0, 0, 114, 11, 0, 0, 115, 11, 0, 0, 62, 13, 0, 0, 0, 0, 0, 0, 63, 13, 0, 0, 42, 15, 0, 0, 43, 15, 0, 0, 54, 17, 0, 0, 55, 17, 0, 0, 98, 19, 0, 0, 99, 19, 0, 0, 174, 21, 0, 0, 175, 21, 0, 0, 26, 24, 0, 0, 27, 24, 0, 0, 166, 26, 0, 0, 167, 26, 0, 0, 82, 29, 0, 0, 83, 29, 0, 0, 0, 0, 0, 0, 30, 32, 0, 0, 31, 32, 0, 0, 10, 35, 0, 0, 11, 35, 0, 0, 22, 38, 0, 0, 23, 38, 0, 0, 66, 41, 0, 0, 67, 41, 0, 0, 142, 44, 0, 0, 143, 44, 0, 0, 250, 47, 0, 0, 251, 47, 0, 0, 134, 51, 0, 0, 135, 51, 0, 0, 50, 55, 0, 0, 0, 0, 0, 0, 51, 55, 0, 0, 254, 58, 0, 0, 255, 58, 0, 0, 234, 62, 0, 0, 235, 62, 0, 0, 246, 66, 0, 0, 247, 66, 0, 0, 34, 71, 0, 0, 35, 71, 0, 0, 110, 75, 0, 0, 111, 75, 0, 0, 71, 77, 0, 0, 70, 77, 0, 0, 235, 72, 0, 0, 234, 72, 0, 0, 175, 68, 0, 0, 174, 68, 0, 0, 147, 64, 0, 0, 146, 64, 0, 0, 151, 60, 0, 0, 150, 60, 0, 0, 187, 56, 0, 0, 1, 0, 0, 0, 186, 56, 0, 0, 255, 52, 0, 0, 254, 52, 0, 0, 99, 49, 0, 0, 98, 49, 0, 0, 231, 45, 0, 0, 230, 45, 0, 0, 139, 42, 0, 0, 138, 42, 0, 0, 79, 39, 0, 0, 78, 39, 0, 0, 51, 36, 0, 0, 50, 36, 0, 0, 55, 33, 0, 0, 54, 33, 0, 0, 1, 0, 0, 0, 91, 30, 0, 0, 90, 30, 0, 0, 159, 27, 0, 0, 158, 27, 0, 0, 3, 25, 0, 0, 2, 25, 0, 0, 135, 22, 0, 0, 134, 22, 0, 0, 43, 20, 0, 0, 42, 20, 0, 0, 239, 17, 0, 0, 238, 17, 0, 0, 211, 15, 0, 0, 210, 15, 0, 0, 215, 13, 0, 0, 1, 0, 0, 0, 214, 13, 0, 0, 251, 11, 0, 0, 250, 11, 0, 0, 63, 10, 0, 0, 62, 10, 0, 0, 163, 8, 0, 0, 162, 8, 0, 0, 41, 7, 0, 0, 39, 7, 0, 0, 37, 7, 0, 0, 35, 7, 0, 0, 33, 7, 0, 0, 31, 7, 0, 0, 29, 7, 0, 0, 27, 7, 0, 0, 1, 0, 0, 0, 25, 7, 0, 0, 23, 7, 0, 0, 21, 7, 0, 0, 19, 7, 0, 0, 17, 7, 0, 0, 15, 7, 0, 0, 13, 7, 0, 0, 11, 7, 0, 0, 9, 7, 0, 0, 7, 7, 0, 0, 5, 7, 0, 0, 3, 7, 0, 0, 1, 7, 0, 0, 255, 6, 0, 0, 253, 6, 0, 0, 1, 0, 0, 0, 251, 6, 0, 0, 249, 6, 0, 0, 247, 6, 0, 0, 245, 6, 0, 0, 243, 6, 0, 0, 241, 6, 0, 0, 239, 6, 0, 0, 237, 6, 0, 0, 235, 6, 0, 0, 233, 6, 0, 0, 231, 6, 0, 0, 229, 6, 0, 0, 227, 6, 0, 0, 225, 6, 0, 0, 223, 6, 0, 0, 1, 0, 0, 0, 221, 6, 0, 0, 219, 6, 0, 0, 217, 6, 0, 0, 215, 6, 0, 0, 213, 6, 0, 0, 211, 6, 0, 0, 208, 6, 0, 0, 209, 6, 0, 0, 60, 8, 0, 0, 61, 8, 0, 0, 200, 9, 0, 0, 201, 9, 0, 0, 116, 11, 0, 0, 117, 11, 0, 0, 64, 13, 0, 0, 1, 0, 0, 0, 65, 13, 0, 0, 44, 15, 0, 0, 45, 15, 0, 0, 56, 17, 0, 0, 57, 17, 0, 0, 100, 19, 0, 0, 101, 19, 0, 0, 176, 21, 0, 0, 177, 21, 0, 0, 28, 24, 0, 0, 29, 24, 0, 0, 168, 26, 0, 0, 169, 26, 0, 0, 84, 29, 0, 0, 85, 29, 0, 0, 1, 0, 0, 0, 32, 32, 0, 0, 33, 32, 0, 0, 12, 35, 0, 0, 13, 35, 0, 0, 24, 38, 0, 0, 25, 38, 0, 0, 68, 41, 0, 0, 69, 41, 0, 0, 144, 44, 0, 0, 145, 44, 0, 0, 252, 47, 0, 0, 253, 47, 0, 0, 136, 51, 0, 0, 137, 51, 0, 0, 52, 55, 0, 0, 1, 0, 0, 0, 53, 55, 0, 0, 0, 59, 0, 0, 1, 59, 0, 0, 236, 62, 0, 0, 237, 62, 0, 0, 248, 66, 0, 0, 249, 66, 0, 0, 36, 71, 0, 0, 37, 71, 0, 0, 112, 75, 0, 0, 113, 75, 0, 0, 69, 77, 0, 0, 68, 77, 0, 0, 233, 72, 0, 0, 232, 72, 0, 0, 173, 68, 0, 0, 172, 68, 0, 0, 145, 64, 0, 0, 144, 64, 0, 0, 149, 60, 0, 0, 148, 60, 0, 0, 185, 56, 0, 0, 0, 0, 0, 0, 184, 56, 0, 0, 253, 52, 0, 0, 252, 52, 0, 0, 97, 49, 0, 0, 96, 49, 0, 0, 229, 45, 0, 0, 228, 45, 0, 0, 137, 42, 0, 0, 136, 42, 0, 0, 77, 39, 0, 0, 76, 39, 0, 0, 49, 36, 0, 0, 48, 36, 0, 0, 53, 33, 0, 0, 52, 33, 0, 0, 0, 0, 0, 0, 89, 30, 0, 0, 88, 30, 0, 0, 157, 27, 0, 0, 156, 27, 0, 0, 1, 25, 0, 0, 0, 25, 0, 0, 133, 22, 0, 0, 132, 22, 0, 0, 41, 20, 0, 0, 40, 20, 0, 0, 237, 17, 0, 0, 236, 17, 0, 0, 209, 15, 0, 0, 208, 15, 0, 0, 213, 13, 0, 0, 0, 0, 0, 0, 212, 13, 0, 0, 249, 11, 0, 0, 248, 11, 0, 0, 61, 10, 0, 0, 60, 10, 0, 0, 160, 8, 0, 0, 158, 8, 0, 0, 156, 8, 0, 0, 154, 8, 0, 0, 152, 8, 0, 0, 150, 8, 0, 0, 148, 8, 0, 0, 146, 8, 0, 0, 144, 8, 0, 0, 142, 8, 0, 0, 0, 0, 0, 0, 140, 8, 0, 0, 138, 8, 0, 0, 136, 8, 0, 0, 134, 8, 0, 0, 132, 8, 0, 0, 130, 8, 0, 0, 128, 8, 0, 0, 126, 8, 0, 0, 124, 8, 0, 0, 122, 8, 0, 0, 120, 8, 0, 0, 118, 8, 0, 0, 116, 8, 0, 0, 114, 8, 0, 0, 112, 8, 0, 0, 0, 0, 0, 0, 110, 8, 0, 0, 108, 8, 0, 0, 106, 8, 0, 0, 104, 8, 0, 0, 102, 8, 0, 0, 100, 8, 0, 0, 98, 8, 0, 0, 96, 8, 0, 0, 94, 8, 0, 0, 92, 8, 0, 0, 90, 8, 0, 0, 88, 8, 0, 0, 86, 8, 0, 0, 84, 8, 0, 0, 82, 8, 0, 0, 0, 0, 0, 0, 80, 8, 0, 0, 78, 8, 0, 0, 76, 8, 0, 0, 74, 8, 0, 0, 72, 8, 0, 0, 70, 8, 0, 0, 68, 8, 0, 0, 66, 8, 0, 0, 62, 8, 0, 0, 63, 8, 0, 0, 202, 9, 0, 0, 203, 9, 0, 0, 118, 11, 0, 0, 119, 11, 0, 0, 66, 13, 0, 0, 0, 0, 0, 0, 67, 13, 0, 0, 46, 15, 0, 0, 47, 15, 0, 0, 58, 17, 0, 0, 59, 17, 0, 0, 102, 19, 0, 0, 103, 19, 0, 0, 178, 21, 0, 0, 179, 21, 0, 0, 30, 24, 0, 0, 31, 24, 0, 0, 170, 26, 0, 0, 171, 26, 0, 0, 86, 29, 0, 0, 87, 29, 0, 0, 0, 0, 0, 0, 34, 32, 0, 0, 35, 32, 0, 0, 14, 35, 0, 0, 15, 35, 0, 0, 26, 38, 0, 0, 27, 38, 0, 0, 70, 41, 0, 0, 71, 41, 0, 0, 146, 44, 0, 0, 147, 44, 0, 0, 254, 47, 0, 0, 255, 47, 0, 0, 138, 51, 0, 0, 139, 51, 0, 0, 54, 55, 0, 0, 0, 0, 0, 0, 55, 55, 0, 0, 2, 59, 0, 0, 3, 59, 0, 0, 238, 62, 0, 0, 239, 62, 0, 0, 250, 66, 0, 0, 251, 66, 0, 0, 38, 71, 0, 0, 39, 71, 0, 0, 114, 75, 0, 0, 115, 75, 0, 0, 67, 77, 0, 0, 66, 77, 0, 0, 231, 72, 0, 0, 230, 72, 0, 0, 171, 68, 0, 0, 170, 68, 0, 0, 143, 64, 0, 0, 142, 64, 0, 0, 147, 60, 0, 0, 146, 60, 0, 0, 183, 56, 0, 0, 1, 0, 0, 0, 182, 56, 0, 0, 251, 52, 0, 0, 250, 52, 0, 0, 95, 49, 0, 0, 94, 49, 0, 0, 227, 45, 0, 0, 226, 45, 0, 0, 135, 42, 0, 0, 134, 42, 0, 0, 75, 39, 0, 0, 74, 39, 0, 0, 47, 36, 0, 0, 46, 36, 0, 0, 51, 33, 0, 0, 50, 33, 0, 0, 1, 0, 0, 0, 87, 30, 0, 0, 86, 30, 0, 0, 155, 27, 0, 0, 154, 27, 0, 0, 255, 24, 0, 0, 254, 24, 0, 0, 131, 22, 0, 0, 130, 22, 0, 0, 39, 20, 0, 0, 38, 20, 0, 0, 235, 17, 0, 0, 234, 17, 0, 0, 207, 15, 0, 0, 206, 15, 0, 0, 211, 13, 0, 0, 1, 0, 0, 0, 210, 13, 0, 0, 247, 11, 0, 0, 246, 11, 0, 0, 59, 10, 0, 0, 58, 10, 0, 0, 161, 8, 0, 0, 159, 8, 0, 0, 157, 8, 0, 0, 155, 8, 0, 0, 153, 8, 0, 0, 151, 8, 0, 0, 149, 8, 0, 0, 147, 8, 0, 0, 145, 8, 0, 0, 143, 8, 0, 0, 1, 0, 0, 0, 141, 8, 0, 0, 139, 8, 0, 0, 137, 8, 0, 0, 135, 8, 0, 0, 133, 8, 0, 0, 131, 8, 0, 0, 129, 8, 0, 0, 127, 8, 0, 0, 125, 8, 0, 0, 123, 8, 0, 0, 121, 8, 0, 0, 119, 8, 0, 0, 117, 8, 0, 0, 115, 8, 0, 0, 113, 8, 0, 0, 1, 0, 0, 0, 111, 8, 0, 0, 109, 8, 0, 0, 107, 8, 0, 0, 105, 8, 0, 0, 103, 8], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 51200);
+allocate([101, 8, 0, 0, 99, 8, 0, 0, 97, 8, 0, 0, 95, 8, 0, 0, 93, 8, 0, 0, 91, 8, 0, 0, 89, 8, 0, 0, 87, 8, 0, 0, 85, 8, 0, 0, 83, 8, 0, 0, 1, 0, 0, 0, 81, 8, 0, 0, 79, 8, 0, 0, 77, 8, 0, 0, 75, 8, 0, 0, 73, 8, 0, 0, 71, 8, 0, 0, 69, 8, 0, 0, 67, 8, 0, 0, 64, 8, 0, 0, 65, 8, 0, 0, 204, 9, 0, 0, 205, 9, 0, 0, 120, 11, 0, 0, 121, 11, 0, 0, 68, 13, 0, 0, 1, 0, 0, 0, 69, 13, 0, 0, 48, 15, 0, 0, 49, 15, 0, 0, 60, 17, 0, 0, 61, 17, 0, 0, 104, 19, 0, 0, 105, 19, 0, 0, 180, 21, 0, 0, 181, 21, 0, 0, 32, 24, 0, 0, 33, 24, 0, 0, 172, 26, 0, 0, 173, 26, 0, 0, 88, 29, 0, 0, 89, 29, 0, 0, 1, 0, 0, 0, 36, 32, 0, 0, 37, 32, 0, 0, 16, 35, 0, 0, 17, 35, 0, 0, 28, 38, 0, 0, 29, 38, 0, 0, 72, 41, 0, 0, 73, 41, 0, 0, 148, 44, 0, 0, 149, 44, 0, 0, 0, 48, 0, 0, 1, 48, 0, 0, 140, 51, 0, 0, 141, 51, 0, 0, 56, 55, 0, 0, 1, 0, 0, 0, 57, 55, 0, 0, 4, 59, 0, 0, 5, 59, 0, 0, 240, 62, 0, 0, 241, 62, 0, 0, 252, 66, 0, 0, 253, 66, 0, 0, 40, 71, 0, 0, 41, 71, 0, 0, 116, 75, 0, 0, 117, 75, 0, 0, 65, 77, 0, 0, 64, 77, 0, 0, 229, 72, 0, 0, 228, 72, 0, 0, 169, 68, 0, 0, 168, 68, 0, 0, 141, 64, 0, 0, 140, 64, 0, 0, 145, 60, 0, 0, 144, 60, 0, 0, 181, 56, 0, 0, 0, 0, 0, 0, 180, 56, 0, 0, 249, 52, 0, 0, 248, 52, 0, 0, 93, 49, 0, 0, 92, 49, 0, 0, 225, 45, 0, 0, 224, 45, 0, 0, 133, 42, 0, 0, 132, 42, 0, 0, 73, 39, 0, 0, 72, 39, 0, 0, 45, 36, 0, 0, 44, 36, 0, 0, 49, 33, 0, 0, 48, 33, 0, 0, 0, 0, 0, 0, 85, 30, 0, 0, 84, 30, 0, 0, 153, 27, 0, 0, 152, 27, 0, 0, 253, 24, 0, 0, 252, 24, 0, 0, 129, 22, 0, 0, 128, 22, 0, 0, 37, 20, 0, 0, 36, 20, 0, 0, 233, 17, 0, 0, 232, 17, 0, 0, 205, 15, 0, 0, 204, 15, 0, 0, 209, 13, 0, 0, 0, 0, 0, 0, 208, 13, 0, 0, 245, 11, 0, 0, 244, 11, 0, 0, 56, 10, 0, 0, 54, 10, 0, 0, 52, 10, 0, 0, 50, 10, 0, 0, 48, 10, 0, 0, 46, 10, 0, 0, 44, 10, 0, 0, 42, 10, 0, 0, 40, 10, 0, 0, 38, 10, 0, 0, 36, 10, 0, 0, 34, 10, 0, 0, 0, 0, 0, 0, 32, 10, 0, 0, 30, 10, 0, 0, 28, 10, 0, 0, 26, 10, 0, 0, 24, 10, 0, 0, 22, 10, 0, 0, 20, 10, 0, 0, 18, 10, 0, 0, 16, 10, 0, 0, 14, 10, 0, 0, 12, 10, 0, 0, 10, 10, 0, 0, 8, 10, 0, 0, 6, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 2, 10, 0, 0, 0, 10, 0, 0, 254, 9, 0, 0, 252, 9, 0, 0, 250, 9, 0, 0, 248, 9, 0, 0, 246, 9, 0, 0, 244, 9, 0, 0, 242, 9, 0, 0, 240, 9, 0, 0, 238, 9, 0, 0, 236, 9, 0, 0, 234, 9, 0, 0, 232, 9, 0, 0, 230, 9, 0, 0, 0, 0, 0, 0, 228, 9, 0, 0, 226, 9, 0, 0, 224, 9, 0, 0, 222, 9, 0, 0, 220, 9, 0, 0, 218, 9, 0, 0, 216, 9, 0, 0, 214, 9, 0, 0, 212, 9, 0, 0, 210, 9, 0, 0, 206, 9, 0, 0, 207, 9, 0, 0, 122, 11, 0, 0, 123, 11, 0, 0, 70, 13, 0, 0, 0, 0, 0, 0, 71, 13, 0, 0, 50, 15, 0, 0, 51, 15, 0, 0, 62, 17, 0, 0, 63, 17, 0, 0, 106, 19, 0, 0, 107, 19, 0, 0, 182, 21, 0, 0, 183, 21, 0, 0, 34, 24, 0, 0, 35, 24, 0, 0, 174, 26, 0, 0, 175, 26, 0, 0, 90, 29, 0, 0, 91, 29, 0, 0, 0, 0, 0, 0, 38, 32, 0, 0, 39, 32, 0, 0, 18, 35, 0, 0, 19, 35, 0, 0, 30, 38, 0, 0, 31, 38, 0, 0, 74, 41, 0, 0, 75, 41, 0, 0, 150, 44, 0, 0, 151, 44, 0, 0, 2, 48, 0, 0, 3, 48, 0, 0, 142, 51, 0, 0, 143, 51, 0, 0, 58, 55, 0, 0, 0, 0, 0, 0, 59, 55, 0, 0, 6, 59, 0, 0, 7, 59, 0, 0, 242, 62, 0, 0, 243, 62, 0, 0, 254, 66, 0, 0, 255, 66, 0, 0, 42, 71, 0, 0, 43, 71, 0, 0, 118, 75, 0, 0, 119, 75, 0, 0, 63, 77, 0, 0, 62, 77, 0, 0, 227, 72, 0, 0, 226, 72, 0, 0, 167, 68, 0, 0, 166, 68, 0, 0, 139, 64, 0, 0, 138, 64, 0, 0, 143, 60, 0, 0, 142, 60, 0, 0, 179, 56, 0, 0, 1, 0, 0, 0, 178, 56, 0, 0, 247, 52, 0, 0, 246, 52, 0, 0, 91, 49, 0, 0, 90, 49, 0, 0, 223, 45, 0, 0, 222, 45, 0, 0, 131, 42, 0, 0, 130, 42, 0, 0, 71, 39, 0, 0, 70, 39, 0, 0, 43, 36, 0, 0, 42, 36, 0, 0, 47, 33, 0, 0, 46, 33, 0, 0, 1, 0, 0, 0, 83, 30, 0, 0, 82, 30, 0, 0, 151, 27, 0, 0, 150, 27, 0, 0, 251, 24, 0, 0, 250, 24, 0, 0, 127, 22, 0, 0, 126, 22, 0, 0, 35, 20, 0, 0, 34, 20, 0, 0, 231, 17, 0, 0, 230, 17, 0, 0, 203, 15, 0, 0, 202, 15, 0, 0, 207, 13, 0, 0, 1, 0, 0, 0, 206, 13, 0, 0, 243, 11, 0, 0, 242, 11, 0, 0, 57, 10, 0, 0, 55, 10, 0, 0, 53, 10, 0, 0, 51, 10, 0, 0, 49, 10, 0, 0, 47, 10, 0, 0, 45, 10, 0, 0, 43, 10, 0, 0, 41, 10, 0, 0, 39, 10, 0, 0, 37, 10, 0, 0, 35, 10, 0, 0, 1, 0, 0, 0, 33, 10, 0, 0, 31, 10, 0, 0, 29, 10, 0, 0, 27, 10, 0, 0, 25, 10, 0, 0, 23, 10, 0, 0, 21, 10, 0, 0, 19, 10, 0, 0, 17, 10, 0, 0, 15, 10, 0, 0, 13, 10, 0, 0, 11, 10, 0, 0, 9, 10, 0, 0, 7, 10, 0, 0, 5, 10, 0, 0, 1, 0, 0, 0, 3, 10, 0, 0, 1, 10, 0, 0, 255, 9, 0, 0, 253, 9, 0, 0, 251, 9, 0, 0, 249, 9, 0, 0, 247, 9, 0, 0, 245, 9, 0, 0, 243, 9, 0, 0, 241, 9, 0, 0, 239, 9, 0, 0, 237, 9, 0, 0, 235, 9, 0, 0, 233, 9, 0, 0, 231, 9, 0, 0, 1, 0, 0, 0, 229, 9, 0, 0, 227, 9, 0, 0, 225, 9, 0, 0, 223, 9, 0, 0, 221, 9, 0, 0, 219, 9, 0, 0, 217, 9, 0, 0, 215, 9, 0, 0, 213, 9, 0, 0, 211, 9, 0, 0, 208, 9, 0, 0, 209, 9, 0, 0, 124, 11, 0, 0, 125, 11, 0, 0, 72, 13, 0, 0, 1, 0, 0, 0, 73, 13, 0, 0, 52, 15, 0, 0, 53, 15, 0, 0, 64, 17, 0, 0, 65, 17, 0, 0, 108, 19, 0, 0, 109, 19, 0, 0, 184, 21, 0, 0, 185, 21, 0, 0, 36, 24, 0, 0, 37, 24, 0, 0, 176, 26, 0, 0, 177, 26, 0, 0, 92, 29, 0, 0, 93, 29, 0, 0, 1, 0, 0, 0, 40, 32, 0, 0, 41, 32, 0, 0, 20, 35, 0, 0, 21, 35, 0, 0, 32, 38, 0, 0, 33, 38, 0, 0, 76, 41, 0, 0, 77, 41, 0, 0, 152, 44, 0, 0, 153, 44, 0, 0, 4, 48, 0, 0, 5, 48, 0, 0, 144, 51, 0, 0, 145, 51, 0, 0, 60, 55, 0, 0, 1, 0, 0, 0, 61, 55, 0, 0, 8, 59, 0, 0, 9, 59, 0, 0, 244, 62, 0, 0, 245, 62, 0, 0, 0, 67, 0, 0, 1, 67, 0, 0, 44, 71, 0, 0, 45, 71, 0, 0, 120, 75, 0, 0, 121, 75, 0, 0, 61, 77, 0, 0, 60, 77, 0, 0, 225, 72, 0, 0, 224, 72, 0, 0, 165, 68, 0, 0, 164, 68, 0, 0, 137, 64, 0, 0, 136, 64, 0, 0, 141, 60, 0, 0, 140, 60, 0, 0, 177, 56, 0, 0, 0, 0, 0, 0, 176, 56, 0, 0, 245, 52, 0, 0, 244, 52, 0, 0, 89, 49, 0, 0, 88, 49, 0, 0, 221, 45, 0, 0, 220, 45, 0, 0, 129, 42, 0, 0, 128, 42, 0, 0, 69, 39, 0, 0, 68, 39, 0, 0, 41, 36, 0, 0, 40, 36, 0, 0, 45, 33, 0, 0, 44, 33, 0, 0, 0, 0, 0, 0, 81, 30, 0, 0, 80, 30, 0, 0, 149, 27, 0, 0, 148, 27, 0, 0, 249, 24, 0, 0, 248, 24, 0, 0, 125, 22, 0, 0, 124, 22, 0, 0, 33, 20, 0, 0, 32, 20, 0, 0, 229, 17, 0, 0, 228, 17, 0, 0, 201, 15, 0, 0, 200, 15, 0, 0, 205, 13, 0, 0, 0, 0, 0, 0, 204, 13, 0, 0, 240, 11, 0, 0, 238, 11, 0, 0, 236, 11, 0, 0, 234, 11, 0, 0, 232, 11, 0, 0, 230, 11, 0, 0, 228, 11, 0, 0, 226, 11, 0, 0, 224, 11, 0, 0, 222, 11, 0, 0, 220, 11, 0, 0, 218, 11, 0, 0, 216, 11, 0, 0, 214, 11, 0, 0, 0, 0, 0, 0, 212, 11, 0, 0, 210, 11, 0, 0, 208, 11, 0, 0, 206, 11, 0, 0, 204, 11, 0, 0, 202, 11, 0, 0, 200, 11, 0, 0, 198, 11, 0, 0, 196, 11, 0, 0, 194, 11, 0, 0, 192, 11, 0, 0, 190, 11, 0, 0, 188, 11, 0, 0, 186, 11, 0, 0, 184, 11, 0, 0, 0, 0, 0, 0, 182, 11, 0, 0, 180, 11, 0, 0, 178, 11, 0, 0, 176, 11, 0, 0, 174, 11, 0, 0, 172, 11, 0, 0, 170, 11, 0, 0, 168, 11, 0, 0, 166, 11, 0, 0, 164, 11, 0, 0, 162, 11, 0, 0, 160, 11, 0, 0, 158, 11, 0, 0, 156, 11, 0, 0, 154, 11, 0, 0, 0, 0, 0, 0, 152, 11, 0, 0, 150, 11, 0, 0, 148, 11, 0, 0, 146, 11, 0, 0, 144, 11, 0, 0, 142, 11, 0, 0, 140, 11, 0, 0, 138, 11, 0, 0, 136, 11, 0, 0, 134, 11, 0, 0, 132, 11, 0, 0, 130, 11, 0, 0, 126, 11, 0, 0, 127, 11, 0, 0, 74, 13, 0, 0, 0, 0, 0, 0, 75, 13, 0, 0, 54, 15, 0, 0, 55, 15, 0, 0, 66, 17, 0, 0, 67, 17, 0, 0, 110, 19, 0, 0, 111, 19, 0, 0, 186, 21, 0, 0, 187, 21, 0, 0, 38, 24, 0, 0, 39, 24, 0, 0, 178, 26, 0, 0, 179, 26, 0, 0, 94, 29, 0, 0, 95, 29, 0, 0, 0, 0, 0, 0, 42, 32, 0, 0, 43, 32, 0, 0, 22, 35, 0, 0, 23, 35, 0, 0, 34, 38, 0, 0, 35, 38, 0, 0, 78, 41, 0, 0, 79, 41, 0, 0, 154, 44, 0, 0, 155, 44, 0, 0, 6, 48, 0, 0, 7, 48, 0, 0, 146, 51, 0, 0, 147, 51, 0, 0, 62, 55, 0, 0, 0, 0, 0, 0, 63, 55, 0, 0, 10, 59, 0, 0, 11, 59, 0, 0, 246, 62, 0, 0, 247, 62, 0, 0, 2, 67, 0, 0, 3, 67, 0, 0, 46, 71, 0, 0, 47, 71, 0, 0, 122, 75, 0, 0, 123, 75, 0, 0, 59, 77, 0, 0, 58, 77, 0, 0, 223, 72, 0, 0, 222, 72, 0, 0, 163, 68, 0, 0, 162, 68, 0, 0, 135, 64, 0, 0, 134, 64, 0, 0, 139, 60, 0, 0, 138, 60, 0, 0, 175, 56, 0, 0, 1, 0, 0, 0, 174, 56, 0, 0, 243, 52, 0, 0, 242, 52, 0, 0, 87, 49, 0, 0, 86, 49, 0, 0, 219, 45, 0, 0, 218, 45, 0, 0, 127, 42, 0, 0, 126, 42, 0, 0, 67, 39, 0, 0, 66, 39, 0, 0, 39, 36, 0, 0, 38, 36, 0, 0, 43, 33, 0, 0, 42, 33, 0, 0, 1, 0, 0, 0, 79, 30, 0, 0, 78, 30, 0, 0, 147, 27, 0, 0, 146, 27, 0, 0, 247, 24, 0, 0, 246, 24, 0, 0, 123, 22, 0, 0, 122, 22, 0, 0, 31, 20, 0, 0, 30, 20, 0, 0, 227, 17, 0, 0, 226, 17, 0, 0, 199, 15, 0, 0, 198, 15, 0, 0, 203, 13, 0, 0, 1, 0, 0, 0, 202, 13, 0, 0, 241, 11, 0, 0, 239, 11, 0, 0, 237, 11, 0, 0, 235, 11, 0, 0, 233, 11, 0, 0, 231, 11, 0, 0, 229, 11, 0, 0, 227, 11, 0, 0, 225, 11, 0, 0, 223, 11, 0, 0, 221, 11, 0, 0, 219, 11, 0, 0, 217, 11, 0, 0, 215, 11, 0, 0, 1, 0, 0, 0, 213, 11, 0, 0, 211, 11, 0, 0, 209, 11, 0, 0, 207, 11, 0, 0, 205, 11, 0, 0, 203, 11, 0, 0, 201, 11, 0, 0, 199, 11, 0, 0, 197, 11, 0, 0, 195, 11, 0, 0, 193, 11, 0, 0, 191, 11, 0, 0, 189, 11, 0, 0, 187, 11, 0, 0, 185, 11, 0, 0, 1, 0, 0, 0, 183, 11, 0, 0, 181, 11, 0, 0, 179, 11, 0, 0, 177, 11, 0, 0, 175, 11, 0, 0, 173, 11, 0, 0, 171, 11, 0, 0, 169, 11, 0, 0, 167, 11, 0, 0, 165, 11, 0, 0, 163, 11, 0, 0, 161, 11, 0, 0, 159, 11, 0, 0, 157, 11, 0, 0, 155, 11, 0, 0, 1, 0, 0, 0, 153, 11, 0, 0, 151, 11, 0, 0, 149, 11, 0, 0, 147, 11, 0, 0, 145, 11, 0, 0, 143, 11, 0, 0, 141, 11, 0, 0, 139, 11, 0, 0, 137, 11, 0, 0, 135, 11, 0, 0, 133, 11, 0, 0, 131, 11, 0, 0, 128, 11, 0, 0, 129, 11, 0, 0, 76, 13, 0, 0, 1, 0, 0, 0, 77, 13, 0, 0, 56, 15, 0, 0, 57, 15, 0, 0, 68, 17, 0, 0, 69, 17, 0, 0, 112, 19, 0, 0, 113, 19, 0, 0, 188, 21, 0, 0, 189, 21, 0, 0, 40, 24, 0, 0, 41, 24, 0, 0, 180, 26, 0, 0, 181, 26, 0, 0, 96, 29, 0, 0, 97, 29, 0, 0, 1, 0, 0, 0, 44, 32, 0, 0, 45, 32, 0, 0, 24, 35, 0, 0, 25, 35, 0, 0, 36, 38, 0, 0, 37, 38, 0, 0, 80, 41, 0, 0, 81, 41, 0, 0, 156, 44, 0, 0, 157, 44, 0, 0, 8, 48, 0, 0, 9, 48, 0, 0, 148, 51, 0, 0, 149, 51, 0, 0, 64, 55, 0, 0, 1, 0, 0, 0, 65, 55, 0, 0, 12, 59, 0, 0, 13, 59, 0, 0, 248, 62, 0, 0, 249, 62, 0, 0, 4, 67, 0, 0, 5, 67, 0, 0, 48, 71, 0, 0, 49, 71, 0, 0, 124, 75, 0, 0, 125, 75, 0, 0, 57, 77, 0, 0, 56, 77, 0, 0, 221, 72, 0, 0, 220, 72, 0, 0, 161, 68, 0, 0, 160, 68, 0, 0, 133, 64, 0, 0, 132, 64, 0, 0, 137, 60, 0, 0, 136, 60, 0, 0, 173, 56, 0, 0, 0, 0, 0, 0, 172, 56, 0, 0, 241, 52, 0, 0, 240, 52, 0, 0, 85, 49, 0, 0, 84, 49, 0, 0, 217, 45, 0, 0, 216, 45, 0, 0, 125, 42, 0, 0, 124, 42, 0, 0, 65, 39, 0, 0, 64, 39, 0, 0, 37, 36, 0, 0, 36, 36, 0, 0, 41, 33, 0, 0, 40, 33, 0, 0, 0, 0, 0, 0, 77, 30, 0, 0, 76, 30, 0, 0, 145, 27, 0, 0, 144, 27, 0, 0, 245, 24, 0, 0, 244, 24, 0, 0, 121, 22, 0, 0, 120, 22, 0, 0, 29, 20, 0, 0, 28, 20, 0, 0, 225, 17, 0, 0, 224, 17, 0, 0, 197, 15, 0, 0, 196, 15, 0, 0, 200, 13, 0, 0, 0, 0, 0, 0, 198, 13, 0, 0, 196, 13, 0, 0, 194, 13, 0, 0, 192, 13, 0, 0, 190, 13, 0, 0, 188, 13, 0, 0, 186, 13, 0, 0, 184, 13, 0, 0, 182, 13, 0, 0, 180, 13, 0, 0, 178, 13, 0, 0, 176, 13, 0, 0, 174, 13, 0, 0, 172, 13, 0, 0, 170, 13, 0, 0, 0, 0, 0, 0, 168, 13, 0, 0, 166, 13, 0, 0, 164, 13, 0, 0, 162, 13, 0, 0, 160, 13, 0, 0, 158, 13, 0, 0, 156, 13, 0, 0, 154, 13, 0, 0, 152, 13, 0, 0, 150, 13, 0, 0, 148, 13, 0, 0, 146, 13, 0, 0, 144, 13, 0, 0, 142, 13, 0, 0, 140, 13, 0, 0, 0, 0, 0, 0, 138, 13, 0, 0, 136, 13, 0, 0, 134, 13, 0, 0, 132, 13, 0, 0, 130, 13, 0, 0, 128, 13, 0, 0, 126, 13, 0, 0, 124, 13, 0, 0, 122, 13, 0, 0, 120, 13, 0, 0, 118, 13, 0, 0, 116, 13, 0, 0, 114, 13, 0, 0, 112, 13, 0, 0, 110, 13, 0, 0, 0, 0, 0, 0, 108, 13, 0, 0, 106, 13, 0, 0, 104, 13, 0, 0, 102, 13, 0, 0, 100, 13, 0, 0, 98, 13, 0, 0, 96, 13, 0, 0, 94, 13, 0, 0, 92, 13, 0, 0, 90, 13, 0, 0, 88, 13, 0, 0, 86, 13, 0, 0, 84, 13, 0, 0, 82, 13, 0, 0, 78, 13, 0, 0, 0, 0, 0, 0, 79, 13, 0, 0, 58, 15, 0, 0, 59, 15, 0, 0, 70, 17, 0, 0, 71, 17, 0, 0, 114, 19, 0, 0, 115, 19, 0, 0, 190, 21, 0, 0, 191, 21, 0, 0, 42, 24, 0, 0, 43, 24, 0, 0, 182, 26, 0, 0, 183, 26, 0, 0, 98, 29, 0, 0, 99, 29, 0, 0, 0, 0, 0, 0, 46, 32, 0, 0, 47, 32, 0, 0, 26, 35, 0, 0, 27, 35, 0, 0, 38, 38, 0, 0, 39, 38, 0, 0, 82, 41, 0, 0, 83, 41, 0, 0, 158, 44, 0, 0, 159, 44, 0, 0, 10, 48, 0, 0, 11, 48, 0, 0, 150, 51, 0, 0, 151, 51, 0, 0, 66, 55, 0, 0, 0, 0, 0, 0, 67, 55, 0, 0, 14, 59, 0, 0, 15, 59, 0, 0, 250, 62, 0, 0, 251, 62, 0, 0, 6, 67, 0, 0, 7, 67, 0, 0, 50, 71, 0, 0, 51, 71, 0, 0, 126, 75, 0, 0, 127, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 55, 77, 0, 0, 54, 77, 0, 0, 219, 72, 0, 0, 218, 72, 0, 0, 159, 68, 0, 0, 158, 68, 0, 0, 131, 64, 0, 0, 130, 64, 0, 0, 135, 60, 0, 0, 134, 60, 0, 0, 171, 56, 0, 0, 0, 0, 0, 0, 170, 56, 0, 0, 239, 52, 0, 0, 238, 52, 0, 0, 83, 49, 0, 0, 82, 49, 0, 0, 215, 45, 0, 0, 214, 45, 0, 0, 123, 42, 0, 0, 122, 42, 0, 0, 63, 39, 0, 0, 62, 39, 0, 0, 35, 36, 0, 0, 34, 36, 0, 0, 39, 33, 0, 0, 38, 33, 0, 0, 0, 0, 0, 0, 75, 30, 0, 0, 74, 30, 0, 0, 143, 27, 0, 0, 142, 27, 0, 0, 243, 24, 0, 0, 242, 24, 0, 0, 119, 22, 0, 0, 118, 22, 0, 0, 27, 20, 0, 0, 26, 20, 0, 0, 223, 17, 0, 0, 222, 17, 0, 0, 195, 15, 0, 0, 194, 15, 0, 0, 201, 13, 0, 0, 0, 0, 0, 0, 199, 13, 0, 0, 197, 13, 0, 0, 195, 13, 0, 0, 193, 13, 0, 0, 191, 13, 0, 0, 189, 13, 0, 0, 187, 13, 0, 0, 185, 13, 0, 0, 183, 13, 0, 0, 181, 13, 0, 0, 179, 13, 0, 0, 177, 13, 0, 0, 175, 13, 0, 0, 173, 13, 0, 0, 171, 13, 0, 0, 0, 0, 0, 0, 169, 13, 0, 0, 167, 13, 0, 0, 165, 13, 0, 0, 163, 13, 0, 0, 161, 13, 0, 0, 159, 13, 0, 0, 157, 13, 0, 0, 155, 13, 0, 0, 153, 13, 0, 0, 151, 13, 0, 0, 149, 13, 0, 0, 147, 13, 0, 0, 145, 13, 0, 0, 143, 13, 0, 0, 141, 13, 0, 0, 0, 0, 0, 0, 139, 13, 0, 0, 137, 13, 0, 0, 135, 13, 0, 0, 133, 13, 0, 0, 131, 13, 0, 0, 129, 13, 0, 0, 127, 13, 0, 0, 125, 13, 0, 0, 123, 13, 0, 0, 121, 13, 0, 0, 119, 13, 0, 0, 117, 13, 0, 0, 115, 13, 0, 0, 113, 13, 0, 0, 111, 13, 0, 0, 0, 0, 0, 0, 109, 13, 0, 0, 107, 13, 0, 0, 105, 13, 0, 0, 103, 13, 0, 0, 101, 13, 0, 0, 99, 13, 0, 0, 97, 13, 0, 0, 95, 13, 0, 0, 93, 13, 0, 0, 91, 13, 0, 0, 89, 13, 0, 0, 87, 13, 0, 0, 85, 13, 0, 0, 83, 13, 0, 0, 80, 13, 0, 0, 0, 0, 0, 0, 81, 13, 0, 0, 60, 15, 0, 0, 61, 15, 0, 0, 72, 17, 0, 0, 73, 17, 0, 0, 116, 19, 0, 0, 117, 19, 0, 0, 192, 21, 0, 0, 193, 21, 0, 0, 44, 24, 0, 0, 45, 24, 0, 0, 184, 26, 0, 0, 185, 26, 0, 0, 100, 29, 0, 0, 101, 29, 0, 0, 0, 0, 0, 0, 48, 32, 0, 0, 49, 32, 0, 0, 28, 35, 0, 0, 29, 35, 0, 0, 40, 38, 0, 0, 41, 38, 0, 0, 84, 41, 0, 0, 85, 41, 0, 0, 160, 44, 0, 0, 161, 44, 0, 0, 12, 48, 0, 0, 13, 48, 0, 0, 152, 51, 0, 0, 153, 51, 0, 0, 68, 55, 0, 0, 0, 0, 0, 0, 69, 55, 0, 0, 16, 59, 0, 0, 17, 59, 0, 0, 252, 62, 0, 0, 253, 62, 0, 0, 8, 67, 0, 0, 9, 67, 0, 0, 52, 71, 0, 0, 53, 71, 0, 0, 128, 75, 0, 0, 129, 75, 0, 0, 53, 77, 0, 0, 52, 77, 0, 0, 217, 72, 0, 0, 216, 72, 0, 0, 157, 68, 0, 0, 156, 68, 0, 0, 129, 64, 0, 0, 128, 64, 0, 0, 133, 60, 0, 0, 132, 60, 0, 0, 169, 56, 0, 0, 1, 0, 0, 0, 168, 56, 0, 0, 237, 52, 0, 0, 236, 52, 0, 0, 81, 49, 0, 0, 80, 49, 0, 0, 213, 45, 0, 0, 212, 45, 0, 0, 121, 42, 0, 0, 120, 42, 0, 0, 61, 39, 0, 0, 60, 39, 0, 0, 33, 36, 0, 0, 32, 36, 0, 0, 37, 33, 0, 0, 36, 33, 0, 0, 1, 0, 0, 0, 73, 30, 0, 0, 72, 30, 0, 0, 141, 27, 0, 0, 140, 27, 0, 0, 241, 24, 0, 0, 240, 24, 0, 0, 117, 22, 0, 0, 116, 22, 0, 0, 25, 20, 0, 0, 24, 20, 0, 0, 221, 17, 0, 0, 220, 17, 0, 0, 192, 15, 0, 0, 190, 15, 0, 0, 188, 15, 0, 0, 1, 0, 0, 0, 186, 15, 0, 0, 184, 15, 0, 0, 182, 15, 0, 0, 180, 15, 0, 0, 178, 15, 0, 0, 176, 15, 0, 0, 174, 15, 0, 0, 172, 15, 0, 0, 170, 15, 0, 0, 168, 15, 0, 0, 166, 15, 0, 0, 164, 15, 0, 0, 162, 15, 0, 0, 160, 15, 0, 0, 158, 15, 0, 0, 1, 0, 0, 0, 156, 15, 0, 0, 154, 15, 0, 0, 152, 15, 0, 0, 150, 15, 0, 0, 148, 15, 0, 0, 146, 15, 0, 0, 144, 15, 0, 0, 142, 15, 0, 0, 140, 15, 0, 0, 138, 15, 0, 0, 136, 15, 0, 0, 134, 15, 0, 0, 132, 15, 0, 0, 130, 15, 0, 0, 128, 15, 0, 0, 1, 0, 0, 0, 126, 15, 0, 0, 124, 15, 0, 0, 122, 15, 0, 0, 120, 15, 0, 0, 118, 15, 0, 0, 116, 15, 0, 0, 114, 15, 0, 0, 112, 15, 0, 0, 110, 15, 0, 0, 108, 15, 0, 0, 106, 15, 0, 0, 104, 15, 0, 0, 102, 15, 0, 0, 100, 15, 0, 0, 98, 15, 0, 0, 1, 0, 0, 0, 96, 15, 0, 0, 94, 15, 0, 0, 92, 15, 0, 0, 90, 15, 0, 0, 88, 15, 0, 0, 86, 15, 0, 0, 84, 15, 0, 0, 82, 15, 0, 0, 80, 15, 0, 0, 78, 15, 0, 0, 76, 15, 0, 0, 74, 15, 0, 0, 72, 15, 0, 0, 70, 15, 0, 0, 68, 15, 0, 0, 1, 0, 0, 0, 66, 15, 0, 0, 62, 15, 0, 0, 63, 15, 0, 0, 74, 17, 0, 0, 75, 17, 0, 0, 118, 19, 0, 0, 119, 19, 0, 0, 194, 21, 0, 0, 195, 21, 0, 0, 46, 24, 0, 0, 47, 24, 0, 0, 186, 26, 0, 0, 187, 26, 0, 0, 102, 29, 0, 0, 103, 29, 0, 0, 1, 0, 0, 0, 50, 32, 0, 0, 51, 32, 0, 0, 30, 35, 0, 0, 31, 35, 0, 0, 42, 38, 0, 0, 43, 38, 0, 0, 86, 41, 0, 0, 87, 41, 0, 0, 162, 44, 0, 0, 163, 44, 0, 0, 14, 48, 0, 0, 15, 48, 0, 0, 154, 51, 0, 0, 155, 51, 0, 0, 70, 55, 0, 0, 1, 0, 0, 0, 71, 55, 0, 0, 18, 59, 0, 0, 19, 59, 0, 0, 254, 62, 0, 0, 255, 62, 0, 0, 10, 67, 0, 0, 11, 67, 0, 0, 54, 71, 0, 0, 55, 71, 0, 0, 130, 75, 0, 0, 131, 75, 0, 0, 51, 77, 0, 0, 50, 77, 0, 0, 215, 72, 0, 0, 214, 72, 0, 0, 155, 68, 0, 0, 154, 68, 0, 0, 127, 64, 0, 0, 126, 64, 0, 0, 131, 60, 0, 0, 130, 60, 0, 0, 167, 56, 0, 0, 0, 0, 0, 0, 166, 56, 0, 0, 235, 52, 0, 0, 234, 52, 0, 0, 79, 49, 0, 0, 78, 49, 0, 0, 211, 45, 0, 0, 210, 45, 0, 0, 119, 42, 0, 0, 118, 42, 0, 0, 59, 39, 0, 0, 58, 39, 0, 0, 31, 36, 0, 0, 30, 36, 0, 0, 35, 33, 0, 0, 34, 33, 0, 0, 0, 0, 0, 0, 71, 30, 0, 0, 70, 30, 0, 0, 139, 27, 0, 0, 138, 27, 0, 0, 239, 24, 0, 0, 238, 24, 0, 0, 115, 22, 0, 0, 114, 22, 0, 0, 23, 20, 0, 0, 22, 20, 0, 0, 219, 17, 0, 0, 218, 17, 0, 0, 193, 15, 0, 0, 191, 15, 0, 0, 189, 15, 0, 0, 0, 0, 0, 0, 187, 15, 0, 0, 185, 15, 0, 0, 183, 15, 0, 0, 181, 15, 0, 0, 179, 15, 0, 0, 177, 15, 0, 0, 175, 15, 0, 0, 173, 15, 0, 0, 171, 15, 0, 0, 169, 15, 0, 0, 167, 15, 0, 0, 165, 15, 0, 0, 163, 15, 0, 0, 161, 15, 0, 0, 159, 15, 0, 0, 0, 0, 0, 0, 157, 15, 0, 0, 155, 15, 0, 0, 153, 15, 0, 0, 151, 15, 0, 0, 149, 15, 0, 0, 147, 15, 0, 0, 145, 15, 0, 0, 143, 15, 0, 0, 141, 15, 0, 0, 139, 15, 0, 0, 137, 15, 0, 0, 135, 15, 0, 0, 133, 15, 0, 0, 131, 15, 0, 0, 129, 15, 0, 0, 0, 0, 0, 0, 127, 15, 0, 0, 125, 15, 0, 0, 123, 15, 0, 0, 121, 15, 0, 0, 119, 15, 0, 0, 117, 15, 0, 0, 115, 15, 0, 0, 113, 15, 0, 0, 111, 15, 0, 0, 109, 15, 0, 0, 107, 15, 0, 0, 105, 15, 0, 0, 103, 15, 0, 0, 101, 15, 0, 0, 99, 15, 0, 0, 0, 0, 0, 0, 97, 15, 0, 0, 95, 15, 0, 0, 93, 15, 0, 0, 91, 15, 0, 0, 89, 15, 0, 0, 87, 15, 0, 0, 85, 15, 0, 0, 83, 15, 0, 0, 81, 15, 0, 0, 79, 15, 0, 0, 77, 15, 0, 0, 75, 15, 0, 0, 73, 15, 0, 0, 71, 15, 0, 0, 69, 15, 0, 0, 0, 0, 0, 0, 67, 15, 0, 0, 64, 15, 0, 0, 65, 15, 0, 0, 76, 17, 0, 0, 77, 17, 0, 0, 120, 19, 0, 0, 121, 19, 0, 0, 196, 21, 0, 0, 197, 21, 0, 0, 48, 24, 0, 0, 49, 24, 0, 0, 188, 26, 0, 0, 189, 26, 0, 0, 104, 29, 0, 0, 105, 29, 0, 0, 0, 0, 0, 0, 52, 32, 0, 0, 53, 32, 0, 0, 32, 35, 0, 0, 33, 35, 0, 0, 44, 38, 0, 0, 45, 38, 0, 0, 88, 41, 0, 0, 89, 41, 0, 0, 164, 44, 0, 0, 165, 44, 0, 0, 16, 48, 0, 0, 17, 48, 0, 0, 156, 51, 0, 0, 157, 51, 0, 0, 72, 55, 0, 0, 0, 0, 0, 0, 73, 55, 0, 0, 20, 59, 0, 0, 21, 59, 0, 0, 0, 63, 0, 0, 1, 63, 0, 0, 12, 67, 0, 0, 13, 67, 0, 0, 56, 71, 0, 0, 57, 71, 0, 0, 132, 75, 0, 0, 133, 75, 0, 0, 49, 77, 0, 0, 48, 77, 0, 0, 213, 72, 0, 0, 212, 72, 0, 0, 153, 68, 0, 0, 152, 68, 0, 0, 125, 64, 0, 0, 124, 64, 0, 0, 129, 60, 0, 0, 128, 60, 0, 0, 165, 56, 0, 0, 1, 0, 0, 0, 164, 56, 0, 0, 233, 52, 0, 0, 232, 52, 0, 0, 77, 49, 0, 0, 76, 49, 0, 0, 209, 45, 0, 0, 208, 45, 0, 0, 117, 42, 0, 0, 116, 42, 0, 0, 57, 39, 0, 0, 56, 39, 0, 0, 29, 36, 0, 0, 28, 36, 0, 0, 33, 33, 0, 0, 32, 33, 0, 0, 1, 0, 0, 0, 69, 30, 0, 0, 68, 30, 0, 0, 137, 27, 0, 0, 136, 27, 0, 0, 237, 24, 0, 0, 236, 24, 0, 0, 113, 22, 0, 0, 112, 22, 0, 0, 21, 20, 0, 0, 20, 20, 0, 0, 216, 17, 0, 0, 214, 17, 0, 0, 212, 17, 0, 0, 210, 17, 0, 0, 208, 17, 0, 0, 1, 0, 0, 0, 206, 17, 0, 0, 204, 17, 0, 0, 202, 17, 0, 0, 200, 17, 0, 0, 198, 17, 0, 0, 196, 17, 0, 0, 194, 17, 0, 0, 192, 17, 0, 0, 190, 17, 0, 0, 188, 17, 0, 0, 186, 17, 0, 0, 184, 17, 0, 0, 182, 17, 0, 0, 180, 17, 0, 0, 178, 17, 0, 0, 1, 0, 0, 0, 176, 17, 0, 0, 174, 17, 0, 0, 172, 17, 0, 0, 170, 17, 0, 0, 168, 17, 0, 0, 166, 17, 0, 0, 164, 17, 0, 0, 162, 17, 0, 0, 160, 17, 0, 0, 158, 17, 0, 0, 156, 17, 0, 0, 154, 17, 0, 0, 152, 17, 0, 0, 150, 17, 0, 0, 148, 17, 0, 0, 1, 0, 0, 0, 146, 17, 0, 0, 144, 17, 0, 0, 142, 17, 0, 0, 140, 17, 0, 0, 138, 17, 0, 0, 136, 17, 0, 0, 134, 17, 0, 0, 132, 17, 0, 0, 130, 17, 0, 0, 128, 17, 0, 0, 126, 17, 0, 0, 124, 17, 0, 0, 122, 17, 0, 0, 120, 17, 0, 0, 118, 17, 0, 0, 1, 0, 0, 0, 116, 17, 0, 0, 114, 17, 0, 0, 112, 17, 0, 0, 110, 17, 0, 0, 108, 17, 0, 0, 106, 17, 0, 0, 104, 17, 0, 0, 102, 17, 0, 0, 100, 17, 0, 0, 98, 17, 0, 0, 96, 17, 0, 0, 94, 17, 0, 0, 92, 17, 0, 0, 90, 17, 0, 0, 88, 17, 0, 0, 1, 0, 0, 0, 86, 17, 0, 0, 84, 17, 0, 0, 82, 17, 0, 0, 78, 17, 0, 0, 79, 17, 0, 0, 122, 19, 0, 0, 123, 19, 0, 0, 198, 21, 0, 0, 199, 21, 0, 0, 50, 24, 0, 0, 51, 24, 0, 0, 190, 26, 0, 0, 191, 26, 0, 0, 106, 29, 0, 0, 107, 29, 0, 0, 1, 0, 0, 0, 54, 32, 0, 0, 55, 32, 0, 0, 34, 35, 0, 0, 35, 35, 0, 0, 46, 38, 0, 0, 47, 38, 0, 0, 90, 41, 0, 0, 91, 41, 0, 0, 166, 44, 0, 0, 167, 44, 0, 0, 18, 48, 0, 0, 19, 48, 0, 0, 158, 51, 0, 0, 159, 51, 0, 0, 74, 55, 0, 0, 1, 0, 0, 0, 75, 55, 0, 0, 22, 59, 0, 0, 23, 59, 0, 0, 2, 63, 0, 0, 3, 63, 0, 0, 14, 67, 0, 0, 15, 67, 0, 0, 58, 71, 0, 0, 59, 71, 0, 0, 134, 75, 0, 0, 135, 75, 0, 0, 47, 77, 0, 0, 46, 77, 0, 0, 211, 72, 0, 0, 210, 72, 0, 0, 151, 68, 0, 0, 150, 68, 0, 0, 123, 64, 0, 0, 122, 64, 0, 0, 127, 60, 0, 0, 126, 60, 0, 0, 163, 56, 0, 0, 0, 0, 0, 0, 162, 56, 0, 0, 231, 52, 0, 0, 230, 52, 0, 0, 75, 49, 0, 0, 74, 49, 0, 0, 207, 45, 0, 0, 206, 45, 0, 0, 115, 42, 0, 0, 114, 42, 0, 0, 55, 39, 0, 0, 54, 39, 0, 0, 27, 36, 0, 0, 26, 36, 0, 0, 31, 33, 0, 0, 30, 33, 0, 0, 0, 0, 0, 0, 67, 30, 0, 0, 66, 30, 0, 0, 135, 27, 0, 0, 134, 27, 0, 0, 235, 24, 0, 0, 234, 24, 0, 0, 111, 22, 0, 0, 110, 22, 0, 0, 19, 20, 0, 0, 18, 20, 0, 0, 217, 17, 0, 0, 215, 17, 0, 0, 213, 17, 0, 0, 211, 17, 0, 0, 209, 17, 0, 0, 0, 0, 0, 0, 207, 17, 0, 0, 205, 17, 0, 0, 203, 17, 0, 0, 201, 17, 0, 0, 199, 17, 0, 0, 197, 17, 0, 0, 195, 17, 0, 0, 193, 17, 0, 0, 191, 17, 0, 0, 189, 17, 0, 0, 187, 17, 0, 0, 185, 17, 0, 0, 183, 17, 0, 0, 181, 17, 0, 0, 179, 17, 0, 0, 0, 0, 0, 0, 177, 17, 0, 0, 175, 17, 0, 0, 173, 17, 0, 0, 171, 17, 0, 0, 169, 17, 0, 0, 167, 17, 0, 0, 165, 17, 0, 0, 163, 17, 0, 0, 161, 17, 0, 0, 159, 17, 0, 0, 157, 17, 0, 0, 155, 17, 0, 0, 153, 17, 0, 0, 151, 17, 0, 0, 149, 17, 0, 0, 0, 0, 0, 0, 147, 17, 0, 0, 145, 17, 0, 0, 143, 17, 0, 0, 141, 17, 0, 0, 139, 17, 0, 0, 137, 17, 0, 0, 135, 17, 0, 0, 133, 17, 0, 0, 131, 17, 0, 0, 129, 17, 0, 0, 127, 17, 0, 0, 125, 17, 0, 0, 123, 17, 0, 0, 121, 17, 0, 0, 119, 17, 0, 0, 0, 0, 0, 0, 117, 17, 0, 0, 115, 17, 0, 0, 113, 17, 0, 0, 111, 17, 0, 0, 109, 17, 0, 0, 107, 17, 0, 0, 105, 17, 0, 0, 103, 17, 0, 0, 101, 17, 0, 0, 99, 17, 0, 0, 97, 17, 0, 0, 95, 17, 0, 0, 93, 17, 0, 0, 91, 17, 0, 0, 89, 17, 0, 0, 0, 0, 0, 0, 87, 17, 0, 0, 85, 17, 0, 0, 83, 17, 0, 0, 80, 17, 0, 0, 81, 17, 0, 0, 124, 19, 0, 0, 125, 19, 0, 0, 200, 21, 0, 0, 201, 21, 0, 0, 52, 24, 0, 0, 53, 24, 0, 0, 192, 26, 0, 0, 193, 26, 0, 0, 108, 29, 0, 0, 109, 29, 0, 0, 0, 0, 0, 0, 56, 32, 0, 0, 57, 32, 0, 0, 36, 35, 0, 0, 37, 35, 0, 0, 48, 38, 0, 0, 49, 38, 0, 0, 92, 41, 0, 0, 93, 41, 0, 0, 168, 44, 0, 0, 169, 44, 0, 0, 20, 48, 0, 0, 21, 48, 0, 0, 160, 51, 0, 0, 161, 51, 0, 0, 76, 55, 0, 0, 0, 0, 0, 0, 77, 55, 0, 0, 24, 59, 0, 0, 25, 59, 0, 0, 4, 63, 0, 0, 5, 63, 0, 0, 16, 67, 0, 0, 17, 67, 0, 0, 60, 71, 0, 0, 61, 71, 0, 0, 136, 75, 0, 0, 137, 75, 0, 0, 45, 77, 0, 0, 44, 77, 0, 0, 209, 72, 0, 0, 208, 72, 0, 0, 149, 68, 0, 0, 148, 68, 0, 0, 121, 64, 0, 0, 120, 64, 0, 0, 125, 60, 0, 0, 124, 60, 0, 0, 161, 56, 0, 0, 1, 0, 0, 0, 160, 56, 0, 0, 229, 52, 0, 0, 228, 52, 0, 0, 73, 49, 0, 0, 72, 49, 0, 0, 205, 45, 0, 0, 204, 45, 0, 0, 113, 42, 0, 0, 112, 42, 0, 0, 53, 39, 0, 0, 52, 39, 0, 0, 25, 36, 0, 0, 24, 36, 0, 0, 29, 33, 0, 0, 28, 33, 0, 0, 1, 0, 0, 0, 65, 30, 0, 0, 64, 30, 0, 0, 133, 27, 0, 0, 132, 27, 0, 0, 233, 24, 0, 0, 232, 24, 0, 0, 109, 22, 0, 0, 108, 22, 0, 0, 16, 20, 0, 0, 14, 20, 0, 0, 12, 20, 0, 0, 10, 20, 0, 0, 8, 20, 0, 0, 6, 20, 0, 0, 4, 20, 0, 0, 1, 0, 0, 0, 2, 20, 0, 0, 0, 20, 0, 0, 254, 19, 0, 0, 252, 19, 0, 0, 250, 19, 0, 0, 248, 19, 0, 0, 246, 19, 0, 0, 244, 19, 0, 0, 242, 19, 0, 0, 240, 19, 0, 0, 238, 19, 0, 0, 236, 19, 0, 0, 234, 19, 0, 0, 232, 19, 0, 0, 230, 19, 0, 0, 1, 0, 0, 0, 228, 19, 0, 0, 226, 19, 0, 0, 224, 19, 0, 0, 222, 19, 0, 0, 220, 19, 0, 0, 218, 19, 0, 0, 216, 19, 0, 0, 214, 19, 0, 0, 212, 19, 0, 0, 210, 19, 0, 0, 208, 19, 0, 0, 206, 19, 0, 0, 204, 19, 0, 0, 202, 19, 0, 0, 200, 19, 0, 0, 1, 0, 0, 0, 198, 19, 0, 0, 196, 19, 0, 0, 194, 19, 0, 0, 192, 19, 0, 0, 190, 19, 0, 0, 188, 19, 0, 0, 186, 19, 0, 0, 184, 19, 0, 0, 182, 19, 0, 0, 180, 19, 0, 0, 178, 19, 0, 0, 176, 19, 0, 0, 174, 19, 0, 0, 172, 19, 0, 0, 170, 19, 0, 0, 1, 0, 0, 0, 168, 19, 0, 0, 166, 19, 0, 0, 164, 19, 0, 0, 162, 19, 0, 0, 160, 19, 0, 0, 158, 19, 0, 0, 156, 19, 0, 0, 154, 19, 0, 0, 152, 19, 0, 0, 150, 19, 0, 0, 148, 19, 0, 0, 146, 19, 0, 0, 144, 19, 0, 0, 142, 19, 0, 0, 140, 19, 0, 0, 1, 0, 0, 0, 138, 19, 0, 0, 136, 19, 0, 0, 134, 19, 0, 0, 132, 19, 0, 0, 130, 19, 0, 0, 126, 19, 0, 0, 127, 19, 0, 0, 202, 21, 0, 0, 203, 21, 0, 0, 54, 24, 0, 0, 55, 24, 0, 0, 194, 26, 0, 0, 195, 26, 0, 0, 110, 29, 0, 0, 111, 29, 0, 0, 1, 0, 0, 0, 58, 32, 0, 0, 59, 32, 0, 0, 38, 35, 0, 0, 39, 35, 0, 0, 50, 38, 0, 0, 51, 38, 0, 0, 94, 41, 0, 0, 95, 41, 0, 0, 170, 44, 0, 0, 171, 44, 0, 0, 22, 48, 0, 0, 23, 48, 0, 0, 162, 51, 0, 0, 163, 51, 0, 0, 78, 55, 0, 0, 1, 0, 0, 0, 79, 55, 0, 0, 26, 59, 0, 0, 27, 59, 0, 0, 6, 63, 0, 0, 7, 63, 0, 0, 18, 67, 0, 0, 19, 67, 0, 0, 62, 71, 0, 0, 63, 71, 0, 0, 138, 75, 0, 0, 139, 75, 0, 0, 43, 77, 0, 0, 42, 77, 0, 0, 207, 72, 0, 0, 206, 72, 0, 0, 147, 68, 0, 0, 146, 68, 0, 0, 119, 64, 0, 0, 118, 64, 0, 0, 123, 60, 0, 0, 122, 60, 0, 0, 159, 56, 0, 0, 0, 0, 0, 0, 158, 56, 0, 0, 227, 52, 0, 0, 226, 52, 0, 0, 71, 49, 0, 0, 70, 49, 0, 0, 203, 45, 0, 0, 202, 45, 0, 0, 111, 42, 0, 0, 110, 42, 0, 0, 51, 39, 0, 0, 50, 39, 0, 0, 23, 36, 0, 0, 22, 36, 0, 0, 27, 33, 0, 0, 26, 33, 0, 0, 0, 0, 0, 0, 63, 30, 0, 0, 62, 30, 0, 0, 131, 27, 0, 0, 130, 27, 0, 0, 231, 24, 0, 0, 230, 24, 0, 0, 107, 22, 0, 0, 106, 22, 0, 0, 17, 20, 0, 0, 15, 20, 0, 0, 13, 20, 0, 0, 11, 20, 0, 0, 9, 20, 0, 0, 7, 20, 0, 0, 5, 20, 0, 0, 0, 0, 0, 0, 3, 20, 0, 0, 1, 20, 0, 0, 255, 19, 0, 0, 253, 19, 0, 0, 251, 19, 0, 0, 249, 19, 0, 0, 247, 19, 0, 0, 245, 19, 0, 0, 243, 19, 0, 0, 241, 19, 0, 0, 239, 19, 0, 0, 237, 19, 0, 0, 235, 19, 0, 0, 233, 19, 0, 0, 231, 19, 0, 0, 0, 0, 0, 0, 229, 19, 0, 0, 227, 19, 0, 0, 225, 19, 0, 0, 223, 19, 0, 0, 221, 19, 0, 0, 219, 19, 0, 0, 217, 19, 0, 0, 215, 19, 0, 0, 213, 19, 0, 0, 211, 19, 0, 0, 209, 19, 0, 0, 207, 19, 0, 0, 205, 19, 0, 0, 203, 19, 0, 0, 201, 19, 0, 0, 0, 0, 0, 0, 199, 19, 0, 0, 197, 19, 0, 0, 195, 19, 0, 0, 193, 19, 0, 0, 191, 19, 0, 0, 189, 19, 0, 0, 187, 19, 0, 0, 185, 19, 0, 0, 183, 19, 0, 0, 181, 19, 0, 0, 179, 19, 0, 0, 177, 19, 0, 0, 175, 19, 0, 0, 173, 19, 0, 0, 171, 19, 0, 0, 0, 0, 0, 0, 169, 19, 0, 0, 167, 19, 0, 0, 165, 19, 0, 0, 163, 19, 0, 0, 161, 19, 0, 0, 159, 19, 0, 0, 157, 19, 0, 0, 155, 19, 0, 0, 153, 19, 0, 0, 151, 19, 0, 0, 149, 19, 0, 0, 147, 19, 0, 0, 145, 19, 0, 0, 143, 19, 0, 0, 141, 19, 0, 0, 0, 0, 0, 0, 139, 19, 0, 0, 137, 19, 0, 0, 135, 19, 0, 0, 133, 19, 0, 0, 131, 19, 0, 0, 128, 19, 0, 0, 129, 19, 0, 0, 204, 21, 0, 0, 205, 21, 0, 0, 56, 24, 0, 0, 57, 24, 0, 0, 196, 26, 0, 0, 197, 26, 0, 0, 112, 29, 0, 0, 113, 29, 0, 0, 0, 0, 0, 0, 60, 32, 0, 0, 61, 32, 0, 0, 40, 35, 0, 0, 41, 35, 0, 0, 52, 38, 0, 0, 53, 38, 0, 0, 96, 41, 0, 0, 97, 41, 0, 0, 172, 44, 0, 0, 173, 44, 0, 0, 24, 48, 0, 0, 25, 48, 0, 0, 164, 51, 0, 0, 165, 51, 0, 0, 80, 55, 0, 0, 0, 0, 0, 0, 81, 55, 0, 0, 28, 59, 0, 0, 29, 59, 0, 0, 8, 63, 0, 0, 9, 63, 0, 0, 20, 67, 0, 0, 21, 67, 0, 0, 64, 71, 0, 0, 65, 71, 0, 0, 140, 75, 0, 0, 141, 75, 0, 0, 41, 77, 0, 0, 40, 77, 0, 0, 205, 72, 0, 0, 204, 72, 0, 0, 145, 68, 0, 0, 144, 68, 0, 0, 117, 64, 0, 0, 116, 64, 0, 0, 121, 60, 0, 0, 120, 60, 0, 0, 157, 56, 0, 0, 1, 0, 0, 0, 156, 56, 0, 0, 225, 52, 0, 0, 224, 52, 0, 0, 69, 49, 0, 0, 68, 49, 0, 0, 201, 45, 0, 0, 200, 45, 0, 0, 109, 42, 0, 0, 108, 42, 0, 0, 49, 39, 0, 0, 48, 39, 0, 0, 21, 36, 0, 0, 20, 36, 0, 0, 25, 33, 0, 0, 24, 33, 0, 0, 1, 0, 0, 0, 61, 30, 0, 0, 60, 30, 0, 0, 129, 27, 0, 0, 128, 27, 0, 0, 229, 24, 0, 0, 228, 24, 0, 0, 104, 22, 0, 0, 102, 22, 0, 0, 100, 22, 0, 0, 98, 22, 0, 0, 96, 22, 0, 0, 94, 22, 0, 0, 92, 22, 0, 0, 90, 22, 0, 0, 88, 22, 0, 0, 1, 0, 0, 0, 86, 22, 0, 0, 84, 22, 0, 0, 82, 22, 0, 0, 80, 22, 0, 0, 78, 22, 0, 0, 76, 22, 0, 0, 74, 22, 0, 0, 72, 22, 0, 0, 70, 22, 0, 0, 68, 22, 0, 0, 66, 22, 0, 0, 64, 22, 0, 0, 62, 22, 0, 0, 60, 22, 0, 0, 58, 22, 0, 0, 1, 0, 0, 0, 56, 22, 0, 0, 54, 22, 0, 0, 52, 22, 0, 0, 50, 22, 0, 0, 48, 22, 0, 0, 46, 22, 0, 0, 44, 22, 0, 0, 42, 22, 0, 0, 40, 22, 0, 0, 38, 22, 0, 0, 36, 22, 0, 0, 34, 22, 0, 0, 32, 22, 0, 0, 30, 22, 0, 0, 28, 22, 0, 0, 1, 0, 0, 0, 26, 22, 0, 0, 24, 22, 0, 0, 22, 22, 0, 0, 20, 22, 0, 0, 18, 22, 0, 0, 16, 22, 0, 0, 14, 22, 0, 0, 12, 22, 0, 0, 10, 22, 0, 0, 8, 22, 0, 0, 6, 22, 0, 0, 4, 22, 0, 0, 2, 22, 0, 0, 0, 22, 0, 0, 254, 21, 0, 0, 1, 0, 0, 0, 252, 21, 0, 0, 250, 21, 0, 0, 248, 21, 0, 0, 246, 21, 0, 0, 244, 21, 0, 0, 242, 21, 0, 0, 240, 21, 0, 0, 238, 21, 0, 0, 236, 21, 0, 0, 234, 21, 0, 0, 232, 21, 0, 0, 230, 21, 0, 0, 228, 21, 0, 0, 226, 21, 0, 0, 224, 21, 0, 0, 1, 0, 0, 0, 222, 21, 0, 0, 220, 21, 0, 0, 218, 21, 0, 0, 216, 21, 0, 0, 214, 21, 0, 0, 212, 21, 0, 0, 210, 21, 0, 0, 206, 21, 0, 0, 207, 21, 0, 0, 58, 24, 0, 0, 59, 24, 0, 0, 198, 26, 0, 0, 199, 26, 0, 0, 114, 29, 0, 0, 115, 29, 0, 0, 1, 0, 0, 0, 62, 32, 0, 0, 63, 32, 0, 0, 42, 35, 0, 0, 43, 35, 0, 0, 54, 38, 0, 0, 55, 38, 0, 0, 98, 41, 0, 0, 99, 41, 0, 0, 174, 44, 0, 0, 175, 44, 0, 0, 26, 48, 0, 0, 27, 48, 0, 0, 166, 51, 0, 0, 167, 51, 0, 0, 82, 55, 0, 0, 1, 0, 0, 0, 83, 55, 0, 0, 30, 59, 0, 0, 31, 59, 0, 0, 10, 63, 0, 0, 11, 63, 0, 0, 22, 67, 0, 0, 23, 67, 0, 0, 66, 71, 0, 0, 67, 71, 0, 0, 142, 75, 0, 0, 143, 75, 0, 0, 39, 77, 0, 0, 38, 77, 0, 0, 203, 72, 0, 0, 202, 72, 0, 0, 143, 68, 0, 0, 142, 68, 0, 0, 115, 64, 0, 0, 114, 64, 0, 0, 119, 60, 0, 0, 118, 60, 0, 0, 155, 56, 0, 0, 0, 0, 0, 0, 154, 56, 0, 0, 223, 52, 0, 0, 222, 52, 0, 0, 67, 49, 0, 0, 66, 49, 0, 0, 199, 45, 0, 0, 198, 45, 0, 0, 107, 42, 0, 0, 106, 42, 0, 0, 47, 39, 0, 0, 46, 39, 0, 0, 19, 36, 0, 0, 18, 36, 0, 0, 23, 33, 0, 0, 22, 33, 0, 0, 0, 0, 0, 0, 59, 30, 0, 0, 58, 30, 0, 0, 127, 27, 0, 0, 126, 27, 0, 0, 227, 24, 0, 0, 226, 24, 0, 0, 105, 22, 0, 0, 103, 22, 0, 0, 101, 22, 0, 0, 99, 22, 0, 0, 97, 22, 0, 0, 95, 22, 0, 0, 93, 22, 0, 0, 91, 22, 0, 0, 89, 22, 0, 0, 0, 0, 0, 0, 87, 22, 0, 0, 85, 22, 0, 0, 83, 22, 0, 0, 81, 22, 0, 0, 79, 22, 0, 0, 77, 22, 0, 0, 75, 22, 0, 0, 73, 22, 0, 0, 71, 22, 0, 0, 69, 22, 0, 0, 67, 22, 0, 0, 65, 22, 0, 0, 63, 22, 0, 0, 61, 22, 0, 0, 59, 22, 0, 0, 0, 0, 0, 0, 57, 22, 0, 0, 55, 22, 0, 0, 53, 22, 0, 0, 51, 22, 0, 0, 49, 22, 0, 0, 47, 22, 0, 0, 45, 22, 0, 0, 43, 22, 0, 0, 41, 22, 0, 0, 39, 22, 0, 0, 37, 22, 0, 0, 35, 22, 0, 0, 33, 22, 0, 0, 31, 22, 0, 0, 29, 22, 0, 0, 0, 0, 0, 0, 27, 22, 0, 0, 25, 22, 0, 0, 23, 22, 0, 0, 21, 22, 0, 0, 19, 22, 0, 0, 17, 22, 0, 0, 15, 22, 0, 0, 13, 22, 0, 0, 11, 22, 0, 0, 9, 22, 0, 0, 7, 22, 0, 0, 5, 22, 0, 0, 3, 22, 0, 0, 1, 22, 0, 0, 255, 21, 0, 0, 0, 0, 0, 0, 253, 21, 0, 0, 251, 21, 0, 0, 249, 21, 0, 0, 247, 21, 0, 0, 245, 21, 0, 0, 243, 21, 0, 0, 241, 21, 0, 0, 239, 21, 0, 0, 237, 21, 0, 0, 235, 21, 0, 0, 233, 21, 0, 0, 231, 21, 0, 0, 229, 21, 0, 0, 227, 21, 0, 0, 225, 21, 0, 0, 0, 0, 0, 0, 223, 21, 0, 0, 221, 21, 0, 0, 219, 21, 0, 0, 217, 21, 0, 0, 215, 21, 0, 0, 213, 21, 0, 0, 211, 21, 0, 0, 208, 21, 0, 0, 209, 21, 0, 0, 60, 24, 0, 0, 61, 24, 0, 0, 200, 26, 0, 0, 201, 26, 0, 0, 116, 29, 0, 0, 117, 29, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 65, 32, 0, 0, 44, 35, 0, 0, 45, 35, 0, 0, 56, 38, 0, 0, 57, 38, 0, 0, 100, 41, 0, 0, 101, 41, 0, 0, 176, 44, 0, 0, 177, 44, 0, 0, 28, 48, 0, 0, 29, 48, 0, 0, 168, 51, 0, 0, 169, 51, 0, 0, 84, 55, 0, 0, 0, 0, 0, 0, 85, 55, 0, 0, 32, 59, 0, 0, 33, 59, 0, 0, 12, 63, 0, 0, 13, 63, 0, 0, 24, 67, 0, 0, 25, 67, 0, 0, 68, 71, 0, 0, 69, 71, 0, 0, 144, 75, 0, 0, 145, 75, 0, 0, 37, 77, 0, 0, 36, 77, 0, 0, 201, 72, 0, 0, 200, 72, 0, 0, 141, 68, 0, 0, 140, 68, 0, 0, 113, 64, 0, 0, 112, 64, 0, 0, 117, 60, 0, 0, 116, 60, 0, 0, 153, 56, 0, 0, 1, 0, 0, 0, 152, 56, 0, 0, 221, 52, 0, 0, 220, 52, 0, 0, 65, 49, 0, 0, 64, 49, 0, 0, 197, 45, 0, 0, 196, 45, 0, 0, 105, 42, 0, 0, 104, 42, 0, 0, 45, 39, 0, 0, 44, 39, 0, 0, 17, 36, 0, 0, 16, 36, 0, 0, 21, 33, 0, 0, 20, 33, 0, 0, 1, 0, 0, 0, 57, 30, 0, 0, 56, 30, 0, 0, 125, 27, 0, 0, 124, 27, 0, 0, 224, 24, 0, 0, 222, 24, 0, 0, 220, 24, 0, 0, 218, 24, 0, 0, 216, 24, 0, 0, 214, 24, 0, 0, 212, 24, 0, 0, 210, 24, 0, 0, 208, 24, 0, 0, 206, 24, 0, 0, 204, 24, 0, 0, 1, 0, 0, 0, 202, 24, 0, 0, 200, 24, 0, 0, 198, 24, 0, 0, 196, 24, 0, 0, 194, 24, 0, 0, 192, 24, 0, 0, 190, 24, 0, 0, 188, 24, 0, 0, 186, 24, 0, 0, 184, 24, 0, 0, 182, 24, 0, 0, 180, 24, 0, 0, 178, 24, 0, 0, 176, 24, 0, 0, 174, 24, 0, 0, 1, 0, 0, 0, 172, 24, 0, 0, 170, 24, 0, 0, 168, 24, 0, 0, 166, 24, 0, 0, 164, 24, 0, 0, 162, 24, 0, 0, 160, 24, 0, 0, 158, 24, 0, 0, 156, 24, 0, 0, 154, 24, 0, 0, 152, 24, 0, 0, 150, 24, 0, 0, 148, 24, 0, 0, 146, 24, 0, 0, 144, 24, 0, 0, 1, 0, 0, 0, 142, 24, 0, 0, 140, 24, 0, 0, 138, 24, 0, 0, 136, 24, 0, 0, 134, 24, 0, 0, 132, 24, 0, 0, 130, 24, 0, 0, 128, 24, 0, 0, 126, 24, 0, 0, 124, 24, 0, 0, 122, 24, 0, 0, 120, 24, 0, 0, 118, 24, 0, 0, 116, 24, 0, 0, 114, 24, 0, 0, 1, 0, 0, 0, 112, 24, 0, 0, 110, 24, 0, 0, 108, 24, 0, 0, 106, 24, 0, 0, 104, 24, 0, 0, 102, 24, 0, 0, 100, 24, 0, 0, 98, 24, 0, 0, 96, 24, 0, 0, 94, 24, 0, 0, 92, 24, 0, 0, 90, 24, 0, 0, 88, 24, 0, 0, 86, 24, 0, 0, 84, 24, 0, 0, 1, 0, 0, 0, 82, 24, 0, 0, 80, 24, 0, 0, 78, 24, 0, 0, 76, 24, 0, 0, 74, 24, 0, 0, 72, 24, 0, 0, 70, 24, 0, 0, 68, 24, 0, 0, 66, 24, 0, 0, 62, 24, 0, 0, 63, 24, 0, 0, 202, 26, 0, 0, 203, 26, 0, 0, 118, 29, 0, 0, 119, 29, 0, 0, 1, 0, 0, 0, 66, 32, 0, 0, 67, 32, 0, 0, 46, 35, 0, 0, 47, 35, 0, 0, 58, 38, 0, 0, 59, 38, 0, 0, 102, 41, 0, 0, 103, 41, 0, 0, 178, 44, 0, 0, 179, 44, 0, 0, 30, 48, 0, 0, 31, 48, 0, 0, 170, 51, 0, 0, 171, 51, 0, 0, 86, 55, 0, 0, 1, 0, 0, 0, 87, 55, 0, 0, 34, 59, 0, 0, 35, 59, 0, 0, 14, 63, 0, 0, 15, 63, 0, 0, 26, 67, 0, 0, 27, 67, 0, 0, 70, 71, 0, 0, 71, 71, 0, 0, 146, 75, 0, 0, 147, 75, 0, 0, 35, 77, 0, 0, 34, 77, 0, 0, 199, 72, 0, 0, 198, 72, 0, 0, 139, 68, 0, 0, 138, 68, 0, 0, 111, 64, 0, 0, 110, 64, 0, 0, 115, 60, 0, 0, 114, 60, 0, 0, 151, 56, 0, 0, 0, 0, 0, 0, 150, 56, 0, 0, 219, 52, 0, 0, 218, 52, 0, 0, 63, 49, 0, 0, 62, 49, 0, 0, 195, 45, 0, 0, 194, 45, 0, 0, 103, 42, 0, 0, 102, 42, 0, 0, 43, 39, 0, 0, 42, 39, 0, 0, 15, 36, 0, 0, 14, 36, 0, 0, 19, 33, 0, 0, 18, 33, 0, 0, 0, 0, 0, 0, 55, 30, 0, 0, 54, 30, 0, 0, 123, 27, 0, 0, 122, 27, 0, 0, 225, 24, 0, 0, 223, 24, 0, 0, 221, 24, 0, 0, 219, 24, 0, 0, 217, 24, 0, 0, 215, 24, 0, 0, 213, 24, 0, 0, 211, 24, 0, 0, 209, 24, 0, 0, 207, 24, 0, 0, 205, 24, 0, 0, 0, 0, 0, 0, 203, 24, 0, 0, 201, 24, 0, 0, 199, 24, 0, 0, 197, 24, 0, 0, 195, 24, 0, 0, 193, 24, 0, 0, 191, 24, 0, 0, 189, 24, 0, 0, 187, 24, 0, 0, 185, 24, 0, 0, 183, 24, 0, 0, 181, 24, 0, 0, 179, 24, 0, 0, 177, 24, 0, 0, 175, 24, 0, 0, 0, 0, 0, 0, 173, 24, 0, 0, 171, 24, 0, 0, 169, 24, 0, 0, 167, 24, 0, 0, 165, 24, 0, 0, 163, 24, 0, 0, 161, 24, 0, 0, 159, 24, 0, 0, 157, 24, 0, 0, 155, 24, 0, 0, 153, 24, 0, 0, 151, 24, 0, 0, 149, 24, 0, 0, 147, 24], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 61440);
+allocate([145, 24, 0, 0, 0, 0, 0, 0, 143, 24, 0, 0, 141, 24, 0, 0, 139, 24, 0, 0, 137, 24, 0, 0, 135, 24, 0, 0, 133, 24, 0, 0, 131, 24, 0, 0, 129, 24, 0, 0, 127, 24, 0, 0, 125, 24, 0, 0, 123, 24, 0, 0, 121, 24, 0, 0, 119, 24, 0, 0, 117, 24, 0, 0, 115, 24, 0, 0, 0, 0, 0, 0, 113, 24, 0, 0, 111, 24, 0, 0, 109, 24, 0, 0, 107, 24, 0, 0, 105, 24, 0, 0, 103, 24, 0, 0, 101, 24, 0, 0, 99, 24, 0, 0, 97, 24, 0, 0, 95, 24, 0, 0, 93, 24, 0, 0, 91, 24, 0, 0, 89, 24, 0, 0, 87, 24, 0, 0, 85, 24, 0, 0, 0, 0, 0, 0, 83, 24, 0, 0, 81, 24, 0, 0, 79, 24, 0, 0, 77, 24, 0, 0, 75, 24, 0, 0, 73, 24, 0, 0, 71, 24, 0, 0, 69, 24, 0, 0, 67, 24, 0, 0, 64, 24, 0, 0, 65, 24, 0, 0, 204, 26, 0, 0, 205, 26, 0, 0, 120, 29, 0, 0, 121, 29, 0, 0, 0, 0, 0, 0, 68, 32, 0, 0, 69, 32, 0, 0, 48, 35, 0, 0, 49, 35, 0, 0, 60, 38, 0, 0, 61, 38, 0, 0, 104, 41, 0, 0, 105, 41, 0, 0, 180, 44, 0, 0, 181, 44, 0, 0, 32, 48, 0, 0, 33, 48, 0, 0, 172, 51, 0, 0, 173, 51, 0, 0, 88, 55, 0, 0, 0, 0, 0, 0, 89, 55, 0, 0, 36, 59, 0, 0, 37, 59, 0, 0, 16, 63, 0, 0, 17, 63, 0, 0, 28, 67, 0, 0, 29, 67, 0, 0, 72, 71, 0, 0, 73, 71, 0, 0, 148, 75, 0, 0, 149, 75, 0, 0, 33, 77, 0, 0, 32, 77, 0, 0, 197, 72, 0, 0, 196, 72, 0, 0, 137, 68, 0, 0, 136, 68, 0, 0, 109, 64, 0, 0, 108, 64, 0, 0, 113, 60, 0, 0, 112, 60, 0, 0, 149, 56, 0, 0, 1, 0, 0, 0, 148, 56, 0, 0, 217, 52, 0, 0, 216, 52, 0, 0, 61, 49, 0, 0, 60, 49, 0, 0, 193, 45, 0, 0, 192, 45, 0, 0, 101, 42, 0, 0, 100, 42, 0, 0, 41, 39, 0, 0, 40, 39, 0, 0, 13, 36, 0, 0, 12, 36, 0, 0, 17, 33, 0, 0, 16, 33, 0, 0, 1, 0, 0, 0, 53, 30, 0, 0, 52, 30, 0, 0, 120, 27, 0, 0, 118, 27, 0, 0, 116, 27, 0, 0, 114, 27, 0, 0, 112, 27, 0, 0, 110, 27, 0, 0, 108, 27, 0, 0, 106, 27, 0, 0, 104, 27, 0, 0, 102, 27, 0, 0, 100, 27, 0, 0, 98, 27, 0, 0, 96, 27, 0, 0, 1, 0, 0, 0, 94, 27, 0, 0, 92, 27, 0, 0, 90, 27, 0, 0, 88, 27, 0, 0, 86, 27, 0, 0, 84, 27, 0, 0, 82, 27, 0, 0, 80, 27, 0, 0, 78, 27, 0, 0, 76, 27, 0, 0, 74, 27, 0, 0, 72, 27, 0, 0, 70, 27, 0, 0, 68, 27, 0, 0, 66, 27, 0, 0, 1, 0, 0, 0, 64, 27, 0, 0, 62, 27, 0, 0, 60, 27, 0, 0, 58, 27, 0, 0, 56, 27, 0, 0, 54, 27, 0, 0, 52, 27, 0, 0, 50, 27, 0, 0, 48, 27, 0, 0, 46, 27, 0, 0, 44, 27, 0, 0, 42, 27, 0, 0, 40, 27, 0, 0, 38, 27, 0, 0, 36, 27, 0, 0, 1, 0, 0, 0, 34, 27, 0, 0, 32, 27, 0, 0, 30, 27, 0, 0, 28, 27, 0, 0, 26, 27, 0, 0, 24, 27, 0, 0, 22, 27, 0, 0, 20, 27, 0, 0, 18, 27, 0, 0, 16, 27, 0, 0, 14, 27, 0, 0, 12, 27, 0, 0, 10, 27, 0, 0, 8, 27, 0, 0, 6, 27, 0, 0, 1, 0, 0, 0, 4, 27, 0, 0, 2, 27, 0, 0, 0, 27, 0, 0, 254, 26, 0, 0, 252, 26, 0, 0, 250, 26, 0, 0, 248, 26, 0, 0, 246, 26, 0, 0, 244, 26, 0, 0, 242, 26, 0, 0, 240, 26, 0, 0, 238, 26, 0, 0, 236, 26, 0, 0, 234, 26, 0, 0, 232, 26, 0, 0, 1, 0, 0, 0, 230, 26, 0, 0, 228, 26, 0, 0, 226, 26, 0, 0, 224, 26, 0, 0, 222, 26, 0, 0, 220, 26, 0, 0, 218, 26, 0, 0, 216, 26, 0, 0, 214, 26, 0, 0, 212, 26, 0, 0, 210, 26, 0, 0, 206, 26, 0, 0, 207, 26, 0, 0, 122, 29, 0, 0, 123, 29, 0, 0, 1, 0, 0, 0, 70, 32, 0, 0, 71, 32, 0, 0, 50, 35, 0, 0, 51, 35, 0, 0, 62, 38, 0, 0, 63, 38, 0, 0, 106, 41, 0, 0, 107, 41, 0, 0, 182, 44, 0, 0, 183, 44, 0, 0, 34, 48, 0, 0, 35, 48, 0, 0, 174, 51, 0, 0, 175, 51, 0, 0, 90, 55, 0, 0, 1, 0, 0, 0, 91, 55, 0, 0, 38, 59, 0, 0, 39, 59, 0, 0, 18, 63, 0, 0, 19, 63, 0, 0, 30, 67, 0, 0, 31, 67, 0, 0, 74, 71, 0, 0, 75, 71, 0, 0, 150, 75, 0, 0, 151, 75, 0, 0, 31, 77, 0, 0, 30, 77, 0, 0, 195, 72, 0, 0, 194, 72, 0, 0, 135, 68, 0, 0, 134, 68, 0, 0, 107, 64, 0, 0, 106, 64, 0, 0, 111, 60, 0, 0, 110, 60, 0, 0, 147, 56, 0, 0, 0, 0, 0, 0, 146, 56, 0, 0, 215, 52, 0, 0, 214, 52, 0, 0, 59, 49, 0, 0, 58, 49, 0, 0, 191, 45, 0, 0, 190, 45, 0, 0, 99, 42, 0, 0, 98, 42, 0, 0, 39, 39, 0, 0, 38, 39, 0, 0, 11, 36, 0, 0, 10, 36, 0, 0, 15, 33, 0, 0, 14, 33, 0, 0, 0, 0, 0, 0, 51, 30, 0, 0, 50, 30, 0, 0, 121, 27, 0, 0, 119, 27, 0, 0, 117, 27, 0, 0, 115, 27, 0, 0, 113, 27, 0, 0, 111, 27, 0, 0, 109, 27, 0, 0, 107, 27, 0, 0, 105, 27, 0, 0, 103, 27, 0, 0, 101, 27, 0, 0, 99, 27, 0, 0, 97, 27, 0, 0, 0, 0, 0, 0, 95, 27, 0, 0, 93, 27, 0, 0, 91, 27, 0, 0, 89, 27, 0, 0, 87, 27, 0, 0, 85, 27, 0, 0, 83, 27, 0, 0, 81, 27, 0, 0, 79, 27, 0, 0, 77, 27, 0, 0, 75, 27, 0, 0, 73, 27, 0, 0, 71, 27, 0, 0, 69, 27, 0, 0, 67, 27, 0, 0, 0, 0, 0, 0, 65, 27, 0, 0, 63, 27, 0, 0, 61, 27, 0, 0, 59, 27, 0, 0, 57, 27, 0, 0, 55, 27, 0, 0, 53, 27, 0, 0, 51, 27, 0, 0, 49, 27, 0, 0, 47, 27, 0, 0, 45, 27, 0, 0, 43, 27, 0, 0, 41, 27, 0, 0, 39, 27, 0, 0, 37, 27, 0, 0, 0, 0, 0, 0, 35, 27, 0, 0, 33, 27, 0, 0, 31, 27, 0, 0, 29, 27, 0, 0, 27, 27, 0, 0, 25, 27, 0, 0, 23, 27, 0, 0, 21, 27, 0, 0, 19, 27, 0, 0, 17, 27, 0, 0, 15, 27, 0, 0, 13, 27, 0, 0, 11, 27, 0, 0, 9, 27, 0, 0, 7, 27, 0, 0, 0, 0, 0, 0, 5, 27, 0, 0, 3, 27, 0, 0, 1, 27, 0, 0, 255, 26, 0, 0, 253, 26, 0, 0, 251, 26, 0, 0, 249, 26, 0, 0, 247, 26, 0, 0, 245, 26, 0, 0, 243, 26, 0, 0, 241, 26, 0, 0, 239, 26, 0, 0, 237, 26, 0, 0, 235, 26, 0, 0, 233, 26, 0, 0, 0, 0, 0, 0, 231, 26, 0, 0, 229, 26, 0, 0, 227, 26, 0, 0, 225, 26, 0, 0, 223, 26, 0, 0, 221, 26, 0, 0, 219, 26, 0, 0, 217, 26, 0, 0, 215, 26, 0, 0, 213, 26, 0, 0, 211, 26, 0, 0, 208, 26, 0, 0, 209, 26, 0, 0, 124, 29, 0, 0, 125, 29, 0, 0, 0, 0, 0, 0, 72, 32, 0, 0, 73, 32, 0, 0, 52, 35, 0, 0, 53, 35, 0, 0, 64, 38, 0, 0, 65, 38, 0, 0, 108, 41, 0, 0, 109, 41, 0, 0, 184, 44, 0, 0, 185, 44, 0, 0, 36, 48, 0, 0, 37, 48, 0, 0, 176, 51, 0, 0, 177, 51, 0, 0, 92, 55, 0, 0, 0, 0, 0, 0, 93, 55, 0, 0, 40, 59, 0, 0, 41, 59, 0, 0, 20, 63, 0, 0, 21, 63, 0, 0, 32, 67, 0, 0, 33, 67, 0, 0, 76, 71, 0, 0, 77, 71, 0, 0, 152, 75, 0, 0, 153, 75, 0, 0, 29, 77, 0, 0, 28, 77, 0, 0, 193, 72, 0, 0, 192, 72, 0, 0, 133, 68, 0, 0, 132, 68, 0, 0, 105, 64, 0, 0, 104, 64, 0, 0, 109, 60, 0, 0, 108, 60, 0, 0, 145, 56, 0, 0, 1, 0, 0, 0, 144, 56, 0, 0, 213, 52, 0, 0, 212, 52, 0, 0, 57, 49, 0, 0, 56, 49, 0, 0, 189, 45, 0, 0, 188, 45, 0, 0, 97, 42, 0, 0, 96, 42, 0, 0, 37, 39, 0, 0, 36, 39, 0, 0, 9, 36, 0, 0, 8, 36, 0, 0, 13, 33, 0, 0, 12, 33, 0, 0, 1, 0, 0, 0, 48, 30, 0, 0, 46, 30, 0, 0, 44, 30, 0, 0, 42, 30, 0, 0, 40, 30, 0, 0, 38, 30, 0, 0, 36, 30, 0, 0, 34, 30, 0, 0, 32, 30, 0, 0, 30, 30, 0, 0, 28, 30, 0, 0, 26, 30, 0, 0, 24, 30, 0, 0, 22, 30, 0, 0, 20, 30, 0, 0, 1, 0, 0, 0, 18, 30, 0, 0, 16, 30, 0, 0, 14, 30, 0, 0, 12, 30, 0, 0, 10, 30, 0, 0, 8, 30, 0, 0, 6, 30, 0, 0, 4, 30, 0, 0, 2, 30, 0, 0, 0, 30, 0, 0, 254, 29, 0, 0, 252, 29, 0, 0, 250, 29, 0, 0, 248, 29, 0, 0, 246, 29, 0, 0, 1, 0, 0, 0, 244, 29, 0, 0, 242, 29, 0, 0, 240, 29, 0, 0, 238, 29, 0, 0, 236, 29, 0, 0, 234, 29, 0, 0, 232, 29, 0, 0, 230, 29, 0, 0, 228, 29, 0, 0, 226, 29, 0, 0, 224, 29, 0, 0, 222, 29, 0, 0, 220, 29, 0, 0, 218, 29, 0, 0, 216, 29, 0, 0, 1, 0, 0, 0, 214, 29, 0, 0, 212, 29, 0, 0, 210, 29, 0, 0, 208, 29, 0, 0, 206, 29, 0, 0, 204, 29, 0, 0, 202, 29, 0, 0, 200, 29, 0, 0, 198, 29, 0, 0, 196, 29, 0, 0, 194, 29, 0, 0, 192, 29, 0, 0, 190, 29, 0, 0, 188, 29, 0, 0, 186, 29, 0, 0, 1, 0, 0, 0, 184, 29, 0, 0, 182, 29, 0, 0, 180, 29, 0, 0, 178, 29, 0, 0, 176, 29, 0, 0, 174, 29, 0, 0, 172, 29, 0, 0, 170, 29, 0, 0, 168, 29, 0, 0, 166, 29, 0, 0, 164, 29, 0, 0, 162, 29, 0, 0, 160, 29, 0, 0, 158, 29, 0, 0, 156, 29, 0, 0, 1, 0, 0, 0, 154, 29, 0, 0, 152, 29, 0, 0, 150, 29, 0, 0, 148, 29, 0, 0, 146, 29, 0, 0, 144, 29, 0, 0, 142, 29, 0, 0, 140, 29, 0, 0, 138, 29, 0, 0, 136, 29, 0, 0, 134, 29, 0, 0, 132, 29, 0, 0, 130, 29, 0, 0, 126, 29, 0, 0, 127, 29, 0, 0, 1, 0, 0, 0, 74, 32, 0, 0, 75, 32, 0, 0, 54, 35, 0, 0, 55, 35, 0, 0, 66, 38, 0, 0, 67, 38, 0, 0, 110, 41, 0, 0, 111, 41, 0, 0, 186, 44, 0, 0, 187, 44, 0, 0, 38, 48, 0, 0, 39, 48, 0, 0, 178, 51, 0, 0, 179, 51, 0, 0, 94, 55, 0, 0, 1, 0, 0, 0, 95, 55, 0, 0, 42, 59, 0, 0, 43, 59, 0, 0, 22, 63, 0, 0, 23, 63, 0, 0, 34, 67, 0, 0, 35, 67, 0, 0, 78, 71, 0, 0, 79, 71, 0, 0, 154, 75, 0, 0, 155, 75, 0, 0, 27, 77, 0, 0, 26, 77, 0, 0, 191, 72, 0, 0, 190, 72, 0, 0, 131, 68, 0, 0, 130, 68, 0, 0, 103, 64, 0, 0, 102, 64, 0, 0, 107, 60, 0, 0, 106, 60, 0, 0, 143, 56, 0, 0, 0, 0, 0, 0, 142, 56, 0, 0, 211, 52, 0, 0, 210, 52, 0, 0, 55, 49, 0, 0, 54, 49, 0, 0, 187, 45, 0, 0, 186, 45, 0, 0, 95, 42, 0, 0, 94, 42, 0, 0, 35, 39, 0, 0, 34, 39, 0, 0, 7, 36, 0, 0, 6, 36, 0, 0, 11, 33, 0, 0, 10, 33, 0, 0, 0, 0, 0, 0, 49, 30, 0, 0, 47, 30, 0, 0, 45, 30, 0, 0, 43, 30, 0, 0, 41, 30, 0, 0, 39, 30, 0, 0, 37, 30, 0, 0, 35, 30, 0, 0, 33, 30, 0, 0, 31, 30, 0, 0, 29, 30, 0, 0, 27, 30, 0, 0, 25, 30, 0, 0, 23, 30, 0, 0, 21, 30, 0, 0, 0, 0, 0, 0, 19, 30, 0, 0, 17, 30, 0, 0, 15, 30, 0, 0, 13, 30, 0, 0, 11, 30, 0, 0, 9, 30, 0, 0, 7, 30, 0, 0, 5, 30, 0, 0, 3, 30, 0, 0, 1, 30, 0, 0, 255, 29, 0, 0, 253, 29, 0, 0, 251, 29, 0, 0, 249, 29, 0, 0, 247, 29, 0, 0, 0, 0, 0, 0, 245, 29, 0, 0, 243, 29, 0, 0, 241, 29, 0, 0, 239, 29, 0, 0, 237, 29, 0, 0, 235, 29, 0, 0, 233, 29, 0, 0, 231, 29, 0, 0, 229, 29, 0, 0, 227, 29, 0, 0, 225, 29, 0, 0, 223, 29, 0, 0, 221, 29, 0, 0, 219, 29, 0, 0, 217, 29, 0, 0, 0, 0, 0, 0, 215, 29, 0, 0, 213, 29, 0, 0, 211, 29, 0, 0, 209, 29, 0, 0, 207, 29, 0, 0, 205, 29, 0, 0, 203, 29, 0, 0, 201, 29, 0, 0, 199, 29, 0, 0, 197, 29, 0, 0, 195, 29, 0, 0, 193, 29, 0, 0, 191, 29, 0, 0, 189, 29, 0, 0, 187, 29, 0, 0, 0, 0, 0, 0, 185, 29, 0, 0, 183, 29, 0, 0, 181, 29, 0, 0, 179, 29, 0, 0, 177, 29, 0, 0, 175, 29, 0, 0, 173, 29, 0, 0, 171, 29, 0, 0, 169, 29, 0, 0, 167, 29, 0, 0, 165, 29, 0, 0, 163, 29, 0, 0, 161, 29, 0, 0, 159, 29, 0, 0, 157, 29, 0, 0, 0, 0, 0, 0, 155, 29, 0, 0, 153, 29, 0, 0, 151, 29, 0, 0, 149, 29, 0, 0, 147, 29, 0, 0, 145, 29, 0, 0, 143, 29, 0, 0, 141, 29, 0, 0, 139, 29, 0, 0, 137, 29, 0, 0, 135, 29, 0, 0, 133, 29, 0, 0, 131, 29, 0, 0, 128, 29, 0, 0, 129, 29, 0, 0, 0, 0, 0, 0, 76, 32, 0, 0, 77, 32, 0, 0, 56, 35, 0, 0, 57, 35, 0, 0, 68, 38, 0, 0, 69, 38, 0, 0, 112, 41, 0, 0, 113, 41, 0, 0, 188, 44, 0, 0, 189, 44, 0, 0, 40, 48, 0, 0, 41, 48, 0, 0, 180, 51, 0, 0, 181, 51, 0, 0, 96, 55, 0, 0, 0, 0, 0, 0, 97, 55, 0, 0, 44, 59, 0, 0, 45, 59, 0, 0, 24, 63, 0, 0, 25, 63, 0, 0, 36, 67, 0, 0, 37, 67, 0, 0, 80, 71, 0, 0, 81, 71, 0, 0, 156, 75, 0, 0, 157, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 77, 0, 0, 24, 77, 0, 0, 189, 72, 0, 0, 188, 72, 0, 0, 129, 68, 0, 0, 128, 68, 0, 0, 101, 64, 0, 0, 100, 64, 0, 0, 105, 60, 0, 0, 104, 60, 0, 0, 141, 56, 0, 0, 0, 0, 0, 0, 140, 56, 0, 0, 209, 52, 0, 0, 208, 52, 0, 0, 53, 49, 0, 0, 52, 49, 0, 0, 185, 45, 0, 0, 184, 45, 0, 0, 93, 42, 0, 0, 92, 42, 0, 0, 33, 39, 0, 0, 32, 39, 0, 0, 5, 36, 0, 0, 4, 36, 0, 0, 8, 33, 0, 0, 6, 33, 0, 0, 0, 0, 0, 0, 4, 33, 0, 0, 2, 33, 0, 0, 0, 33, 0, 0, 254, 32, 0, 0, 252, 32, 0, 0, 250, 32, 0, 0, 248, 32, 0, 0, 246, 32, 0, 0, 244, 32, 0, 0, 242, 32, 0, 0, 240, 32, 0, 0, 238, 32, 0, 0, 236, 32, 0, 0, 234, 32, 0, 0, 232, 32, 0, 0, 0, 0, 0, 0, 230, 32, 0, 0, 228, 32, 0, 0, 226, 32, 0, 0, 224, 32, 0, 0, 222, 32, 0, 0, 220, 32, 0, 0, 218, 32, 0, 0, 216, 32, 0, 0, 214, 32, 0, 0, 212, 32, 0, 0, 210, 32, 0, 0, 208, 32, 0, 0, 206, 32, 0, 0, 204, 32, 0, 0, 202, 32, 0, 0, 0, 0, 0, 0, 200, 32, 0, 0, 198, 32, 0, 0, 196, 32, 0, 0, 194, 32, 0, 0, 192, 32, 0, 0, 190, 32, 0, 0, 188, 32, 0, 0, 186, 32, 0, 0, 184, 32, 0, 0, 182, 32, 0, 0, 180, 32, 0, 0, 178, 32, 0, 0, 176, 32, 0, 0, 174, 32, 0, 0, 172, 32, 0, 0, 0, 0, 0, 0, 170, 32, 0, 0, 168, 32, 0, 0, 166, 32, 0, 0, 164, 32, 0, 0, 162, 32, 0, 0, 160, 32, 0, 0, 158, 32, 0, 0, 156, 32, 0, 0, 154, 32, 0, 0, 152, 32, 0, 0, 150, 32, 0, 0, 148, 32, 0, 0, 146, 32, 0, 0, 144, 32, 0, 0, 142, 32, 0, 0, 0, 0, 0, 0, 140, 32, 0, 0, 138, 32, 0, 0, 136, 32, 0, 0, 134, 32, 0, 0, 132, 32, 0, 0, 130, 32, 0, 0, 128, 32, 0, 0, 126, 32, 0, 0, 124, 32, 0, 0, 122, 32, 0, 0, 120, 32, 0, 0, 118, 32, 0, 0, 116, 32, 0, 0, 114, 32, 0, 0, 112, 32, 0, 0, 0, 0, 0, 0, 110, 32, 0, 0, 108, 32, 0, 0, 106, 32, 0, 0, 104, 32, 0, 0, 102, 32, 0, 0, 100, 32, 0, 0, 98, 32, 0, 0, 96, 32, 0, 0, 94, 32, 0, 0, 92, 32, 0, 0, 90, 32, 0, 0, 88, 32, 0, 0, 86, 32, 0, 0, 84, 32, 0, 0, 82, 32, 0, 0, 0, 0, 0, 0, 78, 32, 0, 0, 79, 32, 0, 0, 58, 35, 0, 0, 59, 35, 0, 0, 70, 38, 0, 0, 71, 38, 0, 0, 114, 41, 0, 0, 115, 41, 0, 0, 190, 44, 0, 0, 191, 44, 0, 0, 42, 48, 0, 0, 43, 48, 0, 0, 182, 51, 0, 0, 183, 51, 0, 0, 98, 55, 0, 0, 0, 0, 0, 0, 99, 55, 0, 0, 46, 59, 0, 0, 47, 59, 0, 0, 26, 63, 0, 0, 27, 63, 0, 0, 38, 67, 0, 0, 39, 67, 0, 0, 82, 71, 0, 0, 83, 71, 0, 0, 158, 75, 0, 0, 159, 75, 0, 0, 23, 77, 0, 0, 22, 77, 0, 0, 187, 72, 0, 0, 186, 72, 0, 0, 127, 68, 0, 0, 126, 68, 0, 0, 99, 64, 0, 0, 98, 64, 0, 0, 103, 60, 0, 0, 102, 60, 0, 0, 139, 56, 0, 0, 1, 0, 0, 0, 138, 56, 0, 0, 207, 52, 0, 0, 206, 52, 0, 0, 51, 49, 0, 0, 50, 49, 0, 0, 183, 45, 0, 0, 182, 45, 0, 0, 91, 42, 0, 0, 90, 42, 0, 0, 31, 39, 0, 0, 30, 39, 0, 0, 3, 36, 0, 0, 2, 36, 0, 0, 9, 33, 0, 0, 7, 33, 0, 0, 1, 0, 0, 0, 5, 33, 0, 0, 3, 33, 0, 0, 1, 33, 0, 0, 255, 32, 0, 0, 253, 32, 0, 0, 251, 32, 0, 0, 249, 32, 0, 0, 247, 32, 0, 0, 245, 32, 0, 0, 243, 32, 0, 0, 241, 32, 0, 0, 239, 32, 0, 0, 237, 32, 0, 0, 235, 32, 0, 0, 233, 32, 0, 0, 1, 0, 0, 0, 231, 32, 0, 0, 229, 32, 0, 0, 227, 32, 0, 0, 225, 32, 0, 0, 223, 32, 0, 0, 221, 32, 0, 0, 219, 32, 0, 0, 217, 32, 0, 0, 215, 32, 0, 0, 213, 32, 0, 0, 211, 32, 0, 0, 209, 32, 0, 0, 207, 32, 0, 0, 205, 32, 0, 0, 203, 32, 0, 0, 1, 0, 0, 0, 201, 32, 0, 0, 199, 32, 0, 0, 197, 32, 0, 0, 195, 32, 0, 0, 193, 32, 0, 0, 191, 32, 0, 0, 189, 32, 0, 0, 187, 32, 0, 0, 185, 32, 0, 0, 183, 32, 0, 0, 181, 32, 0, 0, 179, 32, 0, 0, 177, 32, 0, 0, 175, 32, 0, 0, 173, 32, 0, 0, 1, 0, 0, 0, 171, 32, 0, 0, 169, 32, 0, 0, 167, 32, 0, 0, 165, 32, 0, 0, 163, 32, 0, 0, 161, 32, 0, 0, 159, 32, 0, 0, 157, 32, 0, 0, 155, 32, 0, 0, 153, 32, 0, 0, 151, 32, 0, 0, 149, 32, 0, 0, 147, 32, 0, 0, 145, 32, 0, 0, 143, 32, 0, 0, 1, 0, 0, 0, 141, 32, 0, 0, 139, 32, 0, 0, 137, 32, 0, 0, 135, 32, 0, 0, 133, 32, 0, 0, 131, 32, 0, 0, 129, 32, 0, 0, 127, 32, 0, 0, 125, 32, 0, 0, 123, 32, 0, 0, 121, 32, 0, 0, 119, 32, 0, 0, 117, 32, 0, 0, 115, 32, 0, 0, 113, 32, 0, 0, 1, 0, 0, 0, 111, 32, 0, 0, 109, 32, 0, 0, 107, 32, 0, 0, 105, 32, 0, 0, 103, 32, 0, 0, 101, 32, 0, 0, 99, 32, 0, 0, 97, 32, 0, 0, 95, 32, 0, 0, 93, 32, 0, 0, 91, 32, 0, 0, 89, 32, 0, 0, 87, 32, 0, 0, 85, 32, 0, 0, 83, 32, 0, 0, 1, 0, 0, 0, 80, 32, 0, 0, 81, 32, 0, 0, 60, 35, 0, 0, 61, 35, 0, 0, 72, 38, 0, 0, 73, 38, 0, 0, 116, 41, 0, 0, 117, 41, 0, 0, 192, 44, 0, 0, 193, 44, 0, 0, 44, 48, 0, 0, 45, 48, 0, 0, 184, 51, 0, 0, 185, 51, 0, 0, 100, 55, 0, 0, 1, 0, 0, 0, 101, 55, 0, 0, 48, 59, 0, 0, 49, 59, 0, 0, 28, 63, 0, 0, 29, 63, 0, 0, 40, 67, 0, 0, 41, 67, 0, 0, 84, 71, 0, 0, 85, 71, 0, 0, 160, 75, 0, 0, 161, 75, 0, 0, 21, 77, 0, 0, 20, 77, 0, 0, 185, 72, 0, 0, 184, 72, 0, 0, 125, 68, 0, 0, 124, 68, 0, 0, 97, 64, 0, 0, 96, 64, 0, 0, 101, 60, 0, 0, 100, 60, 0, 0, 137, 56, 0, 0, 0, 0, 0, 0, 136, 56, 0, 0, 205, 52, 0, 0, 204, 52, 0, 0, 49, 49, 0, 0, 48, 49, 0, 0, 181, 45, 0, 0, 180, 45, 0, 0, 89, 42, 0, 0, 88, 42, 0, 0, 29, 39, 0, 0, 28, 39, 0, 0, 0, 36, 0, 0, 254, 35, 0, 0, 252, 35, 0, 0, 250, 35, 0, 0, 0, 0, 0, 0, 248, 35, 0, 0, 246, 35, 0, 0, 244, 35, 0, 0, 242, 35, 0, 0, 240, 35, 0, 0, 238, 35, 0, 0, 236, 35, 0, 0, 234, 35, 0, 0, 232, 35, 0, 0, 230, 35, 0, 0, 228, 35, 0, 0, 226, 35, 0, 0, 224, 35, 0, 0, 222, 35, 0, 0, 220, 35, 0, 0, 0, 0, 0, 0, 218, 35, 0, 0, 216, 35, 0, 0, 214, 35, 0, 0, 212, 35, 0, 0, 210, 35, 0, 0, 208, 35, 0, 0, 206, 35, 0, 0, 204, 35, 0, 0, 202, 35, 0, 0, 200, 35, 0, 0, 198, 35, 0, 0, 196, 35, 0, 0, 194, 35, 0, 0, 192, 35, 0, 0, 190, 35, 0, 0, 0, 0, 0, 0, 188, 35, 0, 0, 186, 35, 0, 0, 184, 35, 0, 0, 182, 35, 0, 0, 180, 35, 0, 0, 178, 35, 0, 0, 176, 35, 0, 0, 174, 35, 0, 0, 172, 35, 0, 0, 170, 35, 0, 0, 168, 35, 0, 0, 166, 35, 0, 0, 164, 35, 0, 0, 162, 35, 0, 0, 160, 35, 0, 0, 0, 0, 0, 0, 158, 35, 0, 0, 156, 35, 0, 0, 154, 35, 0, 0, 152, 35, 0, 0, 150, 35, 0, 0, 148, 35, 0, 0, 146, 35, 0, 0, 144, 35, 0, 0, 142, 35, 0, 0, 140, 35, 0, 0, 138, 35, 0, 0, 136, 35, 0, 0, 134, 35, 0, 0, 132, 35, 0, 0, 130, 35, 0, 0, 0, 0, 0, 0, 128, 35, 0, 0, 126, 35, 0, 0, 124, 35, 0, 0, 122, 35, 0, 0, 120, 35, 0, 0, 118, 35, 0, 0, 116, 35, 0, 0, 114, 35, 0, 0, 112, 35, 0, 0, 110, 35, 0, 0, 108, 35, 0, 0, 106, 35, 0, 0, 104, 35, 0, 0, 102, 35, 0, 0, 100, 35, 0, 0, 0, 0, 0, 0, 98, 35, 0, 0, 96, 35, 0, 0, 94, 35, 0, 0, 92, 35, 0, 0, 90, 35, 0, 0, 88, 35, 0, 0, 86, 35, 0, 0, 84, 35, 0, 0, 82, 35, 0, 0, 80, 35, 0, 0, 78, 35, 0, 0, 76, 35, 0, 0, 74, 35, 0, 0, 72, 35, 0, 0, 70, 35, 0, 0, 0, 0, 0, 0, 68, 35, 0, 0, 66, 35, 0, 0, 62, 35, 0, 0, 63, 35, 0, 0, 74, 38, 0, 0, 75, 38, 0, 0, 118, 41, 0, 0, 119, 41, 0, 0, 194, 44, 0, 0, 195, 44, 0, 0, 46, 48, 0, 0, 47, 48, 0, 0, 186, 51, 0, 0, 187, 51, 0, 0, 102, 55, 0, 0, 0, 0, 0, 0, 103, 55, 0, 0, 50, 59, 0, 0, 51, 59, 0, 0, 30, 63, 0, 0, 31, 63, 0, 0, 42, 67, 0, 0, 43, 67, 0, 0, 86, 71, 0, 0, 87, 71, 0, 0, 162, 75, 0, 0, 163, 75, 0, 0, 19, 77, 0, 0, 18, 77, 0, 0, 183, 72, 0, 0, 182, 72, 0, 0, 123, 68, 0, 0, 122, 68, 0, 0, 95, 64, 0, 0, 94, 64, 0, 0, 99, 60, 0, 0, 98, 60, 0, 0, 135, 56, 0, 0, 1, 0, 0, 0, 134, 56, 0, 0, 203, 52, 0, 0, 202, 52, 0, 0, 47, 49, 0, 0, 46, 49, 0, 0, 179, 45, 0, 0, 178, 45, 0, 0, 87, 42, 0, 0, 86, 42, 0, 0, 27, 39, 0, 0, 26, 39, 0, 0, 1, 36, 0, 0, 255, 35, 0, 0, 253, 35, 0, 0, 251, 35, 0, 0, 1, 0, 0, 0, 249, 35, 0, 0, 247, 35, 0, 0, 245, 35, 0, 0, 243, 35, 0, 0, 241, 35, 0, 0, 239, 35, 0, 0, 237, 35, 0, 0, 235, 35, 0, 0, 233, 35, 0, 0, 231, 35, 0, 0, 229, 35, 0, 0, 227, 35, 0, 0, 225, 35, 0, 0, 223, 35, 0, 0, 221, 35, 0, 0, 1, 0, 0, 0, 219, 35, 0, 0, 217, 35, 0, 0, 215, 35, 0, 0, 213, 35, 0, 0, 211, 35, 0, 0, 209, 35, 0, 0, 207, 35, 0, 0, 205, 35, 0, 0, 203, 35, 0, 0, 201, 35, 0, 0, 199, 35, 0, 0, 197, 35, 0, 0, 195, 35, 0, 0, 193, 35, 0, 0, 191, 35, 0, 0, 1, 0, 0, 0, 189, 35, 0, 0, 187, 35, 0, 0, 185, 35, 0, 0, 183, 35, 0, 0, 181, 35, 0, 0, 179, 35, 0, 0, 177, 35, 0, 0, 175, 35, 0, 0, 173, 35, 0, 0, 171, 35, 0, 0, 169, 35, 0, 0, 167, 35, 0, 0, 165, 35, 0, 0, 163, 35, 0, 0, 161, 35, 0, 0, 1, 0, 0, 0, 159, 35, 0, 0, 157, 35, 0, 0, 155, 35, 0, 0, 153, 35, 0, 0, 151, 35, 0, 0, 149, 35, 0, 0, 147, 35, 0, 0, 145, 35, 0, 0, 143, 35, 0, 0, 141, 35, 0, 0, 139, 35, 0, 0, 137, 35, 0, 0, 135, 35, 0, 0, 133, 35, 0, 0, 131, 35, 0, 0, 1, 0, 0, 0, 129, 35, 0, 0, 127, 35, 0, 0, 125, 35, 0, 0, 123, 35, 0, 0, 121, 35, 0, 0, 119, 35, 0, 0, 117, 35, 0, 0, 115, 35, 0, 0, 113, 35, 0, 0, 111, 35, 0, 0, 109, 35, 0, 0, 107, 35, 0, 0, 105, 35, 0, 0, 103, 35, 0, 0, 101, 35, 0, 0, 1, 0, 0, 0, 99, 35, 0, 0, 97, 35, 0, 0, 95, 35, 0, 0, 93, 35, 0, 0, 91, 35, 0, 0, 89, 35, 0, 0, 87, 35, 0, 0, 85, 35, 0, 0, 83, 35, 0, 0, 81, 35, 0, 0, 79, 35, 0, 0, 77, 35, 0, 0, 75, 35, 0, 0, 73, 35, 0, 0, 71, 35, 0, 0, 1, 0, 0, 0, 69, 35, 0, 0, 67, 35, 0, 0, 64, 35, 0, 0, 65, 35, 0, 0, 76, 38, 0, 0, 77, 38, 0, 0, 120, 41, 0, 0, 121, 41, 0, 0, 196, 44, 0, 0, 197, 44, 0, 0, 48, 48, 0, 0, 49, 48, 0, 0, 188, 51, 0, 0, 189, 51, 0, 0, 104, 55, 0, 0, 1, 0, 0, 0, 105, 55, 0, 0, 52, 59, 0, 0, 53, 59, 0, 0, 32, 63, 0, 0, 33, 63, 0, 0, 44, 67, 0, 0, 45, 67, 0, 0, 88, 71, 0, 0, 89, 71, 0, 0, 164, 75, 0, 0, 165, 75, 0, 0, 17, 77, 0, 0, 16, 77, 0, 0, 181, 72, 0, 0, 180, 72, 0, 0, 121, 68, 0, 0, 120, 68, 0, 0, 93, 64, 0, 0, 92, 64, 0, 0, 97, 60, 0, 0, 96, 60, 0, 0, 133, 56, 0, 0, 0, 0, 0, 0, 132, 56, 0, 0, 201, 52, 0, 0, 200, 52, 0, 0, 45, 49, 0, 0, 44, 49, 0, 0, 177, 45, 0, 0, 176, 45, 0, 0, 85, 42, 0, 0, 84, 42, 0, 0, 24, 39, 0, 0, 22, 39, 0, 0, 20, 39, 0, 0, 18, 39, 0, 0, 16, 39, 0, 0, 14, 39, 0, 0, 0, 0, 0, 0, 12, 39, 0, 0, 10, 39, 0, 0, 8, 39, 0, 0, 6, 39, 0, 0, 4, 39, 0, 0, 2, 39, 0, 0, 0, 39, 0, 0, 254, 38, 0, 0, 252, 38, 0, 0, 250, 38, 0, 0, 248, 38, 0, 0, 246, 38, 0, 0, 244, 38, 0, 0, 242, 38, 0, 0, 240, 38, 0, 0, 0, 0, 0, 0, 238, 38, 0, 0, 236, 38, 0, 0, 234, 38, 0, 0, 232, 38, 0, 0, 230, 38, 0, 0, 228, 38, 0, 0, 226, 38, 0, 0, 224, 38, 0, 0, 222, 38, 0, 0, 220, 38, 0, 0, 218, 38, 0, 0, 216, 38, 0, 0, 214, 38, 0, 0, 212, 38, 0, 0, 210, 38, 0, 0, 0, 0, 0, 0, 208, 38, 0, 0, 206, 38, 0, 0, 204, 38, 0, 0, 202, 38, 0, 0, 200, 38, 0, 0, 198, 38, 0, 0, 196, 38, 0, 0, 194, 38, 0, 0, 192, 38, 0, 0, 190, 38, 0, 0, 188, 38, 0, 0, 186, 38, 0, 0, 184, 38, 0, 0, 182, 38, 0, 0, 180, 38, 0, 0, 0, 0, 0, 0, 178, 38, 0, 0, 176, 38, 0, 0, 174, 38, 0, 0, 172, 38, 0, 0, 170, 38, 0, 0, 168, 38, 0, 0, 166, 38, 0, 0, 164, 38, 0, 0, 162, 38, 0, 0, 160, 38, 0, 0, 158, 38, 0, 0, 156, 38, 0, 0, 154, 38, 0, 0, 152, 38, 0, 0, 150, 38, 0, 0, 0, 0, 0, 0, 148, 38, 0, 0, 146, 38, 0, 0, 144, 38, 0, 0, 142, 38, 0, 0, 140, 38, 0, 0, 138, 38, 0, 0, 136, 38, 0, 0, 134, 38, 0, 0, 132, 38, 0, 0, 130, 38, 0, 0, 128, 38, 0, 0, 126, 38, 0, 0, 124, 38, 0, 0, 122, 38, 0, 0, 120, 38, 0, 0, 0, 0, 0, 0, 118, 38, 0, 0, 116, 38, 0, 0, 114, 38, 0, 0, 112, 38, 0, 0, 110, 38, 0, 0, 108, 38, 0, 0, 106, 38, 0, 0, 104, 38, 0, 0, 102, 38, 0, 0, 100, 38, 0, 0, 98, 38, 0, 0, 96, 38, 0, 0, 94, 38, 0, 0, 92, 38, 0, 0, 90, 38, 0, 0, 0, 0, 0, 0, 88, 38, 0, 0, 86, 38, 0, 0, 84, 38, 0, 0, 82, 38, 0, 0, 78, 38, 0, 0, 79, 38, 0, 0, 122, 41, 0, 0, 123, 41, 0, 0, 198, 44, 0, 0, 199, 44, 0, 0, 50, 48, 0, 0, 51, 48, 0, 0, 190, 51, 0, 0, 191, 51, 0, 0, 106, 55, 0, 0, 0, 0, 0, 0, 107, 55, 0, 0, 54, 59, 0, 0, 55, 59, 0, 0, 34, 63, 0, 0, 35, 63, 0, 0, 46, 67, 0, 0, 47, 67, 0, 0, 90, 71, 0, 0, 91, 71, 0, 0, 166, 75, 0, 0, 167, 75, 0, 0, 15, 77, 0, 0, 14, 77, 0, 0, 179, 72, 0, 0, 178, 72, 0, 0, 119, 68, 0, 0, 118, 68, 0, 0, 91, 64, 0, 0, 90, 64, 0, 0, 95, 60, 0, 0, 94, 60, 0, 0, 131, 56, 0, 0, 1, 0, 0, 0, 130, 56, 0, 0, 199, 52, 0, 0, 198, 52, 0, 0, 43, 49, 0, 0, 42, 49, 0, 0, 175, 45, 0, 0, 174, 45, 0, 0, 83, 42, 0, 0, 82, 42, 0, 0, 25, 39, 0, 0, 23, 39, 0, 0, 21, 39, 0, 0, 19, 39, 0, 0, 17, 39, 0, 0, 15, 39, 0, 0, 1, 0, 0, 0, 13, 39, 0, 0, 11, 39, 0, 0, 9, 39, 0, 0, 7, 39, 0, 0, 5, 39, 0, 0, 3, 39, 0, 0, 1, 39, 0, 0, 255, 38, 0, 0, 253, 38, 0, 0, 251, 38, 0, 0, 249, 38, 0, 0, 247, 38, 0, 0, 245, 38, 0, 0, 243, 38, 0, 0, 241, 38, 0, 0, 1, 0, 0, 0, 239, 38, 0, 0, 237, 38, 0, 0, 235, 38, 0, 0, 233, 38, 0, 0, 231, 38, 0, 0, 229, 38, 0, 0, 227, 38, 0, 0, 225, 38, 0, 0, 223, 38, 0, 0, 221, 38, 0, 0, 219, 38, 0, 0, 217, 38, 0, 0, 215, 38, 0, 0, 213, 38, 0, 0, 211, 38, 0, 0, 1, 0, 0, 0, 209, 38, 0, 0, 207, 38, 0, 0, 205, 38, 0, 0, 203, 38, 0, 0, 201, 38, 0, 0, 199, 38, 0, 0, 197, 38, 0, 0, 195, 38, 0, 0, 193, 38, 0, 0, 191, 38, 0, 0, 189, 38, 0, 0, 187, 38, 0, 0, 185, 38, 0, 0, 183, 38, 0, 0, 181, 38, 0, 0, 1, 0, 0, 0, 179, 38, 0, 0, 177, 38, 0, 0, 175, 38, 0, 0, 173, 38, 0, 0, 171, 38, 0, 0, 169, 38, 0, 0, 167, 38, 0, 0, 165, 38, 0, 0, 163, 38, 0, 0, 161, 38, 0, 0, 159, 38, 0, 0, 157, 38, 0, 0, 155, 38, 0, 0, 153, 38, 0, 0, 151, 38, 0, 0, 1, 0, 0, 0, 149, 38, 0, 0, 147, 38, 0, 0, 145, 38, 0, 0, 143, 38, 0, 0, 141, 38, 0, 0, 139, 38, 0, 0, 137, 38, 0, 0, 135, 38, 0, 0, 133, 38, 0, 0, 131, 38, 0, 0, 129, 38, 0, 0, 127, 38, 0, 0, 125, 38, 0, 0, 123, 38, 0, 0, 121, 38, 0, 0, 1, 0, 0, 0, 119, 38, 0, 0, 117, 38, 0, 0, 115, 38, 0, 0, 113, 38, 0, 0, 111, 38, 0, 0, 109, 38, 0, 0, 107, 38, 0, 0, 105, 38, 0, 0, 103, 38, 0, 0, 101, 38, 0, 0, 99, 38, 0, 0, 97, 38, 0, 0, 95, 38, 0, 0, 93, 38, 0, 0, 91, 38, 0, 0, 1, 0, 0, 0, 89, 38, 0, 0, 87, 38, 0, 0, 85, 38, 0, 0, 83, 38, 0, 0, 80, 38, 0, 0, 81, 38, 0, 0, 124, 41, 0, 0, 125, 41, 0, 0, 200, 44, 0, 0, 201, 44, 0, 0, 52, 48, 0, 0, 53, 48, 0, 0, 192, 51, 0, 0, 193, 51, 0, 0, 108, 55, 0, 0, 1, 0, 0, 0, 109, 55, 0, 0, 56, 59, 0, 0, 57, 59, 0, 0, 36, 63, 0, 0, 37, 63, 0, 0, 48, 67, 0, 0, 49, 67, 0, 0, 92, 71, 0, 0, 93, 71, 0, 0, 168, 75, 0, 0, 169, 75, 0, 0, 13, 77, 0, 0, 12, 77, 0, 0, 177, 72, 0, 0, 176, 72, 0, 0, 117, 68, 0, 0, 116, 68, 0, 0, 89, 64, 0, 0, 88, 64, 0, 0, 93, 60, 0, 0, 92, 60, 0, 0, 129, 56, 0, 0, 0, 0, 0, 0, 128, 56, 0, 0, 197, 52, 0, 0, 196, 52, 0, 0, 41, 49, 0, 0, 40, 49, 0, 0, 173, 45, 0, 0, 172, 45, 0, 0, 80, 42, 0, 0, 78, 42, 0, 0, 76, 42, 0, 0, 74, 42, 0, 0, 72, 42, 0, 0, 70, 42, 0, 0, 68, 42, 0, 0, 66, 42, 0, 0, 0, 0, 0, 0, 64, 42, 0, 0, 62, 42, 0, 0, 60, 42, 0, 0, 58, 42, 0, 0, 56, 42, 0, 0, 54, 42, 0, 0, 52, 42, 0, 0, 50, 42, 0, 0, 48, 42, 0, 0, 46, 42, 0, 0, 44, 42, 0, 0, 42, 42, 0, 0, 40, 42, 0, 0, 38, 42, 0, 0, 36, 42, 0, 0, 0, 0, 0, 0, 34, 42, 0, 0, 32, 42, 0, 0, 30, 42, 0, 0, 28, 42, 0, 0, 26, 42, 0, 0, 24, 42, 0, 0, 22, 42, 0, 0, 20, 42, 0, 0, 18, 42, 0, 0, 16, 42, 0, 0, 14, 42, 0, 0, 12, 42, 0, 0, 10, 42, 0, 0, 8, 42, 0, 0, 6, 42, 0, 0, 0, 0, 0, 0, 4, 42, 0, 0, 2, 42, 0, 0, 0, 42, 0, 0, 254, 41, 0, 0, 252, 41, 0, 0, 250, 41, 0, 0, 248, 41, 0, 0, 246, 41, 0, 0, 244, 41, 0, 0, 242, 41, 0, 0, 240, 41, 0, 0, 238, 41, 0, 0, 236, 41, 0, 0, 234, 41, 0, 0, 232, 41, 0, 0, 0, 0, 0, 0, 230, 41, 0, 0, 228, 41, 0, 0, 226, 41, 0, 0, 224, 41, 0, 0, 222, 41, 0, 0, 220, 41, 0, 0, 218, 41, 0, 0, 216, 41, 0, 0, 214, 41, 0, 0, 212, 41, 0, 0, 210, 41, 0, 0, 208, 41, 0, 0, 206, 41, 0, 0, 204, 41, 0, 0, 202, 41, 0, 0, 0, 0, 0, 0, 200, 41, 0, 0, 198, 41, 0, 0, 196, 41, 0, 0, 194, 41, 0, 0, 192, 41, 0, 0, 190, 41, 0, 0, 188, 41, 0, 0, 186, 41, 0, 0, 184, 41, 0, 0, 182, 41, 0, 0, 180, 41, 0, 0, 178, 41, 0, 0, 176, 41, 0, 0, 174, 41, 0, 0, 172, 41, 0, 0, 0, 0, 0, 0, 170, 41, 0, 0, 168, 41, 0, 0, 166, 41, 0, 0, 164, 41, 0, 0, 162, 41, 0, 0, 160, 41, 0, 0, 158, 41, 0, 0, 156, 41, 0, 0, 154, 41, 0, 0, 152, 41, 0, 0, 150, 41, 0, 0, 148, 41, 0, 0, 146, 41, 0, 0, 144, 41, 0, 0, 142, 41, 0, 0, 0, 0, 0, 0, 140, 41, 0, 0, 138, 41, 0, 0, 136, 41, 0, 0, 134, 41, 0, 0, 132, 41, 0, 0, 130, 41, 0, 0, 126, 41, 0, 0, 127, 41, 0, 0, 202, 44, 0, 0, 203, 44, 0, 0, 54, 48, 0, 0, 55, 48, 0, 0, 194, 51, 0, 0, 195, 51, 0, 0, 110, 55, 0, 0, 0, 0, 0, 0, 111, 55, 0, 0, 58, 59, 0, 0, 59, 59, 0, 0, 38, 63, 0, 0, 39, 63, 0, 0, 50, 67, 0, 0, 51, 67, 0, 0, 94, 71, 0, 0, 95, 71, 0, 0, 170, 75, 0, 0, 171, 75, 0, 0, 11, 77, 0, 0, 10, 77, 0, 0, 175, 72, 0, 0, 174, 72, 0, 0, 115, 68, 0, 0, 114, 68, 0, 0, 87, 64, 0, 0, 86, 64, 0, 0, 91, 60, 0, 0, 90, 60, 0, 0, 127, 56, 0, 0, 1, 0, 0, 0, 126, 56, 0, 0, 195, 52, 0, 0, 194, 52, 0, 0, 39, 49, 0, 0, 38, 49, 0, 0, 171, 45, 0, 0, 170, 45, 0, 0, 81, 42, 0, 0, 79, 42, 0, 0, 77, 42, 0, 0, 75, 42, 0, 0, 73, 42, 0, 0, 71, 42, 0, 0, 69, 42, 0, 0, 67, 42, 0, 0, 1, 0, 0, 0, 65, 42, 0, 0, 63, 42, 0, 0, 61, 42, 0, 0, 59, 42, 0, 0, 57, 42, 0, 0, 55, 42, 0, 0, 53, 42, 0, 0, 51, 42, 0, 0, 49, 42, 0, 0, 47, 42, 0, 0, 45, 42, 0, 0, 43, 42, 0, 0, 41, 42, 0, 0, 39, 42, 0, 0, 37, 42, 0, 0, 1, 0, 0, 0, 35, 42, 0, 0, 33, 42, 0, 0, 31, 42, 0, 0, 29, 42, 0, 0, 27, 42, 0, 0, 25, 42, 0, 0, 23, 42, 0, 0, 21, 42, 0, 0, 19, 42, 0, 0, 17, 42, 0, 0, 15, 42, 0, 0, 13, 42, 0, 0, 11, 42, 0, 0, 9, 42, 0, 0, 7, 42, 0, 0, 1, 0, 0, 0, 5, 42, 0, 0, 3, 42, 0, 0, 1, 42, 0, 0, 255, 41, 0, 0, 253, 41, 0, 0, 251, 41, 0, 0, 249, 41, 0, 0, 247, 41, 0, 0, 245, 41, 0, 0, 243, 41, 0, 0, 241, 41, 0, 0, 239, 41, 0, 0, 237, 41, 0, 0, 235, 41, 0, 0, 233, 41, 0, 0, 1, 0, 0, 0, 231, 41, 0, 0, 229, 41, 0, 0, 227, 41, 0, 0, 225, 41, 0, 0, 223, 41, 0, 0, 221, 41, 0, 0, 219, 41, 0, 0, 217, 41, 0, 0, 215, 41, 0, 0, 213, 41, 0, 0, 211, 41, 0, 0, 209, 41, 0, 0, 207, 41, 0, 0, 205, 41, 0, 0, 203, 41, 0, 0, 1, 0, 0, 0, 201, 41, 0, 0, 199, 41, 0, 0, 197, 41, 0, 0, 195, 41, 0, 0, 193, 41, 0, 0, 191, 41, 0, 0, 189, 41, 0, 0, 187, 41, 0, 0, 185, 41, 0, 0, 183, 41, 0, 0, 181, 41, 0, 0, 179, 41, 0, 0, 177, 41, 0, 0, 175, 41, 0, 0, 173, 41, 0, 0, 1, 0, 0, 0, 171, 41, 0, 0, 169, 41, 0, 0, 167, 41, 0, 0, 165, 41, 0, 0, 163, 41, 0, 0, 161, 41, 0, 0, 159, 41, 0, 0, 157, 41, 0, 0, 155, 41, 0, 0, 153, 41, 0, 0, 151, 41, 0, 0, 149, 41, 0, 0, 147, 41, 0, 0, 145, 41, 0, 0, 143, 41, 0, 0, 1, 0, 0, 0, 141, 41, 0, 0, 139, 41, 0, 0, 137, 41, 0, 0, 135, 41, 0, 0, 133, 41, 0, 0, 131, 41, 0, 0, 128, 41, 0, 0, 129, 41, 0, 0, 204, 44, 0, 0, 205, 44, 0, 0, 56, 48, 0, 0, 57, 48, 0, 0, 196, 51, 0, 0, 197, 51, 0, 0, 112, 55, 0, 0, 1, 0, 0, 0, 113, 55, 0, 0, 60, 59, 0, 0, 61, 59, 0, 0, 40, 63, 0, 0, 41, 63, 0, 0, 52, 67, 0, 0, 53, 67, 0, 0, 96, 71, 0, 0, 97, 71, 0, 0, 172, 75, 0, 0, 173, 75, 0, 0, 9, 77, 0, 0, 8, 77, 0, 0, 173, 72, 0, 0, 172, 72, 0, 0, 113, 68, 0, 0, 112, 68, 0, 0, 85, 64, 0, 0, 84, 64, 0, 0, 89, 60, 0, 0, 88, 60, 0, 0, 125, 56, 0, 0, 0, 0, 0, 0, 124, 56, 0, 0, 193, 52, 0, 0, 192, 52, 0, 0, 37, 49, 0, 0, 36, 49, 0, 0, 168, 45, 0, 0, 166, 45, 0, 0, 164, 45, 0, 0, 162, 45, 0, 0, 160, 45, 0, 0, 158, 45, 0, 0, 156, 45, 0, 0, 154, 45, 0, 0, 152, 45, 0, 0, 150, 45, 0, 0, 0, 0, 0, 0, 148, 45, 0, 0, 146, 45, 0, 0, 144, 45, 0, 0, 142, 45, 0, 0, 140, 45, 0, 0, 138, 45, 0, 0, 136, 45, 0, 0, 134, 45, 0, 0, 132, 45, 0, 0, 130, 45, 0, 0, 128, 45, 0, 0, 126, 45, 0, 0, 124, 45, 0, 0, 122, 45, 0, 0, 120, 45, 0, 0, 0, 0, 0, 0, 118, 45, 0, 0, 116, 45, 0, 0, 114, 45, 0, 0, 112, 45, 0, 0, 110, 45, 0, 0, 108, 45, 0, 0, 106, 45, 0, 0, 104, 45, 0, 0, 102, 45, 0, 0, 100, 45, 0, 0, 98, 45, 0, 0, 96, 45, 0, 0, 94, 45, 0, 0, 92, 45, 0, 0, 90, 45, 0, 0, 0, 0, 0, 0, 88, 45, 0, 0, 86, 45, 0, 0, 84, 45, 0, 0, 82, 45, 0, 0, 80, 45, 0, 0, 78, 45, 0, 0, 76, 45, 0, 0, 74, 45, 0, 0, 72, 45, 0, 0, 70, 45, 0, 0, 68, 45, 0, 0, 66, 45, 0, 0, 64, 45, 0, 0, 62, 45, 0, 0, 60, 45, 0, 0, 0, 0, 0, 0, 58, 45, 0, 0, 56, 45, 0, 0, 54, 45, 0, 0, 52, 45, 0, 0, 50, 45, 0, 0, 48, 45, 0, 0, 46, 45, 0, 0, 44, 45, 0, 0, 42, 45, 0, 0, 40, 45, 0, 0, 38, 45, 0, 0, 36, 45, 0, 0, 34, 45, 0, 0, 32, 45, 0, 0, 30, 45, 0, 0, 0, 0, 0, 0, 28, 45, 0, 0, 26, 45, 0, 0, 24, 45, 0, 0, 22, 45, 0, 0, 20, 45, 0, 0, 18, 45, 0, 0, 16, 45, 0, 0, 14, 45, 0, 0, 12, 45, 0, 0, 10, 45, 0, 0, 8, 45, 0, 0, 6, 45, 0, 0, 4, 45, 0, 0, 2, 45, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 254, 44, 0, 0, 252, 44, 0, 0, 250, 44, 0, 0, 248, 44, 0, 0, 246, 44, 0, 0, 244, 44, 0, 0, 242, 44, 0, 0, 240, 44, 0, 0, 238, 44, 0, 0, 236, 44, 0, 0, 234, 44, 0, 0, 232, 44, 0, 0, 230, 44, 0, 0, 228, 44, 0, 0, 226, 44, 0, 0, 0, 0, 0, 0, 224, 44, 0, 0, 222, 44, 0, 0, 220, 44, 0, 0, 218, 44, 0, 0, 216, 44, 0, 0, 214, 44, 0, 0, 212, 44, 0, 0, 210, 44, 0, 0, 206, 44, 0, 0, 207, 44, 0, 0, 58, 48, 0, 0, 59, 48, 0, 0, 198, 51, 0, 0, 199, 51, 0, 0, 114, 55, 0, 0, 0, 0, 0, 0, 115, 55, 0, 0, 62, 59, 0, 0, 63, 59, 0, 0, 42, 63, 0, 0, 43, 63, 0, 0, 54, 67, 0, 0, 55, 67, 0, 0, 98, 71, 0, 0, 99, 71, 0, 0, 174, 75, 0, 0, 175, 75, 0, 0, 7, 77, 0, 0, 6, 77, 0, 0, 171, 72, 0, 0, 170, 72, 0, 0, 111, 68, 0, 0, 110, 68, 0, 0, 83, 64, 0, 0, 82, 64, 0, 0, 87, 60, 0, 0, 86, 60, 0, 0, 123, 56, 0, 0, 1, 0, 0, 0, 122, 56, 0, 0, 191, 52, 0, 0, 190, 52, 0, 0, 35, 49, 0, 0, 34, 49, 0, 0, 169, 45, 0, 0, 167, 45, 0, 0, 165, 45, 0, 0, 163, 45, 0, 0, 161, 45, 0, 0, 159, 45, 0, 0, 157, 45, 0, 0, 155, 45, 0, 0, 153, 45, 0, 0, 151, 45, 0, 0, 1, 0, 0, 0, 149, 45, 0, 0, 147, 45, 0, 0, 145, 45, 0, 0, 143, 45, 0, 0, 141, 45, 0, 0, 139, 45, 0, 0, 137, 45, 0, 0, 135, 45, 0, 0, 133, 45, 0, 0, 131, 45, 0, 0, 129, 45, 0, 0, 127, 45, 0, 0, 125, 45, 0, 0, 123, 45, 0, 0, 121, 45, 0, 0, 1, 0, 0, 0, 119, 45, 0, 0, 117, 45, 0, 0, 115, 45, 0, 0, 113, 45, 0, 0, 111, 45, 0, 0, 109, 45, 0, 0, 107, 45, 0, 0, 105, 45, 0, 0, 103, 45, 0, 0, 101, 45, 0, 0, 99, 45, 0, 0, 97, 45, 0, 0, 95, 45, 0, 0, 93, 45, 0, 0, 91, 45, 0, 0, 1, 0, 0, 0, 89, 45, 0, 0, 87, 45, 0, 0, 85, 45, 0, 0, 83, 45, 0, 0, 81, 45, 0, 0, 79, 45, 0, 0, 77, 45, 0, 0, 75, 45, 0, 0, 73, 45, 0, 0, 71, 45, 0, 0, 69, 45, 0, 0, 67, 45, 0, 0, 65, 45, 0, 0, 63, 45, 0, 0, 61, 45, 0, 0, 1, 0, 0, 0, 59, 45, 0, 0, 57, 45, 0, 0, 55, 45, 0, 0, 53, 45, 0, 0, 51, 45, 0, 0, 49, 45, 0, 0, 47, 45, 0, 0, 45, 45, 0, 0, 43, 45, 0, 0, 41, 45, 0, 0, 39, 45, 0, 0, 37, 45, 0, 0, 35, 45, 0, 0, 33, 45, 0, 0, 31, 45, 0, 0, 1, 0, 0, 0, 29, 45, 0, 0, 27, 45, 0, 0, 25, 45, 0, 0, 23, 45, 0, 0, 21, 45, 0, 0, 19, 45, 0, 0, 17, 45, 0, 0, 15, 45, 0, 0, 13, 45, 0, 0, 11, 45, 0, 0, 9, 45, 0, 0, 7, 45, 0, 0, 5, 45, 0, 0, 3, 45, 0, 0, 1, 45, 0, 0, 1, 0, 0, 0, 255, 44, 0, 0, 253, 44, 0, 0, 251, 44, 0, 0, 249, 44, 0, 0, 247, 44, 0, 0, 245, 44, 0, 0, 243, 44, 0, 0, 241, 44, 0, 0, 239, 44, 0, 0, 237, 44, 0, 0, 235, 44, 0, 0, 233, 44, 0, 0, 231, 44, 0, 0, 229, 44, 0, 0, 227, 44, 0, 0, 1, 0, 0, 0, 225, 44, 0, 0, 223, 44, 0, 0, 221, 44, 0, 0, 219, 44, 0, 0, 217, 44, 0, 0, 215, 44, 0, 0, 213, 44, 0, 0, 211, 44, 0, 0, 208, 44, 0, 0, 209, 44, 0, 0, 60, 48, 0, 0, 61, 48, 0, 0, 200, 51, 0, 0, 201, 51, 0, 0, 116, 55, 0, 0, 1, 0, 0, 0, 117, 55, 0, 0, 64, 59, 0, 0, 65, 59, 0, 0, 44, 63, 0, 0, 45, 63, 0, 0, 56, 67, 0, 0, 57, 67, 0, 0, 100, 71, 0, 0, 101, 71, 0, 0, 176, 75, 0, 0, 177, 75, 0, 0, 5, 77, 0, 0, 4, 77, 0, 0, 169, 72, 0, 0, 168, 72, 0, 0, 109, 68, 0, 0, 108, 68, 0, 0, 81, 64, 0, 0, 80, 64, 0, 0, 85, 60, 0, 0, 84, 60, 0, 0, 121, 56, 0, 0, 0, 0, 0, 0, 120, 56, 0, 0, 189, 52, 0, 0, 188, 52, 0, 0, 32, 49, 0, 0, 30, 49, 0, 0, 28, 49, 0, 0, 26, 49, 0, 0, 24, 49, 0, 0, 22, 49, 0, 0, 20, 49, 0, 0, 18, 49, 0, 0, 16, 49, 0, 0, 14, 49, 0, 0, 12, 49, 0, 0, 10, 49, 0, 0, 0, 0, 0, 0, 8, 49, 0, 0, 6, 49, 0, 0, 4, 49, 0, 0, 2, 49, 0, 0, 0, 49, 0, 0, 254, 48, 0, 0, 252, 48, 0, 0, 250, 48, 0, 0, 248, 48, 0, 0, 246, 48, 0, 0, 244, 48, 0, 0, 242, 48, 0, 0, 240, 48, 0, 0, 238, 48, 0, 0, 236, 48, 0, 0, 0, 0, 0, 0, 234, 48, 0, 0, 232, 48, 0, 0, 230, 48, 0, 0, 228, 48, 0, 0, 226, 48, 0, 0, 224, 48, 0, 0, 222, 48, 0, 0, 220, 48, 0, 0, 218, 48, 0, 0, 216, 48, 0, 0, 214, 48, 0, 0, 212, 48, 0, 0, 210, 48, 0, 0, 208, 48, 0, 0, 206, 48, 0, 0, 0, 0, 0, 0, 204, 48, 0, 0, 202, 48, 0, 0, 200, 48, 0, 0, 198, 48, 0, 0, 196, 48, 0, 0, 194, 48, 0, 0, 192, 48, 0, 0, 190, 48, 0, 0, 188, 48, 0, 0, 186, 48, 0, 0, 184, 48, 0, 0, 182, 48, 0, 0, 180, 48, 0, 0, 178, 48, 0, 0, 176, 48, 0, 0, 0, 0, 0, 0, 174, 48, 0, 0, 172, 48, 0, 0, 170, 48, 0, 0, 168, 48, 0, 0, 166, 48, 0, 0, 164, 48, 0, 0, 162, 48, 0, 0, 160, 48, 0, 0, 158, 48, 0, 0, 156, 48, 0, 0, 154, 48, 0, 0, 152, 48, 0, 0, 150, 48, 0, 0, 148, 48, 0, 0, 146, 48, 0, 0, 0, 0, 0, 0, 144, 48, 0, 0, 142, 48, 0, 0, 140, 48, 0, 0, 138, 48, 0, 0, 136, 48, 0, 0, 134, 48, 0, 0, 132, 48, 0, 0, 130, 48, 0, 0, 128, 48, 0, 0, 126, 48, 0, 0, 124, 48, 0, 0, 122, 48, 0, 0, 120, 48, 0, 0, 118, 48, 0, 0, 116, 48, 0, 0, 0, 0, 0, 0, 114, 48, 0, 0, 112, 48, 0, 0, 110, 48, 0, 0, 108, 48, 0, 0, 106, 48, 0, 0, 104, 48, 0, 0, 102, 48, 0, 0, 100, 48, 0, 0, 98, 48, 0, 0, 96, 48, 0, 0, 94, 48, 0, 0, 92, 48, 0, 0, 90, 48, 0, 0, 88, 48, 0, 0, 86, 48, 0, 0, 0, 0, 0, 0, 84, 48, 0, 0, 82, 48, 0, 0, 80, 48, 0, 0, 78, 48, 0, 0, 76, 48, 0, 0, 74, 48, 0, 0, 72, 48, 0, 0, 70, 48, 0, 0, 68, 48, 0, 0, 66, 48, 0, 0, 62, 48, 0, 0, 63, 48, 0, 0, 202, 51, 0, 0, 203, 51, 0, 0, 118, 55, 0, 0, 0, 0, 0, 0, 119, 55, 0, 0, 66, 59, 0, 0, 67, 59, 0, 0, 46, 63, 0, 0, 47, 63, 0, 0, 58, 67, 0, 0, 59, 67, 0, 0, 102, 71, 0, 0, 103, 71, 0, 0, 178, 75, 0, 0, 179, 75, 0, 0, 3, 77, 0, 0, 2, 77, 0, 0, 167, 72, 0, 0, 166, 72, 0, 0, 107, 68, 0, 0, 106, 68, 0, 0, 79, 64, 0, 0, 78, 64, 0, 0, 83, 60, 0, 0, 82, 60, 0, 0, 119, 56, 0, 0, 1, 0, 0, 0, 118, 56, 0, 0, 187, 52, 0, 0, 186, 52, 0, 0, 33, 49, 0, 0, 31, 49, 0, 0, 29, 49, 0, 0, 27, 49, 0, 0, 25, 49, 0, 0, 23, 49, 0, 0, 21, 49, 0, 0, 19, 49, 0, 0, 17, 49, 0, 0, 15, 49, 0, 0, 13, 49, 0, 0, 11, 49, 0, 0, 1, 0, 0, 0, 9, 49, 0, 0, 7, 49, 0, 0, 5, 49, 0, 0, 3, 49, 0, 0, 1, 49, 0, 0, 255, 48, 0, 0, 253, 48, 0, 0, 251, 48, 0, 0, 249, 48, 0, 0, 247, 48, 0, 0, 245, 48, 0, 0, 243, 48, 0, 0, 241, 48, 0, 0, 239, 48, 0, 0, 237, 48, 0, 0, 1, 0, 0, 0, 235, 48, 0, 0, 233, 48, 0, 0, 231, 48, 0, 0, 229, 48, 0, 0, 227, 48, 0, 0, 225, 48, 0, 0, 223, 48, 0, 0, 221, 48, 0, 0, 219, 48, 0, 0, 217, 48, 0, 0, 215, 48, 0, 0, 213, 48, 0, 0, 211, 48, 0, 0, 209, 48, 0, 0, 207, 48, 0, 0, 1, 0, 0, 0, 205, 48, 0, 0, 203, 48, 0, 0, 201, 48, 0, 0, 199, 48, 0, 0, 197, 48, 0, 0, 195, 48, 0, 0, 193, 48], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 71680);
+allocate([191, 48, 0, 0, 189, 48, 0, 0, 187, 48, 0, 0, 185, 48, 0, 0, 183, 48, 0, 0, 181, 48, 0, 0, 179, 48, 0, 0, 177, 48, 0, 0, 1, 0, 0, 0, 175, 48, 0, 0, 173, 48, 0, 0, 171, 48, 0, 0, 169, 48, 0, 0, 167, 48, 0, 0, 165, 48, 0, 0, 163, 48, 0, 0, 161, 48, 0, 0, 159, 48, 0, 0, 157, 48, 0, 0, 155, 48, 0, 0, 153, 48, 0, 0, 151, 48, 0, 0, 149, 48, 0, 0, 147, 48, 0, 0, 1, 0, 0, 0, 145, 48, 0, 0, 143, 48, 0, 0, 141, 48, 0, 0, 139, 48, 0, 0, 137, 48, 0, 0, 135, 48, 0, 0, 133, 48, 0, 0, 131, 48, 0, 0, 129, 48, 0, 0, 127, 48, 0, 0, 125, 48, 0, 0, 123, 48, 0, 0, 121, 48, 0, 0, 119, 48, 0, 0, 117, 48, 0, 0, 1, 0, 0, 0, 115, 48, 0, 0, 113, 48, 0, 0, 111, 48, 0, 0, 109, 48, 0, 0, 107, 48, 0, 0, 105, 48, 0, 0, 103, 48, 0, 0, 101, 48, 0, 0, 99, 48, 0, 0, 97, 48, 0, 0, 95, 48, 0, 0, 93, 48, 0, 0, 91, 48, 0, 0, 89, 48, 0, 0, 87, 48, 0, 0, 1, 0, 0, 0, 85, 48, 0, 0, 83, 48, 0, 0, 81, 48, 0, 0, 79, 48, 0, 0, 77, 48, 0, 0, 75, 48, 0, 0, 73, 48, 0, 0, 71, 48, 0, 0, 69, 48, 0, 0, 67, 48, 0, 0, 64, 48, 0, 0, 65, 48, 0, 0, 204, 51, 0, 0, 205, 51, 0, 0, 120, 55, 0, 0, 1, 0, 0, 0, 121, 55, 0, 0, 68, 59, 0, 0, 69, 59, 0, 0, 48, 63, 0, 0, 49, 63, 0, 0, 60, 67, 0, 0, 61, 67, 0, 0, 104, 71, 0, 0, 105, 71, 0, 0, 180, 75, 0, 0, 181, 75, 0, 0, 1, 77, 0, 0, 0, 77, 0, 0, 165, 72, 0, 0, 164, 72, 0, 0, 105, 68, 0, 0, 104, 68, 0, 0, 77, 64, 0, 0, 76, 64, 0, 0, 81, 60, 0, 0, 80, 60, 0, 0, 117, 56, 0, 0, 0, 0, 0, 0, 116, 56, 0, 0, 184, 52, 0, 0, 182, 52, 0, 0, 180, 52, 0, 0, 178, 52, 0, 0, 176, 52, 0, 0, 174, 52, 0, 0, 172, 52, 0, 0, 170, 52, 0, 0, 168, 52, 0, 0, 166, 52, 0, 0, 164, 52, 0, 0, 162, 52, 0, 0, 160, 52, 0, 0, 158, 52, 0, 0, 0, 0, 0, 0, 156, 52, 0, 0, 154, 52, 0, 0, 152, 52, 0, 0, 150, 52, 0, 0, 148, 52, 0, 0, 146, 52, 0, 0, 144, 52, 0, 0, 142, 52, 0, 0, 140, 52, 0, 0, 138, 52, 0, 0, 136, 52, 0, 0, 134, 52, 0, 0, 132, 52, 0, 0, 130, 52, 0, 0, 128, 52, 0, 0, 0, 0, 0, 0, 126, 52, 0, 0, 124, 52, 0, 0, 122, 52, 0, 0, 120, 52, 0, 0, 118, 52, 0, 0, 116, 52, 0, 0, 114, 52, 0, 0, 112, 52, 0, 0, 110, 52, 0, 0, 108, 52, 0, 0, 106, 52, 0, 0, 104, 52, 0, 0, 102, 52, 0, 0, 100, 52, 0, 0, 98, 52, 0, 0, 0, 0, 0, 0, 96, 52, 0, 0, 94, 52, 0, 0, 92, 52, 0, 0, 90, 52, 0, 0, 88, 52, 0, 0, 86, 52, 0, 0, 84, 52, 0, 0, 82, 52, 0, 0, 80, 52, 0, 0, 78, 52, 0, 0, 76, 52, 0, 0, 74, 52, 0, 0, 72, 52, 0, 0, 70, 52, 0, 0, 68, 52, 0, 0, 0, 0, 0, 0, 66, 52, 0, 0, 64, 52, 0, 0, 62, 52, 0, 0, 60, 52, 0, 0, 58, 52, 0, 0, 56, 52, 0, 0, 54, 52, 0, 0, 52, 52, 0, 0, 50, 52, 0, 0, 48, 52, 0, 0, 46, 52, 0, 0, 44, 52, 0, 0, 42, 52, 0, 0, 40, 52, 0, 0, 38, 52, 0, 0, 0, 0, 0, 0, 36, 52, 0, 0, 34, 52, 0, 0, 32, 52, 0, 0, 30, 52, 0, 0, 28, 52, 0, 0, 26, 52, 0, 0, 24, 52, 0, 0, 22, 52, 0, 0, 20, 52, 0, 0, 18, 52, 0, 0, 16, 52, 0, 0, 14, 52, 0, 0, 12, 52, 0, 0, 10, 52, 0, 0, 8, 52, 0, 0, 0, 0, 0, 0, 6, 52, 0, 0, 4, 52, 0, 0, 2, 52, 0, 0, 0, 52, 0, 0, 254, 51, 0, 0, 252, 51, 0, 0, 250, 51, 0, 0, 248, 51, 0, 0, 246, 51, 0, 0, 244, 51, 0, 0, 242, 51, 0, 0, 240, 51, 0, 0, 238, 51, 0, 0, 236, 51, 0, 0, 234, 51, 0, 0, 0, 0, 0, 0, 232, 51, 0, 0, 230, 51, 0, 0, 228, 51, 0, 0, 226, 51, 0, 0, 224, 51, 0, 0, 222, 51, 0, 0, 220, 51, 0, 0, 218, 51, 0, 0, 216, 51, 0, 0, 214, 51, 0, 0, 212, 51, 0, 0, 210, 51, 0, 0, 206, 51, 0, 0, 207, 51, 0, 0, 122, 55, 0, 0, 0, 0, 0, 0, 123, 55, 0, 0, 70, 59, 0, 0, 71, 59, 0, 0, 50, 63, 0, 0, 51, 63, 0, 0, 62, 67, 0, 0, 63, 67, 0, 0, 106, 71, 0, 0, 107, 71, 0, 0, 182, 75, 0, 0, 183, 75, 0, 0, 255, 76, 0, 0, 254, 76, 0, 0, 163, 72, 0, 0, 162, 72, 0, 0, 103, 68, 0, 0, 102, 68, 0, 0, 75, 64, 0, 0, 74, 64, 0, 0, 79, 60, 0, 0, 78, 60, 0, 0, 115, 56, 0, 0, 1, 0, 0, 0, 114, 56, 0, 0, 185, 52, 0, 0, 183, 52, 0, 0, 181, 52, 0, 0, 179, 52, 0, 0, 177, 52, 0, 0, 175, 52, 0, 0, 173, 52, 0, 0, 171, 52, 0, 0, 169, 52, 0, 0, 167, 52, 0, 0, 165, 52, 0, 0, 163, 52, 0, 0, 161, 52, 0, 0, 159, 52, 0, 0, 1, 0, 0, 0, 157, 52, 0, 0, 155, 52, 0, 0, 153, 52, 0, 0, 151, 52, 0, 0, 149, 52, 0, 0, 147, 52, 0, 0, 145, 52, 0, 0, 143, 52, 0, 0, 141, 52, 0, 0, 139, 52, 0, 0, 137, 52, 0, 0, 135, 52, 0, 0, 133, 52, 0, 0, 131, 52, 0, 0, 129, 52, 0, 0, 1, 0, 0, 0, 127, 52, 0, 0, 125, 52, 0, 0, 123, 52, 0, 0, 121, 52, 0, 0, 119, 52, 0, 0, 117, 52, 0, 0, 115, 52, 0, 0, 113, 52, 0, 0, 111, 52, 0, 0, 109, 52, 0, 0, 107, 52, 0, 0, 105, 52, 0, 0, 103, 52, 0, 0, 101, 52, 0, 0, 99, 52, 0, 0, 1, 0, 0, 0, 97, 52, 0, 0, 95, 52, 0, 0, 93, 52, 0, 0, 91, 52, 0, 0, 89, 52, 0, 0, 87, 52, 0, 0, 85, 52, 0, 0, 83, 52, 0, 0, 81, 52, 0, 0, 79, 52, 0, 0, 77, 52, 0, 0, 75, 52, 0, 0, 73, 52, 0, 0, 71, 52, 0, 0, 69, 52, 0, 0, 1, 0, 0, 0, 67, 52, 0, 0, 65, 52, 0, 0, 63, 52, 0, 0, 61, 52, 0, 0, 59, 52, 0, 0, 57, 52, 0, 0, 55, 52, 0, 0, 53, 52, 0, 0, 51, 52, 0, 0, 49, 52, 0, 0, 47, 52, 0, 0, 45, 52, 0, 0, 43, 52, 0, 0, 41, 52, 0, 0, 39, 52, 0, 0, 1, 0, 0, 0, 37, 52, 0, 0, 35, 52, 0, 0, 33, 52, 0, 0, 31, 52, 0, 0, 29, 52, 0, 0, 27, 52, 0, 0, 25, 52, 0, 0, 23, 52, 0, 0, 21, 52, 0, 0, 19, 52, 0, 0, 17, 52, 0, 0, 15, 52, 0, 0, 13, 52, 0, 0, 11, 52, 0, 0, 9, 52, 0, 0, 1, 0, 0, 0, 7, 52, 0, 0, 5, 52, 0, 0, 3, 52, 0, 0, 1, 52, 0, 0, 255, 51, 0, 0, 253, 51, 0, 0, 251, 51, 0, 0, 249, 51, 0, 0, 247, 51, 0, 0, 245, 51, 0, 0, 243, 51, 0, 0, 241, 51, 0, 0, 239, 51, 0, 0, 237, 51, 0, 0, 235, 51, 0, 0, 1, 0, 0, 0, 233, 51, 0, 0, 231, 51, 0, 0, 229, 51, 0, 0, 227, 51, 0, 0, 225, 51, 0, 0, 223, 51, 0, 0, 221, 51, 0, 0, 219, 51, 0, 0, 217, 51, 0, 0, 215, 51, 0, 0, 213, 51, 0, 0, 211, 51, 0, 0, 208, 51, 0, 0, 209, 51, 0, 0, 124, 55, 0, 0, 1, 0, 0, 0, 125, 55, 0, 0, 72, 59, 0, 0, 73, 59, 0, 0, 52, 63, 0, 0, 53, 63, 0, 0, 64, 67, 0, 0, 65, 67, 0, 0, 108, 71, 0, 0, 109, 71, 0, 0, 184, 75, 0, 0, 185, 75, 0, 0, 253, 76, 0, 0, 252, 76, 0, 0, 161, 72, 0, 0, 160, 72, 0, 0, 101, 68, 0, 0, 100, 68, 0, 0, 73, 64, 0, 0, 72, 64, 0, 0, 77, 60, 0, 0, 76, 60, 0, 0, 112, 56, 0, 0, 0, 0, 0, 0, 110, 56, 0, 0, 108, 56, 0, 0, 106, 56, 0, 0, 104, 56, 0, 0, 102, 56, 0, 0, 100, 56, 0, 0, 98, 56, 0, 0, 96, 56, 0, 0, 94, 56, 0, 0, 92, 56, 0, 0, 90, 56, 0, 0, 88, 56, 0, 0, 86, 56, 0, 0, 84, 56, 0, 0, 82, 56, 0, 0, 0, 0, 0, 0, 80, 56, 0, 0, 78, 56, 0, 0, 76, 56, 0, 0, 74, 56, 0, 0, 72, 56, 0, 0, 70, 56, 0, 0, 68, 56, 0, 0, 66, 56, 0, 0, 64, 56, 0, 0, 62, 56, 0, 0, 60, 56, 0, 0, 58, 56, 0, 0, 56, 56, 0, 0, 54, 56, 0, 0, 52, 56, 0, 0, 0, 0, 0, 0, 50, 56, 0, 0, 48, 56, 0, 0, 46, 56, 0, 0, 44, 56, 0, 0, 42, 56, 0, 0, 40, 56, 0, 0, 38, 56, 0, 0, 36, 56, 0, 0, 34, 56, 0, 0, 32, 56, 0, 0, 30, 56, 0, 0, 28, 56, 0, 0, 26, 56, 0, 0, 24, 56, 0, 0, 22, 56, 0, 0, 0, 0, 0, 0, 20, 56, 0, 0, 18, 56, 0, 0, 16, 56, 0, 0, 14, 56, 0, 0, 12, 56, 0, 0, 10, 56, 0, 0, 8, 56, 0, 0, 6, 56, 0, 0, 4, 56, 0, 0, 2, 56, 0, 0, 0, 56, 0, 0, 254, 55, 0, 0, 252, 55, 0, 0, 250, 55, 0, 0, 248, 55, 0, 0, 0, 0, 0, 0, 246, 55, 0, 0, 244, 55, 0, 0, 242, 55, 0, 0, 240, 55, 0, 0, 238, 55, 0, 0, 236, 55, 0, 0, 234, 55, 0, 0, 232, 55, 0, 0, 230, 55, 0, 0, 228, 55, 0, 0, 226, 55, 0, 0, 224, 55, 0, 0, 222, 55, 0, 0, 220, 55, 0, 0, 218, 55, 0, 0, 0, 0, 0, 0, 216, 55, 0, 0, 214, 55, 0, 0, 212, 55, 0, 0, 210, 55, 0, 0, 208, 55, 0, 0, 206, 55, 0, 0, 204, 55, 0, 0, 202, 55, 0, 0, 200, 55, 0, 0, 198, 55, 0, 0, 196, 55, 0, 0, 194, 55, 0, 0, 192, 55, 0, 0, 190, 55, 0, 0, 188, 55, 0, 0, 0, 0, 0, 0, 186, 55, 0, 0, 184, 55, 0, 0, 182, 55, 0, 0, 180, 55, 0, 0, 178, 55, 0, 0, 176, 55, 0, 0, 174, 55, 0, 0, 172, 55, 0, 0, 170, 55, 0, 0, 168, 55, 0, 0, 166, 55, 0, 0, 164, 55, 0, 0, 162, 55, 0, 0, 160, 55, 0, 0, 158, 55, 0, 0, 0, 0, 0, 0, 156, 55, 0, 0, 154, 55, 0, 0, 152, 55, 0, 0, 150, 55, 0, 0, 148, 55, 0, 0, 146, 55, 0, 0, 144, 55, 0, 0, 142, 55, 0, 0, 140, 55, 0, 0, 138, 55, 0, 0, 136, 55, 0, 0, 134, 55, 0, 0, 132, 55, 0, 0, 130, 55, 0, 0, 126, 55, 0, 0, 0, 0, 0, 0, 127, 55, 0, 0, 74, 59, 0, 0, 75, 59, 0, 0, 54, 63, 0, 0, 55, 63, 0, 0, 66, 67, 0, 0, 67, 67, 0, 0, 110, 71, 0, 0, 111, 71, 0, 0, 186, 75, 0, 0, 187, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 251, 76, 0, 0, 250, 76, 0, 0, 159, 72, 0, 0, 158, 72, 0, 0, 99, 68, 0, 0, 98, 68, 0, 0, 71, 64, 0, 0, 70, 64, 0, 0, 75, 60, 0, 0, 74, 60, 0, 0, 113, 56, 0, 0, 0, 0, 0, 0, 111, 56, 0, 0, 109, 56, 0, 0, 107, 56, 0, 0, 105, 56, 0, 0, 103, 56, 0, 0, 101, 56, 0, 0, 99, 56, 0, 0, 97, 56, 0, 0, 95, 56, 0, 0, 93, 56, 0, 0, 91, 56, 0, 0, 89, 56, 0, 0, 87, 56, 0, 0, 85, 56, 0, 0, 83, 56, 0, 0, 0, 0, 0, 0, 81, 56, 0, 0, 79, 56, 0, 0, 77, 56, 0, 0, 75, 56, 0, 0, 73, 56, 0, 0, 71, 56, 0, 0, 69, 56, 0, 0, 67, 56, 0, 0, 65, 56, 0, 0, 63, 56, 0, 0, 61, 56, 0, 0, 59, 56, 0, 0, 57, 56, 0, 0, 55, 56, 0, 0, 53, 56, 0, 0, 0, 0, 0, 0, 51, 56, 0, 0, 49, 56, 0, 0, 47, 56, 0, 0, 45, 56, 0, 0, 43, 56, 0, 0, 41, 56, 0, 0, 39, 56, 0, 0, 37, 56, 0, 0, 35, 56, 0, 0, 33, 56, 0, 0, 31, 56, 0, 0, 29, 56, 0, 0, 27, 56, 0, 0, 25, 56, 0, 0, 23, 56, 0, 0, 0, 0, 0, 0, 21, 56, 0, 0, 19, 56, 0, 0, 17, 56, 0, 0, 15, 56, 0, 0, 13, 56, 0, 0, 11, 56, 0, 0, 9, 56, 0, 0, 7, 56, 0, 0, 5, 56, 0, 0, 3, 56, 0, 0, 1, 56, 0, 0, 255, 55, 0, 0, 253, 55, 0, 0, 251, 55, 0, 0, 249, 55, 0, 0, 0, 0, 0, 0, 247, 55, 0, 0, 245, 55, 0, 0, 243, 55, 0, 0, 241, 55, 0, 0, 239, 55, 0, 0, 237, 55, 0, 0, 235, 55, 0, 0, 233, 55, 0, 0, 231, 55, 0, 0, 229, 55, 0, 0, 227, 55, 0, 0, 225, 55, 0, 0, 223, 55, 0, 0, 221, 55, 0, 0, 219, 55, 0, 0, 0, 0, 0, 0, 217, 55, 0, 0, 215, 55, 0, 0, 213, 55, 0, 0, 211, 55, 0, 0, 209, 55, 0, 0, 207, 55, 0, 0, 205, 55, 0, 0, 203, 55, 0, 0, 201, 55, 0, 0, 199, 55, 0, 0, 197, 55, 0, 0, 195, 55, 0, 0, 193, 55, 0, 0, 191, 55, 0, 0, 189, 55, 0, 0, 0, 0, 0, 0, 187, 55, 0, 0, 185, 55, 0, 0, 183, 55, 0, 0, 181, 55, 0, 0, 179, 55, 0, 0, 177, 55, 0, 0, 175, 55, 0, 0, 173, 55, 0, 0, 171, 55, 0, 0, 169, 55, 0, 0, 167, 55, 0, 0, 165, 55, 0, 0, 163, 55, 0, 0, 161, 55, 0, 0, 159, 55, 0, 0, 0, 0, 0, 0, 157, 55, 0, 0, 155, 55, 0, 0, 153, 55, 0, 0, 151, 55, 0, 0, 149, 55, 0, 0, 147, 55, 0, 0, 145, 55, 0, 0, 143, 55, 0, 0, 141, 55, 0, 0, 139, 55, 0, 0, 137, 55, 0, 0, 135, 55, 0, 0, 133, 55, 0, 0, 131, 55, 0, 0, 128, 55, 0, 0, 0, 0, 0, 0, 129, 55, 0, 0, 76, 59, 0, 0, 77, 59, 0, 0, 56, 63, 0, 0, 57, 63, 0, 0, 68, 67, 0, 0, 69, 67, 0, 0, 112, 71, 0, 0, 113, 71, 0, 0, 188, 75, 0, 0, 189, 75, 0, 0, 249, 76, 0, 0, 248, 76, 0, 0, 157, 72, 0, 0, 156, 72, 0, 0, 97, 68, 0, 0, 96, 68, 0, 0, 69, 64, 0, 0, 68, 64, 0, 0, 72, 60, 0, 0, 70, 60, 0, 0, 68, 60, 0, 0, 1, 0, 0, 0, 66, 60, 0, 0, 64, 60, 0, 0, 62, 60, 0, 0, 60, 60, 0, 0, 58, 60, 0, 0, 56, 60, 0, 0, 54, 60, 0, 0, 52, 60, 0, 0, 50, 60, 0, 0, 48, 60, 0, 0, 46, 60, 0, 0, 44, 60, 0, 0, 42, 60, 0, 0, 40, 60, 0, 0, 38, 60, 0, 0, 1, 0, 0, 0, 36, 60, 0, 0, 34, 60, 0, 0, 32, 60, 0, 0, 30, 60, 0, 0, 28, 60, 0, 0, 26, 60, 0, 0, 24, 60, 0, 0, 22, 60, 0, 0, 20, 60, 0, 0, 18, 60, 0, 0, 16, 60, 0, 0, 14, 60, 0, 0, 12, 60, 0, 0, 10, 60, 0, 0, 8, 60, 0, 0, 1, 0, 0, 0, 6, 60, 0, 0, 4, 60, 0, 0, 2, 60, 0, 0, 0, 60, 0, 0, 254, 59, 0, 0, 252, 59, 0, 0, 250, 59, 0, 0, 248, 59, 0, 0, 246, 59, 0, 0, 244, 59, 0, 0, 242, 59, 0, 0, 240, 59, 0, 0, 238, 59, 0, 0, 236, 59, 0, 0, 234, 59, 0, 0, 1, 0, 0, 0, 232, 59, 0, 0, 230, 59, 0, 0, 228, 59, 0, 0, 226, 59, 0, 0, 224, 59, 0, 0, 222, 59, 0, 0, 220, 59, 0, 0, 218, 59, 0, 0, 216, 59, 0, 0, 214, 59, 0, 0, 212, 59, 0, 0, 210, 59, 0, 0, 208, 59, 0, 0, 206, 59, 0, 0, 204, 59, 0, 0, 1, 0, 0, 0, 202, 59, 0, 0, 200, 59, 0, 0, 198, 59, 0, 0, 196, 59, 0, 0, 194, 59, 0, 0, 192, 59, 0, 0, 190, 59, 0, 0, 188, 59, 0, 0, 186, 59, 0, 0, 184, 59, 0, 0, 182, 59, 0, 0, 180, 59, 0, 0, 178, 59, 0, 0, 176, 59, 0, 0, 174, 59, 0, 0, 1, 0, 0, 0, 172, 59, 0, 0, 170, 59, 0, 0, 168, 59, 0, 0, 166, 59, 0, 0, 164, 59, 0, 0, 162, 59, 0, 0, 160, 59, 0, 0, 158, 59, 0, 0, 156, 59, 0, 0, 154, 59, 0, 0, 152, 59, 0, 0, 150, 59, 0, 0, 148, 59, 0, 0, 146, 59, 0, 0, 144, 59, 0, 0, 1, 0, 0, 0, 142, 59, 0, 0, 140, 59, 0, 0, 138, 59, 0, 0, 136, 59, 0, 0, 134, 59, 0, 0, 132, 59, 0, 0, 130, 59, 0, 0, 128, 59, 0, 0, 126, 59, 0, 0, 124, 59, 0, 0, 122, 59, 0, 0, 120, 59, 0, 0, 118, 59, 0, 0, 116, 59, 0, 0, 114, 59, 0, 0, 1, 0, 0, 0, 112, 59, 0, 0, 110, 59, 0, 0, 108, 59, 0, 0, 106, 59, 0, 0, 104, 59, 0, 0, 102, 59, 0, 0, 100, 59, 0, 0, 98, 59, 0, 0, 96, 59, 0, 0, 94, 59, 0, 0, 92, 59, 0, 0, 90, 59, 0, 0, 88, 59, 0, 0, 86, 59, 0, 0, 84, 59, 0, 0, 1, 0, 0, 0, 82, 59, 0, 0, 78, 59, 0, 0, 79, 59, 0, 0, 58, 63, 0, 0, 59, 63, 0, 0, 70, 67, 0, 0, 71, 67, 0, 0, 114, 71, 0, 0, 115, 71, 0, 0, 190, 75, 0, 0, 191, 75, 0, 0, 247, 76, 0, 0, 246, 76, 0, 0, 155, 72, 0, 0, 154, 72, 0, 0, 95, 68, 0, 0, 94, 68, 0, 0, 67, 64, 0, 0, 66, 64, 0, 0, 73, 60, 0, 0, 71, 60, 0, 0, 69, 60, 0, 0, 0, 0, 0, 0, 67, 60, 0, 0, 65, 60, 0, 0, 63, 60, 0, 0, 61, 60, 0, 0, 59, 60, 0, 0, 57, 60, 0, 0, 55, 60, 0, 0, 53, 60, 0, 0, 51, 60, 0, 0, 49, 60, 0, 0, 47, 60, 0, 0, 45, 60, 0, 0, 43, 60, 0, 0, 41, 60, 0, 0, 39, 60, 0, 0, 0, 0, 0, 0, 37, 60, 0, 0, 35, 60, 0, 0, 33, 60, 0, 0, 31, 60, 0, 0, 29, 60, 0, 0, 27, 60, 0, 0, 25, 60, 0, 0, 23, 60, 0, 0, 21, 60, 0, 0, 19, 60, 0, 0, 17, 60, 0, 0, 15, 60, 0, 0, 13, 60, 0, 0, 11, 60, 0, 0, 9, 60, 0, 0, 0, 0, 0, 0, 7, 60, 0, 0, 5, 60, 0, 0, 3, 60, 0, 0, 1, 60, 0, 0, 255, 59, 0, 0, 253, 59, 0, 0, 251, 59, 0, 0, 249, 59, 0, 0, 247, 59, 0, 0, 245, 59, 0, 0, 243, 59, 0, 0, 241, 59, 0, 0, 239, 59, 0, 0, 237, 59, 0, 0, 235, 59, 0, 0, 0, 0, 0, 0, 233, 59, 0, 0, 231, 59, 0, 0, 229, 59, 0, 0, 227, 59, 0, 0, 225, 59, 0, 0, 223, 59, 0, 0, 221, 59, 0, 0, 219, 59, 0, 0, 217, 59, 0, 0, 215, 59, 0, 0, 213, 59, 0, 0, 211, 59, 0, 0, 209, 59, 0, 0, 207, 59, 0, 0, 205, 59, 0, 0, 0, 0, 0, 0, 203, 59, 0, 0, 201, 59, 0, 0, 199, 59, 0, 0, 197, 59, 0, 0, 195, 59, 0, 0, 193, 59, 0, 0, 191, 59, 0, 0, 189, 59, 0, 0, 187, 59, 0, 0, 185, 59, 0, 0, 183, 59, 0, 0, 181, 59, 0, 0, 179, 59, 0, 0, 177, 59, 0, 0, 175, 59, 0, 0, 0, 0, 0, 0, 173, 59, 0, 0, 171, 59, 0, 0, 169, 59, 0, 0, 167, 59, 0, 0, 165, 59, 0, 0, 163, 59, 0, 0, 161, 59, 0, 0, 159, 59, 0, 0, 157, 59, 0, 0, 155, 59, 0, 0, 153, 59, 0, 0, 151, 59, 0, 0, 149, 59, 0, 0, 147, 59, 0, 0, 145, 59, 0, 0, 0, 0, 0, 0, 143, 59, 0, 0, 141, 59, 0, 0, 139, 59, 0, 0, 137, 59, 0, 0, 135, 59, 0, 0, 133, 59, 0, 0, 131, 59, 0, 0, 129, 59, 0, 0, 127, 59, 0, 0, 125, 59, 0, 0, 123, 59, 0, 0, 121, 59, 0, 0, 119, 59, 0, 0, 117, 59, 0, 0, 115, 59, 0, 0, 0, 0, 0, 0, 113, 59, 0, 0, 111, 59, 0, 0, 109, 59, 0, 0, 107, 59, 0, 0, 105, 59, 0, 0, 103, 59, 0, 0, 101, 59, 0, 0, 99, 59, 0, 0, 97, 59, 0, 0, 95, 59, 0, 0, 93, 59, 0, 0, 91, 59, 0, 0, 89, 59, 0, 0, 87, 59, 0, 0, 85, 59, 0, 0, 0, 0, 0, 0, 83, 59, 0, 0, 80, 59, 0, 0, 81, 59, 0, 0, 60, 63, 0, 0, 61, 63, 0, 0, 72, 67, 0, 0, 73, 67, 0, 0, 116, 71, 0, 0, 117, 71, 0, 0, 192, 75, 0, 0, 193, 75, 0, 0, 245, 76, 0, 0, 244, 76, 0, 0, 153, 72, 0, 0, 152, 72, 0, 0, 93, 68, 0, 0, 92, 68, 0, 0, 64, 64, 0, 0, 62, 64, 0, 0, 60, 64, 0, 0, 58, 64, 0, 0, 56, 64, 0, 0, 1, 0, 0, 0, 54, 64, 0, 0, 52, 64, 0, 0, 50, 64, 0, 0, 48, 64, 0, 0, 46, 64, 0, 0, 44, 64, 0, 0, 42, 64, 0, 0, 40, 64, 0, 0, 38, 64, 0, 0, 36, 64, 0, 0, 34, 64, 0, 0, 32, 64, 0, 0, 30, 64, 0, 0, 28, 64, 0, 0, 26, 64, 0, 0, 1, 0, 0, 0, 24, 64, 0, 0, 22, 64, 0, 0, 20, 64, 0, 0, 18, 64, 0, 0, 16, 64, 0, 0, 14, 64, 0, 0, 12, 64, 0, 0, 10, 64, 0, 0, 8, 64, 0, 0, 6, 64, 0, 0, 4, 64, 0, 0, 2, 64, 0, 0, 0, 64, 0, 0, 254, 63, 0, 0, 252, 63, 0, 0, 1, 0, 0, 0, 250, 63, 0, 0, 248, 63, 0, 0, 246, 63, 0, 0, 244, 63, 0, 0, 242, 63, 0, 0, 240, 63, 0, 0, 238, 63, 0, 0, 236, 63, 0, 0, 234, 63, 0, 0, 232, 63, 0, 0, 230, 63, 0, 0, 228, 63, 0, 0, 226, 63, 0, 0, 224, 63, 0, 0, 222, 63, 0, 0, 1, 0, 0, 0, 220, 63, 0, 0, 218, 63, 0, 0, 216, 63, 0, 0, 214, 63, 0, 0, 212, 63, 0, 0, 210, 63, 0, 0, 208, 63, 0, 0, 206, 63, 0, 0, 204, 63, 0, 0, 202, 63, 0, 0, 200, 63, 0, 0, 198, 63, 0, 0, 196, 63, 0, 0, 194, 63, 0, 0, 192, 63, 0, 0, 1, 0, 0, 0, 190, 63, 0, 0, 188, 63, 0, 0, 186, 63, 0, 0, 184, 63, 0, 0, 182, 63, 0, 0, 180, 63, 0, 0, 178, 63, 0, 0, 176, 63, 0, 0, 174, 63, 0, 0, 172, 63, 0, 0, 170, 63, 0, 0, 168, 63, 0, 0, 166, 63, 0, 0, 164, 63, 0, 0, 162, 63, 0, 0, 1, 0, 0, 0, 160, 63, 0, 0, 158, 63, 0, 0, 156, 63, 0, 0, 154, 63, 0, 0, 152, 63, 0, 0, 150, 63, 0, 0, 148, 63, 0, 0, 146, 63, 0, 0, 144, 63, 0, 0, 142, 63, 0, 0, 140, 63, 0, 0, 138, 63, 0, 0, 136, 63, 0, 0, 134, 63, 0, 0, 132, 63, 0, 0, 1, 0, 0, 0, 130, 63, 0, 0, 128, 63, 0, 0, 126, 63, 0, 0, 124, 63, 0, 0, 122, 63, 0, 0, 120, 63, 0, 0, 118, 63, 0, 0, 116, 63, 0, 0, 114, 63, 0, 0, 112, 63, 0, 0, 110, 63, 0, 0, 108, 63, 0, 0, 106, 63, 0, 0, 104, 63, 0, 0, 102, 63, 0, 0, 1, 0, 0, 0, 100, 63, 0, 0, 98, 63, 0, 0, 96, 63, 0, 0, 94, 63, 0, 0, 92, 63, 0, 0, 90, 63, 0, 0, 88, 63, 0, 0, 86, 63, 0, 0, 84, 63, 0, 0, 82, 63, 0, 0, 80, 63, 0, 0, 78, 63, 0, 0, 76, 63, 0, 0, 74, 63, 0, 0, 72, 63, 0, 0, 1, 0, 0, 0, 70, 63, 0, 0, 68, 63, 0, 0, 66, 63, 0, 0, 62, 63, 0, 0, 63, 63, 0, 0, 74, 67, 0, 0, 75, 67, 0, 0, 118, 71, 0, 0, 119, 71, 0, 0, 194, 75, 0, 0, 195, 75, 0, 0, 243, 76, 0, 0, 242, 76, 0, 0, 151, 72, 0, 0, 150, 72, 0, 0, 91, 68, 0, 0, 90, 68, 0, 0, 65, 64, 0, 0, 63, 64, 0, 0, 61, 64, 0, 0, 59, 64, 0, 0, 57, 64, 0, 0, 0, 0, 0, 0, 55, 64, 0, 0, 53, 64, 0, 0, 51, 64, 0, 0, 49, 64, 0, 0, 47, 64, 0, 0, 45, 64, 0, 0, 43, 64, 0, 0, 41, 64, 0, 0, 39, 64, 0, 0, 37, 64, 0, 0, 35, 64, 0, 0, 33, 64, 0, 0, 31, 64, 0, 0, 29, 64, 0, 0, 27, 64, 0, 0, 0, 0, 0, 0, 25, 64, 0, 0, 23, 64, 0, 0, 21, 64, 0, 0, 19, 64, 0, 0, 17, 64, 0, 0, 15, 64, 0, 0, 13, 64, 0, 0, 11, 64, 0, 0, 9, 64, 0, 0, 7, 64, 0, 0, 5, 64, 0, 0, 3, 64, 0, 0, 1, 64, 0, 0, 255, 63, 0, 0, 253, 63, 0, 0, 0, 0, 0, 0, 251, 63, 0, 0, 249, 63, 0, 0, 247, 63, 0, 0, 245, 63, 0, 0, 243, 63, 0, 0, 241, 63, 0, 0, 239, 63, 0, 0, 237, 63, 0, 0, 235, 63, 0, 0, 233, 63, 0, 0, 231, 63, 0, 0, 229, 63, 0, 0, 227, 63, 0, 0, 225, 63, 0, 0, 223, 63, 0, 0, 0, 0, 0, 0, 221, 63, 0, 0, 219, 63, 0, 0, 217, 63, 0, 0, 215, 63, 0, 0, 213, 63, 0, 0, 211, 63, 0, 0, 209, 63, 0, 0, 207, 63, 0, 0, 205, 63, 0, 0, 203, 63, 0, 0, 201, 63, 0, 0, 199, 63, 0, 0, 197, 63, 0, 0, 195, 63, 0, 0, 193, 63, 0, 0, 0, 0, 0, 0, 191, 63, 0, 0, 189, 63, 0, 0, 187, 63, 0, 0, 185, 63, 0, 0, 183, 63, 0, 0, 181, 63, 0, 0, 179, 63, 0, 0, 177, 63, 0, 0, 175, 63, 0, 0, 173, 63, 0, 0, 171, 63, 0, 0, 169, 63, 0, 0, 167, 63, 0, 0, 165, 63, 0, 0, 163, 63, 0, 0, 0, 0, 0, 0, 161, 63, 0, 0, 159, 63, 0, 0, 157, 63, 0, 0, 155, 63, 0, 0, 153, 63, 0, 0, 151, 63, 0, 0, 149, 63, 0, 0, 147, 63, 0, 0, 145, 63, 0, 0, 143, 63, 0, 0, 141, 63, 0, 0, 139, 63, 0, 0, 137, 63, 0, 0, 135, 63, 0, 0, 133, 63, 0, 0, 0, 0, 0, 0, 131, 63, 0, 0, 129, 63, 0, 0, 127, 63, 0, 0, 125, 63, 0, 0, 123, 63, 0, 0, 121, 63, 0, 0, 119, 63, 0, 0, 117, 63, 0, 0, 115, 63, 0, 0, 113, 63, 0, 0, 111, 63, 0, 0, 109, 63, 0, 0, 107, 63, 0, 0, 105, 63, 0, 0, 103, 63, 0, 0, 0, 0, 0, 0, 101, 63, 0, 0, 99, 63, 0, 0, 97, 63, 0, 0, 95, 63, 0, 0, 93, 63, 0, 0, 91, 63, 0, 0, 89, 63, 0, 0, 87, 63, 0, 0, 85, 63, 0, 0, 83, 63, 0, 0, 81, 63, 0, 0, 79, 63, 0, 0, 77, 63, 0, 0, 75, 63, 0, 0, 73, 63, 0, 0, 0, 0, 0, 0, 71, 63, 0, 0, 69, 63, 0, 0, 67, 63, 0, 0, 64, 63, 0, 0, 65, 63, 0, 0, 76, 67, 0, 0, 77, 67, 0, 0, 120, 71, 0, 0, 121, 71, 0, 0, 196, 75, 0, 0, 197, 75, 0, 0, 241, 76, 0, 0, 240, 76, 0, 0, 149, 72, 0, 0, 148, 72, 0, 0, 88, 68, 0, 0, 86, 68, 0, 0, 84, 68, 0, 0, 82, 68, 0, 0, 80, 68, 0, 0, 78, 68, 0, 0, 76, 68, 0, 0, 1, 0, 0, 0, 74, 68, 0, 0, 72, 68, 0, 0, 70, 68, 0, 0, 68, 68, 0, 0, 66, 68, 0, 0, 64, 68, 0, 0, 62, 68, 0, 0, 60, 68, 0, 0, 58, 68, 0, 0, 56, 68, 0, 0, 54, 68, 0, 0, 52, 68, 0, 0, 50, 68, 0, 0, 48, 68, 0, 0, 46, 68, 0, 0, 1, 0, 0, 0, 44, 68, 0, 0, 42, 68, 0, 0, 40, 68, 0, 0, 38, 68, 0, 0, 36, 68, 0, 0, 34, 68, 0, 0, 32, 68, 0, 0, 30, 68, 0, 0, 28, 68, 0, 0, 26, 68, 0, 0, 24, 68, 0, 0, 22, 68, 0, 0, 20, 68, 0, 0, 18, 68, 0, 0, 16, 68, 0, 0, 1, 0, 0, 0, 14, 68, 0, 0, 12, 68, 0, 0, 10, 68, 0, 0, 8, 68, 0, 0, 6, 68, 0, 0, 4, 68, 0, 0, 2, 68, 0, 0, 0, 68, 0, 0, 254, 67, 0, 0, 252, 67, 0, 0, 250, 67, 0, 0, 248, 67, 0, 0, 246, 67, 0, 0, 244, 67, 0, 0, 242, 67, 0, 0, 1, 0, 0, 0, 240, 67, 0, 0, 238, 67, 0, 0, 236, 67, 0, 0, 234, 67, 0, 0, 232, 67, 0, 0, 230, 67, 0, 0, 228, 67, 0, 0, 226, 67, 0, 0, 224, 67, 0, 0, 222, 67, 0, 0, 220, 67, 0, 0, 218, 67, 0, 0, 216, 67, 0, 0, 214, 67, 0, 0, 212, 67, 0, 0, 1, 0, 0, 0, 210, 67, 0, 0, 208, 67, 0, 0, 206, 67, 0, 0, 204, 67, 0, 0, 202, 67, 0, 0, 200, 67, 0, 0, 198, 67, 0, 0, 196, 67, 0, 0, 194, 67, 0, 0, 192, 67, 0, 0, 190, 67, 0, 0, 188, 67, 0, 0, 186, 67, 0, 0, 184, 67, 0, 0, 182, 67, 0, 0, 1, 0, 0, 0, 180, 67, 0, 0, 178, 67, 0, 0, 176, 67, 0, 0, 174, 67, 0, 0, 172, 67, 0, 0, 170, 67, 0, 0, 168, 67, 0, 0, 166, 67, 0, 0, 164, 67, 0, 0, 162, 67, 0, 0, 160, 67, 0, 0, 158, 67, 0, 0, 156, 67, 0, 0, 154, 67, 0, 0, 152, 67, 0, 0, 1, 0, 0, 0, 150, 67, 0, 0, 148, 67, 0, 0, 146, 67, 0, 0, 144, 67, 0, 0, 142, 67, 0, 0, 140, 67, 0, 0, 138, 67, 0, 0, 136, 67, 0, 0, 134, 67, 0, 0, 132, 67, 0, 0, 130, 67, 0, 0, 128, 67, 0, 0, 126, 67, 0, 0, 124, 67, 0, 0, 122, 67, 0, 0, 1, 0, 0, 0, 120, 67, 0, 0, 118, 67, 0, 0, 116, 67, 0, 0, 114, 67, 0, 0, 112, 67, 0, 0, 110, 67, 0, 0, 108, 67, 0, 0, 106, 67, 0, 0, 104, 67, 0, 0, 102, 67, 0, 0, 100, 67, 0, 0, 98, 67, 0, 0, 96, 67, 0, 0, 94, 67, 0, 0, 92, 67, 0, 0, 1, 0, 0, 0, 90, 67, 0, 0, 88, 67, 0, 0, 86, 67, 0, 0, 84, 67, 0, 0, 82, 67, 0, 0, 78, 67, 0, 0, 79, 67, 0, 0, 122, 71, 0, 0, 123, 71, 0, 0, 198, 75, 0, 0, 199, 75, 0, 0, 239, 76, 0, 0, 238, 76, 0, 0, 147, 72, 0, 0, 146, 72, 0, 0, 89, 68, 0, 0, 87, 68, 0, 0, 85, 68, 0, 0, 83, 68, 0, 0, 81, 68, 0, 0, 79, 68, 0, 0, 77, 68, 0, 0, 0, 0, 0, 0, 75, 68, 0, 0, 73, 68, 0, 0, 71, 68, 0, 0, 69, 68, 0, 0, 67, 68, 0, 0, 65, 68, 0, 0, 63, 68, 0, 0, 61, 68, 0, 0, 59, 68, 0, 0, 57, 68, 0, 0, 55, 68, 0, 0, 53, 68, 0, 0, 51, 68, 0, 0, 49, 68, 0, 0, 47, 68, 0, 0, 0, 0, 0, 0, 45, 68, 0, 0, 43, 68, 0, 0, 41, 68, 0, 0, 39, 68, 0, 0, 37, 68, 0, 0, 35, 68, 0, 0, 33, 68, 0, 0, 31, 68, 0, 0, 29, 68, 0, 0, 27, 68, 0, 0, 25, 68, 0, 0, 23, 68, 0, 0, 21, 68, 0, 0, 19, 68, 0, 0, 17, 68, 0, 0, 0, 0, 0, 0, 15, 68, 0, 0, 13, 68, 0, 0, 11, 68, 0, 0, 9, 68, 0, 0, 7, 68, 0, 0, 5, 68, 0, 0, 3, 68, 0, 0, 1, 68, 0, 0, 255, 67, 0, 0, 253, 67, 0, 0, 251, 67, 0, 0, 249, 67, 0, 0, 247, 67, 0, 0, 245, 67, 0, 0, 243, 67, 0, 0, 0, 0, 0, 0, 241, 67, 0, 0, 239, 67, 0, 0, 237, 67, 0, 0, 235, 67, 0, 0, 233, 67, 0, 0, 231, 67, 0, 0, 229, 67, 0, 0, 227, 67, 0, 0, 225, 67, 0, 0, 223, 67, 0, 0, 221, 67, 0, 0, 219, 67, 0, 0, 217, 67, 0, 0, 215, 67, 0, 0, 213, 67, 0, 0, 0, 0, 0, 0, 211, 67, 0, 0, 209, 67, 0, 0, 207, 67, 0, 0, 205, 67, 0, 0, 203, 67, 0, 0, 201, 67, 0, 0, 199, 67, 0, 0, 197, 67, 0, 0, 195, 67, 0, 0, 193, 67, 0, 0, 191, 67, 0, 0, 189, 67, 0, 0, 187, 67, 0, 0, 185, 67, 0, 0, 183, 67, 0, 0, 0, 0, 0, 0, 181, 67, 0, 0, 179, 67, 0, 0, 177, 67, 0, 0, 175, 67, 0, 0, 173, 67, 0, 0, 171, 67, 0, 0, 169, 67, 0, 0, 167, 67, 0, 0, 165, 67, 0, 0, 163, 67, 0, 0, 161, 67, 0, 0, 159, 67, 0, 0, 157, 67, 0, 0, 155, 67, 0, 0, 153, 67, 0, 0, 0, 0, 0, 0, 151, 67, 0, 0, 149, 67, 0, 0, 147, 67, 0, 0, 145, 67, 0, 0, 143, 67, 0, 0, 141, 67, 0, 0, 139, 67, 0, 0, 137, 67, 0, 0, 135, 67, 0, 0, 133, 67, 0, 0, 131, 67, 0, 0, 129, 67, 0, 0, 127, 67, 0, 0, 125, 67, 0, 0, 123, 67, 0, 0, 0, 0, 0, 0, 121, 67, 0, 0, 119, 67, 0, 0, 117, 67, 0, 0, 115, 67, 0, 0, 113, 67, 0, 0, 111, 67, 0, 0, 109, 67, 0, 0, 107, 67, 0, 0, 105, 67, 0, 0, 103, 67, 0, 0, 101, 67, 0, 0, 99, 67, 0, 0, 97, 67, 0, 0, 95, 67, 0, 0, 93, 67, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 89, 67, 0, 0, 87, 67, 0, 0, 85, 67, 0, 0, 83, 67, 0, 0, 80, 67, 0, 0, 81, 67, 0, 0, 124, 71, 0, 0, 125, 71, 0, 0, 200, 75, 0, 0, 201, 75, 0, 0, 237, 76, 0, 0, 236, 76, 0, 0, 144, 72, 0, 0, 142, 72, 0, 0, 140, 72, 0, 0, 138, 72, 0, 0, 136, 72, 0, 0, 134, 72, 0, 0, 132, 72, 0, 0, 130, 72, 0, 0, 128, 72, 0, 0, 1, 0, 0, 0, 126, 72, 0, 0, 124, 72, 0, 0, 122, 72, 0, 0, 120, 72, 0, 0, 118, 72, 0, 0, 116, 72, 0, 0, 114, 72, 0, 0, 112, 72, 0, 0, 110, 72, 0, 0, 108, 72, 0, 0, 106, 72, 0, 0, 104, 72, 0, 0, 102, 72, 0, 0, 100, 72, 0, 0, 98, 72, 0, 0, 1, 0, 0, 0, 96, 72, 0, 0, 94, 72, 0, 0, 92, 72, 0, 0, 90, 72, 0, 0, 88, 72, 0, 0, 86, 72, 0, 0, 84, 72, 0, 0, 82, 72, 0, 0, 80, 72, 0, 0, 78, 72, 0, 0, 76, 72, 0, 0, 74, 72, 0, 0, 72, 72, 0, 0, 70, 72, 0, 0, 68, 72, 0, 0, 1, 0, 0, 0, 66, 72, 0, 0, 64, 72, 0, 0, 62, 72, 0, 0, 60, 72, 0, 0, 58, 72, 0, 0, 56, 72, 0, 0, 54, 72, 0, 0, 52, 72, 0, 0, 50, 72, 0, 0, 48, 72, 0, 0, 46, 72, 0, 0, 44, 72, 0, 0, 42, 72, 0, 0, 40, 72, 0, 0, 38, 72, 0, 0, 1, 0, 0, 0, 36, 72, 0, 0, 34, 72, 0, 0, 32, 72, 0, 0, 30, 72, 0, 0, 28, 72, 0, 0, 26, 72, 0, 0, 24, 72, 0, 0, 22, 72, 0, 0, 20, 72, 0, 0, 18, 72, 0, 0, 16, 72, 0, 0, 14, 72, 0, 0, 12, 72, 0, 0, 10, 72, 0, 0, 8, 72, 0, 0, 1, 0, 0, 0, 6, 72, 0, 0, 4, 72, 0, 0, 2, 72, 0, 0, 0, 72, 0, 0, 254, 71, 0, 0, 252, 71, 0, 0, 250, 71, 0, 0, 248, 71, 0, 0, 246, 71, 0, 0, 244, 71, 0, 0, 242, 71, 0, 0, 240, 71, 0, 0, 238, 71, 0, 0, 236, 71, 0, 0, 234, 71, 0, 0, 1, 0, 0, 0, 232, 71, 0, 0, 230, 71, 0, 0, 228, 71, 0, 0, 226, 71, 0, 0, 224, 71, 0, 0, 222, 71, 0, 0, 220, 71, 0, 0, 218, 71, 0, 0, 216, 71, 0, 0, 214, 71, 0, 0, 212, 71, 0, 0, 210, 71, 0, 0, 208, 71, 0, 0, 206, 71, 0, 0, 204, 71, 0, 0, 1, 0, 0, 0, 202, 71, 0, 0, 200, 71, 0, 0, 198, 71, 0, 0, 196, 71, 0, 0, 194, 71, 0, 0, 192, 71, 0, 0, 190, 71, 0, 0, 188, 71, 0, 0, 186, 71, 0, 0, 184, 71, 0, 0, 182, 71, 0, 0, 180, 71, 0, 0, 178, 71, 0, 0, 176, 71, 0, 0, 174, 71, 0, 0, 1, 0, 0, 0, 172, 71, 0, 0, 170, 71, 0, 0, 168, 71, 0, 0, 166, 71, 0, 0, 164, 71, 0, 0, 162, 71, 0, 0, 160, 71, 0, 0, 158, 71, 0, 0, 156, 71, 0, 0, 154, 71, 0, 0, 152, 71, 0, 0, 150, 71, 0, 0, 148, 71, 0, 0, 146, 71, 0, 0, 144, 71, 0, 0, 1, 0, 0, 0, 142, 71, 0, 0, 140, 71, 0, 0, 138, 71, 0, 0, 136, 71, 0, 0, 134, 71, 0, 0, 132, 71, 0, 0, 130, 71, 0, 0, 126, 71, 0, 0, 127, 71, 0, 0, 202, 75, 0, 0, 203, 75, 0, 0, 235, 76, 0, 0, 234, 76, 0, 0, 145, 72, 0, 0, 143, 72, 0, 0, 141, 72, 0, 0, 139, 72, 0, 0, 137, 72, 0, 0, 135, 72, 0, 0, 133, 72, 0, 0, 131, 72, 0, 0, 129, 72, 0, 0, 0, 0, 0, 0, 127, 72, 0, 0, 125, 72, 0, 0, 123, 72, 0, 0, 121, 72, 0, 0, 119, 72, 0, 0, 117, 72, 0, 0, 115, 72, 0, 0, 113, 72, 0, 0, 111, 72, 0, 0, 109, 72, 0, 0, 107, 72, 0, 0, 105, 72, 0, 0, 103, 72, 0, 0, 101, 72, 0, 0, 99, 72, 0, 0, 0, 0, 0, 0, 97, 72, 0, 0, 95, 72, 0, 0, 93, 72, 0, 0, 91, 72, 0, 0, 89, 72, 0, 0, 87, 72, 0, 0, 85, 72, 0, 0, 83, 72, 0, 0, 81, 72, 0, 0, 79, 72, 0, 0, 77, 72, 0, 0, 75, 72, 0, 0, 73, 72, 0, 0, 71, 72, 0, 0, 69, 72, 0, 0, 0, 0, 0, 0, 67, 72, 0, 0, 65, 72, 0, 0, 63, 72, 0, 0, 61, 72, 0, 0, 59, 72, 0, 0, 57, 72, 0, 0, 55, 72, 0, 0, 53, 72, 0, 0, 51, 72, 0, 0, 49, 72, 0, 0, 47, 72, 0, 0, 45, 72, 0, 0, 43, 72, 0, 0, 41, 72, 0, 0, 39, 72, 0, 0, 0, 0, 0, 0, 37, 72, 0, 0, 35, 72, 0, 0, 33, 72, 0, 0, 31, 72, 0, 0, 29, 72, 0, 0, 27, 72, 0, 0, 25, 72, 0, 0, 23, 72, 0, 0, 21, 72, 0, 0, 19, 72, 0, 0, 17, 72, 0, 0, 15, 72, 0, 0, 13, 72, 0, 0, 11, 72, 0, 0, 9, 72, 0, 0, 0, 0, 0, 0, 7, 72, 0, 0, 5, 72, 0, 0, 3, 72, 0, 0, 1, 72, 0, 0, 255, 71, 0, 0, 253, 71, 0, 0, 251, 71, 0, 0, 249, 71, 0, 0, 247, 71, 0, 0, 245, 71, 0, 0, 243, 71, 0, 0, 241, 71, 0, 0, 239, 71, 0, 0, 237, 71, 0, 0, 235, 71, 0, 0, 0, 0, 0, 0, 233, 71, 0, 0, 231, 71, 0, 0, 229, 71, 0, 0, 227, 71, 0, 0, 225, 71, 0, 0, 223, 71, 0, 0, 221, 71, 0, 0, 219, 71, 0, 0, 217, 71, 0, 0, 215, 71, 0, 0, 213, 71, 0, 0, 211, 71, 0, 0, 209, 71, 0, 0, 207, 71, 0, 0, 205, 71, 0, 0, 0, 0, 0, 0, 203, 71, 0, 0, 201, 71, 0, 0, 199, 71, 0, 0, 197, 71, 0, 0, 195, 71, 0, 0, 193, 71, 0, 0, 191, 71, 0, 0, 189, 71, 0, 0, 187, 71, 0, 0, 185, 71, 0, 0, 183, 71, 0, 0, 181, 71, 0, 0, 179, 71, 0, 0, 177, 71, 0, 0, 175, 71, 0, 0, 0, 0, 0, 0, 173, 71, 0, 0, 171, 71, 0, 0, 169, 71, 0, 0, 167, 71, 0, 0, 165, 71, 0, 0, 163, 71, 0, 0, 161, 71, 0, 0, 159, 71, 0, 0, 157, 71, 0, 0, 155, 71, 0, 0, 153, 71, 0, 0, 151, 71, 0, 0, 149, 71, 0, 0, 147, 71, 0, 0, 145, 71, 0, 0, 0, 0, 0, 0, 143, 71, 0, 0, 141, 71, 0, 0, 139, 71, 0, 0, 137, 71, 0, 0, 135, 71, 0, 0, 133, 71, 0, 0, 131, 71, 0, 0, 128, 71, 0, 0, 129, 71, 0, 0, 204, 75, 0, 0, 205, 75, 0, 0, 232, 76, 0, 0, 230, 76, 0, 0, 228, 76, 0, 0, 226, 76, 0, 0, 224, 76, 0, 0, 222, 76, 0, 0, 220, 76, 0, 0, 218, 76, 0, 0, 216, 76, 0, 0, 214, 76, 0, 0, 212, 76, 0, 0, 1, 0, 0, 0, 210, 76, 0, 0, 208, 76, 0, 0, 206, 76, 0, 0, 204, 76, 0, 0, 202, 76, 0, 0, 200, 76, 0, 0, 198, 76, 0, 0, 196, 76, 0, 0, 194, 76, 0, 0, 192, 76, 0, 0, 190, 76, 0, 0, 188, 76, 0, 0, 186, 76, 0, 0, 184, 76, 0, 0, 182, 76, 0, 0, 1, 0, 0, 0, 180, 76, 0, 0, 178, 76, 0, 0, 176, 76, 0, 0, 174, 76, 0, 0, 172, 76, 0, 0, 170, 76, 0, 0, 168, 76, 0, 0, 166, 76, 0, 0, 164, 76, 0, 0, 162, 76, 0, 0, 160, 76, 0, 0, 158, 76, 0, 0, 156, 76, 0, 0, 154, 76, 0, 0, 152, 76, 0, 0, 1, 0, 0, 0, 150, 76, 0, 0, 148, 76, 0, 0, 146, 76, 0, 0, 144, 76, 0, 0, 142, 76, 0, 0, 140, 76, 0, 0, 138, 76, 0, 0, 136, 76, 0, 0, 134, 76, 0, 0, 132, 76, 0, 0, 130, 76, 0, 0, 128, 76, 0, 0, 126, 76, 0, 0, 124, 76, 0, 0, 122, 76, 0, 0, 1, 0, 0, 0, 120, 76, 0, 0, 118, 76, 0, 0, 116, 76, 0, 0, 114, 76, 0, 0, 112, 76, 0, 0, 110, 76, 0, 0, 108, 76, 0, 0, 106, 76, 0, 0, 104, 76, 0, 0, 102, 76, 0, 0, 100, 76, 0, 0, 98, 76, 0, 0, 96, 76, 0, 0, 94, 76, 0, 0, 92, 76, 0, 0, 1, 0, 0, 0, 90, 76, 0, 0, 88, 76, 0, 0, 86, 76, 0, 0, 84, 76, 0, 0, 82, 76, 0, 0, 80, 76, 0, 0, 78, 76, 0, 0, 76, 76, 0, 0, 74, 76, 0, 0, 72, 76, 0, 0, 70, 76, 0, 0, 68, 76, 0, 0, 66, 76, 0, 0, 64, 76, 0, 0, 62, 76, 0, 0, 1, 0, 0, 0, 60, 76, 0, 0, 58, 76, 0, 0, 56, 76, 0, 0, 54, 76, 0, 0, 52, 76, 0, 0, 50, 76, 0, 0, 48, 76, 0, 0, 46, 76, 0, 0, 44, 76, 0, 0, 42, 76, 0, 0, 40, 76, 0, 0, 38, 76, 0, 0, 36, 76, 0, 0, 34, 76, 0, 0, 32, 76, 0, 0, 1, 0, 0, 0, 30, 76, 0, 0, 28, 76, 0, 0, 26, 76, 0, 0, 24, 76, 0, 0, 22, 76, 0, 0, 20, 76, 0, 0, 18, 76, 0, 0, 16, 76, 0, 0, 14, 76, 0, 0, 12, 76, 0, 0, 10, 76, 0, 0, 8, 76, 0, 0, 6, 76, 0, 0, 4, 76, 0, 0, 2, 76, 0, 0, 1, 0, 0, 0, 0, 76, 0, 0, 254, 75, 0, 0, 252, 75, 0, 0, 250, 75, 0, 0, 248, 75, 0, 0, 246, 75, 0, 0, 244, 75, 0, 0, 242, 75, 0, 0, 240, 75, 0, 0, 238, 75, 0, 0, 236, 75, 0, 0, 234, 75, 0, 0, 232, 75, 0, 0, 230, 75, 0, 0, 228, 75, 0, 0, 1, 0, 0, 0, 226, 75, 0, 0, 224, 75, 0, 0, 222, 75, 0, 0, 220, 75, 0, 0, 218, 75, 0, 0, 216, 75, 0, 0, 214, 75, 0, 0, 212, 75, 0, 0, 210, 75, 0, 0, 206, 75, 0, 0, 207, 75, 0, 0, 233, 76, 0, 0, 231, 76, 0, 0, 229, 76, 0, 0, 227, 76, 0, 0, 225, 76, 0, 0, 223, 76, 0, 0, 221, 76, 0, 0, 219, 76, 0, 0, 217, 76, 0, 0, 215, 76, 0, 0, 213, 76, 0, 0, 0, 0, 0, 0, 211, 76, 0, 0, 209, 76, 0, 0, 207, 76, 0, 0, 205, 76, 0, 0, 203, 76, 0, 0, 201, 76, 0, 0, 199, 76, 0, 0, 197, 76, 0, 0, 195, 76, 0, 0, 193, 76, 0, 0, 191, 76, 0, 0, 189, 76, 0, 0, 187, 76, 0, 0, 185, 76, 0, 0, 183, 76, 0, 0, 0, 0, 0, 0, 181, 76, 0, 0, 179, 76, 0, 0, 177, 76, 0, 0, 175, 76, 0, 0, 173, 76, 0, 0, 171, 76, 0, 0, 169, 76, 0, 0, 167, 76, 0, 0, 165, 76, 0, 0, 163, 76, 0, 0, 161, 76, 0, 0, 159, 76, 0, 0, 157, 76, 0, 0, 155, 76, 0, 0, 153, 76, 0, 0, 0, 0, 0, 0, 151, 76, 0, 0, 149, 76, 0, 0, 147, 76, 0, 0, 145, 76, 0, 0, 143, 76, 0, 0, 141, 76, 0, 0, 139, 76, 0, 0, 137, 76, 0, 0, 135, 76, 0, 0, 133, 76, 0, 0, 131, 76, 0, 0, 129, 76, 0, 0, 127, 76, 0, 0, 125, 76, 0, 0, 123, 76, 0, 0, 0, 0, 0, 0, 121, 76, 0, 0, 119, 76, 0, 0, 117, 76, 0, 0, 115, 76, 0, 0, 113, 76, 0, 0, 111, 76, 0, 0, 109, 76, 0, 0, 107, 76, 0, 0, 105, 76, 0, 0, 103, 76, 0, 0, 101, 76, 0, 0, 99, 76, 0, 0, 97, 76, 0, 0, 95, 76, 0, 0, 93, 76, 0, 0, 0, 0, 0, 0, 91, 76, 0, 0, 89, 76, 0, 0, 87, 76, 0, 0, 85, 76, 0, 0, 83, 76, 0, 0, 81, 76, 0, 0, 79, 76, 0, 0, 77, 76, 0, 0, 75, 76, 0, 0, 73, 76, 0, 0, 71, 76, 0, 0, 69, 76, 0, 0, 67, 76, 0, 0, 65, 76, 0, 0, 63, 76, 0, 0, 0, 0, 0, 0, 61, 76, 0, 0, 59, 76, 0, 0, 57, 76, 0, 0, 55, 76, 0, 0, 53, 76, 0, 0, 51, 76, 0, 0, 49, 76, 0, 0, 47, 76, 0, 0, 45, 76, 0, 0, 43, 76, 0, 0, 41, 76, 0, 0, 39, 76, 0, 0, 37, 76, 0, 0, 35, 76, 0, 0, 33, 76, 0, 0, 0, 0, 0, 0, 31, 76, 0, 0, 29, 76, 0, 0, 27, 76, 0, 0, 25, 76, 0, 0, 23, 76, 0, 0, 21, 76, 0, 0, 19, 76, 0, 0, 17, 76, 0, 0, 15, 76, 0, 0, 13, 76, 0, 0, 11, 76, 0, 0, 9, 76, 0, 0, 7, 76, 0, 0, 5, 76, 0, 0, 3, 76, 0, 0, 0, 0, 0, 0, 1, 76, 0, 0, 255, 75, 0, 0, 253, 75, 0, 0, 251, 75, 0, 0, 249, 75, 0, 0, 247, 75, 0, 0, 245, 75, 0, 0, 243, 75, 0, 0, 241, 75, 0, 0, 239, 75, 0, 0, 237, 75, 0, 0, 235, 75, 0, 0, 233, 75, 0, 0, 231, 75, 0, 0, 229, 75, 0, 0, 0, 0, 0, 0, 227, 75, 0, 0, 225, 75, 0, 0, 223, 75, 0, 0, 221, 75, 0, 0, 219, 75, 0, 0, 217, 75, 0, 0, 215, 75, 0, 0, 213, 75, 0, 0, 211, 75, 0, 0, 208, 75, 0, 0, 209, 75, 0, 0, 97, 2, 0, 0, 96, 2, 0, 0, 155, 1, 0, 0, 157, 1, 0, 0, 159, 1, 0, 0, 161, 1, 0, 0, 163, 1, 0, 0, 165, 1, 0, 0, 167, 1, 0, 0, 169, 1, 0, 0, 171, 1, 0, 0, 173, 1, 0, 0, 175, 1, 0, 0, 177, 1, 0, 0, 179, 1, 0, 0, 181, 1, 0, 0, 183, 1, 0, 0, 185, 1, 0, 0, 187, 1, 0, 0, 189, 1, 0, 0, 191, 1, 0, 0, 193, 1, 0, 0, 195, 1, 0, 0, 197, 1, 0, 0, 199, 1, 0, 0, 201, 1, 0, 0, 203, 1, 0, 0, 95, 2, 0, 0, 94, 2, 0, 0, 154, 1, 0, 0, 156, 1, 0, 0, 158, 1, 0, 0, 160, 1, 0, 0, 162, 1, 0, 0, 164, 1, 0, 0, 166, 1, 0, 0, 168, 1, 0, 0, 170, 1, 0, 0, 172, 1, 0, 0, 174, 1, 0, 0, 176, 1, 0, 0, 178, 1, 0, 0, 180, 1, 0, 0, 182, 1, 0, 0, 184, 1, 0, 0, 186, 1, 0, 0, 188, 1, 0, 0, 190, 1, 0, 0, 192, 1, 0, 0, 194, 1, 0, 0, 196, 1, 0, 0, 198, 1, 0, 0, 200, 1, 0, 0, 202, 1, 0, 0, 93, 2, 0, 0, 92, 2, 0, 0, 153, 1, 0, 0, 152, 1, 0, 0, 243, 0, 0, 0, 245, 0, 0, 0, 247, 0, 0, 0, 249, 0, 0, 0, 251, 0, 0, 0, 253, 0, 0, 0, 255, 0, 0, 0, 1, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 7, 1, 0, 0, 9, 1, 0, 0, 11, 1, 0, 0, 13, 1, 0, 0, 15, 1, 0, 0, 17, 1, 0, 0, 19, 1, 0, 0, 21, 1, 0, 0, 23, 1, 0, 0, 25, 1, 0, 0, 27, 1, 0, 0, 204, 1, 0, 0, 205, 1, 0, 0, 91, 2, 0, 0, 90, 2, 0, 0, 151, 1, 0, 0, 150, 1, 0, 0, 242, 0, 0, 0, 244, 0, 0, 0, 246, 0, 0, 0, 248, 0, 0, 0, 250, 0, 0, 0, 252, 0, 0, 0, 254, 0, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 4, 1, 0, 0, 6, 1, 0, 0, 8, 1, 0, 0, 10, 1, 0, 0, 12, 1, 0, 0, 14, 1, 0, 0, 16, 1, 0, 0, 18, 1, 0, 0, 20, 1, 0, 0, 22, 1, 0, 0, 24, 1, 0, 0, 26, 1, 0, 0, 206, 1, 0, 0, 207, 1, 0, 0, 89, 2, 0, 0, 88, 2, 0, 0, 149, 1, 0, 0, 148, 1, 0, 0, 241, 0, 0, 0, 240, 0, 0, 0, 107, 0, 0, 0, 109, 0, 0, 0, 111, 0, 0, 0, 113, 0, 0, 0, 115, 0, 0, 0, 117, 0, 0, 0, 119, 0, 0, 0, 121, 0, 0, 0, 123, 0, 0, 0, 125, 0, 0, 0, 127, 0, 0, 0, 129, 0, 0, 0, 131, 0, 0, 0, 133, 0, 0, 0, 135, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0, 208, 1, 0, 0, 209, 1, 0, 0, 87, 2, 0, 0, 86, 2, 0, 0, 147, 1, 0, 0, 146, 1, 0, 0, 239, 0, 0, 0, 238, 0, 0, 0, 106, 0, 0, 0, 108, 0, 0, 0, 110, 0, 0, 0, 112, 0, 0, 0, 114, 0, 0, 0, 116, 0, 0, 0, 118, 0, 0, 0, 120, 0, 0, 0, 122, 0, 0, 0, 124, 0, 0, 0, 126, 0, 0, 0, 128, 0, 0, 0, 130, 0, 0, 0, 132, 0, 0, 0, 134, 0, 0, 0, 136, 0, 0, 0, 138, 0, 0, 0, 30, 1, 0, 0, 31, 1, 0, 0, 210, 1, 0, 0, 211, 1, 0, 0, 85, 2, 0, 0, 84, 2, 0, 0, 145, 1, 0, 0, 144, 1, 0, 0, 237, 0, 0, 0, 236, 0, 0, 0, 105, 0, 0, 0, 104, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 140, 0, 0, 0, 141, 0, 0, 0, 32, 1, 0, 0, 33, 1, 0, 0, 212, 1, 0, 0, 213, 1, 0, 0, 83, 2, 0, 0, 82, 2, 0, 0, 143, 1, 0, 0, 142, 1, 0, 0, 235, 0, 0, 0, 234, 0, 0, 0, 103, 0, 0, 0, 102, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 142], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 81920);
+allocate([143, 0, 0, 0, 34, 1, 0, 0, 35, 1, 0, 0, 214, 1, 0, 0, 215, 1, 0, 0, 81, 2, 0, 0, 80, 2, 0, 0, 141, 1, 0, 0, 140, 1, 0, 0, 233, 0, 0, 0, 232, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 208, 7, 0, 0, 209, 7, 0, 0, 210, 7, 0, 0, 211, 7, 0, 0, 212, 7, 0, 0, 213, 7, 0, 0, 214, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 0, 36, 1, 0, 0, 37, 1, 0, 0, 216, 1, 0, 0, 217, 1, 0, 0, 79, 2, 0, 0, 78, 2, 0, 0, 139, 1, 0, 0, 138, 1, 0, 0, 231, 0, 0, 0, 230, 0, 0, 0, 99, 0, 0, 0, 98, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 146, 0, 0, 0, 147, 0, 0, 0, 38, 1, 0, 0, 39, 1, 0, 0, 218, 1, 0, 0, 219, 1, 0, 0, 77, 2, 0, 0, 76, 2, 0, 0, 137, 1, 0, 0, 136, 1, 0, 0, 229, 0, 0, 0, 228, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 235, 7, 0, 0, 1, 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, 1, 0, 0, 0, 215, 7, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 148, 0, 0, 0, 149, 0, 0, 0, 40, 1, 0, 0, 41, 1, 0, 0, 220, 1, 0, 0, 221, 1, 0, 0, 75, 2, 0, 0, 74, 2, 0, 0, 135, 1, 0, 0, 134, 1, 0, 0, 227, 0, 0, 0, 226, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 234, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 216, 7, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 150, 0, 0, 0, 151, 0, 0, 0, 42, 1, 0, 0, 43, 1, 0, 0, 222, 1, 0, 0, 223, 1, 0, 0, 73, 2, 0, 0, 72, 2, 0, 0, 133, 1, 0, 0, 132, 1, 0, 0, 225, 0, 0, 0, 224, 0, 0, 0, 93, 0, 0, 0, 92, 0, 0, 0, 233, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 217, 7, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 152, 0, 0, 0, 153, 0, 0, 0, 44, 1, 0, 0, 45, 1, 0, 0, 224, 1, 0, 0, 225, 1, 0, 0, 71, 2, 0, 0, 70, 2, 0, 0, 131, 1, 0, 0, 130, 1, 0, 0, 223, 0, 0, 0, 222, 0, 0, 0, 91, 0, 0, 0, 90, 0, 0, 0, 232, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 218, 7, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 154, 0, 0, 0, 155, 0, 0, 0, 46, 1, 0, 0, 47, 1, 0, 0, 226, 1, 0, 0, 227, 1, 0, 0, 69, 2, 0, 0, 68, 2, 0, 0, 129, 1, 0, 0, 128, 1, 0, 0, 221, 0, 0, 0, 220, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 231, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 219, 7, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 156, 0, 0, 0, 157, 0, 0, 0, 48, 1, 0, 0, 49, 1, 0, 0, 228, 1, 0, 0, 229, 1, 0, 0, 67, 2, 0, 0, 66, 2, 0, 0, 127, 1, 0, 0, 126, 1, 0, 0, 219, 0, 0, 0, 218, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 230, 7, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 220, 7, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 158, 0, 0, 0, 159, 0, 0, 0, 50, 1, 0, 0, 51, 1, 0, 0, 230, 1, 0, 0, 231, 1, 0, 0, 65, 2, 0, 0, 64, 2, 0, 0, 125, 1, 0, 0, 124, 1, 0, 0, 217, 0, 0, 0, 216, 0, 0, 0, 85, 0, 0, 0, 84, 0, 0, 0, 229, 7, 0, 0, 1, 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, 1, 0, 0, 0, 221, 7, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 160, 0, 0, 0, 161, 0, 0, 0, 52, 1, 0, 0, 53, 1, 0, 0, 232, 1, 0, 0, 233, 1, 0, 0, 63, 2, 0, 0, 62, 2, 0, 0, 123, 1, 0, 0, 122, 1, 0, 0, 215, 0, 0, 0, 214, 0, 0, 0, 83, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 162, 0, 0, 0, 163, 0, 0, 0, 54, 1, 0, 0, 55, 1, 0, 0, 234, 1, 0, 0, 235, 1, 0, 0, 61, 2, 0, 0, 60, 2, 0, 0, 121, 1, 0, 0, 120, 1, 0, 0, 213, 0, 0, 0, 212, 0, 0, 0, 81, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 7, 0, 0, 227, 7, 0, 0, 226, 7, 0, 0, 225, 7, 0, 0, 224, 7, 0, 0, 223, 7, 0, 0, 222, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 164, 0, 0, 0, 165, 0, 0, 0, 56, 1, 0, 0, 57, 1, 0, 0, 236, 1, 0, 0, 237, 1, 0, 0, 59, 2, 0, 0, 58, 2, 0, 0, 119, 1, 0, 0, 118, 1, 0, 0, 211, 0, 0, 0, 210, 0, 0, 0, 78, 0, 0, 0, 76, 0, 0, 0, 74, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, 68, 0, 0, 0, 66, 0, 0, 0, 64, 0, 0, 0, 62, 0, 0, 0, 60, 0, 0, 0, 58, 0, 0, 0, 56, 0, 0, 0, 54, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 166, 0, 0, 0, 167, 0, 0, 0, 58, 1, 0, 0, 59, 1, 0, 0, 238, 1, 0, 0, 239, 1, 0, 0, 57, 2, 0, 0, 56, 2, 0, 0, 117, 1, 0, 0, 116, 1, 0, 0, 209, 0, 0, 0, 208, 0, 0, 0, 79, 0, 0, 0, 77, 0, 0, 0, 75, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 69, 0, 0, 0, 67, 0, 0, 0, 65, 0, 0, 0, 63, 0, 0, 0, 61, 0, 0, 0, 59, 0, 0, 0, 57, 0, 0, 0, 55, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 168, 0, 0, 0, 169, 0, 0, 0, 60, 1, 0, 0, 61, 1, 0, 0, 240, 1, 0, 0, 241, 1, 0, 0, 55, 2, 0, 0, 54, 2, 0, 0, 115, 1, 0, 0, 114, 1, 0, 0, 206, 0, 0, 0, 204, 0, 0, 0, 202, 0, 0, 0, 200, 0, 0, 0, 198, 0, 0, 0, 196, 0, 0, 0, 194, 0, 0, 0, 192, 0, 0, 0, 190, 0, 0, 0, 188, 0, 0, 0, 186, 0, 0, 0, 184, 0, 0, 0, 182, 0, 0, 0, 180, 0, 0, 0, 178, 0, 0, 0, 176, 0, 0, 0, 174, 0, 0, 0, 170, 0, 0, 0, 171, 0, 0, 0, 62, 1, 0, 0, 63, 1, 0, 0, 242, 1, 0, 0, 243, 1, 0, 0, 53, 2, 0, 0, 52, 2, 0, 0, 113, 1, 0, 0, 112, 1, 0, 0, 207, 0, 0, 0, 205, 0, 0, 0, 203, 0, 0, 0, 201, 0, 0, 0, 199, 0, 0, 0, 197, 0, 0, 0, 195, 0, 0, 0, 193, 0, 0, 0, 191, 0, 0, 0, 189, 0, 0, 0, 187, 0, 0, 0, 185, 0, 0, 0, 183, 0, 0, 0, 181, 0, 0, 0, 179, 0, 0, 0, 177, 0, 0, 0, 175, 0, 0, 0, 172, 0, 0, 0, 173, 0, 0, 0, 64, 1, 0, 0, 65, 1, 0, 0, 244, 1, 0, 0, 245, 1, 0, 0, 51, 2, 0, 0, 50, 2, 0, 0, 110, 1, 0, 0, 108, 1, 0, 0, 106, 1, 0, 0, 104, 1, 0, 0, 102, 1, 0, 0, 100, 1, 0, 0, 98, 1, 0, 0, 96, 1, 0, 0, 94, 1, 0, 0, 92, 1, 0, 0, 90, 1, 0, 0, 88, 1, 0, 0, 86, 1, 0, 0, 84, 1, 0, 0, 82, 1, 0, 0, 80, 1, 0, 0, 78, 1, 0, 0, 76, 1, 0, 0, 74, 1, 0, 0, 72, 1, 0, 0, 70, 1, 0, 0, 66, 1, 0, 0, 67, 1, 0, 0, 246, 1, 0, 0, 247, 1, 0, 0, 49, 2, 0, 0, 48, 2, 0, 0, 111, 1, 0, 0, 109, 1, 0, 0, 107, 1, 0, 0, 105, 1, 0, 0, 103, 1, 0, 0, 101, 1, 0, 0, 99, 1, 0, 0, 97, 1, 0, 0, 95, 1, 0, 0, 93, 1, 0, 0, 91, 1, 0, 0, 89, 1, 0, 0, 87, 1, 0, 0, 85, 1, 0, 0, 83, 1, 0, 0, 81, 1, 0, 0, 79, 1, 0, 0, 77, 1, 0, 0, 75, 1, 0, 0, 73, 1, 0, 0, 71, 1, 0, 0, 68, 1, 0, 0, 69, 1, 0, 0, 248, 1, 0, 0, 249, 1, 0, 0, 46, 2, 0, 0, 44, 2, 0, 0, 42, 2, 0, 0, 40, 2, 0, 0, 38, 2, 0, 0, 36, 2, 0, 0, 34, 2, 0, 0, 32, 2, 0, 0, 30, 2, 0, 0, 28, 2, 0, 0, 26, 2, 0, 0, 24, 2, 0, 0, 22, 2, 0, 0, 20, 2, 0, 0, 18, 2, 0, 0, 16, 2, 0, 0, 14, 2, 0, 0, 12, 2, 0, 0, 10, 2, 0, 0, 8, 2, 0, 0, 6, 2, 0, 0, 4, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 254, 1, 0, 0, 250, 1, 0, 0, 251, 1, 0, 0, 47, 2, 0, 0, 45, 2, 0, 0, 43, 2, 0, 0, 41, 2, 0, 0, 39, 2, 0, 0, 37, 2, 0, 0, 35, 2, 0, 0, 33, 2, 0, 0, 31, 2, 0, 0, 29, 2, 0, 0, 27, 2, 0, 0, 25, 2, 0, 0, 23, 2, 0, 0, 21, 2, 0, 0, 19, 2, 0, 0, 17, 2, 0, 0, 15, 2, 0, 0, 13, 2, 0, 0, 11, 2, 0, 0, 9, 2, 0, 0, 7, 2, 0, 0, 5, 2, 0, 0, 3, 2, 0, 0, 1, 2, 0, 0, 255, 1, 0, 0, 252, 1, 0, 0, 253, 1, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 44, 1, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 45, 1, 0, 0, 18, 0, 0, 0, 46, 1, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 28, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 25, 0, 0, 0, 30, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 182, 226, 1, 0, 188, 226, 1, 0, 194, 226, 1, 0, 200, 226, 1, 0, 206, 226, 1, 0, 212, 226, 1, 0, 218, 226, 1, 0, 224, 226, 1, 0, 230, 226, 1, 0, 236, 226, 1, 0, 242, 226, 1, 0, 248, 226, 1, 0, 254, 226, 1, 0, 4, 227, 1, 0, 10, 227, 1, 0, 16, 227, 1, 0, 22, 227, 1, 0, 28, 227, 1, 0, 34, 227, 1, 0, 40, 227, 1, 0, 46, 227, 1, 0, 52, 227, 1, 0, 58, 227, 1, 0, 64, 227, 1, 0, 70, 227, 1, 0, 76, 227, 1, 0, 82, 227, 1, 0, 88, 227, 1, 0, 94, 227, 1, 0, 100, 227, 1, 0, 106, 227, 1, 0, 112, 227, 1, 0, 220, 218, 1, 0, 225, 218, 1, 0, 230, 218, 1, 0, 235, 218, 1, 0, 240, 218, 1, 0, 245, 218, 1, 0, 250, 218, 1, 0, 255, 218, 1, 0, 4, 219, 1, 0, 9, 219, 1, 0, 14, 219, 1, 0, 19, 219, 1, 0, 24, 219, 1, 0, 29, 219, 1, 0, 34, 219, 1, 0, 39, 219, 1, 0, 44, 219, 1, 0, 48, 219, 1, 0, 52, 219, 1, 0, 56, 219, 1, 0, 60, 219, 1, 0, 64, 219, 1, 0, 68, 219, 1, 0, 72, 219, 1, 0, 21, 0, 0, 0, 48, 0, 0, 0, 60, 0, 0, 0, 88, 0, 0, 0, 120, 0, 0, 0, 156, 0, 0, 0, 196, 0, 0, 0, 240, 0, 0, 0, 230, 0, 0, 0, 16, 1, 0, 0, 60, 1, 0, 0, 108, 1, 0, 0, 160, 1, 0, 0, 214, 1, 0, 0, 16, 2, 0, 0, 76, 2, 0, 0, 140, 2, 0, 0, 208, 2, 0, 0, 22, 3, 0, 0, 96, 3, 0, 0, 172, 3, 0, 0, 252, 3, 0, 0, 152, 3, 0, 0, 224, 3, 0, 0, 42, 4, 0, 0, 120, 4, 0, 0, 200, 4, 0, 0, 26, 5, 0, 0, 112, 5, 0, 0, 200, 5, 0, 0, 34, 6, 0, 0, 128, 6, 0, 0, 17, 0, 0, 0, 40, 0, 0, 0, 51, 0, 0, 0, 76, 0, 0, 0, 96, 0, 0, 0, 246, 0, 0, 0, 152, 1, 0, 0, 104, 2, 0, 0, 72, 3, 0, 0, 80, 4, 0, 0, 112, 5, 0, 0, 168, 6, 0, 0, 248, 7, 0, 0, 116, 9, 0, 0, 4, 11, 0, 0, 178, 12, 0, 0, 136, 14, 0, 0, 104, 16, 0, 0, 122, 18, 0, 0, 150, 20, 0, 0, 208, 22, 0, 0, 50, 25, 0, 0, 168, 27, 0, 0, 70, 30, 0, 0, 238, 32, 0, 0, 190, 35, 0, 0, 172, 38, 0, 0, 184, 41, 0, 0, 220, 44, 0, 0, 36, 48, 0, 0, 132, 51, 0, 0, 252, 54, 0, 0, 152, 58, 0, 0, 76, 62, 0, 0, 24, 66, 0, 0, 20, 70, 0, 0, 84, 0, 0, 0, 204, 0, 0, 0, 96, 1, 0, 0, 8, 2, 0, 0, 208, 2, 0, 0, 176, 3, 0, 0, 160, 4, 0, 0, 176, 5, 0, 0, 214, 6, 0, 0, 22, 8, 0, 0, 106, 9, 0, 0, 220, 10, 0, 0, 108, 12, 0, 0, 6, 14, 0, 0, 200, 15, 0, 0, 148, 17, 0, 0, 136, 19, 0, 0, 144, 21, 0, 0, 172, 23, 0, 0, 230, 25, 0, 0, 42, 28, 0, 0, 150, 30, 0, 0, 24, 33, 0, 0, 172, 35, 0, 0, 88, 38, 0, 0, 40, 41, 0, 0, 16, 44, 0, 0, 4, 47, 0, 0, 28, 50, 0, 0, 76, 53, 0, 0, 136, 56, 0, 0, 244, 59, 0, 0, 66, 0, 0, 0, 168, 0, 0, 0, 32, 1, 0, 0, 176, 1, 0, 0, 80, 2, 0, 0, 8, 3, 0, 0, 216, 3, 0, 0, 184, 4, 0, 0, 170, 5, 0, 0, 184, 6, 0, 0, 208, 7, 0, 0, 252, 8, 0, 0, 80, 10, 0, 0, 164, 11, 0, 0, 22, 13, 0, 0, 156, 14, 0, 0, 54, 16, 0, 0, 228, 17, 0, 0, 166, 19, 0, 0, 124, 21, 0, 0, 102, 23, 0, 0, 100, 25, 0, 0, 120, 27, 0, 0, 160, 29, 0, 0, 224, 31, 0, 0, 56, 34, 0, 0, 156, 36, 0, 0, 12, 39, 0, 0, 160, 41, 0, 0, 76, 44, 0, 0, 248, 46, 0, 0, 200, 49, 0, 0, 48, 0, 0, 0, 126, 0, 0, 0, 216, 0, 0, 0, 72, 1, 0, 0, 200, 1, 0, 0, 88, 2, 0, 0, 248, 2, 0, 0, 168, 3, 0, 0, 96, 4, 0, 0, 50, 5, 0, 0, 14, 6, 0, 0, 254, 6, 0, 0, 2, 8, 0, 0, 16, 9, 0, 0, 50, 10, 0, 0, 94, 11, 0, 0, 158, 12, 0, 0, 242, 13, 0, 0, 80, 15, 0, 0, 194, 16, 0, 0, 62, 18, 0, 0, 206, 19, 0, 0, 108, 21, 0, 0, 28, 23, 0, 0, 216, 24, 0, 0, 172, 26, 0, 0, 140, 28, 0, 0, 120, 30, 0, 0, 124, 32, 0, 0, 140, 34, 0, 0, 168, 36, 0, 0, 220, 38, 0, 0, 78, 0, 0, 0, 198, 0, 0, 0, 80, 1, 0, 0, 8, 2, 0, 0, 66, 0, 0, 0, 168, 0, 0, 0, 32, 1, 0, 0, 184, 1, 0, 0, 48, 0, 0, 0, 138, 0, 0, 0, 232, 0, 0, 0, 104, 1, 0, 0, 36, 0, 0, 0, 102, 0, 0, 0, 176, 0, 0, 0, 24, 1, 0, 0, 66, 0, 0, 0, 64, 0, 0, 0, 62, 0, 0, 0, 60, 0, 0, 0, 57, 0, 0, 0, 55, 0, 0, 0, 53, 0, 0, 0, 51, 0, 0, 0, 49, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 42, 0, 0, 0, 40, 0, 0, 0, 38, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 30, 0, 0, 0, 28, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 149, 3, 0, 0, 10, 2, 0, 0, 56, 2, 0, 0, 211, 2, 0, 0, 41, 3, 0, 0, 237, 0, 0, 0, 52, 1, 0, 0, 180, 1, 0, 0, 28, 1, 0, 0, 134, 2, 0, 0, 141, 2, 0, 0, 172, 1, 0, 0, 123, 1, 0, 0, 18, 1, 0, 0, 50, 2, 0, 0, 232, 0, 0, 0, 243, 2, 0, 0, 87, 2, 0, 0, 12, 2, 0, 0, 33, 3, 0, 0, 132, 0, 0, 0, 39, 1, 0, 0, 116, 0, 0, 0, 186, 1, 0, 0, 172, 1, 0, 0, 39, 1, 0, 0, 42, 0, 0, 0, 176, 0, 0, 0, 65, 0, 0, 0, 105, 1, 0, 0, 63, 2, 0, 0, 154, 3, 0, 0, 13, 2, 0, 0, 176, 0, 0, 0, 74, 2, 0, 0, 128, 2, 0, 0, 65, 1, 0, 0, 24, 2, 0, 0, 230, 2, 0, 0, 165, 2, 0, 0, 230, 2, 0, 0, 175, 2, 0, 0, 28, 1, 0, 0, 193, 0, 0, 0, 5, 2, 0, 0, 17, 1, 0, 0, 238, 1, 0, 0, 7, 1, 0, 0, 147, 0, 0, 0, 81, 2, 0, 0, 32, 3, 0, 0, 59, 2, 0, 0, 64, 1, 0, 0, 35, 3, 0, 0, 133, 0, 0, 0, 231, 0, 0, 0, 134, 1, 0, 0, 173, 2, 0, 0, 74, 1, 0, 0, 63, 0, 0, 0, 154, 1, 0, 0, 27, 2, 0, 0, 166, 1, 0, 0, 6, 0, 0, 0, 93, 0, 0, 0, 94, 3, 0, 0, 3, 3, 0, 0, 197, 1, 0, 0, 106, 0, 0, 0, 98, 2, 0, 0, 31, 1, 0, 0, 107, 0, 0, 0, 249, 1, 0, 0, 221, 2, 0, 0, 109, 3, 0, 0, 125, 1, 0, 0, 100, 2, 0, 0, 211, 2, 0, 0, 220, 1, 0, 0, 206, 1, 0, 0, 172, 0, 0, 0, 174, 1, 0, 0, 97, 2, 0, 0, 90, 3, 0, 0, 54, 3, 0, 0, 31, 2, 0, 0, 120, 1, 0, 0, 255, 1, 0, 0, 144, 1, 0, 0, 160, 2, 0, 0, 250, 2, 0, 0, 27, 1, 0, 0, 184, 0, 0, 0, 184, 1, 0, 0, 35, 0, 0, 0, 7, 2, 0, 0, 31, 0, 0, 0, 204, 1, 0, 0, 82, 2, 0, 0, 225, 0, 0, 0, 23, 2, 0, 0, 5, 2, 0, 0, 96, 1, 0, 0, 93, 2, 0, 0, 158, 0, 0, 0, 139, 2, 0, 0, 201, 0, 0, 0, 232, 1, 0, 0, 246, 1, 0, 0, 136, 2, 0, 0, 221, 2, 0, 0, 205, 2, 0, 0, 83, 0, 0, 0, 148, 1, 0, 0, 97, 0, 0, 0, 24, 1, 0, 0, 3, 3, 0, 0, 72, 3, 0, 0, 117, 2, 0, 0, 4, 0, 0, 0, 125, 1, 0, 0, 75, 3, 0, 0, 111, 2, 0, 0, 8, 1, 0, 0, 31, 2, 0, 0, 9, 2, 0, 0, 54, 1, 0, 0, 96, 3, 0, 0, 35, 2, 0, 0, 90, 3, 0, 0, 68, 2, 0, 0, 40, 1, 0, 0, 123, 1, 0, 0, 53, 0, 0, 0, 11, 3, 0, 0, 129, 3, 0, 0, 188, 1, 0, 0, 144, 1, 0, 0, 157, 3, 0, 0, 237, 2, 0, 0, 159, 1, 0, 0, 54, 3, 0, 0, 93, 0, 0, 0, 217, 0, 0, 0, 208, 0, 0, 0, 160, 3, 0, 0, 244, 0, 0, 0, 71, 2, 0, 0, 108, 2, 0, 0, 246, 0, 0, 0, 148, 0, 0, 0, 191, 1, 0, 0, 119, 2, 0, 0, 36, 1, 0, 0, 140, 3, 0, 0, 234, 1, 0, 0, 192, 2, 0, 0, 4, 2, 0, 0, 2, 1, 0, 0, 201, 1, 0, 0, 139, 3, 0, 0, 82, 2, 0, 0, 211, 2, 0, 0, 162, 2, 0, 0, 36, 1, 0, 0, 16, 1, 0, 0, 96, 0, 0, 0, 172, 2, 0, 0, 176, 1, 0, 0, 174, 2, 0, 0, 94, 2, 0, 0, 92, 3, 0, 0, 57, 2, 0, 0, 193, 0, 0, 0, 219, 0, 0, 0, 129, 0, 0, 0, 186, 0, 0, 0, 236, 0, 0, 0, 31, 1, 0, 0, 192, 0, 0, 0, 7, 3, 0, 0, 22, 1, 0, 0, 173, 0, 0, 0, 40, 0, 0, 0, 123, 1, 0, 0, 200, 2, 0, 0, 207, 1, 0, 0, 134, 2, 0, 0, 8, 3, 0, 0, 171, 0, 0, 0, 235, 1, 0, 0, 41, 1, 0, 0, 251, 2, 0, 0, 156, 0, 0, 0, 220, 2, 0, 0, 95, 0, 0, 0, 14, 1, 0, 0, 191, 1, 0, 0, 90, 0, 0, 0, 251, 1, 0, 0, 48, 0, 0, 0, 228, 0, 0, 0, 53, 3, 0, 0, 40, 3, 0, 0, 130, 3, 0, 0, 16, 3, 0, 0, 151, 2, 0, 0, 115, 2, 0, 0, 122, 1, 0, 0, 126, 1, 0, 0, 6, 1, 0, 0, 124, 1, 0, 0, 90, 2, 0, 0, 242, 2, 0, 0, 80, 1, 0, 0, 89, 0, 0, 0, 102, 2, 0, 0, 87, 0, 0, 0, 176, 1, 0, 0, 158, 2, 0, 0, 104, 2, 0, 0, 157, 0, 0, 0, 118, 1, 0, 0, 242, 0, 0, 0, 214, 2, 0, 0, 88, 2, 0, 0, 13, 1, 0, 0, 119, 1, 0, 0, 130, 3, 0, 0, 77, 3, 0, 0, 198, 1, 0, 0, 98, 1, 0, 0, 130, 0, 0, 0, 46, 3, 0, 0, 75, 2, 0, 0, 36, 3, 0, 0, 34, 0, 0, 0, 211, 0, 0, 0, 74, 1, 0, 0, 27, 2, 0, 0, 41, 1, 0, 0, 59, 3, 0, 0, 97, 3, 0, 0, 37, 0, 0, 0, 5, 2, 0, 0, 66, 3, 0, 0, 59, 1, 0, 0, 38, 2, 0, 0, 86, 0, 0, 0, 33, 3, 0, 0, 4, 0, 0, 0, 108, 0, 0, 0, 27, 2, 0, 0, 12, 2, 0, 0, 126, 3, 0, 0, 75, 0, 0, 0, 254, 2, 0, 0, 114, 3, 0, 0, 89, 3, 0, 0, 74, 0, 0, 0, 204, 0, 0, 0, 82, 0, 0, 0, 74, 2, 0, 0, 196, 2, 0, 0, 250, 0, 0, 0, 137, 3, 0, 0, 18, 3, 0, 0, 138, 0, 0, 0, 208, 2, 0, 0, 90, 3, 0, 0, 194, 0, 0, 0, 55, 1, 0, 0, 145, 3, 0, 0, 19, 1, 0, 0, 190, 0, 0, 0, 119, 1, 0, 0, 82, 3, 0, 0, 182, 1, 0, 0, 221, 2, 0, 0, 194, 0, 0, 0, 24, 1, 0, 0, 201, 0, 0, 0, 24, 1, 0, 0, 60, 3, 0, 0, 245, 2, 0, 0, 198, 2, 0, 0, 46, 3, 0, 0, 151, 3, 0, 0, 89, 0, 0, 0, 68, 0, 0, 0, 57, 2, 0, 0, 11, 0, 0, 0, 204, 0, 0, 0, 28, 3, 0, 0, 93, 2, 0, 0, 28, 2, 0, 0, 145, 3, 0, 0, 33, 3, 0, 0, 188, 2, 0, 0, 31, 3, 0, 0, 137, 0, 0, 0, 183, 1, 0, 0, 162, 1, 0, 0, 80, 2, 0, 0, 156, 2, 0, 0, 97, 1, 0, 0, 91, 3, 0, 0, 114, 1, 0, 0, 182, 2, 0, 0, 69, 1, 0, 0, 240, 0, 0, 0, 216, 0, 0, 0, 1, 1, 0, 0, 28, 1, 0, 0, 37, 2, 0, 0, 209, 0, 0, 0, 116, 3, 0, 0, 59, 1, 0, 0, 70, 0, 0, 0, 73, 1, 0, 0, 25, 3, 0, 0, 234, 1, 0, 0, 18, 1, 0, 0, 109, 3, 0, 0, 162, 0, 0, 0, 237, 2, 0, 0, 44, 3, 0, 0, 172, 2, 0, 0, 205, 1, 0, 0, 78, 1, 0, 0, 120, 1, 0, 0, 81, 3, 0, 0, 9, 2, 0, 0, 51, 1, 0, 0, 35, 1, 0, 0, 35, 3, 0, 0, 200, 2, 0, 0, 19, 0, 0, 0, 102, 1, 0, 0, 143, 1, 0, 0, 140, 3, 0, 0, 103, 0, 0, 0, 255, 1, 0, 0, 51, 0, 0, 0, 8, 0, 0, 0, 5, 2, 0, 0, 225, 0, 0, 0, 33, 1, 0, 0, 214, 1, 0, 0, 125, 2, 0, 0, 219, 2, 0, 0, 66, 0, 0, 0, 255, 0, 0, 0, 149, 3, 0, 0, 13, 1, 0, 0, 207, 1, 0, 0, 62, 3, 0, 0, 218, 2, 0, 0, 177, 1, 0, 0, 80, 3, 0, 0, 73, 2, 0, 0, 136, 0, 0, 0, 26, 2, 0, 0, 138, 3, 0, 0, 90, 0, 0, 0, 2, 0, 0, 0, 34, 1, 0, 0, 231, 2, 0, 0, 199, 0, 0, 0, 143, 2, 0, 0, 135, 3, 0, 0, 73, 1, 0, 0, 49, 0, 0, 0, 34, 3, 0, 0, 68, 2, 0, 0, 99, 1, 0, 0, 76, 2, 0, 0, 188, 0, 0, 0, 206, 1, 0, 0, 10, 0, 0, 0, 134, 0, 0, 0, 116, 2, 0, 0, 64, 1, 0, 0, 223, 1, 0, 0, 130, 0, 0, 0, 227, 2, 0, 0, 71, 0, 0, 0, 7, 1, 0, 0, 62, 1, 0, 0, 118, 1, 0, 0, 89, 2, 0, 0, 192, 0, 0, 0, 93, 2, 0, 0, 142, 0, 0, 0, 161, 2, 0, 0, 175, 2, 0, 0, 234, 0, 0, 0, 210, 2, 0, 0, 128, 1, 0, 0, 177, 0, 0, 0, 240, 2, 0, 0, 95, 2, 0, 0, 128, 2, 0, 0, 199, 1, 0, 0, 193, 0, 0, 0, 177, 2, 0, 0, 195, 2, 0, 0, 37, 3, 0, 0, 129, 2, 0, 0, 48, 0, 0, 0, 60, 0, 0, 0, 220, 2, 0, 0, 109, 2, 0, 0, 127, 3, 0, 0, 32, 2, 0, 0, 5, 1, 0, 0, 84, 3, 0, 0, 143, 2, 0, 0, 53, 1, 0, 0, 185, 2, 0, 0, 243, 2, 0, 0, 244, 2, 0, 0, 60, 0, 0, 0, 231, 0, 0, 0, 5, 3, 0, 0, 178, 1, 0, 0, 165, 1, 0, 0, 214, 2, 0, 0, 16, 2, 0, 0, 247, 1, 0, 0, 118, 0, 0, 0, 49, 0, 0, 0, 27, 3, 0, 0, 32, 0, 0, 0, 144, 0, 0, 0, 244, 1, 0, 0, 238, 0, 0, 0, 68, 3, 0, 0, 138, 1, 0, 0, 24, 1, 0, 0, 54, 2, 0, 0, 63, 1, 0, 0, 9, 0, 0, 0, 135, 2, 0, 0, 38, 2, 0, 0, 73, 0, 0, 0, 146, 3, 0, 0, 86, 1, 0, 0, 126, 0, 0, 0, 32, 0, 0, 0, 169, 2, 0, 0, 75, 1, 0, 0, 24, 3, 0, 0, 108, 2, 0, 0, 60, 0, 0, 0, 97, 2, 0, 0, 185, 1, 0, 0, 180, 0, 0, 0, 23, 3, 0, 0, 125, 3, 0, 0, 242, 2, 0, 0, 93, 2, 0, 0, 127, 1, 0, 0, 228, 0, 0, 0, 237, 2, 0, 0, 248, 2, 0, 0, 213, 0, 0, 0, 54, 0, 0, 0, 41, 1, 0, 0, 134, 0, 0, 0, 54, 0, 0, 0, 66, 3, 0, 0, 43, 1, 0, 0, 154, 3, 0, 0, 191, 0, 0, 0, 142, 3, 0, 0, 20, 2, 0, 0, 97, 2, 0, 0, 61, 3, 0, 0, 189, 0, 0, 0, 20, 0, 0, 0, 167, 0, 0, 0, 29, 0, 0, 0, 104, 3, 0, 0, 193, 1, 0, 0, 83, 0, 0, 0, 146, 1, 0, 0, 41, 0, 0, 0, 144, 2, 0, 0, 249, 1, 0, 0, 67, 2, 0, 0, 225, 1, 0, 0, 173, 0, 0, 0, 148, 1, 0, 0, 251, 0, 0, 0, 176, 2, 0, 0, 95, 0, 0, 0, 241, 1, 0, 0, 43, 2, 0, 0, 130, 2, 0, 0, 31, 2, 0, 0, 51, 1, 0, 0, 159, 0, 0, 0, 156, 3, 0, 0, 46, 2, 0, 0, 136, 2, 0, 0, 55, 0, 0, 0, 241, 1, 0, 0, 10, 0, 0, 0, 96, 1, 0, 0, 77, 0, 0, 0, 117, 1, 0, 0, 248, 1, 0, 0, 35, 0, 0, 0, 87, 2, 0, 0, 172, 1, 0, 0, 207, 0, 0, 0, 153, 1, 0, 0, 62, 2, 0, 0, 118, 0, 0, 0, 242, 1, 0, 0, 29, 1, 0, 0, 124, 1, 0, 0, 94, 1, 0, 0, 236, 1, 0, 0, 197, 0, 0, 0, 9, 1, 0, 0, 152, 3, 0, 0, 155, 0, 0, 0, 146, 3, 0, 0, 43, 1, 0, 0, 229, 0, 0, 0, 131, 2, 0, 0, 38, 1, 0, 0, 103, 3, 0, 0, 50, 1, 0, 0, 88, 0, 0, 0, 87, 0, 0, 0, 193, 0, 0, 0, 96, 1, 0, 0, 13, 3, 0, 0, 78, 3, 0, 0, 75, 0, 0, 0, 71, 1, 0, 0, 8, 2, 0, 0, 179, 1, 0, 0, 31, 2, 0, 0, 203, 0, 0, 0, 154, 2, 0, 0, 249, 0, 0, 0, 90, 1, 0, 0, 13, 3, 0, 0, 109, 2, 0, 0, 128, 2, 0, 0, 12, 1, 0, 0, 26, 3, 0, 0, 22, 2, 0, 0, 27, 2, 0, 0, 13, 3, 0, 0, 152, 1, 0, 0, 134, 1, 0, 0, 132, 2, 0, 0, 102, 0, 0, 0, 220, 1, 0, 0, 243, 1, 0, 0, 34, 1, 0, 0, 120, 2, 0, 0, 33, 2, 0, 0, 37, 0, 0, 0, 90, 3, 0, 0, 148, 3, 0, 0, 40, 2, 0, 0, 41, 0, 0, 0, 30, 2, 0, 0, 33, 1, 0, 0, 122, 0, 0, 0, 16, 1, 0, 0, 127, 1, 0, 0, 32, 3, 0, 0, 229, 1, 0, 0, 98, 0, 0, 0, 240, 2, 0, 0, 216, 1, 0, 0, 249, 2, 0, 0, 107, 0, 0, 0, 16, 3, 0, 0, 92, 3, 0, 0, 146, 2, 0, 0, 229, 2, 0, 0, 34, 1, 0, 0, 204, 0, 0, 0, 169, 2, 0, 0, 151, 1, 0, 0, 87, 3, 0, 0, 85, 0, 0, 0, 99, 0, 0, 0, 62, 0, 0, 0, 226, 1, 0, 0, 180, 0, 0, 0, 20, 0, 0, 0, 41, 1, 0, 0, 195, 1, 0, 0, 81, 2, 0, 0, 145, 3, 0, 0, 142, 0, 0, 0, 40, 3, 0, 0, 172, 2, 0, 0, 31, 1, 0, 0, 24, 2, 0, 0, 49, 2, 0, 0, 76, 0, 0, 0, 141, 2, 0, 0, 131, 3, 0, 0, 217, 2, 0, 0, 55, 2, 0, 0, 232, 2, 0, 0, 134, 1, 0, 0, 1, 2, 0, 0, 192, 0, 0, 0, 4, 2, 0, 0, 2, 1, 0, 0, 240, 0, 0, 0, 6, 2, 0, 0, 26, 3, 0, 0, 139, 1, 0, 0, 0, 3, 0, 0, 80, 3, 0, 0, 51, 0, 0, 0, 98, 2, 0, 0, 128, 1, 0, 0, 168, 0, 0, 0, 190, 0, 0, 0, 58, 3, 0, 0, 72, 1, 0, 0, 84, 2, 0, 0, 18, 3, 0, 0, 47, 1, 0, 0, 58, 2, 0, 0, 125, 1, 0, 0, 159, 1, 0, 0, 129, 2, 0, 0, 156, 0, 0, 0, 237, 0, 0, 0, 151, 0, 0, 0, 173, 1, 0, 0, 19, 2, 0, 0, 207, 0, 0, 0, 164, 2, 0, 0, 198, 2, 0, 0, 89, 0, 0, 0, 168, 0, 0, 0, 48, 1, 0, 0, 146, 1, 0, 0, 40, 0, 0, 0, 196, 2, 0, 0, 63, 2, 0, 0, 162, 0, 0, 0, 96, 3, 0, 0, 229, 0, 0, 0, 65, 0, 0, 0, 93, 3, 0, 0, 73, 3, 0, 0, 0, 2, 0, 0, 164, 0, 0, 0, 221, 1, 0, 0, 221, 0, 0, 0, 92, 0, 0, 0, 102, 1, 0, 0, 17, 3, 0, 0, 32, 1, 0, 0, 101, 1, 0, 0, 82, 3, 0, 0, 68, 3, 0, 0, 59, 3, 0, 0, 224, 2, 0, 0, 195, 2, 0, 0, 94, 0, 0, 0, 8, 0, 0, 0, 238, 1, 0, 0, 114, 0, 0, 0, 9, 2, 0, 0, 2, 0, 0, 0, 243, 1, 0, 0, 83, 3, 0, 0, 31, 2, 0, 0, 152, 0, 0, 0, 217, 2, 0, 0, 3, 3, 0, 0, 95, 0, 0, 0, 248, 0, 0, 0, 105, 1, 0, 0, 66, 2, 0, 0, 67, 1, 0, 0, 88, 3, 0, 0, 29, 3, 0, 0, 33, 1, 0, 0, 51, 0, 0, 0, 172, 2, 0, 0, 210, 1, 0, 0, 21, 2, 0, 0, 52, 3, 0, 0, 157, 2, 0, 0, 45, 0, 0, 0, 134, 3, 0, 0, 196, 1, 0, 0, 167, 0, 0, 0, 86, 1, 0, 0, 244, 0, 0, 0, 173, 0, 0, 0, 35, 0, 0, 0, 207, 1, 0, 0, 139, 2, 0, 0, 51, 0, 0, 0, 187, 2, 0, 0, 79, 2, 0, 0, 196, 1, 0, 0, 66, 2, 0, 0, 37, 0, 0, 0, 124, 0, 0, 0, 42, 1, 0, 0, 76, 1, 0, 0, 40, 2, 0, 0, 43, 0, 0, 0, 171, 1, 0, 0, 119, 0, 0, 0, 150, 2, 0, 0, 9, 3, 0, 0, 219, 1, 0, 0, 82, 3, 0, 0, 252, 2, 0, 0, 108, 1, 0, 0, 66, 2, 0, 0, 143, 3, 0, 0, 27, 1, 0, 0, 199, 2, 0, 0, 216, 1, 0, 0, 164, 1, 0, 0, 245, 0, 0, 0, 32, 1, 0, 0, 82, 2, 0, 0, 138, 1, 0, 0, 255, 1, 0, 0, 71, 1, 0, 0, 77, 2, 0, 0, 9, 3, 0, 0, 187, 2, 0, 0, 176, 2, 0, 0, 43, 0, 0, 0, 152, 1, 0, 0, 74, 3, 0, 0, 127, 1, 0, 0, 209, 2, 0, 0, 9, 2, 0, 0, 48, 2, 0, 0, 132, 2, 0, 0, 202, 2, 0, 0, 47, 2, 0, 0, 62, 0, 0, 0, 145, 0, 0, 0, 105, 3, 0, 0, 151, 2, 0, 0, 201, 2, 0, 0, 159, 0, 0, 0, 160, 2, 0, 0, 217, 2, 0, 0, 112, 2, 0, 0, 59, 0, 0, 0, 193, 0, 0, 0, 161, 1, 0, 0, 158, 0, 0, 0, 209, 0, 0, 0, 51, 2, 0, 0, 52, 2, 0, 0, 87, 1, 0, 0, 181, 2, 0, 0, 109, 0, 0, 0, 96, 2, 0, 0, 51, 2, 0, 0, 109, 1, 0, 0, 181, 0, 0, 0, 4, 3, 0, 0, 165, 2, 0, 0, 54, 1, 0, 0, 248, 0, 0, 0, 97, 1, 0, 0, 196, 2, 0, 0, 154, 1, 0, 0, 67, 2, 0, 0, 102, 3, 0, 0, 105, 2, 0, 0, 73, 3, 0, 0, 120, 2, 0, 0, 92, 3, 0, 0, 33, 1, 0, 0, 24, 2, 0, 0, 35, 0, 0, 0, 9, 3, 0, 0, 106, 2, 0, 0, 74, 2, 0, 0, 168, 1, 0, 0, 65, 3, 0, 0, 77, 0, 0, 0, 85, 2, 0, 0, 90, 1, 0, 0, 13, 1, 0, 0, 245, 2, 0, 0, 120, 2, 0, 0, 183, 2, 0, 0, 239, 2, 0, 0, 75, 1, 0, 0, 247, 0, 0, 0, 184, 0, 0, 0, 45, 0, 0, 0, 19, 3, 0, 0, 168, 2, 0, 0, 18, 0, 0, 0, 66, 0, 0, 0, 151, 1, 0, 0, 113, 1, 0, 0, 54, 0, 0, 0, 236, 1, 0, 0, 228, 0, 0, 0, 101, 2, 0, 0, 62, 3, 0, 0, 154, 3, 0, 0, 181, 1, 0, 0, 7, 2, 0, 0, 132, 2, 0, 0, 137, 3, 0, 0, 21, 3, 0, 0, 164, 1, 0, 0, 49, 1, 0, 0, 185, 1, 0, 0, 207, 0, 0, 0, 44, 1, 0, 0, 124, 3, 0, 0, 59, 3, 0, 0, 141, 0, 0, 0, 25, 2, 0, 0, 125, 1, 0, 0, 150, 2, 0, 0, 1, 2, 0, 0, 56, 0, 0, 0, 252, 0, 0, 0, 85, 1, 0, 0, 242, 0, 0, 0, 29, 3, 0, 0, 70, 3, 0, 0, 69, 3, 0, 0, 208, 2, 0, 0, 224, 0, 0, 0, 51, 1, 0, 0, 119, 2, 0, 0, 61, 0, 0, 0, 87, 0, 0, 0, 48, 2, 0, 0, 54, 1, 0, 0, 244, 2, 0, 0, 153, 2, 0, 0, 141, 1, 0, 0, 40, 3, 0, 0, 83, 3, 0, 0, 53, 1, 0, 0, 217, 1, 0, 0, 27, 3, 0, 0, 122, 1, 0, 0, 31, 0, 0, 0, 135, 2, 0, 0, 147, 3, 0, 0, 203, 1, 0, 0, 38, 3, 0, 0, 78, 2, 0, 0, 219, 2, 0, 0, 169, 1, 0, 0, 216, 0, 0, 0, 36, 2, 0, 0, 249, 0, 0, 0, 65, 1, 0, 0, 113, 3, 0, 0, 187, 2, 0, 0, 23, 2, 0, 0, 161, 2, 0, 0, 14, 3, 0, 0, 210, 0, 0, 0, 47, 3, 0, 0, 137, 3, 0, 0, 47, 1, 0, 0, 75, 3, 0, 0, 154, 3, 0, 0, 25, 1, 0, 0, 73, 0, 0, 0, 213, 1, 0, 0, 23, 3, 0, 0, 148, 2, 0, 0, 162, 0, 0, 0, 242, 1, 0, 0, 52, 1, 0, 0, 155, 0, 0, 0, 166, 1, 0, 0, 139, 3, 0, 0, 49, 3, 0, 0, 187, 0, 0, 0, 62, 0, 0, 0, 16, 0, 0, 0, 169, 1, 0, 0, 23, 2, 0, 0, 80, 1, 0, 0, 30, 1, 0, 0, 181, 1, 0, 0, 119, 1, 0, 0, 17, 1, 0, 0, 98, 2, 0, 0, 40, 1, 0, 0, 183, 0, 0, 0, 155, 3, 0, 0, 116, 0, 0, 0, 155, 2, 0, 0, 239, 2, 0, 0, 97, 1, 0, 0, 62, 0, 0, 0, 110, 1, 0, 0, 179, 2, 0, 0, 123, 1, 0, 0, 175, 2, 0, 0, 74, 3, 0, 0, 37, 0, 0, 0, 101, 1, 0, 0, 208, 2, 0, 0, 230, 2, 0, 0, 74, 1, 0, 0, 5, 0, 0, 0, 39, 0, 0, 0, 155, 3, 0, 0, 55, 1, 0, 0, 168, 1, 0, 0, 242, 0, 0, 0, 237, 2, 0, 0, 65, 1, 0, 0, 54, 0, 0, 0, 157, 2, 0, 0, 60, 1, 0, 0, 86, 1, 0, 0, 43, 1, 0, 0, 22, 2, 0, 0, 105, 0, 0, 0, 155, 2, 0, 0, 232, 1, 0, 0, 128, 2, 0, 0, 160, 2, 0, 0, 64, 2, 0, 0, 28, 2, 0, 0, 60, 1, 0, 0, 230, 1, 0, 0, 209, 2, 0, 0, 98, 2, 0, 0, 46, 0, 0, 0, 144, 2, 0, 0, 191, 1, 0, 0, 171, 0, 0, 0, 104, 2, 0, 0, 208, 1, 0, 0, 190, 0, 0, 0, 19, 2, 0, 0, 41, 1, 0, 0, 65, 1, 0, 0, 250, 2, 0, 0, 240, 2, 0, 0, 21, 2, 0, 0, 175, 0, 0, 0, 134, 0, 0, 0, 14, 0, 0, 0, 125, 1, 0, 0, 177, 1, 0, 0, 205, 2, 0, 0, 45, 0, 0, 0, 111, 0, 0, 0, 20, 0, 0, 0, 84, 2, 0, 0, 28, 1, 0, 0, 224, 2, 0, 0, 138, 0, 0, 0, 134, 2, 0, 0, 155, 1, 0, 0, 109, 3, 0, 0, 157, 2, 0, 0, 141, 0, 0, 0, 151, 3, 0, 0, 45, 0, 0, 0, 12, 3, 0, 0, 151, 1, 0, 0, 164, 0, 0, 0, 76, 1, 0, 0, 131, 3, 0, 0, 165, 0, 0, 0, 214, 2, 0, 0, 88, 2, 0, 0, 69, 1, 0, 0, 242, 1, 0, 0, 143, 2, 0, 0, 101, 1, 0, 0, 240, 2, 0, 0, 0, 3, 0, 0, 223, 0, 0, 0, 81, 3, 0, 0, 135, 2, 0, 0, 63, 0, 0, 0, 54, 1, 0, 0, 95, 3, 0, 0, 251, 0, 0, 0, 110, 1, 0, 0, 48, 1, 0, 0, 26, 1, 0, 0, 226, 2, 0, 0, 163, 2, 0, 0, 154, 1, 0, 0, 133, 1, 0, 0, 244, 0, 0, 0, 31, 0, 0, 0, 121, 0, 0, 0, 47, 1, 0, 0, 7, 1, 0, 0, 182, 226, 1, 0, 188, 226, 1, 0, 194, 226, 1, 0, 200, 226, 1, 0, 206, 226, 1, 0, 212, 226, 1, 0, 218, 226, 1, 0, 224, 226, 1, 0, 230, 226, 1, 0, 236, 226, 1, 0, 242, 226, 1, 0, 248, 226, 1, 0, 254, 226, 1, 0, 4, 227, 1, 0, 10, 227, 1, 0, 16, 227, 1, 0, 22, 227, 1, 0, 28, 227, 1, 0, 34, 227, 1, 0, 40, 227, 1, 0, 46, 227, 1, 0, 52, 227, 1, 0, 58, 227, 1, 0, 64, 227, 1, 0, 70, 227, 1, 0, 76, 227, 1, 0, 82, 227, 1, 0, 88, 227, 1, 0, 94, 227, 1, 0, 100, 227, 1, 0, 106, 227, 1, 0, 112, 227, 1, 0, 118, 227, 1, 0, 121, 227, 1, 0, 138, 227, 1, 0, 156, 227, 1, 0, 160, 227, 1, 0, 164, 227, 1, 0, 168, 227, 1, 0, 172, 227, 1, 0, 176, 227, 1, 0, 180, 227, 1, 0, 184, 227, 1, 0, 188, 227, 1, 0, 192, 227, 1, 0, 196, 227, 1, 0, 200, 227, 1, 0, 204, 227, 1, 0, 208, 227, 1, 0, 212, 227, 1, 0, 216, 227, 1, 0, 220, 227, 1, 0, 224, 227, 1, 0, 228, 227, 1, 0, 232, 227, 1, 0, 236, 227, 1, 0, 240, 227, 1, 0, 244, 227, 1, 0, 248, 227, 1, 0, 252, 227, 1, 0, 0, 228, 1, 0, 4, 228, 1, 0, 8, 228, 1, 0, 12, 228, 1, 0, 16, 228, 1, 0, 20, 228, 1, 0, 24, 228, 1, 0, 28, 228, 1, 0, 32, 228, 1, 0, 36, 228, 1, 0, 40, 228, 1, 0, 44, 228, 1, 0, 48, 228, 1, 0, 52, 228, 1, 0, 56, 228, 1, 0, 60, 228, 1, 0, 64, 228, 1, 0, 68, 228, 1, 0, 72, 228, 1, 0, 76, 228, 1, 0, 80, 228, 1, 0, 84, 228, 1, 0, 88, 228, 1, 0, 92, 228, 1, 0, 96, 228, 1, 0, 100, 228, 1, 0, 104, 228, 1, 0, 108, 228, 1, 0, 112, 228, 1, 0, 116, 228, 1, 0, 120, 228, 1, 0, 124, 228, 1, 0, 128, 228, 1, 0, 132, 228, 1, 0, 136, 228, 1, 0, 140, 228, 1, 0, 144, 228, 1, 0, 148, 228, 1, 0, 152, 228, 1, 0, 156, 228, 1, 0, 160, 228, 1, 0, 164, 228, 1, 0, 168, 228, 1, 0, 172, 228, 1, 0, 176, 228, 1, 0, 180, 228, 1, 0, 184, 228, 1, 0, 188, 228, 1, 0, 192, 228, 1, 0, 196, 228, 1, 0, 200, 228, 1, 0, 204, 228, 1, 0, 208, 228, 1, 0, 212, 228, 1, 0, 216, 228, 1, 0, 220, 228, 1, 0, 224, 228, 1, 0, 228, 228, 1, 0, 232, 228, 1, 0, 236, 228, 1, 0, 240, 228, 1, 0, 244, 228, 1, 0, 248, 228, 1, 0, 252, 228, 1, 0, 0, 229, 1, 0, 4, 229, 1, 0, 8, 229, 1, 0, 12, 229, 1, 0, 16, 229, 1, 0, 20, 229, 1, 0, 24, 229, 1, 0, 28, 229, 1, 0, 32, 229, 1, 0, 36, 229, 1, 0, 40, 229, 1, 0, 44, 229, 1, 0, 48, 229, 1, 0, 52, 229, 1, 0, 56, 229, 1, 0, 60, 229, 1, 0, 64, 229, 1, 0, 68, 229, 1, 0, 72, 229, 1, 0, 76, 229, 1, 0, 80, 229, 1, 0, 84, 229, 1, 0, 88, 229, 1, 0, 92, 229, 1, 0, 96, 229, 1, 0, 100, 229, 1, 0, 104, 229, 1, 0, 108, 229, 1, 0, 112, 229, 1, 0, 116, 229, 1, 0, 120, 229, 1, 0, 124, 229, 1, 0, 128, 229, 1, 0, 132, 229, 1, 0, 136, 229, 1, 0, 140, 229, 1, 0, 144, 229, 1, 0, 148, 229, 1, 0, 152, 229, 1, 0, 156, 229, 1, 0, 160, 229, 1, 0, 164, 229, 1, 0, 168, 229, 1, 0, 172, 229, 1, 0, 176, 229, 1, 0, 180, 229, 1, 0, 184, 229, 1, 0, 188, 229, 1, 0, 192, 229, 1, 0, 196, 229, 1, 0, 200, 229, 1, 0, 204, 229, 1, 0, 208, 229, 1, 0, 212, 229, 1, 0, 216, 229, 1, 0, 220, 229, 1, 0, 224, 229, 1, 0, 228, 229, 1, 0, 232, 229, 1, 0, 236, 229, 1, 0, 240, 229, 1, 0, 244, 229, 1, 0, 248, 229, 1, 0, 252, 229, 1, 0, 0, 230, 1, 0, 4, 230, 1, 0, 8, 230, 1, 0, 12, 230, 1, 0, 16, 230, 1, 0, 20, 230, 1, 0, 24, 230, 1, 0, 28, 230, 1, 0, 32, 230, 1, 0, 36, 230, 1, 0, 40, 230, 1, 0, 44, 230, 1, 0, 48, 230, 1, 0, 52, 230, 1, 0, 56, 230, 1, 0, 60, 230, 1, 0, 64, 230, 1, 0, 68, 230, 1, 0, 72, 230, 1, 0, 76, 230, 1, 0, 80, 230, 1, 0, 84, 230, 1, 0, 88, 230, 1, 0, 92, 230, 1, 0, 96, 230, 1, 0, 100, 230, 1, 0, 104, 230, 1, 0, 108, 230, 1, 0, 112, 230, 1, 0, 116, 230, 1, 0, 120, 230, 1, 0, 124, 230, 1, 0, 128, 230, 1, 0, 132, 230, 1, 0, 136, 230, 1, 0, 140, 230, 1, 0, 144, 230, 1, 0, 148, 230, 1, 0, 152, 230, 1, 0, 156, 230, 1, 0, 160, 230, 1, 0, 164, 230, 1, 0, 168, 230, 1, 0, 172, 230, 1, 0, 176, 230, 1, 0, 180, 230, 1, 0, 184, 230, 1, 0, 188, 230, 1, 0, 192, 230, 1, 0, 196, 230, 1, 0, 200, 230, 1, 0, 204, 230, 1, 0, 208, 230, 1, 0, 212, 230, 1, 0, 216, 230, 1, 0, 220, 230, 1, 0, 224, 230, 1, 0, 228, 230, 1, 0, 232, 230, 1, 0, 236, 230, 1, 0, 240, 230, 1, 0, 244, 230, 1, 0, 248, 230, 1, 0, 252, 230, 1, 0, 0, 231, 1, 0, 4, 231, 1, 0, 8, 231, 1, 0, 12, 231, 1, 0, 16, 231, 1, 0, 20, 231, 1, 0, 24, 231, 1, 0, 28, 231, 1, 0, 32, 231, 1, 0, 36, 231, 1, 0, 40, 231, 1, 0, 44, 231, 1, 0, 48, 231, 1, 0, 52, 231, 1, 0, 56, 231, 1, 0, 60, 231, 1, 0, 64, 231, 1, 0, 68, 231, 1, 0, 72, 231, 1, 0, 76, 231, 1, 0, 80, 231, 1, 0, 84, 231, 1, 0, 88, 231, 1, 0, 92, 231, 1, 0, 96, 231, 1, 0, 100, 231, 1, 0, 104, 231, 1, 0, 108, 231, 1, 0, 112, 231, 1, 0, 116, 231, 1, 0, 120, 231, 1, 0, 124, 231, 1, 0, 128, 231, 1, 0, 132, 231, 1, 0, 136, 231, 1, 0, 140, 231, 1, 0, 144, 231, 1, 0, 148, 231, 1, 0, 152, 231, 1, 0, 156, 231, 1, 0, 160, 231, 1, 0, 164, 231, 1, 0, 168, 231, 1, 0, 172, 231, 1, 0, 176, 231, 1, 0, 180, 231, 1, 0, 184, 231, 1, 0, 188, 231, 1, 0, 192, 231, 1, 0, 196, 231, 1, 0, 200, 231, 1, 0, 204, 231, 1, 0, 208, 231, 1, 0, 212, 231, 1, 0, 216, 231, 1, 0, 220, 231, 1, 0, 224, 231, 1, 0, 228, 231, 1, 0, 232, 231, 1, 0, 236, 231, 1, 0, 240, 231, 1, 0, 244, 231, 1, 0, 248, 231, 1, 0, 252, 231, 1, 0, 0, 232, 1, 0, 4, 232, 1, 0, 8, 232, 1, 0, 12, 232, 1, 0, 16, 232, 1, 0, 20, 232, 1, 0, 24, 232, 1, 0, 28, 232, 1, 0, 32, 232, 1, 0, 36, 232, 1, 0, 40, 232, 1, 0, 44, 232, 1, 0, 48, 232, 1, 0, 52, 232, 1, 0, 56, 232, 1, 0, 60, 232, 1, 0, 64, 232, 1, 0, 68, 232, 1, 0, 72, 232, 1, 0, 76, 232, 1, 0, 80, 232, 1, 0, 84, 232, 1, 0, 88, 232, 1, 0, 92, 232, 1, 0, 96, 232, 1, 0, 100, 232, 1, 0, 104, 232, 1, 0, 108, 232, 1, 0, 112, 232, 1, 0, 116, 232, 1, 0, 120, 232, 1, 0, 124, 232, 1, 0, 128, 232, 1, 0, 132, 232, 1, 0, 136, 232, 1, 0, 140, 232, 1, 0, 144, 232, 1, 0, 148, 232, 1, 0, 152, 232, 1, 0, 156, 232, 1, 0, 160, 232, 1, 0, 164, 232, 1, 0, 168, 232, 1, 0, 172, 232, 1, 0, 176, 232, 1, 0, 180, 232, 1, 0, 184, 232, 1, 0, 188, 232, 1, 0, 192, 232, 1, 0, 196, 232, 1, 0, 200, 232, 1, 0, 204, 232, 1, 0, 208, 232, 1, 0, 212, 232, 1, 0, 216, 232, 1, 0, 220, 232, 1, 0, 224, 232, 1, 0, 228, 232, 1, 0, 232, 232, 1, 0, 236, 232, 1, 0, 240, 232, 1, 0, 244, 232, 1, 0, 248, 232, 1, 0, 252, 232, 1, 0, 0, 233, 1, 0, 4, 233, 1, 0, 8, 233, 1, 0, 12, 233, 1, 0, 16, 233, 1, 0, 20, 233, 1, 0, 24, 233, 1, 0, 28, 233, 1, 0, 32, 233, 1, 0, 36, 233, 1, 0, 40, 233, 1, 0, 44, 233, 1, 0, 48, 233, 1, 0, 52, 233, 1, 0, 56, 233, 1, 0, 60, 233, 1, 0, 64, 233, 1, 0, 68, 233, 1, 0, 72, 233, 1, 0, 76, 233, 1, 0, 80, 233, 1, 0, 84, 233, 1, 0, 88, 233, 1, 0, 92, 233, 1, 0, 96, 233, 1, 0, 100, 233, 1, 0, 104, 233, 1, 0, 108, 233, 1, 0, 112, 233, 1, 0, 116, 233, 1, 0, 120, 233, 1, 0, 124, 233, 1, 0, 128, 233, 1, 0, 132, 233, 1, 0, 136, 233, 1, 0, 140, 233, 1, 0, 144, 233, 1, 0, 148, 233, 1, 0, 152, 233, 1, 0, 156, 233, 1, 0, 160, 233, 1, 0, 164, 233, 1, 0, 168, 233, 1, 0, 172, 233, 1, 0, 176, 233, 1, 0, 180, 233, 1, 0, 184, 233, 1, 0, 188, 233, 1, 0, 192, 233, 1, 0, 196, 233, 1, 0, 200, 233, 1, 0, 204, 233, 1, 0, 208, 233, 1, 0, 212, 233, 1, 0, 216, 233, 1, 0, 220, 233, 1, 0, 224, 233, 1, 0, 228, 233, 1, 0, 232, 233, 1, 0, 236, 233, 1, 0, 240, 233, 1, 0, 244, 233, 1, 0, 248, 233, 1, 0, 252, 233, 1, 0, 0, 234, 1, 0, 4, 234, 1, 0, 8, 234, 1, 0, 12, 234, 1, 0, 16, 234, 1, 0, 20, 234, 1, 0, 24, 234, 1, 0, 28, 234, 1, 0, 32, 234, 1, 0, 36, 234, 1, 0, 40, 234, 1, 0, 44, 234, 1, 0, 48, 234, 1, 0, 52, 234, 1, 0, 56, 234, 1, 0, 60, 234, 1, 0, 64, 234, 1, 0, 68, 234, 1, 0, 72, 234, 1, 0, 76, 234, 1, 0, 80, 234, 1, 0, 84, 234, 1, 0, 88, 234, 1, 0, 92, 234, 1, 0, 96, 234, 1, 0, 100, 234, 1, 0, 104, 234, 1, 0, 108, 234, 1, 0, 112, 234, 1, 0, 116, 234, 1, 0, 120, 234, 1, 0, 124, 234, 1, 0, 128, 234, 1, 0, 132, 234, 1, 0, 136, 234, 1, 0, 140, 234, 1, 0, 144, 234, 1, 0, 148, 234, 1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 92160);
+allocate([152, 234, 1, 0, 156, 234, 1, 0, 160, 234, 1, 0, 164, 234, 1, 0, 168, 234, 1, 0, 172, 234, 1, 0, 176, 234, 1, 0, 180, 234, 1, 0, 184, 234, 1, 0, 188, 234, 1, 0, 192, 234, 1, 0, 196, 234, 1, 0, 200, 234, 1, 0, 204, 234, 1, 0, 208, 234, 1, 0, 212, 234, 1, 0, 216, 234, 1, 0, 220, 234, 1, 0, 224, 234, 1, 0, 228, 234, 1, 0, 232, 234, 1, 0, 236, 234, 1, 0, 240, 234, 1, 0, 244, 234, 1, 0, 248, 234, 1, 0, 252, 234, 1, 0, 0, 235, 1, 0, 4, 235, 1, 0, 8, 235, 1, 0, 12, 235, 1, 0, 16, 235, 1, 0, 20, 235, 1, 0, 24, 235, 1, 0, 28, 235, 1, 0, 32, 235, 1, 0, 36, 235, 1, 0, 40, 235, 1, 0, 44, 235, 1, 0, 48, 235, 1, 0, 52, 235, 1, 0, 56, 235, 1, 0, 60, 235, 1, 0, 64, 235, 1, 0, 68, 235, 1, 0, 72, 235, 1, 0, 76, 235, 1, 0, 80, 235, 1, 0, 84, 235, 1, 0, 88, 235, 1, 0, 92, 235, 1, 0, 96, 235, 1, 0, 100, 235, 1, 0, 104, 235, 1, 0, 108, 235, 1, 0, 112, 235, 1, 0, 116, 235, 1, 0, 120, 235, 1, 0, 124, 235, 1, 0, 128, 235, 1, 0, 132, 235, 1, 0, 136, 235, 1, 0, 140, 235, 1, 0, 144, 235, 1, 0, 148, 235, 1, 0, 152, 235, 1, 0, 156, 235, 1, 0, 160, 235, 1, 0, 164, 235, 1, 0, 168, 235, 1, 0, 172, 235, 1, 0, 176, 235, 1, 0, 180, 235, 1, 0, 184, 235, 1, 0, 188, 235, 1, 0, 192, 235, 1, 0, 196, 235, 1, 0, 200, 235, 1, 0, 204, 235, 1, 0, 208, 235, 1, 0, 212, 235, 1, 0, 216, 235, 1, 0, 220, 235, 1, 0, 224, 235, 1, 0, 228, 235, 1, 0, 232, 235, 1, 0, 236, 235, 1, 0, 240, 235, 1, 0, 244, 235, 1, 0, 248, 235, 1, 0, 252, 235, 1, 0, 0, 236, 1, 0, 4, 236, 1, 0, 8, 236, 1, 0, 12, 236, 1, 0, 16, 236, 1, 0, 20, 236, 1, 0, 24, 236, 1, 0, 28, 236, 1, 0, 32, 236, 1, 0, 36, 236, 1, 0, 40, 236, 1, 0, 44, 236, 1, 0, 48, 236, 1, 0, 52, 236, 1, 0, 56, 236, 1, 0, 60, 236, 1, 0, 64, 236, 1, 0, 68, 236, 1, 0, 72, 236, 1, 0, 76, 236, 1, 0, 80, 236, 1, 0, 84, 236, 1, 0, 88, 236, 1, 0, 92, 236, 1, 0, 96, 236, 1, 0, 100, 236, 1, 0, 104, 236, 1, 0, 108, 236, 1, 0, 112, 236, 1, 0, 116, 236, 1, 0, 120, 236, 1, 0, 124, 236, 1, 0, 128, 236, 1, 0, 132, 236, 1, 0, 136, 236, 1, 0, 140, 236, 1, 0, 144, 236, 1, 0, 148, 236, 1, 0, 152, 236, 1, 0, 156, 236, 1, 0, 160, 236, 1, 0, 164, 236, 1, 0, 168, 236, 1, 0, 172, 236, 1, 0, 176, 236, 1, 0, 180, 236, 1, 0, 184, 236, 1, 0, 188, 236, 1, 0, 192, 236, 1, 0, 196, 236, 1, 0, 200, 236, 1, 0, 204, 236, 1, 0, 208, 236, 1, 0, 212, 236, 1, 0, 216, 236, 1, 0, 220, 236, 1, 0, 224, 236, 1, 0, 228, 236, 1, 0, 232, 236, 1, 0, 236, 236, 1, 0, 240, 236, 1, 0, 244, 236, 1, 0, 248, 236, 1, 0, 252, 236, 1, 0, 0, 237, 1, 0, 4, 237, 1, 0, 8, 237, 1, 0, 12, 237, 1, 0, 16, 237, 1, 0, 20, 237, 1, 0, 24, 237, 1, 0, 28, 237, 1, 0, 32, 237, 1, 0, 36, 237, 1, 0, 40, 237, 1, 0, 44, 237, 1, 0, 48, 237, 1, 0, 52, 237, 1, 0, 56, 237, 1, 0, 60, 237, 1, 0, 64, 237, 1, 0, 68, 237, 1, 0, 72, 237, 1, 0, 76, 237, 1, 0, 80, 237, 1, 0, 84, 237, 1, 0, 88, 237, 1, 0, 92, 237, 1, 0, 96, 237, 1, 0, 100, 237, 1, 0, 104, 237, 1, 0, 108, 237, 1, 0, 112, 237, 1, 0, 116, 237, 1, 0, 120, 237, 1, 0, 124, 237, 1, 0, 128, 237, 1, 0, 132, 237, 1, 0, 136, 237, 1, 0, 140, 237, 1, 0, 144, 237, 1, 0, 148, 237, 1, 0, 152, 237, 1, 0, 156, 237, 1, 0, 160, 237, 1, 0, 164, 237, 1, 0, 168, 237, 1, 0, 172, 237, 1, 0, 176, 237, 1, 0, 180, 237, 1, 0, 184, 237, 1, 0, 188, 237, 1, 0, 192, 237, 1, 0, 196, 237, 1, 0, 200, 237, 1, 0, 204, 237, 1, 0, 208, 237, 1, 0, 212, 237, 1, 0, 216, 237, 1, 0, 220, 237, 1, 0, 224, 237, 1, 0, 228, 237, 1, 0, 232, 237, 1, 0, 236, 237, 1, 0, 240, 237, 1, 0, 244, 237, 1, 0, 248, 237, 1, 0, 252, 237, 1, 0, 0, 238, 1, 0, 4, 238, 1, 0, 8, 238, 1, 0, 12, 238, 1, 0, 16, 238, 1, 0, 20, 238, 1, 0, 24, 238, 1, 0, 28, 238, 1, 0, 32, 238, 1, 0, 36, 238, 1, 0, 40, 238, 1, 0, 44, 238, 1, 0, 48, 238, 1, 0, 52, 238, 1, 0, 56, 238, 1, 0, 60, 238, 1, 0, 64, 238, 1, 0, 68, 238, 1, 0, 72, 238, 1, 0, 76, 238, 1, 0, 80, 238, 1, 0, 84, 238, 1, 0, 88, 238, 1, 0, 92, 238, 1, 0, 96, 238, 1, 0, 100, 238, 1, 0, 104, 238, 1, 0, 108, 238, 1, 0, 112, 238, 1, 0, 116, 238, 1, 0, 120, 238, 1, 0, 124, 238, 1, 0, 128, 238, 1, 0, 132, 238, 1, 0, 136, 238, 1, 0, 140, 238, 1, 0, 144, 238, 1, 0, 148, 238, 1, 0, 152, 238, 1, 0, 156, 238, 1, 0, 160, 238, 1, 0, 164, 238, 1, 0, 168, 238, 1, 0, 172, 238, 1, 0, 176, 238, 1, 0, 180, 238, 1, 0, 184, 238, 1, 0, 188, 238, 1, 0, 192, 238, 1, 0, 196, 238, 1, 0, 200, 238, 1, 0, 204, 238, 1, 0, 208, 238, 1, 0, 212, 238, 1, 0, 216, 238, 1, 0, 220, 238, 1, 0, 224, 238, 1, 0, 228, 238, 1, 0, 232, 238, 1, 0, 236, 238, 1, 0, 240, 238, 1, 0, 244, 238, 1, 0, 248, 238, 1, 0, 252, 238, 1, 0, 0, 239, 1, 0, 4, 239, 1, 0, 8, 239, 1, 0, 12, 239, 1, 0, 16, 239, 1, 0, 20, 239, 1, 0, 24, 239, 1, 0, 28, 239, 1, 0, 32, 239, 1, 0, 36, 239, 1, 0, 40, 239, 1, 0, 44, 239, 1, 0, 48, 239, 1, 0, 52, 239, 1, 0, 56, 239, 1, 0, 60, 239, 1, 0, 64, 239, 1, 0, 68, 239, 1, 0, 72, 239, 1, 0, 76, 239, 1, 0, 80, 239, 1, 0, 84, 239, 1, 0, 88, 239, 1, 0, 92, 239, 1, 0, 96, 239, 1, 0, 100, 239, 1, 0, 104, 239, 1, 0, 108, 239, 1, 0, 112, 239, 1, 0, 116, 239, 1, 0, 120, 239, 1, 0, 124, 239, 1, 0, 128, 239, 1, 0, 132, 239, 1, 0, 136, 239, 1, 0, 140, 239, 1, 0, 144, 239, 1, 0, 148, 239, 1, 0, 152, 239, 1, 0, 156, 239, 1, 0, 160, 239, 1, 0, 164, 239, 1, 0, 168, 239, 1, 0, 172, 239, 1, 0, 176, 239, 1, 0, 180, 239, 1, 0, 184, 239, 1, 0, 188, 239, 1, 0, 192, 239, 1, 0, 196, 239, 1, 0, 200, 239, 1, 0, 204, 239, 1, 0, 208, 239, 1, 0, 212, 239, 1, 0, 216, 239, 1, 0, 220, 239, 1, 0, 224, 239, 1, 0, 228, 239, 1, 0, 232, 239, 1, 0, 236, 239, 1, 0, 240, 239, 1, 0, 244, 239, 1, 0, 248, 239, 1, 0, 252, 239, 1, 0, 0, 240, 1, 0, 4, 240, 1, 0, 8, 240, 1, 0, 12, 240, 1, 0, 16, 240, 1, 0, 20, 240, 1, 0, 24, 240, 1, 0, 28, 240, 1, 0, 32, 240, 1, 0, 36, 240, 1, 0, 40, 240, 1, 0, 44, 240, 1, 0, 48, 240, 1, 0, 52, 240, 1, 0, 56, 240, 1, 0, 60, 240, 1, 0, 64, 240, 1, 0, 68, 240, 1, 0, 72, 240, 1, 0, 76, 240, 1, 0, 80, 240, 1, 0, 84, 240, 1, 0, 88, 240, 1, 0, 92, 240, 1, 0, 96, 240, 1, 0, 100, 240, 1, 0, 104, 240, 1, 0, 108, 240, 1, 0, 112, 240, 1, 0, 116, 240, 1, 0, 120, 240, 1, 0, 124, 240, 1, 0, 128, 240, 1, 0, 132, 240, 1, 0, 136, 240, 1, 0, 140, 240, 1, 0, 144, 240, 1, 0, 148, 240, 1, 0, 152, 240, 1, 0, 156, 240, 1, 0, 160, 240, 1, 0, 164, 240, 1, 0, 168, 240, 1, 0, 172, 240, 1, 0, 176, 240, 1, 0, 180, 240, 1, 0, 184, 240, 1, 0, 188, 240, 1, 0, 192, 240, 1, 0, 196, 240, 1, 0, 200, 240, 1, 0, 204, 240, 1, 0, 208, 240, 1, 0, 212, 240, 1, 0, 216, 240, 1, 0, 220, 240, 1, 0, 224, 240, 1, 0, 228, 240, 1, 0, 232, 240, 1, 0, 236, 240, 1, 0, 240, 240, 1, 0, 244, 240, 1, 0, 248, 240, 1, 0, 252, 240, 1, 0, 0, 241, 1, 0, 4, 241, 1, 0, 8, 241, 1, 0, 12, 241, 1, 0, 16, 241, 1, 0, 20, 241, 1, 0, 24, 241, 1, 0, 28, 241, 1, 0, 32, 241, 1, 0, 36, 241, 1, 0, 40, 241, 1, 0, 44, 241, 1, 0, 48, 241, 1, 0, 52, 241, 1, 0, 56, 241, 1, 0, 60, 241, 1, 0, 64, 241, 1, 0, 68, 241, 1, 0, 72, 241, 1, 0, 76, 241, 1, 0, 80, 241, 1, 0, 84, 241, 1, 0, 88, 241, 1, 0, 92, 241, 1, 0, 96, 241, 1, 0, 100, 241, 1, 0, 104, 241, 1, 0, 108, 241, 1, 0, 112, 241, 1, 0, 116, 241, 1, 0, 120, 241, 1, 0, 124, 241, 1, 0, 128, 241, 1, 0, 132, 241, 1, 0, 136, 241, 1, 0, 140, 241, 1, 0, 144, 241, 1, 0, 148, 241, 1, 0, 152, 241, 1, 0, 156, 241, 1, 0, 160, 241, 1, 0, 164, 241, 1, 0, 168, 241, 1, 0, 172, 241, 1, 0, 176, 241, 1, 0, 180, 241, 1, 0, 184, 241, 1, 0, 188, 241, 1, 0, 192, 241, 1, 0, 196, 241, 1, 0, 200, 241, 1, 0, 204, 241, 1, 0, 208, 241, 1, 0, 212, 241, 1, 0, 216, 241, 1, 0, 220, 241, 1, 0, 224, 241, 1, 0, 228, 241, 1, 0, 232, 241, 1, 0, 236, 241, 1, 0, 240, 241, 1, 0, 244, 241, 1, 0, 248, 241, 1, 0, 252, 241, 1, 0, 0, 242, 1, 0, 4, 242, 1, 0, 8, 242, 1, 0, 12, 242, 1, 0, 16, 242, 1, 0, 20, 242, 1, 0, 24, 242, 1, 0, 28, 242, 1, 0, 32, 242, 1, 0, 36, 242, 1, 0, 40, 242, 1, 0, 44, 242, 1, 0, 48, 242, 1, 0, 52, 242, 1, 0, 56, 242, 1, 0, 60, 242, 1, 0, 64, 242, 1, 0, 68, 242, 1, 0, 72, 242, 1, 0, 76, 242, 1, 0, 80, 242, 1, 0, 84, 242, 1, 0, 88, 242, 1, 0, 92, 242, 1, 0, 96, 242, 1, 0, 100, 242, 1, 0, 104, 242, 1, 0, 108, 242, 1, 0, 112, 242, 1, 0, 116, 242, 1, 0, 120, 242, 1, 0, 124, 242, 1, 0, 128, 242, 1, 0, 132, 242, 1, 0, 136, 242, 1, 0, 140, 242, 1, 0, 144, 242, 1, 0, 148, 242, 1, 0, 152, 242, 1, 0, 156, 242, 1, 0, 160, 242, 1, 0, 164, 242, 1, 0, 168, 242, 1, 0, 172, 242, 1, 0, 176, 242, 1, 0, 180, 242, 1, 0, 184, 242, 1, 0, 188, 242, 1, 0, 192, 242, 1, 0, 196, 242, 1, 0, 200, 242, 1, 0, 204, 242, 1, 0, 208, 242, 1, 0, 212, 242, 1, 0, 216, 242, 1, 0, 220, 242, 1, 0, 224, 242, 1, 0, 228, 242, 1, 0, 232, 242, 1, 0, 236, 242, 1, 0, 240, 242, 1, 0, 244, 242, 1, 0, 248, 242, 1, 0, 252, 242, 1, 0, 0, 243, 1, 0, 4, 243, 1, 0, 8, 243, 1, 0, 12, 243, 1, 0, 16, 243, 1, 0, 20, 243, 1, 0, 24, 243, 1, 0, 28, 243, 1, 0, 32, 243, 1, 0, 36, 243, 1, 0, 40, 243, 1, 0, 44, 243, 1, 0, 48, 243, 1, 0, 52, 243, 1, 0, 56, 243, 1, 0, 60, 243, 1, 0, 64, 243, 1, 0, 68, 243, 1, 0, 72, 243, 1, 0, 76, 243, 1, 0, 80, 243, 1, 0, 84, 243, 1, 0, 88, 243, 1, 0, 92, 243, 1, 0, 96, 243, 1, 0, 100, 243, 1, 0, 104, 243, 1, 0, 108, 243, 1, 0, 112, 243, 1, 0, 116, 243, 1, 0, 120, 243, 1, 0, 124, 243, 1, 0, 128, 243, 1, 0, 132, 243, 1, 0, 136, 243, 1, 0, 140, 243, 1, 0, 144, 243, 1, 0, 148, 243, 1, 0, 152, 243, 1, 0, 156, 243, 1, 0, 160, 243, 1, 0, 164, 243, 1, 0, 168, 243, 1, 0, 172, 243, 1, 0, 176, 243, 1, 0, 180, 243, 1, 0, 184, 243, 1, 0, 188, 243, 1, 0, 192, 243, 1, 0, 196, 243, 1, 0, 200, 243, 1, 0, 204, 243, 1, 0, 208, 243, 1, 0, 212, 243, 1, 0, 216, 243, 1, 0, 220, 243, 1, 0, 224, 243, 1, 0, 228, 243, 1, 0, 232, 243, 1, 0, 236, 243, 1, 0, 240, 243, 1, 0, 244, 243, 1, 0, 248, 243, 1, 0, 252, 243, 1, 0, 0, 244, 1, 0, 4, 244, 1, 0, 8, 244, 1, 0, 12, 244, 1, 0, 16, 244, 1, 0, 20, 244, 1, 0, 24, 244, 1, 0, 28, 244, 1, 0, 32, 244, 1, 0, 36, 244, 1, 0, 40, 244, 1, 0, 44, 244, 1, 0, 48, 244, 1, 0, 52, 244, 1, 0, 56, 244, 1, 0, 60, 244, 1, 0, 64, 244, 1, 0, 68, 244, 1, 0, 72, 244, 1, 0, 76, 244, 1, 0, 80, 244, 1, 0, 84, 244, 1, 0, 88, 244, 1, 0, 92, 244, 1, 0, 96, 244, 1, 0, 100, 244, 1, 0, 104, 244, 1, 0, 108, 244, 1, 0, 112, 244, 1, 0, 116, 244, 1, 0, 120, 244, 1, 0, 124, 244, 1, 0, 128, 244, 1, 0, 132, 244, 1, 0, 136, 244, 1, 0, 140, 244, 1, 0, 144, 244, 1, 0, 148, 244, 1, 0, 152, 244, 1, 0, 156, 244, 1, 0, 160, 244, 1, 0, 164, 244, 1, 0, 168, 244, 1, 0, 172, 244, 1, 0, 176, 244, 1, 0, 180, 244, 1, 0, 184, 244, 1, 0, 188, 244, 1, 0, 192, 244, 1, 0, 196, 244, 1, 0, 200, 244, 1, 0, 204, 244, 1, 0, 208, 244, 1, 0, 212, 244, 1, 0, 216, 244, 1, 0, 220, 244, 1, 0, 224, 244, 1, 0, 228, 244, 1, 0, 232, 244, 1, 0, 236, 244, 1, 0, 240, 244, 1, 0, 244, 244, 1, 0, 248, 244, 1, 0, 252, 244, 1, 0, 0, 245, 1, 0, 4, 245, 1, 0, 8, 245, 1, 0, 12, 245, 1, 0, 16, 245, 1, 0, 20, 245, 1, 0, 24, 245, 1, 0, 28, 245, 1, 0, 32, 245, 1, 0, 36, 245, 1, 0, 40, 245, 1, 0, 44, 245, 1, 0, 48, 245, 1, 0, 52, 245, 1, 0, 56, 245, 1, 0, 60, 245, 1, 0, 64, 245, 1, 0, 68, 245, 1, 0, 72, 245, 1, 0, 76, 245, 1, 0, 80, 245, 1, 0, 84, 245, 1, 0, 88, 245, 1, 0, 92, 245, 1, 0, 96, 245, 1, 0, 100, 245, 1, 0, 104, 245, 1, 0, 108, 245, 1, 0, 112, 245, 1, 0, 116, 245, 1, 0, 120, 245, 1, 0, 124, 245, 1, 0, 128, 245, 1, 0, 132, 245, 1, 0, 136, 245, 1, 0, 140, 245, 1, 0, 144, 245, 1, 0, 148, 245, 1, 0, 152, 245, 1, 0, 156, 245, 1, 0, 160, 245, 1, 0, 164, 245, 1, 0, 168, 245, 1, 0, 172, 245, 1, 0, 176, 245, 1, 0, 180, 245, 1, 0, 184, 245, 1, 0, 188, 245, 1, 0, 192, 245, 1, 0, 196, 245, 1, 0, 200, 245, 1, 0, 204, 245, 1, 0, 208, 245, 1, 0, 212, 245, 1, 0, 216, 245, 1, 0, 220, 245, 1, 0, 224, 245, 1, 0, 228, 245, 1, 0, 232, 245, 1, 0, 236, 245, 1, 0, 240, 245, 1, 0, 244, 245, 1, 0, 248, 245, 1, 0, 252, 245, 1, 0, 0, 246, 1, 0, 4, 246, 1, 0, 8, 246, 1, 0, 12, 246, 1, 0, 16, 246, 1, 0, 20, 246, 1, 0, 24, 246, 1, 0, 28, 246, 1, 0, 32, 246, 1, 0, 36, 246, 1, 0, 40, 246, 1, 0, 44, 246, 1, 0, 48, 246, 1, 0, 52, 246, 1, 0, 56, 246, 1, 0, 60, 246, 1, 0, 64, 246, 1, 0, 68, 246, 1, 0, 72, 246, 1, 0, 76, 246, 1, 0, 80, 246, 1, 0, 84, 246, 1, 0, 88, 246, 1, 0, 92, 246, 1, 0, 96, 246, 1, 0, 100, 246, 1, 0, 104, 246, 1, 0, 108, 246, 1, 0, 112, 246, 1, 0, 116, 246, 1, 0, 120, 246, 1, 0, 124, 246, 1, 0, 128, 246, 1, 0, 132, 246, 1, 0, 136, 246, 1, 0, 140, 246, 1, 0, 144, 246, 1, 0, 148, 246, 1, 0, 152, 246, 1, 0, 156, 246, 1, 0, 160, 246, 1, 0, 164, 246, 1, 0, 168, 246, 1, 0, 172, 246, 1, 0, 176, 246, 1, 0, 180, 246, 1, 0, 184, 246, 1, 0, 188, 246, 1, 0, 192, 246, 1, 0, 196, 246, 1, 0, 200, 246, 1, 0, 204, 246, 1, 0, 208, 246, 1, 0, 212, 246, 1, 0, 216, 246, 1, 0, 220, 246, 1, 0, 224, 246, 1, 0, 228, 246, 1, 0, 232, 246, 1, 0, 236, 246, 1, 0, 240, 246, 1, 0, 244, 246, 1, 0, 248, 246, 1, 0, 252, 246, 1, 0, 0, 247, 1, 0, 4, 247, 1, 0, 8, 247, 1, 0, 12, 247, 1, 0, 16, 247, 1, 0, 20, 247, 1, 0, 24, 247, 1, 0, 28, 247, 1, 0, 32, 247, 1, 0, 36, 247, 1, 0, 40, 247, 1, 0, 44, 247, 1, 0, 48, 247, 1, 0, 52, 247, 1, 0, 56, 247, 1, 0, 60, 247, 1, 0, 64, 247, 1, 0, 68, 247, 1, 0, 72, 247, 1, 0, 76, 247, 1, 0, 80, 247, 1, 0, 84, 247, 1, 0, 88, 247, 1, 0, 92, 247, 1, 0, 96, 247, 1, 0, 100, 247, 1, 0, 104, 247, 1, 0, 108, 247, 1, 0, 112, 247, 1, 0, 116, 247, 1, 0, 120, 247, 1, 0, 124, 247, 1, 0, 128, 247, 1, 0, 132, 247, 1, 0, 136, 247, 1, 0, 140, 247, 1, 0, 144, 247, 1, 0, 148, 247, 1, 0, 152, 247, 1, 0, 156, 247, 1, 0, 160, 247, 1, 0, 164, 247, 1, 0, 168, 247, 1, 0, 172, 247, 1, 0, 176, 247, 1, 0, 180, 247, 1, 0, 184, 247, 1, 0, 188, 247, 1, 0, 192, 247, 1, 0, 196, 247, 1, 0, 200, 247, 1, 0, 204, 247, 1, 0, 208, 247, 1, 0, 212, 247, 1, 0, 216, 247, 1, 0, 220, 247, 1, 0, 224, 247, 1, 0, 228, 247, 1, 0, 232, 247, 1, 0, 236, 247, 1, 0, 240, 247, 1, 0, 244, 247, 1, 0, 248, 247, 1, 0, 252, 247, 1, 0, 0, 248, 1, 0, 4, 248, 1, 0, 8, 248, 1, 0, 12, 248, 1, 0, 16, 248, 1, 0, 20, 248, 1, 0, 24, 248, 1, 0, 28, 248, 1, 0, 32, 248, 1, 0, 36, 248, 1, 0, 40, 248, 1, 0, 44, 248, 1, 0, 48, 248, 1, 0, 52, 248, 1, 0, 56, 248, 1, 0, 60, 248, 1, 0, 64, 248, 1, 0, 68, 248, 1, 0, 72, 248, 1, 0, 76, 248, 1, 0, 80, 248, 1, 0, 84, 248, 1, 0, 88, 248, 1, 0, 92, 248, 1, 0, 96, 248, 1, 0, 100, 248, 1, 0, 104, 248, 1, 0, 108, 248, 1, 0, 112, 248, 1, 0, 116, 248, 1, 0, 120, 248, 1, 0, 124, 248, 1, 0, 128, 248, 1, 0, 132, 248, 1, 0, 136, 248, 1, 0, 140, 248, 1, 0, 144, 248, 1, 0, 148, 248, 1, 0, 152, 248, 1, 0, 156, 248, 1, 0, 160, 248, 1, 0, 164, 248, 1, 0, 168, 248, 1, 0, 172, 248, 1, 0, 176, 248, 1, 0, 180, 248, 1, 0, 184, 248, 1, 0, 188, 248, 1, 0, 192, 248, 1, 0, 196, 248, 1, 0, 200, 248, 1, 0, 204, 248, 1, 0, 208, 248, 1, 0, 212, 248, 1, 0, 216, 248, 1, 0, 220, 248, 1, 0, 224, 248, 1, 0, 228, 248, 1, 0, 232, 248, 1, 0, 236, 248, 1, 0, 240, 248, 1, 0, 244, 248, 1, 0, 248, 248, 1, 0, 252, 248, 1, 0, 0, 249, 1, 0, 4, 249, 1, 0, 8, 249, 1, 0, 12, 249, 1, 0, 16, 249, 1, 0, 20, 249, 1, 0, 24, 249, 1, 0, 28, 249, 1, 0, 32, 249, 1, 0, 36, 249, 1, 0, 40, 249, 1, 0, 44, 249, 1, 0, 48, 249, 1, 0, 52, 249, 1, 0, 56, 249, 1, 0, 60, 249, 1, 0, 64, 249, 1, 0, 68, 249, 1, 0, 72, 249, 1, 0, 76, 249, 1, 0, 80, 249, 1, 0, 84, 249, 1, 0, 88, 249, 1, 0, 92, 249, 1, 0, 96, 249, 1, 0, 100, 249, 1, 0, 104, 249, 1, 0, 108, 249, 1, 0, 112, 249, 1, 0, 116, 249, 1, 0, 120, 249, 1, 0, 124, 249, 1, 0, 128, 249, 1, 0, 132, 249, 1, 0, 136, 249, 1, 0, 140, 249, 1, 0, 144, 249, 1, 0, 148, 249, 1, 0, 152, 249, 1, 0, 156, 249, 1, 0, 160, 249, 1, 0, 164, 249, 1, 0, 168, 249, 1, 0, 172, 249, 1, 0, 176, 249, 1, 0, 180, 249, 1, 0, 184, 249, 1, 0, 188, 249, 1, 0, 192, 249, 1, 0, 196, 249, 1, 0, 200, 249, 1, 0, 204, 249, 1, 0, 208, 249, 1, 0, 212, 249, 1, 0, 216, 249, 1, 0, 220, 249, 1, 0, 224, 249, 1, 0, 228, 249, 1, 0, 232, 249, 1, 0, 236, 249, 1, 0, 240, 249, 1, 0, 244, 249, 1, 0, 248, 249, 1, 0, 252, 249, 1, 0, 0, 250, 1, 0, 4, 250, 1, 0, 8, 250, 1, 0, 12, 250, 1, 0, 16, 250, 1, 0, 20, 250, 1, 0, 24, 250, 1, 0, 28, 250, 1, 0, 32, 250, 1, 0, 36, 250, 1, 0, 40, 250, 1, 0, 44, 250, 1, 0, 48, 250, 1, 0, 52, 250, 1, 0, 56, 250, 1, 0, 60, 250, 1, 0, 64, 250, 1, 0, 68, 250, 1, 0, 72, 250, 1, 0, 76, 250, 1, 0, 80, 250, 1, 0, 84, 250, 1, 0, 88, 250, 1, 0, 92, 250, 1, 0, 96, 250, 1, 0, 100, 250, 1, 0, 104, 250, 1, 0, 108, 250, 1, 0, 112, 250, 1, 0, 116, 250, 1, 0, 120, 250, 1, 0, 124, 250, 1, 0, 128, 250, 1, 0, 132, 250, 1, 0, 136, 250, 1, 0, 140, 250, 1, 0, 144, 250, 1, 0, 148, 250, 1, 0, 152, 250, 1, 0, 156, 250, 1, 0, 160, 250, 1, 0, 164, 250, 1, 0, 168, 250, 1, 0, 172, 250, 1, 0, 176, 250, 1, 0, 180, 250, 1, 0, 184, 250, 1, 0, 188, 250, 1, 0, 192, 250, 1, 0, 196, 250, 1, 0, 200, 250, 1, 0, 204, 250, 1, 0, 208, 250, 1, 0, 212, 250, 1, 0, 216, 250, 1, 0, 220, 250, 1, 0, 224, 250, 1, 0, 228, 250, 1, 0, 232, 250, 1, 0, 236, 250, 1, 0, 240, 250, 1, 0, 244, 250, 1, 0, 248, 250, 1, 0, 252, 250, 1, 0, 0, 251, 1, 0, 4, 251, 1, 0, 8, 251, 1, 0, 12, 251, 1, 0, 16, 251, 1, 0, 20, 251, 1, 0, 24, 251, 1, 0, 28, 251, 1, 0, 32, 251, 1, 0, 36, 251, 1, 0, 40, 251, 1, 0, 44, 251, 1, 0, 48, 251, 1, 0, 52, 251, 1, 0, 56, 251, 1, 0, 60, 251, 1, 0, 64, 251, 1, 0, 68, 251, 1, 0, 72, 251, 1, 0, 76, 251, 1, 0, 80, 251, 1, 0, 84, 251, 1, 0, 88, 251, 1, 0, 92, 251, 1, 0, 96, 251, 1, 0, 100, 251, 1, 0, 104, 251, 1, 0, 108, 251, 1, 0, 112, 251, 1, 0, 116, 251, 1, 0, 120, 251, 1, 0, 124, 251, 1, 0, 128, 251, 1, 0, 132, 251, 1, 0, 136, 251, 1, 0, 140, 251, 1, 0, 144, 251, 1, 0, 148, 251, 1, 0, 152, 251, 1, 0, 156, 251, 1, 0, 160, 251, 1, 0, 164, 251, 1, 0, 168, 251, 1, 0, 172, 251, 1, 0, 176, 251, 1, 0, 180, 251, 1, 0, 184, 251, 1, 0, 188, 251, 1, 0, 192, 251, 1, 0, 196, 251, 1, 0, 200, 251, 1, 0, 204, 251, 1, 0, 208, 251, 1, 0, 212, 251, 1, 0, 216, 251, 1, 0, 220, 251, 1, 0, 224, 251, 1, 0, 228, 251, 1, 0, 232, 251, 1, 0, 236, 251, 1, 0, 240, 251, 1, 0, 244, 251, 1, 0, 248, 251, 1, 0, 252, 251, 1, 0, 0, 252, 1, 0, 4, 252, 1, 0, 8, 252, 1, 0, 12, 252, 1, 0, 16, 252, 1, 0, 20, 252, 1, 0, 24, 252, 1, 0, 28, 252, 1, 0, 32, 252, 1, 0, 36, 252, 1, 0, 40, 252, 1, 0, 44, 252, 1, 0, 48, 252, 1, 0, 52, 252, 1, 0, 56, 252, 1, 0, 60, 252, 1, 0, 64, 252, 1, 0, 68, 252, 1, 0, 72, 252, 1, 0, 76, 252, 1, 0, 80, 252, 1, 0, 84, 252, 1, 0, 88, 252, 1, 0, 92, 252, 1, 0, 96, 252, 1, 0, 100, 252, 1, 0, 104, 252, 1, 0, 108, 252, 1, 0, 112, 252, 1, 0, 116, 252, 1, 0, 120, 252, 1, 0, 124, 252, 1, 0, 128, 252, 1, 0, 132, 252, 1, 0, 136, 252, 1, 0, 140, 252, 1, 0, 144, 252, 1, 0, 148, 252, 1, 0, 152, 252, 1, 0, 156, 252, 1, 0, 160, 252, 1, 0, 164, 252, 1, 0, 168, 252, 1, 0, 172, 252, 1, 0, 176, 252, 1, 0, 180, 252, 1, 0, 184, 252, 1, 0, 188, 252, 1, 0, 192, 252, 1, 0, 196, 252, 1, 0, 200, 252, 1, 0, 204, 252, 1, 0, 208, 252, 1, 0, 212, 252, 1, 0, 216, 252, 1, 0, 220, 252, 1, 0, 224, 252, 1, 0, 228, 252, 1, 0, 232, 252, 1, 0, 236, 252, 1, 0, 240, 252, 1, 0, 244, 252, 1, 0, 248, 252, 1, 0, 252, 252, 1, 0, 0, 253, 1, 0, 4, 253, 1, 0, 8, 253, 1, 0, 12, 253, 1, 0, 16, 253, 1, 0, 20, 253, 1, 0, 24, 253, 1, 0, 28, 253, 1, 0, 32, 253, 1, 0, 36, 253, 1, 0, 40, 253, 1, 0, 44, 253, 1, 0, 48, 253, 1, 0, 52, 253, 1, 0, 56, 253, 1, 0, 60, 253, 1, 0, 64, 253, 1, 0, 68, 253, 1, 0, 72, 253, 1, 0, 76, 253, 1, 0, 80, 253, 1, 0, 84, 253, 1, 0, 88, 253, 1, 0, 92, 253, 1, 0, 96, 253, 1, 0, 100, 253, 1, 0, 104, 253, 1, 0, 108, 253, 1, 0, 112, 253, 1, 0, 116, 253, 1, 0, 120, 253, 1, 0, 124, 253, 1, 0, 128, 253, 1, 0, 132, 253, 1, 0, 136, 253, 1, 0, 140, 253, 1, 0, 144, 253, 1, 0, 148, 253, 1, 0, 152, 253, 1, 0, 156, 253, 1, 0, 160, 253, 1, 0, 164, 253, 1, 0, 168, 253, 1, 0, 172, 253, 1, 0, 176, 253, 1, 0, 180, 253, 1, 0, 184, 253, 1, 0, 188, 253, 1, 0, 192, 253, 1, 0, 196, 253, 1, 0, 200, 253, 1, 0, 204, 253, 1, 0, 208, 253, 1, 0, 212, 253, 1, 0, 216, 253, 1, 0, 220, 253, 1, 0, 224, 253, 1, 0, 228, 253, 1, 0, 232, 253, 1, 0, 236, 253, 1, 0, 240, 253, 1, 0, 244, 253, 1, 0, 248, 253, 1, 0, 252, 253, 1, 0, 0, 254, 1, 0, 4, 254, 1, 0, 8, 254, 1, 0, 12, 254, 1, 0, 16, 254, 1, 0, 20, 254, 1, 0, 24, 254, 1, 0, 28, 254, 1, 0, 32, 254, 1, 0, 36, 254, 1, 0, 40, 254, 1, 0, 44, 254, 1, 0, 48, 254, 1, 0, 52, 254, 1, 0, 56, 254, 1, 0, 60, 254, 1, 0, 64, 254, 1, 0, 68, 254, 1, 0, 72, 254, 1, 0, 76, 254, 1, 0, 80, 254, 1, 0, 84, 254, 1, 0, 88, 254, 1, 0, 92, 254, 1, 0, 96, 254, 1, 0, 100, 254, 1, 0, 104, 254, 1, 0, 108, 254, 1, 0, 112, 254, 1, 0, 116, 254, 1, 0, 120, 254, 1, 0, 124, 254, 1, 0, 128, 254, 1, 0, 132, 254, 1, 0, 136, 254, 1, 0, 140, 254, 1, 0, 144, 254, 1, 0, 148, 254, 1, 0, 152, 254, 1, 0, 156, 254, 1, 0, 160, 254, 1, 0, 164, 254, 1, 0, 168, 254, 1, 0, 172, 254, 1, 0, 176, 254, 1, 0, 180, 254, 1, 0, 184, 254, 1, 0, 188, 254, 1, 0, 192, 254, 1, 0, 196, 254, 1, 0, 200, 254, 1, 0, 204, 254, 1, 0, 208, 254, 1, 0, 212, 254, 1, 0, 216, 254, 1, 0, 220, 254, 1, 0, 224, 254, 1, 0, 228, 254, 1, 0, 232, 254, 1, 0, 236, 254, 1, 0, 240, 254, 1, 0, 244, 254, 1, 0, 248, 254, 1, 0, 252, 254, 1, 0, 0, 255, 1, 0, 4, 255, 1, 0, 8, 255, 1, 0, 12, 255, 1, 0, 16, 255, 1, 0, 20, 255, 1, 0, 24, 255, 1, 0, 28, 255, 1, 0, 32, 255, 1, 0, 36, 255, 1, 0, 40, 255, 1, 0, 44, 255, 1, 0, 48, 255, 1, 0, 52, 255, 1, 0, 56, 255, 1, 0, 60, 255, 1, 0, 64, 255, 1, 0, 68, 255, 1, 0, 72, 255, 1, 0, 76, 255, 1, 0, 80, 255, 1, 0, 84, 255, 1, 0, 88, 255, 1, 0, 92, 255, 1, 0, 96, 255, 1, 0, 100, 255, 1, 0, 104, 255, 1, 0, 108, 255, 1, 0, 112, 255, 1, 0, 116, 255, 1, 0, 120, 255, 1, 0, 124, 255, 1, 0, 128, 255, 1, 0, 132, 255, 1, 0, 136, 255, 1, 0, 140, 255, 1, 0, 144, 255, 1, 0, 148, 255, 1, 0, 152, 255, 1, 0, 156, 255, 1, 0, 160, 255, 1, 0, 164, 255, 1, 0, 168, 255, 1, 0, 172, 255, 1, 0, 176, 255, 1, 0, 180, 255, 1, 0, 184, 255, 1, 0, 188, 255, 1, 0, 192, 255, 1, 0, 196, 255, 1, 0, 200, 255, 1, 0, 204, 255, 1, 0, 208, 255, 1, 0, 212, 255, 1, 0, 216, 255, 1, 0, 220, 255, 1, 0, 224, 255, 1, 0, 228, 255, 1, 0, 232, 255, 1, 0, 236, 255, 1, 0, 240, 255, 1, 0, 244, 255, 1, 0, 248, 255, 1, 0, 252, 255, 1, 0, 0, 0, 2, 0, 4, 0, 2, 0, 8, 0, 2, 0, 12, 0, 2, 0, 16, 0, 2, 0, 20, 0, 2, 0, 24, 0, 2, 0, 28, 0, 2, 0, 32, 0, 2, 0, 36, 0, 2, 0, 40, 0, 2, 0, 44, 0, 2, 0, 48, 0, 2, 0, 52, 0, 2, 0, 56, 0, 2, 0, 60, 0, 2, 0, 64, 0, 2, 0, 68, 0, 2, 0, 72, 0, 2, 0, 76, 0, 2, 0, 80, 0, 2, 0, 84, 0, 2, 0, 88, 0, 2, 0, 92, 0, 2, 0, 96, 0, 2, 0, 100, 0, 2, 0, 104, 0, 2, 0, 108, 0, 2, 0, 112, 0, 2, 0, 116, 0, 2, 0, 120, 0, 2, 0, 124, 0, 2, 0, 128, 0, 2, 0, 132, 0, 2, 0, 136, 0, 2, 0, 140, 0, 2, 0, 144, 0, 2, 0, 148, 0, 2, 0, 152, 0, 2, 0, 156, 0, 2, 0, 160, 0, 2, 0, 164, 0, 2, 0, 168, 0, 2, 0, 172, 0, 2, 0, 176, 0, 2, 0, 180, 0, 2, 0, 184, 0, 2, 0, 188, 0, 2, 0, 192, 0, 2, 0, 196, 0, 2, 0, 200, 0, 2, 0, 204, 0, 2, 0, 208, 0, 2, 0, 212, 0, 2, 0, 216, 0, 2, 0, 220, 0, 2, 0, 224, 0, 2, 0, 228, 0, 2, 0, 232, 0, 2, 0, 236, 0, 2, 0, 240, 0, 2, 0, 244, 0, 2, 0, 248, 0, 2, 0, 252, 0, 2, 0, 0, 1, 2, 0, 4, 1, 2, 0, 8, 1, 2, 0, 12, 1, 2, 0, 16, 1, 2, 0, 20, 1, 2, 0, 24, 1, 2, 0, 28, 1, 2, 0, 32, 1, 2, 0, 36, 1, 2, 0, 40, 1, 2, 0, 44, 1, 2, 0, 48, 1, 2, 0, 52, 1, 2, 0, 56, 1, 2, 0, 60, 1, 2, 0, 64, 1, 2, 0, 68, 1, 2, 0, 72, 1, 2, 0, 76, 1, 2, 0, 80, 1, 2, 0, 84, 1, 2, 0, 88, 1, 2, 0, 92, 1, 2, 0, 96, 1, 2, 0, 100, 1, 2, 0, 104, 1, 2, 0, 108, 1, 2, 0, 112, 1, 2, 0, 116, 1, 2, 0, 120, 1, 2, 0, 124, 1, 2, 0, 128, 1, 2, 0, 132, 1, 2, 0, 136, 1, 2, 0, 140, 1, 2, 0, 144, 1, 2, 0, 148, 1, 2, 0, 152, 1, 2, 0, 156, 1, 2, 0, 160, 1, 2, 0, 164, 1, 2, 0, 168, 1, 2, 0, 172, 1, 2, 0, 176, 1, 2, 0, 180, 1, 2, 0, 184, 1, 2, 0, 188, 1, 2, 0, 192, 1, 2, 0, 196, 1, 2, 0, 200, 1, 2, 0, 204, 1, 2, 0, 208, 1, 2, 0, 212, 1, 2, 0, 216, 1, 2, 0, 220, 1, 2, 0, 224, 1, 2, 0, 228, 1, 2, 0, 232, 1, 2, 0, 236, 1, 2, 0, 240, 1, 2, 0, 244, 1, 2, 0, 248, 1, 2, 0, 252, 1, 2, 0, 0, 2, 2, 0, 4, 2, 2, 0, 8, 2, 2, 0, 12, 2, 2, 0, 16, 2, 2, 0, 20, 2, 2, 0, 24, 2, 2, 0, 28, 2, 2, 0, 32, 2, 2, 0, 36, 2, 2, 0, 40, 2, 2, 0, 44, 2, 2, 0, 48, 2, 2, 0, 52, 2, 2, 0, 56, 2, 2, 0, 60, 2, 2, 0, 64, 2, 2, 0, 68, 2, 2, 0, 72, 2, 2, 0, 76, 2, 2, 0, 80, 2, 2, 0, 84, 2, 2, 0, 88, 2, 2, 0, 92, 2, 2, 0, 96, 2, 2, 0, 100, 2, 2, 0, 104, 2, 2, 0, 108, 2, 2, 0, 112, 2, 2, 0, 116, 2, 2, 0, 120, 2, 2, 0, 124, 2, 2, 0, 128, 2, 2, 0, 132, 2, 2, 0, 136, 2, 2, 0, 140, 2, 2, 0, 144, 2, 2, 0, 148, 2, 2, 0, 152, 2, 2, 0, 156, 2, 2, 0, 160, 2, 2, 0, 164, 2, 2, 0, 168, 2, 2, 0, 172, 2, 2, 0, 176, 2, 2, 0, 180, 2, 2, 0, 184, 2, 2, 0, 188, 2, 2, 0, 192, 2, 2, 0, 196, 2, 2, 0, 200, 2, 2, 0, 204, 2, 2, 0, 208, 2, 2, 0, 212, 2, 2, 0, 216, 2, 2, 0, 220, 2, 2, 0, 224, 2, 2, 0, 228, 2, 2, 0, 232, 2, 2, 0, 236, 2, 2, 0, 240, 2, 2, 0, 244, 2, 2, 0, 248, 2, 2, 0, 252, 2, 2, 0, 0, 3, 2, 0, 4, 3, 2, 0, 8, 3, 2, 0, 12, 3, 2, 0, 16, 3, 2, 0, 20, 3, 2, 0, 24, 3, 2, 0, 28, 3, 2, 0, 32, 3, 2, 0, 36, 3, 2, 0, 40, 3, 2, 0, 44, 3, 2, 0, 48, 3, 2, 0, 52, 3, 2, 0, 56, 3, 2, 0, 60, 3, 2, 0, 64, 3, 2, 0, 68, 3, 2, 0, 72, 3, 2, 0, 76, 3, 2, 0, 80, 3, 2, 0, 84, 3, 2, 0, 88, 3, 2, 0, 92, 3, 2, 0, 96, 3, 2, 0, 100, 3, 2, 0, 104, 3, 2, 0, 108, 3, 2, 0, 112, 3, 2, 0, 116, 3, 2, 0, 120, 3, 2, 0, 124, 3, 2, 0, 128, 3, 2, 0, 132, 3, 2, 0, 136, 3, 2, 0, 140, 3, 2, 0, 144, 3, 2, 0, 148, 3, 2, 0, 152, 3, 2, 0, 156, 3, 2, 0, 160, 3, 2, 0, 164, 3, 2, 0, 168, 3, 2, 0, 172, 3, 2, 0, 176, 3, 2, 0, 180, 3, 2, 0, 184, 3, 2, 0, 188, 3, 2, 0, 192, 3, 2, 0, 196, 3, 2, 0, 200, 3, 2, 0, 204, 3, 2, 0, 208, 3, 2, 0, 212, 3, 2, 0, 216, 3, 2, 0, 220, 3, 2, 0, 224, 3, 2, 0, 228, 3, 2, 0, 232, 3, 2, 0, 236, 3, 2, 0, 240, 3, 2, 0, 244, 3, 2, 0, 248, 3, 2, 0, 252, 3, 2, 0, 0, 4, 2, 0, 4, 4, 2, 0, 8, 4, 2, 0, 12, 4, 2, 0, 16, 4, 2, 0, 20, 4, 2, 0, 24, 4, 2, 0, 28, 4, 2, 0, 32, 4, 2, 0, 36, 4, 2, 0, 40, 4, 2, 0, 44, 4, 2, 0, 48, 4, 2, 0, 52, 4, 2, 0, 56, 4, 2, 0, 60, 4, 2, 0, 64, 4, 2, 0, 68, 4, 2, 0, 72, 4, 2, 0, 76, 4, 2, 0, 80, 4, 2, 0, 84, 4, 2, 0, 88, 4, 2, 0, 92, 4, 2, 0, 96, 4, 2, 0, 100, 4, 2, 0, 104, 4, 2, 0, 108, 4, 2, 0, 112, 4, 2, 0, 116, 4, 2, 0, 120, 4, 2, 0, 124, 4, 2, 0, 128, 4, 2, 0, 132, 4, 2, 0, 136, 4, 2, 0, 140, 4, 2, 0, 144, 4, 2, 0, 148, 4, 2, 0, 152, 4, 2, 0, 156, 4, 2, 0, 160, 4, 2, 0, 164, 4, 2, 0, 168, 4, 2, 0, 172, 4, 2, 0, 176, 4, 2, 0, 180, 4, 2, 0, 184, 4, 2, 0, 188, 4, 2, 0, 192, 4, 2, 0, 196, 4, 2, 0, 200, 4, 2, 0, 204, 4, 2, 0, 208, 4, 2, 0, 212, 4, 2, 0, 216, 4, 2, 0, 220, 4, 2, 0, 224, 4, 2, 0, 228, 4, 2, 0, 232, 4, 2, 0, 236, 4, 2, 0, 240, 4, 2, 0, 244, 4, 2, 0, 248, 4, 2, 0, 252, 4, 2, 0, 0, 5, 2, 0, 4, 5, 2, 0, 8, 5, 2, 0, 12, 5, 2, 0, 16, 5, 2, 0, 20, 5, 2, 0, 24, 5, 2, 0, 28, 5, 2, 0, 32, 5, 2, 0, 36, 5, 2, 0, 40, 5, 2, 0, 44, 5, 2, 0, 48, 5, 2, 0, 52, 5, 2, 0, 56, 5, 2, 0, 60, 5, 2, 0, 64, 5, 2, 0, 68, 5, 2, 0, 72, 5, 2, 0, 76, 5, 2, 0, 80, 5, 2, 0, 84, 5, 2, 0, 88, 5, 2, 0, 92, 5, 2, 0, 96, 5, 2, 0, 100, 5, 2, 0, 104, 5, 2, 0, 108, 5, 2, 0, 112, 5, 2, 0, 116, 5, 2, 0, 120, 5, 2, 0, 124, 5, 2, 0, 128, 5, 2, 0, 132, 5, 2, 0, 136, 5, 2, 0, 140, 5, 2, 0, 144, 5, 2, 0, 148, 5, 2, 0, 152, 5, 2, 0, 156, 5, 2, 0, 160, 5, 2, 0, 164, 5, 2, 0, 168, 5, 2, 0, 172, 5, 2, 0, 176, 5, 2, 0, 180, 5, 2, 0, 184, 5, 2, 0, 188, 5, 2, 0, 192, 5, 2, 0, 196, 5, 2, 0, 200, 5, 2, 0, 204, 5, 2, 0, 208, 5, 2, 0, 212, 5, 2, 0, 216, 5, 2, 0, 220, 5, 2, 0, 224, 5, 2, 0, 228, 5, 2, 0, 232, 5, 2, 0, 236, 5, 2, 0, 240, 5, 2, 0, 244, 5, 2, 0, 248, 5, 2, 0, 252, 5, 2, 0, 0, 6, 2, 0, 4, 6, 2, 0, 8, 6, 2, 0, 12, 6, 2, 0, 16, 6, 2, 0, 20, 6, 2, 0, 24, 6, 2, 0, 28, 6, 2, 0, 32, 6, 2, 0, 36, 6, 2, 0, 40, 6, 2, 0, 44, 6, 2, 0, 48, 6, 2, 0, 52, 6, 2, 0, 56, 6, 2, 0, 60, 6, 2, 0, 64, 6, 2, 0, 68, 6, 2, 0, 72, 6, 2, 0, 76, 6, 2, 0, 80, 6, 2, 0, 84, 6, 2, 0, 88, 6, 2, 0, 92, 6, 2, 0, 96, 6, 2, 0, 100, 6, 2, 0, 104, 6, 2, 0, 108, 6, 2, 0, 112, 6, 2, 0, 116, 6, 2, 0, 120, 6, 2, 0, 124, 6, 2, 0, 128, 6, 2, 0, 132, 6, 2, 0, 136, 6, 2, 0, 140, 6, 2, 0, 144, 6, 2, 0, 148, 6, 2, 0, 152, 6, 2, 0, 156, 6, 2, 0, 160, 6, 2, 0, 164, 6, 2, 0, 168, 6, 2, 0, 172, 6, 2, 0, 176, 6, 2, 0, 180, 6, 2, 0, 184, 6, 2, 0, 188, 6, 2, 0, 192, 6, 2, 0, 196, 6, 2, 0, 200, 6, 2, 0, 204, 6, 2, 0, 208, 6, 2, 0, 212, 6, 2, 0, 216, 6, 2, 0, 220, 6, 2, 0, 224, 6, 2, 0, 228, 6, 2, 0, 232, 6, 2, 0, 236, 6, 2, 0, 240, 6, 2, 0, 244, 6, 2, 0, 248, 6, 2, 0, 252, 6, 2, 0, 0, 7, 2, 0, 4, 7, 2, 0, 8, 7, 2, 0, 12, 7, 2, 0, 16, 7, 2, 0, 20, 7, 2, 0, 24, 7, 2, 0, 28, 7, 2, 0, 32, 7, 2, 0, 36, 7, 2, 0, 40, 7, 2, 0, 44, 7, 2, 0, 48, 7, 2, 0, 52, 7, 2, 0, 56, 7, 2, 0, 60, 7, 2, 0, 64, 7, 2, 0, 68, 7, 2, 0, 72, 7, 2, 0, 76, 7, 2, 0, 80, 7, 2, 0, 84, 7, 2, 0, 88, 7, 2, 0, 92, 7, 2, 0, 96, 7, 2, 0, 100, 7, 2, 0, 104, 7, 2, 0, 108, 7, 2, 0, 112, 7, 2, 0, 116, 7, 2, 0, 120, 7, 2, 0, 124, 7, 2, 0, 128, 7, 2, 0, 132, 7, 2, 0, 136, 7, 2, 0, 140, 7, 2, 0, 144, 7, 2, 0, 148, 7, 2, 0, 152, 7, 2, 0, 156, 7, 2, 0, 160, 7, 2, 0, 164, 7, 2, 0, 168, 7, 2, 0, 172, 7, 2, 0, 176, 7, 2, 0, 180, 7, 2, 0, 184, 7, 2, 0, 188, 7, 2, 0, 192, 7, 2, 0, 196, 7, 2, 0, 200, 7, 2, 0, 204, 7, 2, 0, 208, 7, 2, 0, 212, 7, 2, 0, 216, 7, 2, 0, 220, 7, 2, 0, 224, 7, 2, 0, 228, 7, 2, 0, 232, 7, 2, 0, 236, 7, 2, 0, 240, 7, 2, 0, 244, 7, 2, 0, 248, 7, 2, 0, 252, 7, 2, 0, 0, 8, 2, 0, 4, 8, 2, 0, 8, 8, 2, 0, 12, 8, 2, 0, 16, 8, 2, 0, 20, 8, 2, 0, 24, 8, 2, 0, 28, 8, 2, 0, 32, 8, 2, 0, 36, 8, 2, 0, 40, 8, 2, 0, 44, 8, 2, 0, 48, 8, 2, 0, 52, 8, 2, 0, 56, 8, 2, 0, 60, 8, 2, 0, 64, 8, 2, 0, 68, 8, 2, 0, 72, 8, 2, 0, 76, 8, 2, 0, 80, 8, 2, 0, 84, 8, 2, 0, 88, 8, 2, 0, 92, 8, 2, 0, 96, 8, 2, 0, 100, 8, 2, 0, 104, 8, 2, 0, 108, 8, 2, 0, 112, 8, 2, 0, 116, 8, 2, 0, 120, 8, 2, 0, 124, 8, 2, 0, 128, 8, 2, 0, 132, 8, 2, 0, 136, 8, 2, 0, 140, 8, 2, 0, 144, 8, 2, 0, 148, 8, 2, 0, 152, 8, 2, 0, 156, 8, 2, 0, 160, 8, 2, 0, 164, 8, 2, 0, 168, 8, 2, 0, 172, 8, 2, 0, 176, 8, 2, 0, 180, 8, 2, 0, 184, 8, 2, 0, 188, 8, 2, 0, 192, 8, 2, 0, 196, 8, 2, 0, 200, 8, 2, 0, 204, 8, 2, 0, 208, 8, 2, 0, 212, 8, 2, 0, 216, 8, 2, 0, 220, 8, 2, 0, 224, 8, 2, 0, 228, 8, 2, 0, 232, 8, 2, 0, 236, 8, 2, 0, 240, 8, 2, 0, 244, 8, 2, 0, 248, 8, 2, 0, 252, 8, 2, 0, 0, 9, 2, 0, 4, 9, 2, 0, 8, 9, 2, 0, 12, 9, 2, 0, 16, 9, 2, 0, 20, 9, 2, 0, 24, 9, 2, 0, 28, 9, 2, 0, 32, 9, 2, 0, 36, 9, 2, 0, 40, 9, 2, 0, 44, 9, 2, 0, 48, 9, 2, 0, 52, 9, 2, 0, 56, 9, 2, 0, 60, 9, 2, 0, 64, 9, 2, 0, 68, 9, 2, 0, 72, 9, 2, 0, 76, 9, 2, 0, 80, 9, 2, 0, 84, 9, 2, 0, 88, 9, 2, 0, 92, 9, 2, 0, 96, 9, 2, 0, 100, 9, 2, 0, 104, 9, 2, 0, 108, 9, 2, 0, 112, 9, 2, 0, 116, 9, 2, 0, 120, 9, 2, 0, 124, 9, 2, 0, 128, 9, 2, 0, 132, 9, 2, 0, 136, 9, 2, 0, 140, 9, 2, 0, 144, 9, 2, 0, 148, 9, 2, 0, 152, 9, 2, 0, 156, 9, 2, 0, 160, 9, 2, 0, 164, 9, 2, 0, 168, 9, 2, 0, 172, 9, 2, 0, 176, 9, 2, 0, 180, 9, 2, 0, 184, 9, 2, 0, 188, 9, 2, 0, 192, 9, 2, 0, 196, 9, 2, 0, 200, 9, 2, 0, 204, 9, 2, 0, 208, 9, 2, 0, 212, 9, 2, 0, 216, 9, 2, 0, 220, 9, 2, 0, 224, 9, 2, 0, 228, 9, 2, 0, 232, 9, 2, 0, 236, 9, 2, 0, 240, 9, 2, 0, 244, 9, 2, 0, 248, 9, 2, 0, 252, 9, 2, 0, 0, 10, 2, 0, 4, 10, 2, 0, 8, 10, 2, 0, 12, 10, 2, 0, 16, 10, 2, 0, 20, 10, 2, 0, 24, 10, 2, 0, 28, 10, 2, 0, 32, 10, 2, 0, 36, 10, 2, 0, 40, 10, 2, 0, 44, 10, 2, 0, 48, 10, 2, 0, 52, 10, 2, 0, 56, 10, 2, 0, 60, 10, 2, 0, 64, 10, 2, 0, 68, 10, 2, 0, 72, 10, 2, 0, 76, 10, 2, 0, 80, 10, 2, 0, 84, 10, 2, 0, 88, 10, 2, 0, 92, 10, 2, 0, 96, 10, 2, 0, 100, 10, 2, 0, 104, 10, 2, 0, 108, 10, 2, 0, 112, 10, 2, 0, 116, 10, 2, 0, 120, 10, 2, 0, 124, 10, 2, 0, 128, 10, 2, 0, 132, 10, 2, 0, 136, 10, 2, 0, 140, 10, 2, 0, 144, 10, 2, 0, 148, 10, 2, 0, 152, 10, 2, 0, 156, 10, 2, 0, 160, 10, 2, 0, 164, 10, 2, 0, 168, 10, 2, 0, 172, 10, 2, 0, 176, 10, 2, 0, 180, 10, 2, 0, 184, 10, 2, 0, 188, 10, 2, 0, 192, 10, 2, 0, 196, 10, 2, 0, 200, 10, 2, 0, 204, 10, 2, 0, 208, 10, 2, 0, 212, 10, 2, 0, 216, 10, 2, 0, 220, 10, 2, 0, 224, 10, 2, 0, 228, 10, 2, 0, 232, 10, 2, 0, 236, 10, 2, 0, 240, 10, 2, 0, 244, 10, 2, 0, 248, 10, 2, 0, 252, 10, 2, 0, 0, 11, 2, 0, 4, 11, 2, 0, 8, 11, 2, 0, 12, 11, 2, 0, 16, 11, 2, 0, 20, 11, 2, 0, 24, 11, 2, 0, 28, 11, 2, 0, 32, 11, 2, 0, 36, 11, 2, 0, 40, 11, 2, 0, 44, 11, 2, 0, 48, 11, 2, 0, 52, 11, 2, 0, 56, 11, 2, 0, 60, 11, 2, 0, 64, 11, 2, 0, 68, 11, 2, 0, 72, 11, 2, 0, 76, 11, 2, 0, 80, 11, 2, 0, 84, 11, 2, 0, 88, 11, 2, 0, 92, 11, 2, 0, 96, 11, 2, 0, 100, 11, 2, 0, 104, 11, 2, 0, 108, 11, 2, 0, 112, 11, 2, 0, 116, 11, 2, 0, 120, 11, 2, 0, 124, 11, 2, 0, 128, 11, 2, 0, 132, 11, 2, 0, 136, 11, 2, 0, 140, 11, 2, 0, 144, 11, 2, 0, 148, 11, 2, 0, 152, 11, 2, 0, 156, 11, 2, 0, 160, 11, 2, 0, 164, 11, 2, 0, 168, 11, 2, 0, 172, 11, 2, 0, 176, 11, 2, 0, 180, 11, 2, 0, 184, 11, 2, 0, 188, 11, 2, 0, 192, 11, 2, 0, 196, 11, 2, 0, 200, 11, 2, 0, 204, 11, 2, 0, 208, 11, 2, 0, 212, 11, 2, 0, 216, 11, 2, 0, 220, 11, 2, 0, 224, 11, 2, 0, 228, 11, 2, 0, 232, 11, 2, 0, 236, 11, 2, 0, 240, 11, 2, 0, 244, 11, 2, 0, 248, 11, 2, 0, 252, 11, 2, 0, 0, 12, 2, 0, 4, 12, 2, 0, 8, 12, 2, 0, 12, 12, 2, 0, 16, 12, 2, 0, 20, 12, 2, 0, 24, 12, 2, 0, 28, 12, 2, 0, 32, 12, 2, 0, 36, 12, 2, 0, 40, 12, 2, 0, 44, 12, 2, 0, 48, 12, 2, 0, 52, 12, 2, 0, 56, 12, 2, 0, 60, 12, 2, 0, 64, 12, 2, 0, 68, 12, 2, 0, 72, 12, 2, 0, 76, 12, 2, 0, 80, 12, 2, 0, 84, 12, 2, 0, 88, 12, 2, 0, 92, 12, 2, 0, 96, 12, 2, 0, 100, 12, 2, 0, 104, 12, 2, 0, 108, 12, 2, 0, 112, 12, 2, 0, 116, 12, 2, 0, 120, 12, 2, 0, 124, 12, 2, 0, 128, 12, 2, 0, 132, 12, 2, 0, 136, 12, 2, 0, 140, 12, 2, 0, 144, 12, 2, 0, 148, 12, 2, 0, 152, 12, 2, 0, 156, 12, 2, 0, 160, 12, 2, 0, 164, 12, 2, 0, 168, 12, 2, 0, 172, 12, 2, 0, 176, 12, 2, 0, 180, 12, 2, 0, 184, 12, 2, 0, 188, 12, 2, 0, 192, 12, 2, 0, 196, 12, 2, 0, 200, 12, 2, 0, 204, 12, 2, 0, 208, 12, 2, 0, 212, 12, 2, 0, 216, 12, 2, 0, 220, 12, 2, 0, 224, 12, 2, 0, 228, 12, 2, 0, 232, 12, 2, 0, 236, 12, 2, 0, 240, 12, 2, 0, 244, 12, 2, 0, 248, 12, 2, 0, 252, 12, 2, 0, 0, 13, 2, 0, 4, 13, 2, 0, 8, 13, 2, 0, 12, 13, 2, 0, 16, 13, 2, 0, 20, 13, 2, 0, 24, 13, 2, 0, 28, 13, 2, 0, 32, 13, 2, 0, 36, 13, 2, 0, 40, 13, 2, 0, 44, 13, 2, 0, 48, 13, 2, 0, 52, 13, 2, 0, 56, 13, 2, 0, 60, 13, 2, 0, 64, 13, 2, 0, 68, 13, 2, 0, 72, 13, 2, 0, 76, 13, 2, 0, 80, 13, 2, 0, 84, 13, 2, 0, 88, 13, 2, 0, 92, 13, 2, 0, 96, 13, 2, 0, 100, 13, 2, 0, 104, 13, 2, 0, 108, 13, 2, 0, 112, 13, 2, 0, 116, 13, 2, 0, 120, 13, 2, 0, 124, 13, 2, 0, 128, 13, 2, 0, 132, 13, 2, 0, 136, 13, 2, 0, 140, 13, 2, 0, 144, 13, 2, 0, 148, 13, 2, 0, 152, 13, 2, 0, 156, 13, 2, 0, 160, 13, 2, 0, 164, 13, 2, 0, 168, 13, 2, 0, 172, 13, 2, 0, 176, 13, 2, 0, 180, 13, 2, 0, 184, 13, 2, 0, 188, 13, 2, 0, 192, 13, 2, 0, 196, 13, 2, 0, 200, 13, 2, 0, 204, 13, 2, 0, 208, 13, 2, 0, 212, 13, 2, 0, 216, 13, 2, 0, 220, 13, 2, 0, 224, 13, 2, 0, 228, 13, 2, 0, 232, 13, 2, 0, 236, 13, 2, 0, 240, 13, 2, 0, 244, 13, 2, 0, 248, 13, 2, 0, 252, 13, 2, 0, 0, 14, 2, 0, 4, 14, 2, 0, 8, 14, 2, 0, 12, 14, 2, 0, 16, 14, 2, 0, 20, 14, 2, 0, 24, 14, 2, 0, 28, 14, 2, 0, 32, 14, 2, 0, 36, 14, 2, 0, 40, 14, 2, 0, 44, 14, 2, 0, 48, 14, 2, 0, 52, 14, 2, 0, 56, 14, 2, 0, 60, 14, 2, 0, 64, 14, 2, 0, 68, 14, 2, 0, 72, 14, 2, 0, 76, 14, 2, 0, 80, 14, 2, 0, 84, 14, 2, 0, 88, 14, 2, 0, 92, 14, 2, 0, 96, 14, 2, 0, 100, 14, 2, 0, 104, 14, 2, 0, 108, 14, 2, 0, 112, 14, 2, 0, 116, 14, 2, 0, 120, 14, 2, 0, 124, 14, 2, 0, 128, 14, 2, 0, 132, 14, 2, 0, 136, 14, 2, 0, 140, 14, 2, 0, 144, 14, 2, 0, 148, 14, 2, 0, 152, 14, 2, 0, 156, 14, 2, 0, 160, 14, 2, 0, 164, 14, 2, 0, 168, 14, 2, 0, 172, 14, 2, 0, 176, 14, 2, 0, 180, 14, 2, 0, 184, 14, 2, 0, 188, 14, 2, 0, 192, 14, 2, 0, 196, 14, 2, 0, 200, 14, 2, 0, 204, 14, 2, 0, 208, 14, 2, 0, 212, 14, 2, 0, 216, 14, 2, 0, 220, 14, 2, 0, 224, 14, 2, 0, 228, 14, 2, 0, 232, 14, 2, 0, 236, 14, 2, 0, 240, 14, 2, 0, 244, 14, 2, 0, 248, 14, 2, 0, 252, 14, 2, 0, 0, 15, 2, 0, 4, 15, 2, 0, 8, 15, 2, 0, 12, 15, 2, 0, 16, 15, 2, 0, 20, 15, 2, 0, 24, 15, 2, 0, 28, 15, 2, 0, 32, 15, 2, 0, 36, 15, 2, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 26, 0, 0, 0, 10, 0, 0, 0, 20, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 25, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 102400);
+allocate([8, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 216, 1, 0, 124, 216, 1, 0, 124, 216, 1, 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, 0, 0, 0, 0, 0, 2, 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, 0, 0, 255, 255, 255, 255, 255, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 103, 27, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 95, 23, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 255, 255, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 0, 48, 48, 48, 49, 0, 48, 48, 49, 48, 0, 48, 48, 49, 49, 0, 48, 49, 48, 48, 0, 48, 49, 48, 49, 0, 48, 49, 49, 48, 0, 48, 49, 49, 49, 0, 49, 48, 48, 48, 0, 49, 48, 48, 49, 0, 49, 48, 49, 48, 0, 49, 48, 49, 49, 0, 49, 49, 48, 48, 0, 49, 49, 48, 49, 0, 49, 49, 49, 48, 0, 49, 49, 49, 49, 0, 48, 48, 48, 0, 48, 48, 49, 0, 48, 49, 48, 0, 48, 49, 49, 0, 49, 48, 48, 0, 49, 48, 49, 0, 49, 49, 48, 0, 49, 49, 49, 0, 67, 97, 110, 110, 111, 116, 32, 101, 110, 99, 111, 100, 101, 32, 105, 110, 32, 71, 83, 49, 32, 97, 110, 100, 32, 82, 101, 97, 100, 101, 114, 32, 73, 110, 105, 116, 105, 97, 108, 105, 115, 97, 116, 105, 111, 110, 32, 109, 111, 100, 101, 32, 97, 116, 32, 116, 104, 101, 32, 115, 97, 109, 101, 32, 116, 105, 109, 101, 0, 73, 110, 112, 117, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 32, 111, 114, 32, 116, 111, 111, 32, 109, 97, 110, 121, 32, 101, 120, 116, 101, 110, 100, 101, 100, 32, 65, 83, 67, 73, 73, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114, 115, 0, 73, 110, 118, 97, 108, 105, 100, 32, 101, 114, 114, 111, 114, 32, 99, 111, 114, 114, 101, 99, 116, 105, 111, 110, 32, 108, 101, 118, 101, 108, 32, 45, 32, 117, 115, 105, 110, 103, 32, 100, 101, 102, 97, 117, 108, 116, 32, 105, 110, 115, 116, 101, 97, 100, 0, 73, 110, 112, 117, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 32, 40, 116, 111, 111, 32, 109, 97, 110, 121, 32, 98, 105, 116, 115, 32, 102, 111, 114, 32, 115, 101, 108, 101, 99, 116, 101, 100, 32, 69, 67, 67, 41, 0, 73, 110, 118, 97, 108, 105, 100, 32, 65, 122, 116, 101, 99, 32, 67, 111, 100, 101, 32, 115, 105, 122, 101, 0, 68, 97, 116, 97, 32, 116, 111, 111, 32, 108, 111, 110, 103, 32, 102, 111, 114, 32, 115, 112, 101, 99, 105, 102, 105, 101, 100, 32, 65, 122, 116, 101, 99, 32, 67, 111, 100, 101, 32, 115, 121, 109, 98, 111, 108, 32, 115, 105, 122, 101, 0, 68, 97, 116, 97, 32, 116, 111, 111, 32, 108, 111, 110, 103, 32, 102, 111, 114, 32, 114, 101, 97, 100, 101, 114, 32, 105, 110, 105, 116, 105, 97, 108, 105, 115, 97, 116, 105, 111, 110, 32, 115, 121, 109, 98, 111, 108, 0, 73, 110, 112, 117, 116, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 73, 110, 118, 97, 108, 105, 100, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114, 115, 32, 105, 110, 32, 105, 110, 112, 117, 116, 0, 101, 114, 114, 111, 114, 58, 32, 73, 110, 118, 97, 108, 105, 100, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114, 32, 105, 110, 32, 105, 110, 112, 117, 116, 32, 115, 116, 114, 105, 110, 103, 32, 40, 111, 110, 108, 121, 32, 76, 97, 116, 105, 110, 45, 49, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114, 115, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 41, 0, 48, 48, 48, 48, 48, 48, 0, 102, 102, 102, 102, 102, 102, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 0, 91, 10, 0, 32, 91, 32, 0, 49, 32, 0, 48, 32, 0, 93, 10, 0, 78, 111, 32, 105, 110, 112, 117, 116, 32, 100, 97, 116, 97, 0, 83, 121, 109, 98, 111, 108, 111, 103, 121, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 44, 32, 117, 115, 105, 110, 103, 32, 67, 111, 100, 101, 32, 49, 50, 56, 0, 67, 111, 100, 97, 98, 97, 114, 32, 49, 56, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 44, 32, 117, 115, 105, 110, 103, 32, 67, 111, 100, 97, 98, 97, 114, 0, 85, 80, 67, 68, 49, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 71, 101, 110, 101, 114, 97, 108, 32, 80, 97, 114, 99, 101, 108, 32, 67, 111, 100, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 44, 32, 117, 115, 105, 110, 103, 32, 67, 111, 100, 101, 32, 49, 50, 56, 0, 67, 111, 100, 97, 98, 108, 111, 99, 107, 32, 69, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 67, 111, 100, 97, 98, 108, 111, 99, 107, 32, 70, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 73, 110, 118, 97, 108, 105, 100, 32, 114, 111, 116, 97, 116, 105, 111, 110, 32, 97, 110, 103, 108, 101, 0, 84, 88, 84, 0, 83, 86, 71, 0, 85, 110, 107, 110, 111, 119, 110, 32, 111, 117, 116, 112, 117, 116, 32, 102, 111, 114, 109, 97, 116, 0, 79, 85, 84, 61, 37, 115, 44, 32, 37, 115, 10, 0, 119, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 111, 112, 101, 110, 32, 111, 117, 116, 112, 117, 116, 32, 102, 105, 108, 101, 0, 77, 97, 108, 102, 111, 114, 109, 101, 100, 32, 102, 111, 114, 101, 103, 114, 111, 117, 110, 100, 32, 99, 111, 108, 111, 117, 114, 32, 116, 97, 114, 103, 101, 116, 0, 77, 97, 108, 102, 111, 114, 109, 101, 100, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 32, 99, 111, 108, 111, 117, 114, 32, 116, 97, 114, 103, 101, 116, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 0, 67, 0, 60, 115, 118, 103, 32, 119, 105, 100, 116, 104, 61, 34, 37, 100, 34, 32, 104, 101, 105, 103, 104, 116, 61, 34, 37, 100, 34, 32, 118, 101, 114, 115, 105, 111, 110, 61, 34, 49, 46, 49, 34, 10, 0, 32, 32, 32, 120, 109, 108, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 48, 47, 115, 118, 103, 34, 62, 10, 0, 32, 32, 32, 60, 100, 101, 115, 99, 62, 37, 115, 10, 0, 32, 32, 32, 60, 100, 101, 115, 99, 62, 90, 105, 110, 116, 32, 71, 101, 110, 101, 114, 97, 116, 101, 100, 32, 83, 121, 109, 98, 111, 108, 10, 0, 32, 32, 32, 60, 47, 100, 101, 115, 99, 62, 10, 0, 10, 32, 32, 32, 60, 103, 32, 105, 100, 61, 34, 98, 97, 114, 99, 111, 100, 101, 34, 32, 102, 105, 108, 108, 61, 34, 35, 37, 115, 34, 62, 10, 0, 32, 32, 32, 32, 32, 32, 60, 114, 101, 99, 116, 32, 120, 61, 34, 48, 34, 32, 121, 61, 34, 48, 34, 32, 119, 105, 100, 116, 104, 61, 34, 37, 100, 34, 32, 104, 101, 105, 103, 104, 116, 61, 34, 37, 100, 34, 32, 102, 105, 108, 108, 61, 34, 35, 37, 115, 34, 32, 47, 62, 10, 0, 32, 32, 32, 32, 32, 32, 60, 114, 101, 99, 116, 32, 120, 61, 34, 37, 46, 50, 102, 34, 32, 121, 61, 34, 37, 46, 50, 102, 34, 32, 119, 105, 100, 116, 104, 61, 34, 37, 46, 50, 102, 34, 32, 104, 101, 105, 103, 104, 116, 61, 34, 37, 46, 50, 102, 34, 32, 47, 62, 10, 0, 32, 32, 32, 32, 32, 32, 60, 99, 105, 114, 99, 108, 101, 32, 99, 120, 61, 34, 37, 46, 50, 102, 34, 32, 99, 121, 61, 34, 37, 46, 50, 102, 34, 32, 114, 61, 34, 37, 46, 50, 102, 34, 32, 102, 105, 108, 108, 61, 34, 35, 37, 115, 34, 32, 47, 62, 10, 0, 32, 32, 32, 32, 32, 32, 60, 112, 97, 116, 104, 32, 100, 61, 34, 77, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 76, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 76, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 76, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 76, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 76, 32, 37, 46, 50, 102, 32, 37, 46, 50, 102, 32, 90, 34, 32, 47, 62, 10, 0, 32, 32, 32, 32, 32, 32, 60, 116, 101, 120, 116, 32, 120, 61, 34, 37, 46, 50, 102, 34, 32, 121, 61, 34, 37, 46, 50, 102, 34, 32, 116, 101, 120, 116, 45, 97, 110, 99, 104, 111, 114, 61, 34, 109, 105, 100, 100, 108, 101, 34, 10, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 61, 34, 72, 101, 108, 118, 101, 116, 105, 99, 97, 34, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 61, 34, 37, 46, 49, 102, 34, 32, 102, 105, 108, 108, 61, 34, 35, 37, 115, 34, 32, 62, 10, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 37, 115, 10, 0, 32, 32, 32, 32, 32, 32, 60, 47, 116, 101, 120, 116, 62, 10, 0, 32, 32, 32, 60, 47, 103, 62, 10, 0, 60, 47, 115, 118, 103, 62, 10, 0, 116, 101, 115, 116, 95, 100, 117, 109, 109, 121, 46, 115, 118, 103, 0, 37, 115, 10, 0, 116, 101, 120, 116, 79, 117, 116, 32, 61, 32, 80, 111, 105, 110, 116, 101, 114, 95, 115, 116, 114, 105, 110, 103, 105, 102, 121, 40, 36, 48, 41, 0, 0, 0, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 58, 58, 99, 111, 112, 121, 32, 111, 118, 101, 114, 108, 97, 112, 112, 101, 100, 32, 114, 97, 110, 103, 101, 0, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 0, 49, 0, 48, 0, 43, 42, 0, 42, 0, 45, 0, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 42, 43, 45, 0, 83, 101, 99, 117, 114, 105, 116, 121, 32, 118, 97, 108, 117, 101, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 78, 117, 109, 98, 101, 114, 32, 111, 102, 32, 99, 111, 108, 117, 109, 110, 115, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 102, 105, 108, 101, 32, 117, 110, 114, 101, 97, 100, 97, 98, 108, 101, 0, 73, 110, 112, 117, 116, 32, 115, 116, 114, 105, 110, 103, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 78, 117, 109, 98, 101, 114, 32, 111, 102, 32, 99, 111, 100, 101, 119, 111, 114, 100, 115, 32, 112, 101, 114, 32, 114, 111, 119, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 0, 68, 97, 116, 97, 32, 116, 111, 111, 32, 108, 111, 110, 103, 32, 102, 111, 114, 32, 115, 112, 101, 99, 105, 102, 105, 101, 100, 32, 110, 117, 109, 98, 101, 114, 32, 111, 102, 32, 99, 111, 108, 117, 109, 110, 115, 0, 83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 115, 116, 114, 97, 110, 103, 101, 32, 104, 97, 112, 112, 101, 110, 101, 100, 0, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 49, 0, 48, 48, 48, 49, 48, 0, 48, 48, 48, 49, 49, 0, 48, 48, 49, 48, 48, 0, 48, 48, 49, 48, 49, 0, 48, 48, 49, 49, 48, 0, 48, 48, 49, 49, 49, 0, 48, 49, 48, 48, 48, 0, 48, 49, 48, 48, 49, 0, 48, 49, 48, 49, 48, 0, 48, 49, 48, 49, 49, 0, 48, 49, 49, 48, 48, 0, 48, 49, 49, 48, 49, 0, 48, 49, 49, 49, 48, 0, 48, 49, 49, 49, 49, 0, 49, 48, 48, 48, 48, 0, 49, 48, 48, 48, 49, 0, 49, 48, 48, 49, 48, 0, 49, 48, 48, 49, 49, 0, 49, 48, 49, 48, 48, 0, 49, 48, 49, 48, 49, 0, 49, 48, 49, 49, 48, 0, 49, 48, 49, 49, 49, 0, 49, 49, 48, 48, 48, 0, 49, 49, 48, 48, 49, 0, 49, 49, 48, 49, 48, 0, 49, 49, 48, 49, 49, 0, 49, 49, 49, 48, 48, 0, 49, 49, 49, 48, 49, 0, 49, 49, 49, 49, 48, 0, 49, 49, 49, 49, 49, 0, 48, 49, 0, 49, 49, 49, 49, 49, 49, 49, 49, 48, 49, 48, 49, 48, 49, 48, 48, 0, 49, 49, 49, 49, 49, 49, 48, 49, 48, 48, 48, 49, 48, 49, 48, 48, 49, 0, 117, 114, 65, 0, 120, 102, 115, 0, 121, 112, 121, 0, 117, 110, 107, 0, 120, 100, 119, 0, 121, 111, 122, 0, 112, 68, 65, 0, 117, 108, 115, 0, 112, 66, 107, 0, 101, 66, 65, 0, 112, 65, 115, 0, 101, 65, 107, 0, 112, 114, 65, 0, 117, 118, 115, 0, 120, 104, 121, 0, 112, 110, 107, 0, 117, 116, 119, 0, 120, 103, 122, 0, 102, 68, 65, 0, 112, 108, 115, 0, 102, 66, 107, 0, 102, 114, 65, 0, 112, 118, 115, 0, 117, 120, 121, 0, 102, 110, 107, 0, 112, 116, 119, 0, 117, 119, 122, 0, 102, 108, 115, 0, 112, 115, 121, 0, 102, 118, 115, 0, 112, 120, 121, 0, 102, 116, 119, 0, 112, 119, 122, 0, 102, 120, 121, 0, 121, 114, 120, 0, 117, 102, 107, 0, 120, 70, 119, 0, 121, 109, 122, 0, 111, 110, 65, 0, 117, 100, 115, 0, 120, 69, 121, 0, 111, 108, 107, 0, 117, 99, 119, 0, 100, 66, 65, 0, 111, 107, 115, 0, 117, 99, 105, 0, 100, 65, 107, 0, 111, 107, 103, 0, 100, 65, 99, 0, 111, 118, 107, 0, 117, 104, 119, 0, 120, 97, 122, 0, 100, 110, 65, 0, 111, 116, 115, 0, 117, 103, 121, 0, 100, 108, 107, 0, 111, 115, 119, 0, 117, 103, 106, 0, 100, 107, 115, 0, 111, 115, 105, 0, 100, 118, 107, 0, 111, 120, 119, 0, 117, 105, 122, 0, 100, 116, 115, 0, 111, 119, 121, 0, 100, 115, 119, 0, 111, 119, 106, 0, 100, 120, 119, 0, 111, 121, 122, 0, 100, 119, 121, 0, 100, 119, 106, 0, 111, 102, 65, 0, 117, 70, 115, 0, 120, 67, 121, 0, 111, 100, 107, 0, 117, 69, 119, 0, 120, 67, 106, 0, 99, 108, 65, 0, 111, 99, 115, 0, 117, 69, 105, 0, 99, 107, 107, 0, 111, 99, 103, 0, 99, 107, 99, 0, 99, 107, 69, 0, 99, 118, 65, 0, 111, 104, 115, 0, 117, 97, 121, 0, 99, 116, 107, 0, 111, 103, 119, 0, 117, 97, 106, 0, 99, 115, 115, 0, 111, 103, 105, 0, 99, 115, 103, 0, 99, 115, 97, 0, 99, 120, 115, 0, 111, 105, 121, 0, 99, 119, 119, 0, 111, 105, 106, 0, 99, 119, 105, 0, 99, 121, 121, 0, 111, 70, 107, 0, 117, 67, 119, 0, 120, 66, 106, 0, 99, 100, 65, 0, 111, 69, 115, 0, 117, 67, 105, 0, 99, 99, 107, 0, 111, 69, 103, 0, 117, 67, 98, 0, 99, 99, 99, 0, 111, 69, 97, 0, 99, 99, 69, 0, 111, 69, 68, 0, 99, 104, 107, 0, 111, 97, 119, 0, 117, 68, 106, 0, 99, 103, 115, 0, 111, 97, 105, 0, 99, 103, 103, 0, 111, 97, 98, 0, 99, 103, 97, 0, 99, 103, 68, 0, 111, 98, 106, 0, 99, 105, 98, 0, 99, 70, 65, 0, 111, 67, 115, 0, 117, 66, 105, 0, 99, 69, 107, 0, 111, 67, 103, 0, 117, 66, 98, 0, 99, 69, 99, 0, 111, 67, 97, 0, 99, 69, 69, 0, 111, 67, 68, 0, 99, 69, 67, 0, 99, 97, 115, 0, 99, 97, 103, 0, 99, 97, 97, 0, 99, 67, 107, 0, 117, 65, 114, 0, 111, 66, 97, 0, 111, 66, 68, 0, 99, 67, 66, 0, 116, 102, 107, 0, 119, 112, 119, 0, 121, 101, 122, 0, 109, 110, 65, 0, 116, 100, 115, 0, 119, 111, 121, 0, 109, 108, 107, 0, 116, 99, 119, 0, 119, 111, 106, 0, 70, 66, 65, 0, 109, 107, 115, 0, 70, 65, 107, 0, 109, 118, 107, 0, 116, 104, 119, 0, 119, 113, 122, 0, 70, 110, 65, 0, 109, 116, 115, 0, 116, 103, 121, 0, 70, 108, 107, 0, 109, 115, 119, 0, 70, 107, 115, 0, 70, 107, 103, 0, 70, 118, 107, 0, 109, 120, 119, 0, 116, 105, 122, 0, 70, 116, 115, 0, 109, 119, 121, 0, 70, 115, 119, 0, 70, 115, 105, 0, 70, 120, 119, 0, 109, 121, 122, 0, 70, 119, 121, 0, 70, 121, 122, 0, 118, 102, 65, 0, 120, 112, 115, 0, 121, 117, 121, 0, 118, 100, 107, 0, 120, 111, 119, 0, 121, 117, 106, 0, 113, 108, 65, 0, 118, 99, 115, 0, 120, 111, 105, 0, 113, 107, 107, 0, 118, 99, 103, 0, 120, 111, 98, 0, 113, 107, 99, 0, 118, 99, 97, 0, 109, 102, 65, 0, 116, 70, 115, 0, 119, 109, 121, 0, 113, 118, 65, 0, 109, 100, 107, 0, 116, 69, 119, 0, 119, 109, 106, 0, 113, 116, 107, 0, 118, 103, 119, 0, 120, 113, 106, 0, 104, 108, 65, 0, 69, 107, 107, 0, 109, 99, 103, 0, 116, 69, 98, 0, 104, 107, 107, 0, 113, 115, 103, 0, 104, 107, 99, 0, 69, 118, 65, 0, 109, 104, 115, 0, 116, 97, 121, 0, 104, 118, 65, 0, 69, 116, 107, 0, 109, 103, 119, 0, 116, 97, 106, 0, 104, 116, 107, 0, 113, 119, 119, 0, 118, 105, 106, 0, 104, 115, 115, 0, 69, 115, 103, 0, 104, 115, 103, 0, 69, 120, 115, 0, 109, 105, 121, 0, 104, 120, 115, 0, 69, 119, 119, 0, 109, 105, 106, 0, 104, 119, 119, 0, 113, 121, 106, 0, 104, 119, 105, 0, 69, 121, 121, 0, 104, 121, 121, 0, 69, 121, 106, 0, 104, 121, 106, 0, 118, 70, 107, 0, 120, 109, 119, 0, 121, 116, 106, 0, 113, 100, 65, 0, 118, 69, 115, 0, 120, 109, 105, 0, 113, 99, 107, 0, 118, 69, 103, 0, 120, 109, 98, 0, 113, 99, 99, 0, 118, 69, 97, 0, 113, 99, 69, 0, 113, 99, 67, 0, 109, 70, 107, 0, 116, 67, 119, 0, 119, 108, 106, 0, 113, 104, 107, 0, 109, 69, 115, 0, 116, 67, 105, 0, 103, 116, 65, 0, 69, 99, 107, 0, 118, 97, 105, 0, 116, 67, 98, 0, 103, 115, 107, 0, 69, 99, 99, 0, 109, 69, 97, 0, 103, 115, 99, 0, 113, 103, 97, 0, 109, 69, 68, 0, 69, 99, 67, 0, 69, 104, 107, 0, 109, 97, 119, 0, 116, 68, 106, 0, 103, 120, 107, 0, 69, 103, 115, 0, 109, 97, 105, 0, 103, 119, 115, 0, 113, 105, 105, 0, 109, 97, 98, 0, 103, 119, 103, 0, 69, 103, 97, 0, 69, 103, 68, 0, 69, 105, 119, 0, 109, 98, 106, 0, 103, 121, 119, 0, 69, 105, 105, 0, 103, 121, 105, 0, 69, 105, 98, 0, 103, 121, 98, 0, 103, 122, 106, 0, 113, 70, 65, 0, 118, 67, 115, 0, 120, 108, 105, 0, 113, 69, 107, 0, 118, 67, 103, 0, 120, 108, 98, 0, 113, 69, 99, 0, 118, 67, 97, 0, 113, 69, 69, 0, 118, 67, 68, 0, 113, 69, 67, 0, 113, 69, 66, 0, 69, 70, 65, 0, 109, 67, 115, 0, 116, 66, 105, 0, 103, 104, 65, 0, 69, 69, 107, 0, 109, 67, 103, 0, 116, 66, 98, 0, 103, 103, 107, 0, 113, 97, 103, 0, 118, 68, 98, 0, 103, 103, 99, 0, 69, 69, 69, 0, 109, 67, 68, 0, 103, 103, 69, 0, 113, 97, 68, 0, 103, 103, 67, 0, 69, 97, 115, 0, 109, 68, 105, 0, 103, 105, 115, 0, 69, 97, 103, 0, 109, 68, 98, 0, 103, 105, 103, 0, 113, 98, 98, 0, 103, 105, 97, 0, 69, 97, 68, 0, 103, 105, 68, 0, 103, 106, 105, 0, 103, 106, 98, 0, 113, 67, 107, 0, 118, 66, 103, 0, 120, 107, 114, 0, 113, 67, 99, 0, 118, 66, 97, 0, 113, 67, 69, 0, 118, 66, 68, 0, 113, 67, 67, 0, 113, 67, 66, 0, 69, 67, 107, 0, 109, 66, 103, 0, 116, 65, 114, 0, 103, 97, 107, 0, 69, 67, 99, 0, 109, 66, 97, 0, 103, 97, 99, 0, 113, 68, 97, 0, 109, 66, 68, 0, 103, 97, 69, 0, 69, 67, 67, 0, 103, 97, 67, 0, 69, 67, 66, 0, 69, 68, 103, 0, 103, 98, 103, 0, 103, 98, 97, 0, 103, 98, 68, 0, 118, 65, 113, 0, 118, 65, 110, 0, 113, 66, 66, 0, 109, 65, 113, 0, 69, 66, 69, 0, 103, 68, 69, 0, 103, 68, 67, 0, 103, 68, 66, 0, 108, 102, 65, 0, 115, 112, 115, 0, 119, 101, 121, 0, 108, 100, 107, 0, 115, 111, 119, 0, 67, 108, 65, 0, 108, 99, 115, 0, 115, 111, 105, 0, 67, 107, 107, 0, 108, 99, 103, 0, 67, 107, 99, 0, 67, 107, 69, 0, 67, 118, 65, 0, 108, 104, 115, 0, 115, 113, 121, 0, 67, 116, 107, 0, 108, 103, 119, 0, 115, 113, 106, 0, 67, 115, 115, 0, 108, 103, 105, 0, 67, 115, 103, 0, 67, 115, 97, 0, 67, 120, 115, 0, 108, 105, 121, 0, 67, 119, 119, 0, 108, 105, 106, 0, 67, 119, 105, 0, 67, 121, 121, 0, 67, 121, 106, 0, 116, 112, 107, 0, 119, 117, 119, 0, 121, 104, 106, 0, 110, 100, 65, 0, 116, 111, 115, 0, 119, 117, 105, 0, 110, 99, 107, 0, 116, 111, 103, 0, 119, 117, 98, 0, 110, 99, 99, 0, 116, 111, 97, 0, 110, 99, 69, 0, 116, 111, 68, 0, 108, 70, 107, 0, 115, 109, 119, 0, 119, 100, 106, 0, 110, 104, 107, 0, 108, 69, 115, 0, 115, 109, 105, 0, 97, 116, 65, 0, 67, 99, 107, 0, 116, 113, 105, 0, 115, 109, 98, 0, 97, 115, 107, 0, 110, 103, 103, 0, 108, 69, 97, 0, 97, 115, 99, 0, 67, 99, 69, 0, 97, 115, 69, 0, 67, 104, 107, 0, 108, 97, 119, 0, 115, 110, 106, 0, 97, 120, 107, 0, 67, 103, 115, 0, 116, 114, 106, 0, 97, 119, 115, 0, 110, 105, 105, 0, 108, 97, 98, 0, 97, 119, 103, 0, 67, 103, 97, 0, 97, 119, 97, 0, 67, 105, 119, 0, 108, 98, 106, 0, 97, 121, 119, 0, 67, 105, 105, 0, 97, 121, 105, 0, 67, 105, 98, 0, 67, 106, 106, 0, 97, 122, 106, 0, 118, 112, 65, 0, 120, 117, 115, 0, 121, 120, 105, 0, 118, 111, 107, 0, 120, 117, 103, 0, 121, 120, 98, 0, 118, 111, 99, 0, 120, 117, 97, 0, 118, 111, 69, 0, 120, 117, 68, 0, 118, 111, 67, 0, 110, 70, 65, 0, 116, 109, 115, 0, 119, 116, 105, 0, 114, 104, 65, 0, 110, 69, 107, 0, 120, 118, 105, 0, 119, 116, 98, 0, 114, 103, 107, 0, 118, 113, 103, 0, 120, 118, 98, 0, 114, 103, 99, 0, 110, 69, 69, 0, 116, 109, 68, 0, 114, 103, 69, 0, 118, 113, 68, 0, 110, 69, 66, 0, 67, 70, 65, 0, 108, 67, 115, 0, 115, 108, 105, 0, 97, 104, 65, 0, 67, 69, 107, 0, 108, 67, 103, 0, 115, 108, 98, 0, 105, 120, 65, 0, 97, 103, 107, 0, 110, 97, 103, 0, 116, 110, 98, 0, 105, 119, 107, 0, 114, 105, 103, 0, 118, 114, 98, 0, 108, 67, 68, 0, 105, 119, 99, 0, 97, 103, 69, 0, 110, 97, 68, 0, 105, 119, 69, 0, 67, 69, 66, 0, 67, 97, 115, 0, 108, 68, 105, 0, 97, 105, 115, 0, 67, 97, 103, 0, 108, 68, 98, 0, 105, 121, 115, 0, 97, 105, 103, 0, 110, 98, 98, 0, 105, 121, 103, 0, 114, 106, 98, 0, 67, 97, 68, 0, 97, 105, 68, 0, 67, 98, 105, 0, 97, 106, 105, 0, 67, 98, 98, 0, 105, 122, 105, 0, 97, 106, 98, 0, 118, 109, 107, 0, 120, 116, 103, 0, 121, 119, 114, 0, 118, 109, 99, 0, 120, 116, 97, 0, 118, 109, 69, 0, 120, 116, 68, 0, 118, 109, 67, 0, 118, 109, 66, 0, 110, 67, 107, 0, 116, 108, 103, 0, 119, 115, 114, 0, 114, 97, 107, 0, 110, 67, 99, 0, 120, 116, 114, 0, 114, 97, 99, 0, 118, 110, 97, 0, 116, 108, 68, 0, 114, 97, 69, 0, 110, 67, 67, 0, 114, 97, 67, 0, 110, 67, 66, 0, 114, 97, 66, 0, 67, 67, 107, 0, 108, 66, 103, 0, 115, 107, 114, 0, 97, 97, 107, 0, 67, 67, 99, 0, 108, 66, 97, 0, 105, 105, 107, 0, 97, 97, 99, 0, 110, 68, 97, 0, 108, 66, 68, 0, 105, 105, 99, 0, 114, 98, 97, 0, 67, 67, 67, 0, 105, 105, 69, 0, 97, 97, 67, 0, 67, 67, 66, 0, 97, 97, 66, 0, 67, 68, 103, 0, 108, 66, 114, 0, 97, 98, 103, 0, 67, 68, 97, 0, 105, 106, 103, 0, 97, 98, 97, 0, 67, 68, 68, 0, 105, 106, 97, 0, 97, 98, 68, 0, 67, 68, 114, 0, 105, 106, 114, 0, 118, 108, 99, 0, 120, 115, 113, 0, 118, 108, 69, 0, 120, 115, 110, 0, 118, 108, 67, 0, 118, 108, 66, 0, 110, 66, 99, 0, 116, 107, 113, 0, 114, 68, 99, 0, 110, 66, 69, 0, 116, 107, 110, 0, 114, 68, 69, 0, 118, 108, 110, 0, 114, 68, 67, 0, 110, 66, 66, 0, 114, 68, 66, 0, 67, 66, 99, 0, 108, 65, 113, 0, 97, 68, 99, 0, 67, 66, 69, 0, 108, 65, 110, 0, 105, 98, 99, 0, 97, 68, 69, 0, 110, 66, 110, 0, 105, 98, 69, 0, 114, 68, 110, 0, 67, 66, 66, 0, 105, 98, 67, 0, 97, 68, 66, 0, 105, 98, 66, 0, 97, 68, 113, 0, 105, 98, 113, 0, 105, 98, 110, 0, 120, 115, 102, 0, 118, 107, 108, 0, 116, 107, 102, 0, 110, 65, 109, 0, 110, 65, 108, 0, 67, 65, 111, 0, 97, 66, 111, 0, 105, 68, 111, 0, 67, 65, 108, 0, 97, 66, 108, 0, 107, 112, 107, 0, 66, 100, 65, 0, 107, 111, 115, 0, 66, 99, 107, 0, 107, 111, 103, 0, 115, 101, 98, 0, 66, 99, 99, 0, 107, 111, 97, 0, 66, 99, 69, 0, 107, 111, 68, 0, 66, 104, 107, 0, 107, 113, 119, 0, 115, 102, 106, 0, 66, 103, 115, 0, 107, 113, 105, 0, 66, 103, 103, 0, 107, 113, 98, 0, 66, 103, 97, 0, 66, 103, 68, 0, 66, 105, 119, 0, 107, 114, 106, 0, 66, 105, 105, 0, 66, 105, 98, 0, 66, 106, 106, 0, 108, 112, 65, 0, 115, 117, 115, 0, 119, 104, 105, 0, 108, 111, 107, 0, 115, 117, 103, 0, 108, 111, 99, 0, 115, 117, 97, 0, 108, 111, 69, 0, 115, 117, 68, 0, 108, 111, 67, 0, 66, 70, 65, 0, 107, 109, 115, 0, 115, 100, 105, 0, 68, 104, 65, 0, 66, 69, 107, 0, 115, 118, 105, 0, 115, 100, 98, 0, 68, 103, 107, 0, 108, 113, 103, 0, 115, 118, 98, 0, 68, 103, 99, 0, 66, 69, 69, 0, 107, 109, 68, 0, 68, 103, 69, 0, 108, 113, 68, 0, 66, 69, 66, 0, 66, 97, 115, 0, 107, 110, 105, 0, 68, 105, 115, 0, 66, 97, 103, 0, 107, 110, 98, 0, 68, 105, 103, 0, 108, 114, 98, 0, 68, 105, 97, 0, 66, 97, 68, 0, 66, 98, 105, 0, 68, 106, 105, 0, 66, 98, 98, 0, 68, 106, 98, 0, 116, 117, 107, 0, 119, 120, 103, 0, 121, 105, 114, 0, 116, 117, 99, 0, 119, 120, 97, 0, 116, 117, 69, 0, 119, 120, 68, 0, 116, 117, 67, 0, 116, 117, 66, 0, 108, 109, 107, 0, 115, 116, 103, 0, 110, 113, 107, 0, 108, 109, 99, 0, 115, 116, 97, 0, 110, 113, 99, 0, 116, 118, 97, 0, 115, 116, 68, 0, 110, 113, 69, 0, 108, 109, 67, 0, 110, 113, 67, 0, 108, 109, 66, 0, 110, 113, 66, 0, 66, 67, 107, 0, 107, 108, 103, 0, 68, 97, 107, 0, 66, 67, 99, 0, 115, 116, 114, 0, 98, 105, 107, 0, 68, 97, 99, 0, 108, 110, 97, 0, 107, 108, 68, 0, 98, 105, 99, 0, 110, 114, 97, 0, 66, 67, 67, 0, 98, 105, 69, 0, 68, 97, 67, 0, 66, 67, 66, 0, 68, 97, 66, 0, 66, 68, 103, 0, 107, 108, 114, 0, 68, 98, 103, 0, 66, 68, 97, 0, 98, 106, 103, 0, 68, 98, 97, 0, 66, 68, 68, 0, 98, 106, 97, 0, 68, 98, 68, 0, 66, 68, 114, 0, 68, 98, 114, 0, 98, 106, 114, 0, 120, 120, 99, 0, 121, 121, 113, 0, 120, 120, 69, 0, 121, 121, 110, 0, 120, 120, 67, 0, 120, 120, 66, 0, 116, 116, 99, 0, 119, 119, 113, 0, 118, 118, 99, 0, 120, 120, 113, 0, 119, 119, 110, 0, 118, 118, 69, 0, 120, 120, 110, 0, 118, 118, 67, 0, 116, 116, 66, 0, 118, 118, 66, 0, 108, 108, 99, 0, 115, 115, 113, 0, 110, 110, 99, 0, 108, 108, 69, 0, 115, 115, 110, 0, 114, 114, 99, 0, 110, 110, 69, 0, 116, 116, 110, 0, 114, 114, 69, 0, 118, 118, 110, 0, 108, 108, 66, 0, 114, 114, 67, 0, 110, 110, 66, 0, 114, 114, 66, 0, 66, 66, 99, 0, 107, 107, 113, 0, 68, 68, 99, 0, 66, 66, 69, 0, 107, 107, 110, 0, 98, 98, 99, 0, 68, 68, 69, 0, 108, 108, 110, 0, 106, 106, 99, 0, 98, 98, 69, 0, 110, 110, 110, 0, 66, 66, 66, 0, 106, 106, 69, 0, 114, 114, 110, 0, 68, 68, 66, 0, 106, 106, 67, 0, 66, 66, 113, 0, 68, 68, 113, 0, 66, 66, 110, 0, 98, 98, 113, 0, 68, 68, 110, 0, 106, 106, 113, 0, 98, 98, 110, 0, 106, 106, 110, 0, 120, 119, 111, 0, 121, 121, 102, 0, 120, 119, 109, 0, 120, 119, 108, 0, 116, 115, 111, 0, 119, 119, 102, 0, 118, 116, 111, 0, 120, 119, 118, 0, 118, 116, 109, 0, 116, 115, 108, 0, 118, 116, 108, 0, 108, 107, 111, 0, 115, 115, 102, 0, 110, 108, 111, 0, 108, 107, 109, 0, 114, 110, 111, 0, 110, 108, 109, 0, 108, 107, 108, 0, 114, 110, 109, 0, 110, 108, 108, 0, 114, 110, 108, 0, 66, 65, 111, 0, 107, 107, 102, 0, 68, 66, 111, 0, 108, 107, 118, 0, 98, 68, 111, 0, 68, 66, 109, 0, 66, 65, 108, 0, 106, 98, 111, 0, 98, 68, 109, 0, 68, 66, 108, 0, 106, 98, 109, 0, 98, 68, 108, 0, 106, 98, 108, 0, 68, 66, 118, 0, 106, 98, 118, 0, 120, 119, 100, 0, 118, 115, 117, 0, 118, 115, 116, 0, 110, 107, 117, 0, 114, 108, 117, 0, 114, 108, 116, 0, 68, 65, 117, 0, 98, 66, 117, 0, 106, 68, 117, 0, 106, 68, 116, 0, 65, 112, 65, 0, 65, 111, 107, 0, 107, 101, 103, 0, 65, 111, 99, 0, 65, 111, 69, 0, 65, 111, 67, 0, 65, 113, 115, 0, 65, 113, 103, 0, 65, 113, 97, 0, 65, 113, 68, 0, 65, 114, 105, 0, 65, 114, 98, 0, 107, 117, 107, 0, 107, 117, 99, 0, 115, 104, 97, 0, 107, 117, 69, 0, 115, 104, 68, 0, 107, 117, 67, 0, 107, 117, 66, 0, 65, 109, 107, 0, 107, 100, 103, 0, 66, 113, 107, 0, 107, 118, 103, 0, 107, 100, 97, 0, 66, 113, 99, 0, 107, 118, 97, 0, 66, 113, 69, 0, 107, 118, 68, 0, 66, 113, 67, 0, 65, 109, 66, 0, 66, 113, 66, 0, 65, 110, 103, 0, 107, 100, 114, 0, 66, 114, 103, 0, 107, 118, 114, 0, 66, 114, 97, 0, 65, 110, 68, 0, 66, 114, 68, 0, 65, 110, 114, 0, 66, 114, 114, 0, 115, 120, 99, 0, 115, 120, 69, 0, 115, 120, 67, 0, 115, 120, 66, 0, 107, 116, 99, 0, 108, 118, 99, 0, 115, 120, 113, 0, 115, 103, 110, 0, 108, 118, 69, 0, 115, 120, 110, 0, 108, 118, 67, 0, 107, 116, 66, 0, 108, 118, 66, 0, 65, 108, 99, 0, 66, 110, 99, 0, 65, 108, 69, 0, 107, 99, 110, 0, 68, 114, 99, 0, 66, 110, 69, 0, 65, 108, 67, 0, 68, 114, 69, 0, 66, 110, 67, 0, 65, 108, 66, 0, 68, 114, 67, 0, 66, 110, 66, 0, 65, 108, 113, 0, 66, 110, 113, 0, 65, 108, 110, 0, 68, 114, 113, 0, 66, 110, 110, 0, 68, 114, 110, 0, 119, 121, 111, 0, 119, 121, 109, 0, 119, 121, 108, 0, 115, 119, 111, 0, 116, 120, 111, 0, 119, 121, 118, 0, 116, 120, 109, 0, 115, 119, 108, 0, 116, 120, 108, 0, 107, 115, 111, 0, 115, 103, 102, 0, 108, 116, 111, 0, 115, 119, 118, 0, 110, 118, 111, 0, 108, 116, 109, 0, 107, 115, 108, 0, 110, 118, 109, 0, 108, 116, 108, 0, 110, 118, 108, 0, 65, 107, 111, 0, 107, 99, 102, 0, 66, 108, 111, 0, 107, 115, 118, 0, 68, 110, 111, 0, 66, 108, 109, 0, 65, 107, 108, 0, 98, 114, 111, 0, 68, 110, 109, 0, 66, 108, 108, 0, 98, 114, 109, 0, 68, 110, 108, 0, 65, 107, 118, 0, 66, 108, 118, 0, 68, 110, 118, 0, 98, 114, 118, 0, 121, 122, 101, 0, 121, 122, 100, 0, 119, 121, 101, 0, 120, 121, 117, 0, 119, 121, 100, 0, 120, 121, 116, 0, 115, 119, 101, 0, 116, 119, 117, 0, 115, 119, 100, 0, 118, 120, 117, 0, 116, 119, 116, 0, 118, 120, 116, 0, 107, 115, 101, 0, 108, 115, 117, 0, 107, 115, 100, 0, 110, 116, 117, 0, 108, 115, 116, 0, 114, 118, 117, 0, 121, 112, 107, 0, 122, 101, 119, 0, 120, 100, 65, 0, 121, 111, 115, 0, 122, 101, 105, 0, 120, 99, 107, 0, 121, 111, 103, 0, 122, 101, 98, 0, 120, 99, 99, 0, 121, 111, 97, 0, 120, 99, 69, 0, 121, 111, 68, 0, 120, 99, 67, 0, 120, 104, 107, 0, 121, 113, 119, 0, 122, 102, 106, 0, 117, 116, 65, 0, 120, 103, 115, 0, 121, 113, 105, 0, 117, 115, 107, 0, 120, 103, 103, 0, 121, 113, 98, 0, 117, 115, 99, 0, 120, 103, 97, 0, 117, 115, 69, 0, 120, 103, 68, 0, 117, 115, 67, 0, 117, 120, 107, 0, 120, 105, 119, 0, 121, 114, 106, 0, 112, 116, 65, 0, 117, 119, 115, 0, 120, 105, 105, 0, 112, 115, 107, 0, 117, 119, 103, 0, 120, 105, 98, 0, 112, 115, 99, 0, 117, 119, 97, 0, 112, 115, 69, 0, 117, 119, 68, 0, 112, 115, 67, 0, 112, 120, 107, 0, 117, 121, 119, 0, 120, 106, 106, 0, 102, 116, 65, 0, 112, 119, 115, 0, 117, 121, 105, 0, 102, 115, 107, 0, 112, 119, 103, 0, 117, 121, 98, 0, 102, 115, 99, 0, 112, 119, 97, 0, 102, 115, 69, 0, 112, 119, 68, 0, 102, 120, 107, 0, 112, 121, 119, 0, 117, 122, 106, 0, 102, 119, 115, 0, 112, 121, 105, 0, 102, 119, 103, 0, 112, 121, 98, 0, 102, 119, 97, 0, 102, 121, 119, 0, 112, 122, 106, 0, 102, 121, 105, 0, 102, 121, 98, 0, 120, 70, 65, 0, 121, 109, 115, 0, 122, 100, 105, 0, 120, 69, 107, 0, 121, 109, 103, 0, 122, 100, 98, 0, 120, 69, 99, 0, 121, 109, 97, 0, 120, 69, 69, 0, 121, 109, 68, 0, 120, 69, 67, 0, 120, 69, 66, 0, 117, 104, 65, 0, 120, 97, 115, 0, 121, 110, 105, 0, 117, 103, 107, 0, 120, 97, 103, 0, 121, 110, 98, 0, 117, 103, 99, 0, 120, 97, 97, 0, 117, 103, 69, 0, 120, 97, 68, 0, 117, 103, 67, 0, 117, 103, 66, 0, 111, 120, 65, 0, 117, 105, 115, 0, 120, 98, 105, 0, 111, 119, 107, 0, 117, 105, 103, 0, 120, 98, 98, 0, 111, 119, 99, 0, 117, 105, 97, 0, 111, 119, 69, 0, 117, 105, 68, 0, 111, 119, 67, 0, 111, 119, 66, 0, 100, 120, 65, 0, 111, 121, 115, 0, 117, 106, 105, 0, 100, 119, 107, 0, 111, 121, 103, 0, 117, 106, 98, 0, 100, 119, 99, 0, 111, 121, 97, 0, 100, 119, 69, 0, 111, 121, 68, 0, 100, 119, 67, 0, 100, 121, 115, 0, 111, 122, 105, 0, 100, 121, 103, 0, 111, 122, 98, 0, 100, 121, 97, 0, 100, 121, 68, 0, 100, 122, 105, 0, 100, 122, 98, 0, 120, 67, 107, 0, 121, 108, 103, 0, 122, 99, 114, 0, 120, 67, 99, 0, 121, 108, 97, 0, 120, 67, 69, 0, 121, 108, 68, 0, 120, 67, 67, 0, 120, 67, 66, 0, 117, 97, 107, 0, 120, 68, 103, 0, 121, 108, 114, 0, 117, 97, 99, 0, 120, 68, 97, 0, 117, 97, 69, 0, 120, 68, 68, 0, 117, 97, 67, 0, 117, 97, 66, 0, 111, 105, 107, 0, 117, 98, 103, 0, 120, 68, 114, 0, 111, 105, 99, 0, 117, 98, 97, 0, 111, 105, 69, 0, 117, 98, 68, 0, 111, 105, 67, 0, 111, 105, 66, 0, 99, 121, 107, 0, 111, 106, 103, 0, 117, 98, 114, 0, 99, 121, 99, 0, 111, 106, 97, 0, 99, 121, 69, 0, 111, 106, 68, 0, 99, 121, 67, 0, 99, 121, 66, 0, 99, 122, 103, 0, 111, 106, 114, 0, 99, 122, 97, 0, 99, 122, 68, 0, 99, 122, 114, 0, 120, 66, 99, 0, 121, 107, 113, 0, 120, 66, 69, 0, 121, 107, 110, 0, 120, 66, 67, 0, 120, 66, 66, 0, 117, 68, 99, 0, 120, 66, 113, 0, 117, 68, 69, 0, 120, 66, 110, 0, 117, 68, 67, 0, 117, 68, 66, 0, 111, 98, 99, 0, 117, 68, 113, 0, 111, 98, 69, 0, 117, 68, 110, 0, 111, 98, 67, 0, 111, 98, 66, 0, 99, 106, 99, 0, 111, 98, 113, 0, 99, 106, 69, 0, 111, 98, 110, 0, 99, 106, 67, 0, 99, 106, 66, 0, 99, 106, 113, 0, 99, 106, 110, 0, 120, 65, 111, 0, 121, 107, 102, 0, 120, 65, 109, 0, 120, 65, 108, 0, 117, 66, 111, 0, 120, 65, 118, 0, 117, 66, 109, 0, 117, 66, 108, 0, 111, 68, 111, 0, 117, 66, 118, 0, 111, 68, 109, 0, 111, 68, 108, 0, 99, 98, 111, 0, 111, 68, 118, 0, 99, 98, 109, 0, 99, 98, 108, 0, 120, 65, 101, 0, 120, 65, 100, 0, 117, 65, 117, 0, 117, 65, 116, 0, 111, 66, 117, 0, 111, 66, 116, 0, 119, 112, 65, 0, 121, 101, 115, 0, 122, 70, 105, 0, 119, 111, 107, 0, 121, 101, 103, 0, 122, 70, 98, 0, 119, 111, 99, 0, 121, 101, 97, 0, 119, 111, 69, 0, 121, 101, 68, 0, 119, 111, 67, 0, 119, 111, 66, 0, 116, 104, 65, 0, 119, 113, 115, 0, 121, 102, 105, 0, 116, 103, 107, 0, 119, 113, 103, 0, 121, 102, 98, 0, 116, 103, 99, 0, 119, 113, 97, 0, 116, 103, 69, 0, 119, 113, 68, 0, 116, 103, 67, 0, 116, 103, 66, 0, 109, 120, 65, 0, 116, 105, 115, 0, 119, 114, 105, 0, 109, 119, 107, 0, 116, 105, 103, 0, 119, 114, 98, 0, 109, 119, 99, 0, 116, 105, 97, 0, 109, 119, 69, 0, 116, 105, 68, 0, 109, 119, 67, 0, 109, 119, 66, 0, 70, 120, 65, 0, 109, 121, 115, 0, 116, 106, 105, 0, 70, 119, 107, 0, 109, 121, 103, 0, 116, 106, 98, 0, 70, 119, 99, 0, 109, 121, 97, 0, 70, 119, 69, 0, 109, 121, 68, 0, 70, 119, 67, 0, 70, 121, 115, 0, 109, 122, 105, 0, 70, 121, 103, 0, 109, 122, 98, 0, 70, 121, 97, 0, 70, 121, 68, 0, 70, 122, 105, 0, 70, 122, 98, 0, 121, 117, 107, 0, 122, 104, 103, 0, 104, 106, 115, 0, 121, 117, 99, 0, 122, 104, 97, 0, 104, 98, 119, 0, 121, 117, 69, 0, 122, 104, 68, 0, 104, 68, 121, 0, 121, 117, 67, 0, 121, 117, 66, 0, 119, 109, 107, 0, 121, 100, 103, 0, 122, 69, 114, 0, 120, 113, 107, 0, 119, 109, 99, 0, 122, 104, 114, 0, 120, 113, 99, 0, 121, 118, 97, 0, 121, 100, 68, 0, 120, 113, 69, 0, 119, 109, 67, 0, 120, 113, 67, 0, 119, 109, 66, 0, 120, 113, 66, 0, 116, 97, 107, 0, 119, 110, 103, 0, 121, 100, 114, 0, 118, 105, 107, 0, 116, 97, 99, 0, 119, 110, 97, 0, 118, 105, 99, 0, 120, 114, 97, 0, 119, 110, 68, 0, 118, 105, 69, 0, 116, 97, 67, 0, 118, 105, 67, 0, 116, 97, 66, 0, 118, 105, 66, 0, 109, 105, 107, 0, 116, 98, 103, 0, 119, 110, 114, 0, 113, 121, 107, 0, 109, 105, 99, 0, 116, 98, 97, 0, 113, 121, 99, 0, 118, 106, 97, 0, 116, 98, 68, 0, 113, 121, 69, 0, 109, 105, 67, 0, 113, 121, 67, 0, 109, 105, 66, 0, 113, 121, 66, 0, 69, 121, 107, 0, 109, 106, 103, 0, 116, 98, 114, 0, 104, 121, 107, 0, 69, 121, 99, 0, 109, 106, 97, 0, 104, 121, 99, 0, 113, 122, 97, 0, 109, 106, 68, 0, 104, 121, 69, 0, 69, 121, 67, 0, 104, 121, 67, 0, 69, 121, 66, 0, 69, 122, 103, 0, 109, 106, 114, 0, 104, 122, 103, 0, 69, 122, 97, 0, 104, 122, 97, 0, 69, 122, 68, 0, 104, 122, 68, 0, 69, 122, 114, 0, 121, 116, 99, 0, 122, 103, 113, 0, 103, 114, 119, 0, 121, 116, 69, 0, 122, 103, 110, 0, 103, 110, 121, 0, 121, 116, 67, 0, 103, 108, 122, 0, 121, 116, 66, 0, 119, 108, 99, 0, 121, 99, 113, 0, 120, 110, 99, 0, 119, 108, 69, 0, 121, 99, 110, 0, 120, 110, 69, 0, 121, 116, 110, 0, 120, 110, 67, 0, 119, 108, 66, 0, 120, 110, 66, 0, 116, 68, 99, 0, 119, 108, 113, 0, 118, 98, 99, 0, 116, 68, 69, 0, 119, 108, 110, 0, 118, 98, 69, 0, 120, 110, 110, 0, 118, 98, 67, 0, 116, 68, 66, 0, 118, 98, 66, 0, 109, 98, 99, 0, 116, 68, 113, 0, 113, 106, 99, 0, 109, 98, 69, 0, 116, 68, 110, 0, 113, 106, 69, 0, 118, 98, 110, 0, 113, 106, 67, 0, 109, 98, 66, 0, 113, 106, 66, 0, 69, 106, 99, 0, 109, 98, 113, 0, 103, 122, 99, 0, 69, 106, 69, 0, 109, 98, 110, 0, 103, 122, 69, 0, 113, 106, 110, 0, 103, 122, 67, 0, 69, 106, 66, 0, 103, 122, 66, 0, 69, 106, 113, 0, 103, 122, 113, 0, 69, 106, 110, 0, 103, 122, 110, 0, 121, 115, 111, 0, 122, 103, 102, 0, 103, 102, 121, 0, 121, 115, 109, 0, 103, 100, 122, 0, 121, 115, 108, 0, 119, 107, 111, 0, 121, 99, 102, 0, 120, 108, 111, 0, 121, 115, 118, 0, 120, 108, 109, 0, 119, 107, 108, 0, 120, 108, 108, 0, 116, 66, 111, 0, 119, 107, 118, 0, 118, 68, 111, 0, 116, 66, 109, 0, 118, 68, 109, 0, 116, 66, 108, 0, 118, 68, 108, 0, 109, 68, 111, 0, 116, 66, 118, 0, 113, 98, 111, 0, 118, 68, 118, 0, 113, 98, 109, 0, 109, 68, 108, 0, 113, 98, 108, 0, 69, 98, 111, 0, 109, 68, 118, 0, 103, 106, 111, 0, 69, 98, 109, 0, 103, 106, 109, 0, 69, 98, 108, 0, 103, 106, 108, 0, 69, 98, 118, 0, 103, 106, 118, 0, 121, 115, 101, 0, 103, 70, 122, 0, 121, 115, 100, 0, 119, 107, 101, 0, 120, 107, 117, 0, 119, 107, 100, 0, 120, 107, 116, 0, 116, 65, 117, 0, 118, 66, 117, 0, 116, 65, 116, 0, 118, 66, 116, 0, 109, 66, 117, 0, 113, 68, 117, 0, 109, 66, 116, 0, 113, 68, 116, 0, 69, 68, 117, 0, 103, 98, 117, 0, 69, 68, 116, 0, 103, 98, 116, 0, 121, 115, 70, 0, 119, 107, 70, 0, 120, 107, 104, 0, 116, 65, 104, 0, 118, 65, 120, 0, 109, 65, 120, 0, 113, 66, 120, 0, 119, 101, 107, 0, 121, 70, 103, 0, 122, 67, 114, 0, 119, 101, 99, 0, 121, 70, 97, 0, 119, 101, 69, 0, 121, 70, 68, 0, 119, 101, 67, 0, 119, 101, 66, 0, 115, 113, 107, 0, 119, 102, 103, 0, 121, 70, 114, 0, 115, 113, 99, 0, 119, 102, 97, 0, 115, 113, 69, 0, 119, 102, 68, 0, 115, 113, 67, 0, 115, 113, 66, 0, 108, 105, 107, 0, 115, 114, 103, 0, 119, 102, 114, 0, 108, 105, 99, 0, 115, 114, 97, 0, 108, 105, 69, 0, 115, 114, 68, 0, 108, 105, 67, 0, 108, 105, 66, 0, 67, 121, 107, 0, 108, 106, 103, 0, 115, 114, 114, 0, 67, 121, 99, 0, 108, 106, 97, 0, 67, 121, 69, 0, 108, 106, 68, 0, 67, 121, 67, 0, 67, 121, 66, 0, 67, 122, 103, 0, 108, 106, 114, 0, 67, 122, 97, 0, 67, 122, 68, 0, 67, 122, 114, 0, 121, 104, 99, 0, 122, 97, 113, 0, 97, 114, 119, 0, 121, 104, 69, 0, 122, 97, 110, 0, 97, 110, 121, 0, 121, 104, 67, 0, 97, 108, 122, 0, 121, 104, 66, 0, 119, 100, 99, 0, 121, 69, 113, 0, 119, 118, 99, 0, 119, 100, 69, 0, 121, 69, 110, 0, 119, 118, 69, 0, 121, 104, 110, 0, 119, 118, 67, 0, 119, 100, 66, 0, 119, 118, 66, 0, 115, 110, 99, 0, 119, 100, 113, 0, 116, 114, 99, 0, 115, 110, 69, 0, 119, 100, 110, 0, 116, 114, 69, 0, 119, 118, 110, 0, 116, 114, 67, 0, 115, 110, 66, 0, 116, 114, 66, 0, 108, 98, 99, 0, 115, 110, 113, 0, 110, 106, 99, 0, 108, 98, 69, 0, 115, 110, 110, 0, 110, 106, 69, 0, 116, 114, 110, 0, 110, 106, 67, 0, 108, 98, 66, 0, 110, 106, 66, 0, 67, 106, 99, 0, 108, 98, 113, 0, 97, 122, 99, 0, 67, 106, 69, 0, 108, 98, 110, 0, 97, 122, 69, 0, 110, 106, 110, 0, 97, 122, 67, 0, 67, 106, 66, 0, 97, 122, 66, 0, 67, 106, 113, 0, 97, 122, 113, 0, 67, 106, 110, 0, 97, 122, 110, 0, 122, 105, 111, 0, 105, 114, 115, 0, 114, 102, 121, 0, 122, 105, 109, 0, 105, 110, 119, 0, 114, 100, 122, 0, 122, 105, 108, 0, 105, 108, 121, 0, 105, 107, 122, 0, 121, 103, 111, 0, 122, 97, 102, 0, 97, 102, 121, 0, 121, 120, 111, 0, 122, 105, 118, 0, 105, 118, 121, 0, 97, 100, 122, 0, 121, 120, 109, 0, 121, 103, 108, 0, 105, 116, 122, 0, 121, 120, 108, 0, 119, 99, 111, 0, 121, 69, 102, 0, 119, 116, 111, 0, 119, 99, 109, 0, 120, 118, 111, 0, 121, 120, 118, 0, 119, 99, 108, 0, 120, 118, 109, 0, 119, 116, 108, 0, 120, 118, 108, 0, 115, 108, 111, 0, 119, 99, 118, 0, 116, 110, 111, 0, 115, 108, 109, 0, 118, 114, 111, 0, 116, 110, 109, 0, 115, 108, 108, 0, 118, 114, 109, 0, 116, 110, 108, 0, 118, 114, 108, 0, 108, 68, 111, 0, 115, 108, 118, 0, 110, 98, 111, 0, 108, 68, 109, 0, 114, 106, 111, 0, 110, 98, 109, 0, 108, 68, 108, 0, 114, 106, 109, 0, 110, 98, 108, 0, 114, 106, 108, 0, 67, 98, 111, 0, 108, 68, 118, 0, 97, 106, 111, 0, 67, 98, 109, 0, 105, 122, 111, 0, 97, 106, 109, 0, 67, 98, 108, 0, 105, 122, 109, 0, 97, 106, 108, 0, 105, 122, 108, 0, 67, 98, 118, 0, 97, 106, 118, 0, 122, 105, 101, 0, 105, 102, 119, 0, 114, 70, 122, 0, 122, 105, 100, 0, 105, 100, 121, 0, 105, 99, 122, 0, 121, 103, 101, 0, 97, 70, 122, 0, 121, 119, 117, 0, 121, 103, 100, 0, 105, 104, 122, 0, 121, 119, 116, 0, 119, 99, 101, 0, 119, 115, 117, 0, 119, 99, 100, 0, 120, 116, 117, 0, 119, 115, 116, 0, 120, 116, 116, 0, 115, 107, 117, 0, 116, 108, 117, 0, 115, 107, 116, 0, 118, 110, 117, 0, 116, 108, 116, 0, 118, 110, 116, 0, 108, 66, 117, 0, 110, 68, 117, 0, 108, 66, 116, 0, 114, 98, 117, 0, 110, 68, 116, 0, 114, 98, 116, 0, 67, 68, 117, 0, 97, 98, 117, 0, 67, 68, 116, 0, 105, 106, 117, 0, 97, 98, 116, 0, 105, 106, 116, 0, 122, 105, 70, 0, 105, 70, 121, 0, 105, 69, 122, 0, 121, 103, 70, 0, 121, 119, 104, 0, 119, 99, 70, 0, 119, 115, 104, 0, 120, 115, 120, 0, 115, 107, 104, 0, 116, 107, 120, 0, 118, 108, 120, 0, 108, 65, 120, 0, 110, 66, 120, 0, 114, 68, 120, 0, 67, 66, 120, 0, 97, 68, 120, 0, 105, 98, 120, 0, 105, 67, 122, 0, 119, 70, 99, 0, 121, 67, 113, 0, 119, 70, 69, 0, 121, 67, 110, 0, 119, 70, 67, 0, 119, 70, 66, 0, 115, 102, 99, 0, 119, 70, 113, 0, 115, 102, 69, 0, 119, 70, 110, 0, 115, 102, 67, 0, 115, 102, 66, 0, 107, 114, 99, 0, 115, 102, 113, 0, 107, 114, 69, 0, 115, 102, 110, 0, 107, 114, 67, 0, 107, 114, 66, 0, 66, 106, 99, 0, 107, 114, 113, 0, 66, 106, 69, 0, 107, 114, 110, 0, 66, 106, 67, 0, 66, 106, 66, 0, 66, 106, 113, 0, 66, 106, 110, 0, 121, 97, 111, 0, 122, 68, 102, 0, 68, 102, 121, 0, 121, 97, 109, 0, 68, 100, 122, 0, 121, 97, 108, 0, 119, 69, 111, 0, 121, 67, 102, 0, 119, 104, 111, 0, 119, 69, 109, 0, 119, 104, 109, 0, 119, 69, 108, 0, 119, 104, 108, 0, 115, 100, 111, 0, 119, 69, 118, 0, 115, 118, 111, 0, 115, 100, 109, 0, 115, 118, 109, 0, 115, 100, 108, 0, 115, 118, 108, 0, 107, 110, 111, 0, 115, 100, 118, 0, 108, 114, 111, 0, 107, 110, 109, 0, 108, 114, 109, 0, 107, 110, 108, 0, 108, 114, 108, 0, 66, 98, 111, 0, 107, 110, 118, 0, 68, 106, 111, 0, 66, 98, 109, 0, 68, 106, 109, 0, 66, 98, 108, 0, 68, 106, 108, 0, 66, 98, 118, 0, 68, 106, 118, 0, 122, 98, 101, 0, 98, 102, 119, 0, 110, 112, 122, 0, 122, 98, 100, 0, 98, 100, 121, 0, 98, 99, 122, 0, 121, 97, 101, 0, 68, 70, 122, 0, 121, 105, 117, 0, 121, 97, 100, 0, 98, 104, 122, 0, 121, 105, 116, 0, 119, 69, 101, 0, 119, 103, 117, 0, 119, 69, 100, 0, 119, 120, 117, 0, 119, 103, 116, 0, 119, 120, 116, 0, 115, 99, 117, 0, 115, 116, 117, 0, 115, 99, 116, 0, 116, 118, 117, 0, 115, 116, 116, 0, 116, 118, 116, 0, 107, 108, 117, 0, 108, 110, 117, 0, 107, 108, 116, 0, 110, 114, 117, 0, 108, 110, 116, 0, 110, 114, 116, 0, 66, 68, 117, 0, 68, 98, 117, 0, 66, 68, 116, 0, 98, 106, 117, 0, 68, 98, 116, 0, 98, 106, 116, 0, 106, 102, 115, 0, 114, 112, 121, 0, 106, 100, 119, 0, 114, 111, 122, 0, 106, 99, 121, 0, 106, 99, 106, 0, 122, 98, 70, 0, 98, 70, 121, 0, 122, 106, 104, 0, 106, 104, 121, 0, 98, 69, 122, 0, 106, 103, 122, 0, 121, 97, 70, 0, 121, 105, 104, 0, 121, 121, 120, 0, 119, 69, 70, 0, 119, 103, 104, 0, 119, 119, 120, 0, 120, 120, 120, 0, 115, 99, 104, 0, 115, 115, 120, 0, 116, 116, 120, 0, 118, 118, 120, 0, 107, 107, 120, 0, 108, 108, 120, 0, 110, 110, 120, 0, 114, 114, 120, 0, 66, 66, 120, 0, 68, 68, 120, 0, 98, 98, 120, 0, 106, 70, 119, 0, 114, 109, 122, 0, 106, 69, 121, 0, 106, 69, 106, 0, 98, 67, 122, 0, 106, 97, 122, 0, 106, 67, 121, 0, 106, 67, 106, 0, 106, 66, 106, 0, 119, 67, 111, 0, 119, 67, 109, 0, 119, 67, 108, 0, 115, 70, 111, 0, 119, 67, 118, 0, 115, 70, 109, 0, 115, 70, 108, 0, 107, 102, 111, 0, 115, 70, 118, 0, 107, 102, 109, 0, 107, 102, 108, 0, 65, 114, 111], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 120524);
+allocate([107, 102, 118, 0, 65, 114, 109, 0, 65, 114, 108, 0, 65, 114, 118, 0, 121, 68, 101, 0, 66, 112, 122, 0, 121, 68, 100, 0, 119, 67, 101, 0, 119, 97, 117, 0, 119, 67, 100, 0, 119, 97, 116, 0, 115, 69, 117, 0, 115, 104, 117, 0, 115, 69, 116, 0, 115, 104, 116, 0, 107, 100, 117, 0, 107, 118, 117, 0, 107, 100, 116, 0, 107, 118, 116, 0, 65, 110, 117, 0, 66, 114, 117, 0, 65, 110, 116, 0, 66, 114, 116, 0, 122, 68, 112, 0, 68, 112, 121, 0, 68, 111, 122, 0, 121, 68, 70, 0, 121, 98, 104, 0, 119, 67, 70, 0, 119, 97, 104, 0, 119, 105, 120, 0, 115, 69, 104, 0, 115, 103, 120, 0, 115, 120, 120, 0, 107, 99, 120, 0, 107, 116, 120, 0, 108, 118, 120, 0, 65, 108, 120, 0, 66, 110, 120, 0, 68, 114, 120, 0, 98, 112, 119, 0, 110, 117, 122, 0, 98, 111, 121, 0, 98, 111, 106, 0, 68, 109, 122, 0, 98, 113, 122, 0, 106, 112, 115, 0, 114, 117, 121, 0, 106, 111, 119, 0, 114, 117, 106, 0, 106, 111, 105, 0, 106, 111, 98, 0, 98, 109, 121, 0, 106, 113, 121, 0, 98, 109, 106, 0, 106, 113, 106, 0, 106, 109, 119, 0, 114, 116, 106, 0, 106, 109, 105, 0, 106, 109, 98, 0, 98, 108, 106, 0, 106, 110, 106, 0, 106, 108, 105, 0, 106, 108, 98, 0, 106, 107, 114, 0, 115, 67, 117, 0, 115, 67, 116, 0, 107, 70, 117, 0, 107, 70, 116, 0, 65, 102, 117, 0, 65, 102, 116, 0, 119, 68, 104, 0, 115, 67, 104, 0, 115, 97, 120, 0, 107, 69, 120, 0, 107, 104, 120, 0, 65, 100, 120, 0, 65, 118, 120, 0, 66, 117, 122, 0, 68, 117, 121, 0, 68, 117, 106, 0, 98, 117, 119, 0, 110, 120, 106, 0, 98, 117, 105, 0, 98, 117, 98, 0, 68, 116, 106, 0, 98, 118, 106, 0, 106, 117, 115, 0, 114, 120, 105, 0, 106, 117, 103, 0, 114, 120, 98, 0, 106, 117, 97, 0, 106, 117, 68, 0, 98, 116, 105, 0, 106, 118, 105, 0, 98, 116, 98, 0, 106, 118, 98, 0, 106, 116, 103, 0, 114, 119, 114, 0, 106, 116, 97, 0, 106, 116, 68, 0, 98, 115, 114, 0, 106, 116, 114, 0, 106, 115, 113, 0, 106, 115, 110, 0, 66, 120, 106, 0, 68, 120, 105, 0, 68, 120, 98, 0, 98, 120, 103, 0, 110, 121, 114, 0, 98, 120, 97, 0, 98, 120, 68, 0, 68, 119, 114, 0, 98, 120, 114, 0, 98, 119, 113, 0, 98, 119, 110, 0, 112, 106, 107, 0, 117, 114, 119, 0, 101, 106, 65, 0, 112, 98, 115, 0, 117, 110, 121, 0, 101, 98, 107, 0, 112, 68, 119, 0, 117, 108, 122, 0, 101, 68, 115, 0, 112, 66, 121, 0, 101, 66, 119, 0, 122, 102, 99, 0, 102, 106, 107, 0, 112, 114, 119, 0, 122, 102, 69, 0, 102, 98, 115, 0, 112, 110, 121, 0, 122, 102, 67, 0, 102, 68, 119, 0, 112, 108, 122, 0, 122, 102, 66, 0, 102, 66, 121, 0, 121, 114, 99, 0, 122, 102, 113, 0, 102, 114, 119, 0, 121, 114, 69, 0, 122, 102, 110, 0, 102, 110, 121, 0, 121, 114, 67, 0, 102, 108, 122, 0, 121, 114, 66, 0, 120, 106, 99, 0, 121, 114, 113, 0, 120, 106, 69, 0, 121, 114, 110, 0, 120, 106, 67, 0, 120, 106, 66, 0, 117, 122, 99, 0, 120, 106, 113, 0, 117, 122, 69, 0, 120, 106, 110, 0, 117, 122, 67, 0, 117, 122, 66, 0, 112, 122, 99, 0, 117, 122, 113, 0, 112, 122, 69, 0, 117, 122, 110, 0, 112, 122, 67, 0, 100, 106, 65, 0, 111, 114, 115, 0, 117, 102, 121, 0, 100, 98, 107, 0, 111, 110, 119, 0, 117, 100, 122, 0, 100, 68, 115, 0, 111, 108, 121, 0, 100, 66, 119, 0, 111, 107, 122, 0, 100, 65, 121, 0, 122, 100, 111, 0, 100, 114, 115, 0, 111, 118, 121, 0, 122, 100, 109, 0, 100, 110, 119, 0, 111, 116, 122, 0, 122, 100, 108, 0, 100, 108, 121, 0, 100, 107, 122, 0, 121, 110, 111, 0, 122, 100, 118, 0, 100, 118, 121, 0, 121, 110, 109, 0, 100, 116, 122, 0, 121, 110, 108, 0, 120, 98, 111, 0, 121, 110, 118, 0, 120, 98, 109, 0, 120, 98, 108, 0, 117, 106, 111, 0, 120, 98, 118, 0, 117, 106, 109, 0, 117, 106, 108, 0, 111, 122, 111, 0, 117, 106, 118, 0, 111, 122, 109, 0, 111, 122, 108, 0, 99, 114, 107, 0, 111, 102, 119, 0, 117, 70, 122, 0, 99, 110, 115, 0, 111, 100, 121, 0, 99, 108, 119, 0, 111, 99, 122, 0, 99, 107, 121, 0, 99, 107, 106, 0, 122, 99, 117, 0, 99, 118, 119, 0, 111, 104, 122, 0, 122, 99, 116, 0, 99, 116, 121, 0, 99, 115, 122, 0, 121, 108, 117, 0, 99, 120, 122, 0, 121, 108, 116, 0, 120, 68, 117, 0, 120, 68, 116, 0, 117, 98, 117, 0, 117, 98, 116, 0, 111, 106, 117, 0, 111, 106, 116, 0, 99, 102, 115, 0, 111, 70, 121, 0, 99, 100, 119, 0, 111, 69, 122, 0, 99, 99, 121, 0, 99, 99, 106, 0, 122, 99, 104, 0, 99, 104, 121, 0, 99, 103, 122, 0, 121, 107, 120, 0, 120, 66, 120, 0, 117, 68, 120, 0, 99, 70, 119, 0, 111, 67, 122, 0, 99, 69, 121, 0, 99, 69, 106, 0, 99, 97, 122, 0, 99, 67, 121, 0, 99, 67, 106, 0, 70, 106, 65, 0, 109, 114, 115, 0, 116, 102, 121, 0, 70, 98, 107, 0, 109, 110, 119, 0, 116, 100, 122, 0, 70, 68, 115, 0, 109, 108, 121, 0, 70, 66, 119, 0, 109, 107, 122, 0, 70, 65, 121, 0, 122, 70, 111, 0, 70, 114, 115, 0, 109, 118, 121, 0, 122, 70, 109, 0, 70, 110, 119, 0, 109, 116, 122, 0, 122, 70, 108, 0, 70, 108, 121, 0, 70, 107, 122, 0, 121, 102, 111, 0, 122, 70, 118, 0, 70, 118, 121, 0, 121, 102, 109, 0, 70, 116, 122, 0, 121, 102, 108, 0, 119, 114, 111, 0, 121, 102, 118, 0, 119, 114, 109, 0, 119, 114, 108, 0, 116, 106, 111, 0, 119, 114, 118, 0, 116, 106, 109, 0, 116, 106, 108, 0, 109, 122, 111, 0, 116, 106, 118, 0, 109, 122, 109, 0, 109, 122, 108, 0, 113, 114, 107, 0, 118, 102, 119, 0, 120, 112, 122, 0, 104, 98, 65, 0, 113, 110, 115, 0, 118, 100, 121, 0, 104, 68, 107, 0, 113, 108, 119, 0, 118, 99, 122, 0, 104, 66, 115, 0, 113, 107, 121, 0, 104, 65, 119, 0, 113, 107, 106, 0, 104, 65, 105, 0, 69, 114, 107, 0, 109, 102, 119, 0, 116, 70, 122, 0, 104, 114, 107, 0, 69, 110, 115, 0, 109, 100, 121, 0, 104, 110, 115, 0, 113, 116, 121, 0, 109, 99, 122, 0, 104, 108, 119, 0, 69, 107, 121, 0, 104, 107, 121, 0, 69, 107, 106, 0, 104, 107, 106, 0, 122, 69, 117, 0, 69, 118, 119, 0, 109, 104, 122, 0, 122, 104, 117, 0, 122, 69, 116, 0, 104, 118, 119, 0, 69, 116, 121, 0, 122, 104, 116, 0, 104, 116, 121, 0, 69, 115, 122, 0, 104, 115, 122, 0, 121, 100, 117, 0, 69, 120, 122, 0, 121, 118, 117, 0, 121, 100, 116, 0, 104, 120, 122, 0, 121, 118, 116, 0, 119, 110, 117, 0, 120, 114, 117, 0, 119, 110, 116, 0, 120, 114, 116, 0, 116, 98, 117, 0, 118, 106, 117, 0, 116, 98, 116, 0, 118, 106, 116, 0, 109, 106, 117, 0, 109, 106, 116, 0, 103, 114, 65, 0, 113, 102, 115, 0, 118, 70, 121, 0, 103, 110, 107, 0, 113, 100, 119, 0, 118, 69, 122, 0, 103, 108, 115, 0, 113, 99, 121, 0, 103, 107, 119, 0, 113, 99, 106, 0, 103, 107, 105, 0, 103, 107, 98, 0, 69, 102, 115, 0, 109, 70, 121, 0, 103, 118, 115, 0, 69, 100, 119, 0, 109, 69, 122, 0, 103, 116, 119, 0, 113, 103, 122, 0, 103, 115, 121, 0, 69, 99, 106, 0, 103, 115, 106, 0, 122, 69, 104, 0, 69, 104, 121, 0, 122, 103, 120, 0, 103, 120, 121, 0, 69, 103, 122, 0, 103, 119, 122, 0, 121, 99, 120, 0, 121, 116, 120, 0, 119, 108, 120, 0, 120, 110, 120, 0, 116, 68, 120, 0, 118, 98, 120, 0, 109, 98, 120, 0, 103, 102, 107, 0, 113, 70, 119, 0, 118, 67, 122, 0, 103, 100, 115, 0, 113, 69, 121, 0, 103, 99, 119, 0, 113, 69, 106, 0, 103, 99, 105, 0, 103, 99, 98, 0, 69, 70, 119, 0, 109, 67, 122, 0, 103, 104, 119, 0, 69, 69, 121, 0, 103, 103, 121, 0, 69, 69, 106, 0, 103, 103, 106, 0, 69, 97, 122, 0, 103, 105, 122, 0, 103, 70, 115, 0, 113, 67, 121, 0, 103, 69, 119, 0, 113, 67, 106, 0, 103, 69, 105, 0, 103, 69, 98, 0, 69, 67, 121, 0, 103, 97, 121, 0, 69, 67, 106, 0, 103, 97, 106, 0, 103, 67, 119, 0, 113, 66, 106, 0, 103, 67, 105, 0, 103, 67, 98, 0, 69, 66, 106, 0, 103, 68, 106, 0, 103, 66, 105, 0, 103, 66, 98, 0, 67, 114, 107, 0, 108, 102, 119, 0, 115, 112, 122, 0, 67, 110, 115, 0, 108, 100, 121, 0, 67, 108, 119, 0, 108, 99, 122, 0, 67, 107, 121, 0, 67, 107, 106, 0, 122, 67, 117, 0, 67, 118, 119, 0, 108, 104, 122, 0, 122, 67, 116, 0, 67, 116, 121, 0, 67, 115, 122, 0, 121, 70, 117, 0, 67, 120, 122, 0, 121, 70, 116, 0, 119, 102, 117, 0, 119, 102, 116, 0, 115, 114, 117, 0, 115, 114, 116, 0, 108, 106, 117, 0, 108, 106, 116, 0, 97, 114, 65, 0, 110, 102, 115, 0, 116, 112, 121, 0, 97, 110, 107, 0, 110, 100, 119, 0, 116, 111, 122, 0, 97, 108, 115, 0, 110, 99, 121, 0, 97, 107, 119, 0, 110, 99, 106, 0, 97, 107, 105, 0, 97, 107, 98, 0, 67, 102, 115, 0, 108, 70, 121, 0, 97, 118, 115, 0, 67, 100, 119, 0, 108, 69, 122, 0, 97, 116, 119, 0, 110, 103, 122, 0, 97, 115, 121, 0, 67, 99, 106, 0, 97, 115, 106, 0, 122, 67, 104, 0, 67, 104, 121, 0, 122, 97, 120, 0, 97, 120, 121, 0, 67, 103, 122, 0, 97, 119, 122, 0, 121, 69, 120, 0, 121, 104, 120, 0, 119, 100, 120, 0, 119, 118, 120, 0, 115, 110, 120, 0, 116, 114, 120, 0, 108, 98, 120, 0, 114, 102, 107, 0, 118, 112, 119, 0, 120, 117, 122, 0, 105, 110, 65, 0, 114, 100, 115, 0, 118, 111, 121, 0, 105, 108, 107, 0, 114, 99, 119, 0, 118, 111, 106, 0, 105, 107, 115, 0, 114, 99, 105, 0, 105, 107, 103, 0, 114, 99, 98, 0, 105, 107, 97, 0, 97, 102, 107, 0, 110, 70, 119, 0, 116, 109, 122, 0, 105, 118, 107, 0, 97, 100, 115, 0, 110, 69, 121, 0, 105, 116, 115, 0, 114, 103, 121, 0, 110, 69, 106, 0, 105, 115, 119, 0, 97, 99, 105, 0, 105, 115, 105, 0, 97, 99, 98, 0, 105, 115, 98, 0, 67, 70, 119, 0, 108, 67, 122, 0, 97, 104, 119, 0, 67, 69, 121, 0, 105, 120, 119, 0, 97, 103, 121, 0, 67, 69, 106, 0, 105, 119, 121, 0, 97, 103, 106, 0, 105, 119, 106, 0, 67, 97, 122, 0, 97, 105, 122, 0, 105, 121, 122, 0, 105, 102, 65, 0, 114, 70, 115, 0, 118, 109, 121, 0, 105, 100, 107, 0, 114, 69, 119, 0, 118, 109, 106, 0, 105, 99, 115, 0, 114, 69, 105, 0, 105, 99, 103, 0, 114, 69, 98, 0, 105, 99, 97, 0, 105, 99, 68, 0, 97, 70, 115, 0, 110, 67, 121, 0, 105, 104, 115, 0, 97, 69, 119, 0, 110, 67, 106, 0, 105, 103, 119, 0, 114, 97, 106, 0, 105, 103, 105, 0, 97, 69, 98, 0, 105, 103, 98, 0, 67, 67, 121, 0, 97, 97, 121, 0, 67, 67, 106, 0, 105, 105, 121, 0, 97, 97, 106, 0, 105, 105, 106, 0, 105, 70, 107, 0, 114, 67, 119, 0, 118, 108, 106, 0, 105, 69, 115, 0, 114, 67, 105, 0, 105, 69, 103, 0, 114, 67, 98, 0, 105, 69, 97, 0, 105, 69, 68, 0, 97, 67, 119, 0, 110, 66, 106, 0, 105, 97, 119, 0, 97, 67, 105, 0, 105, 97, 105, 0, 97, 67, 98, 0, 105, 97, 98, 0, 67, 66, 106, 0, 97, 68, 106, 0, 105, 98, 106, 0, 105, 67, 115, 0, 114, 66, 105, 0, 105, 67, 103, 0, 114, 66, 98, 0, 105, 67, 97, 0, 105, 67, 68, 0, 97, 66, 105, 0, 105, 68, 105, 0, 97, 66, 98, 0, 105, 68, 98, 0, 105, 66, 103, 0, 114, 65, 114, 0, 105, 66, 97, 0, 105, 66, 68, 0, 97, 65, 114, 0, 105, 66, 114, 0, 105, 65, 113, 0, 105, 65, 110, 0, 66, 102, 115, 0, 107, 112, 121, 0, 66, 100, 119, 0, 107, 111, 122, 0, 66, 99, 121, 0, 66, 99, 106, 0, 66, 104, 121, 0, 66, 103, 122, 0, 121, 67, 120, 0, 119, 70, 120, 0, 115, 102, 120, 0, 107, 114, 120, 0, 68, 102, 107, 0, 108, 112, 119, 0, 115, 117, 122, 0, 68, 100, 115, 0, 108, 111, 121, 0, 68, 99, 119, 0, 108, 111, 106, 0, 68, 99, 105, 0, 68, 99, 98, 0, 66, 70, 119, 0, 107, 109, 122, 0, 68, 104, 119, 0, 66, 69, 121, 0, 68, 103, 121, 0, 66, 69, 106, 0, 68, 103, 106, 0, 66, 97, 122, 0, 68, 105, 122, 0, 98, 102, 65, 0, 110, 112, 115, 0, 116, 117, 121, 0, 98, 100, 107, 0, 110, 111, 119, 0, 116, 117, 106, 0, 98, 99, 115, 0, 110, 111, 105, 0, 98, 99, 103, 0, 110, 111, 98, 0, 98, 99, 97, 0, 98, 99, 68, 0, 68, 70, 115, 0, 108, 109, 121, 0, 98, 104, 115, 0, 68, 69, 119, 0, 108, 109, 106, 0, 98, 103, 119, 0, 68, 69, 105, 0, 98, 103, 105, 0, 68, 69, 98, 0, 98, 103, 98, 0, 66, 67, 121, 0, 68, 97, 121, 0, 66, 67, 106, 0, 98, 105, 121, 0, 68, 97, 106, 0, 98, 105, 106, 0, 114, 112, 107, 0, 118, 117, 119, 0, 120, 120, 106, 0, 106, 100, 65, 0, 114, 111, 115, 0, 118, 117, 105, 0, 106, 99, 107, 0, 114, 111, 103, 0, 118, 117, 98, 0, 106, 99, 99, 0, 114, 111, 97, 0, 106, 99, 69, 0, 114, 111, 68, 0, 106, 99, 67, 0, 98, 70, 107, 0, 110, 109, 119, 0, 116, 116, 106, 0, 106, 104, 107, 0, 98, 69, 115, 0, 110, 109, 105, 0, 106, 103, 115, 0, 114, 113, 105, 0, 110, 109, 98, 0, 106, 103, 103, 0, 98, 69, 97, 0, 106, 103, 97, 0, 98, 69, 68, 0, 106, 103, 68, 0, 68, 67, 119, 0, 108, 108, 106, 0, 98, 97, 119, 0, 68, 67, 105, 0, 106, 105, 119, 0, 98, 97, 105, 0, 68, 67, 98, 0, 106, 105, 105, 0, 98, 97, 98, 0, 106, 105, 98, 0, 66, 66, 106, 0, 68, 68, 106, 0, 98, 98, 106, 0, 106, 106, 106, 0, 106, 70, 65, 0, 114, 109, 115, 0, 118, 116, 105, 0, 106, 69, 107, 0, 114, 109, 103, 0, 118, 116, 98, 0, 106, 69, 99, 0, 114, 109, 97, 0, 106, 69, 69, 0, 114, 109, 68, 0, 106, 69, 67, 0, 106, 69, 66, 0, 98, 67, 115, 0, 110, 108, 105, 0, 106, 97, 115, 0, 98, 67, 103, 0, 110, 108, 98, 0, 106, 97, 103, 0, 114, 110, 98, 0, 106, 97, 97, 0, 98, 67, 68, 0, 106, 97, 68, 0, 68, 66, 105, 0, 98, 68, 105, 0, 68, 66, 98, 0, 106, 98, 105, 0, 98, 68, 98, 0, 106, 98, 98, 0, 106, 67, 107, 0, 114, 108, 103, 0, 118, 115, 114, 0, 106, 67, 99, 0, 114, 108, 97, 0, 106, 67, 69, 0, 114, 108, 68, 0, 106, 67, 67, 0, 106, 67, 66, 0, 98, 66, 103, 0, 110, 107, 114, 0, 106, 68, 103, 0, 98, 66, 97, 0, 106, 68, 97, 0, 98, 66, 68, 0, 106, 68, 68, 0, 68, 65, 114, 0, 98, 66, 114, 0, 106, 68, 114, 0, 106, 66, 99, 0, 114, 107, 113, 0, 106, 66, 69, 0, 114, 107, 110, 0, 106, 66, 67, 0, 106, 66, 66, 0, 98, 65, 113, 0, 106, 66, 113, 0, 98, 65, 110, 0, 106, 66, 110, 0, 106, 65, 111, 0, 114, 107, 102, 0, 106, 65, 109, 0, 106, 65, 108, 0, 98, 65, 102, 0, 106, 65, 118, 0, 65, 112, 119, 0, 107, 101, 122, 0, 65, 111, 121, 0, 65, 111, 106, 0, 65, 113, 122, 0, 66, 112, 115, 0, 107, 117, 121, 0, 66, 111, 119, 0, 107, 117, 106, 0, 66, 111, 105, 0, 66, 111, 98, 0, 65, 109, 121, 0, 66, 113, 121, 0, 65, 109, 106, 0, 66, 113, 106, 0, 68, 112, 107, 0, 108, 117, 119, 0, 115, 120, 106, 0, 68, 111, 115, 0, 108, 117, 105, 0, 68, 111, 103, 0, 108, 117, 98, 0, 68, 111, 97, 0, 68, 111, 68, 0, 66, 109, 119, 0, 107, 116, 106, 0, 68, 113, 119, 0, 66, 109, 105, 0, 68, 113, 105, 0, 66, 109, 98, 0, 68, 113, 98, 0, 65, 108, 106, 0, 66, 110, 106, 0, 68, 114, 106, 0, 98, 112, 65, 0, 110, 117, 115, 0, 116, 120, 105, 0, 98, 111, 107, 0, 110, 117, 103, 0, 116, 120, 98, 0, 98, 111, 99, 0, 110, 117, 97, 0, 98, 111, 69, 0, 110, 117, 68, 0, 98, 111, 67, 0, 98, 111, 66, 0, 68, 109, 115, 0, 108, 116, 105, 0, 98, 113, 115, 0, 68, 109, 103, 0, 108, 116, 98, 0, 98, 113, 103, 0, 110, 118, 98, 0, 98, 113, 97, 0, 68, 109, 68, 0, 98, 113, 68, 0, 66, 108, 105, 0, 68, 110, 105, 0, 66, 108, 98, 0, 98, 114, 105, 0, 68, 110, 98, 0, 98, 114, 98, 0, 114, 117, 107, 0, 118, 120, 103, 0, 120, 121, 114, 0, 114, 117, 99, 0, 118, 120, 97, 0, 114, 117, 69, 0, 118, 120, 68, 0, 114, 117, 67, 0, 114, 117, 66, 0, 98, 109, 107, 0, 110, 116, 103, 0, 116, 119, 114, 0, 106, 113, 107, 0, 98, 109, 99, 0, 110, 116, 97, 0, 106, 113, 99, 0, 114, 118, 97, 0, 110, 116, 68, 0, 106, 113, 69, 0, 98, 109, 67, 0, 106, 113, 67, 0, 98, 109, 66, 0, 106, 113, 66, 0, 68, 108, 103, 0, 108, 115, 114, 0, 98, 110, 103, 0, 68, 108, 97, 0, 106, 114, 103, 0, 98, 110, 97, 0, 68, 108, 68, 0, 106, 114, 97, 0, 98, 110, 68, 0, 106, 114, 68, 0, 66, 107, 114, 0, 68, 108, 114, 0, 98, 110, 114, 0, 106, 114, 114, 0, 114, 116, 99, 0, 118, 119, 113, 0, 114, 116, 69, 0, 118, 119, 110, 0, 114, 116, 67, 0, 114, 116, 66, 0, 98, 108, 99, 0, 110, 115, 113, 0, 106, 110, 99, 0, 98, 108, 69, 0, 110, 115, 110, 0, 106, 110, 69, 0, 114, 116, 110, 0, 106, 110, 67, 0, 98, 108, 66, 0, 106, 110, 66, 0, 68, 107, 113, 0, 98, 108, 113, 0, 68, 107, 110, 0, 106, 110, 113, 0, 98, 108, 110, 0, 106, 110, 110, 0, 114, 115, 111, 0, 118, 119, 102, 0, 114, 115, 109, 0, 114, 115, 108, 0, 98, 107, 111, 0, 110, 115, 102, 0, 106, 108, 111, 0, 98, 107, 109, 0, 106, 108, 109, 0, 98, 107, 108, 0, 106, 108, 108, 0, 68, 107, 102, 0, 98, 107, 118, 0, 106, 108, 118, 0, 114, 115, 101, 0, 114, 115, 100, 0, 98, 107, 101, 0, 106, 107, 117, 0, 98, 107, 100, 0, 106, 107, 116, 0, 65, 101, 121, 0, 65, 101, 106, 0, 65, 117, 119, 0, 107, 104, 106, 0, 65, 117, 105, 0, 65, 117, 98, 0, 65, 100, 106, 0, 65, 118, 106, 0, 66, 117, 115, 0, 107, 120, 105, 0, 66, 117, 103, 0, 107, 120, 98, 0, 66, 117, 97, 0, 66, 117, 68, 0, 65, 116, 105, 0, 66, 118, 105, 0, 65, 116, 98, 0, 66, 118, 98, 0, 68, 117, 107, 0, 108, 120, 103, 0, 115, 121, 114, 0, 68, 117, 99, 0, 108, 120, 97, 0, 68, 117, 69, 0, 108, 120, 68, 0, 68, 117, 67, 0, 68, 117, 66, 0, 66, 116, 103, 0, 107, 119, 114, 0, 68, 118, 103, 0, 108, 120, 114, 0, 68, 118, 97, 0, 66, 116, 68, 0, 68, 118, 68, 0, 65, 115, 114, 0, 66, 116, 114, 0, 68, 118, 114, 0, 110, 120, 99, 0, 116, 121, 113, 0, 110, 120, 69, 0, 116, 121, 110, 0, 110, 120, 67, 0, 110, 120, 66, 0, 68, 116, 99, 0, 108, 119, 113, 0, 98, 118, 99, 0, 110, 120, 113, 0, 108, 119, 110, 0, 98, 118, 69, 0, 68, 116, 67, 0, 98, 118, 67, 0, 68, 116, 66, 0, 98, 118, 66, 0, 66, 115, 113, 0, 68, 116, 113, 0, 66, 115, 110, 0, 98, 118, 113, 0, 68, 116, 110, 0, 98, 118, 110, 0, 118, 121, 111, 0, 120, 122, 102, 0, 118, 121, 109, 0, 118, 121, 108, 0, 110, 119, 111, 0, 116, 121, 102, 0, 114, 120, 111, 0, 110, 119, 109, 0, 114, 120, 109, 0, 110, 119, 108, 0, 114, 120, 108, 0, 68, 115, 111, 0, 108, 119, 102, 0, 98, 116, 111, 0, 68, 115, 109, 0, 106, 118, 111, 0, 98, 116, 109, 0, 68, 115, 108, 0, 106, 118, 109, 0, 98, 116, 108, 0, 106, 118, 108, 0, 66, 115, 102, 0, 68, 115, 118, 0, 98, 116, 118, 0, 106, 118, 118, 0, 118, 121, 101, 0, 118, 121, 100, 0, 110, 119, 101, 0, 114, 119, 117, 0, 110, 119, 100, 0, 114, 119, 116, 0, 68, 115, 101, 0, 98, 115, 117, 0, 68, 115, 100, 0, 106, 116, 117, 0, 98, 115, 116, 0, 106, 116, 116, 0, 118, 121, 70, 0, 110, 119, 70, 0, 114, 119, 104, 0, 68, 115, 70, 0, 98, 115, 104, 0, 106, 115, 120, 0, 65, 104, 105, 0, 65, 104, 98, 0, 65, 120, 103, 0, 107, 105, 114, 0, 65, 120, 97, 0, 65, 120, 68, 0, 65, 103, 114, 0, 65, 120, 114, 0, 66, 120, 99, 0, 107, 121, 113, 0, 66, 120, 69, 0, 107, 121, 110, 0, 66, 120, 67, 0, 66, 120, 66, 0, 65, 119, 113, 0, 66, 120, 113, 0, 65, 119, 110, 0, 66, 120, 110, 0, 108, 121, 111, 0, 115, 122, 102, 0, 108, 121, 109, 0, 108, 121, 108, 0, 66, 119, 111, 0, 107, 121, 102, 0, 68, 120, 111, 0, 108, 121, 118, 0, 68, 120, 109, 0, 66, 119, 108, 0, 68, 120, 108, 0, 65, 119, 102, 0, 66, 119, 118, 0, 68, 120, 118, 0, 116, 122, 101, 0, 116, 122, 100, 0, 108, 121, 101, 0, 110, 121, 117, 0, 108, 121, 100, 0, 110, 121, 116, 0, 66, 119, 101, 0, 68, 119, 117, 0, 66, 119, 100, 0, 98, 120, 117, 0, 68, 119, 116, 0, 98, 120, 116, 0, 116, 122, 70, 0, 108, 121, 70, 0, 110, 121, 104, 0, 66, 119, 70, 0, 68, 119, 104, 0, 98, 119, 120, 0, 65, 105, 113, 0, 65, 105, 110, 0, 65, 121, 111, 0, 107, 106, 102, 0, 65, 121, 109, 0, 65, 121, 108, 0, 65, 105, 102, 0, 65, 121, 118, 0, 107, 122, 101, 0, 107, 122, 100, 0, 65, 121, 101, 0, 66, 121, 117, 0, 65, 121, 100, 0, 66, 121, 116, 0, 115, 122, 112, 0, 83, 116, 57, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 83, 116, 57, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 83, 116, 49, 49, 108, 111, 103, 105, 99, 95, 101, 114, 114, 111, 114, 0, 83, 116, 49, 50, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 115, 116, 100, 58, 58, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 84, 33, 34, 25, 13, 1, 2, 3, 17, 75, 28, 12, 16, 4, 11, 29, 18, 30, 39, 104, 110, 111, 112, 113, 98, 32, 5, 6, 15, 19, 20, 21, 26, 8, 22, 7, 40, 36, 23, 24, 9, 10, 14, 27, 31, 37, 35, 131, 130, 125, 38, 42, 43, 60, 61, 62, 63, 67, 71, 74, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 121, 122, 123, 124, 0, 73, 108, 108, 101, 103, 97, 108, 32, 98, 121, 116, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 68, 111, 109, 97, 105, 110, 32, 101, 114, 114, 111, 114, 0, 82, 101, 115, 117, 108, 116, 32, 110, 111, 116, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 98, 108, 101, 0, 78, 111, 116, 32, 97, 32, 116, 116, 121, 0, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 100, 101, 110, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 110, 111, 116, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 78, 111, 32, 115, 117, 99, 104, 32, 112, 114, 111, 99, 101, 115, 115, 0, 70, 105, 108, 101, 32, 101, 120, 105, 115, 116, 115, 0, 86, 97, 108, 117, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 32, 102, 111, 114, 32, 100, 97, 116, 97, 32, 116, 121, 112, 101, 0, 78, 111, 32, 115, 112, 97, 99, 101, 32, 108, 101, 102, 116, 32, 111, 110, 32, 100, 101, 118, 105, 99, 101, 0, 79, 117, 116, 32, 111, 102, 32, 109, 101, 109, 111, 114, 121, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 98, 117, 115, 121, 0, 73, 110, 116, 101, 114, 114, 117, 112, 116, 101, 100, 32, 115, 121, 115, 116, 101, 109, 32, 99, 97, 108, 108, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 105, 108, 121, 32, 117, 110, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 73, 110, 118, 97, 108, 105, 100, 32, 115, 101, 101, 107, 0, 67, 114, 111, 115, 115, 45, 100, 101, 118, 105, 99, 101, 32, 108, 105, 110, 107, 0, 82, 101, 97, 100, 45, 111, 110, 108, 121, 32, 102, 105, 108, 101, 32, 115, 121, 115, 116, 101, 109, 0, 68, 105, 114, 101, 99, 116, 111, 114, 121, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 112, 101, 101, 114, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 116, 105, 109, 101, 100, 32, 111, 117, 116, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 102, 117, 115, 101, 100, 0, 72, 111, 115, 116, 32, 105, 115, 32, 100, 111, 119, 110, 0, 72, 111, 115, 116, 32, 105, 115, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 65, 100, 100, 114, 101, 115, 115, 32, 105, 110, 32, 117, 115, 101, 0, 66, 114, 111, 107, 101, 110, 32, 112, 105, 112, 101, 0, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 32, 111, 114, 32, 97, 100, 100, 114, 101, 115, 115, 0, 66, 108, 111, 99, 107, 32, 100, 101, 118, 105, 99, 101, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 0, 78, 111, 116, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 73, 115, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 84, 101, 120, 116, 32, 102, 105, 108, 101, 32, 98, 117, 115, 121, 0, 69, 120, 101, 99, 32, 102, 111, 114, 109, 97, 116, 32, 101, 114, 114, 111, 114, 0, 73, 110, 118, 97, 108, 105, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 0, 65, 114, 103, 117, 109, 101, 110, 116, 32, 108, 105, 115, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 83, 121, 109, 98, 111, 108, 105, 99, 32, 108, 105, 110, 107, 32, 108, 111, 111, 112, 0, 70, 105, 108, 101, 110, 97, 109, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 115, 32, 105, 110, 32, 115, 121, 115, 116, 101, 109, 0, 78, 111, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 66, 97, 100, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 0, 78, 111, 32, 99, 104, 105, 108, 100, 32, 112, 114, 111, 99, 101, 115, 115, 0, 66, 97, 100, 32, 97, 100, 100, 114, 101, 115, 115, 0, 70, 105, 108, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 107, 115, 0, 78, 111, 32, 108, 111, 99, 107, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 100, 101, 97, 100, 108, 111, 99, 107, 32, 119, 111, 117, 108, 100, 32, 111, 99, 99, 117, 114, 0, 83, 116, 97, 116, 101, 32, 110, 111, 116, 32, 114, 101, 99, 111, 118, 101, 114, 97, 98, 108, 101, 0, 80, 114, 101, 118, 105, 111, 117, 115, 32, 111, 119, 110, 101, 114, 32, 100, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 99, 97, 110, 99, 101, 108, 101, 100, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 0, 78, 111, 32, 109, 101, 115, 115, 97, 103, 101, 32, 111, 102, 32, 100, 101, 115, 105, 114, 101, 100, 32, 116, 121, 112, 101, 0, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 114, 101, 109, 111, 118, 101, 100, 0, 68, 101, 118, 105, 99, 101, 32, 110, 111, 116, 32, 97, 32, 115, 116, 114, 101, 97, 109, 0, 78, 111, 32, 100, 97, 116, 97, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 68, 101, 118, 105, 99, 101, 32, 116, 105, 109, 101, 111, 117, 116, 0, 79, 117, 116, 32, 111, 102, 32, 115, 116, 114, 101, 97, 109, 115, 32, 114, 101, 115, 111, 117, 114, 99, 101, 115, 0, 76, 105, 110, 107, 32, 104, 97, 115, 32, 98, 101, 101, 110, 32, 115, 101, 118, 101, 114, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 101, 114, 114, 111, 114, 0, 66, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 0, 70, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 32, 105, 110, 32, 98, 97, 100, 32, 115, 116, 97, 116, 101, 0, 78, 111, 116, 32, 97, 32, 115, 111, 99, 107, 101, 116, 0, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 77, 101, 115, 115, 97, 103, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 102, 111, 114, 32, 115, 111, 99, 107, 101, 116, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 116, 121, 112, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 78, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 65, 100, 100, 114, 101, 115, 115, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 98, 121, 32, 112, 114, 111, 116, 111, 99, 111, 108, 0, 65, 100, 100, 114, 101, 115, 115, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 78, 101, 116, 119, 111, 114, 107, 32, 105, 115, 32, 100, 111, 119, 110, 0, 78, 101, 116, 119, 111, 114, 107, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 110, 101, 116, 119, 111, 114, 107, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 97, 98, 111, 114, 116, 101, 100, 0, 78, 111, 32, 98, 117, 102, 102, 101, 114, 32, 115, 112, 97, 99, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 83, 111, 99, 107, 101, 116, 32, 105, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 32, 97, 102, 116, 101, 114, 32, 115, 111, 99, 107, 101, 116, 32, 115, 104, 117, 116, 100, 111, 119, 110, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 83, 116, 97, 108, 101, 32, 102, 105, 108, 101, 32, 104, 97, 110, 100, 108, 101, 0, 82, 101, 109, 111, 116, 101, 32, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 81, 117, 111, 116, 97, 32, 101, 120, 99, 101, 101, 100, 101, 100, 0, 78, 111, 32, 109, 101, 100, 105, 117, 109, 32, 102, 111, 117, 110, 100, 0, 87, 114, 111, 110, 103, 32, 109, 101, 100, 105, 117, 109, 32, 116, 121, 112, 101, 0, 78, 111, 32, 101, 114, 114, 111, 114, 32, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0, 67, 46, 85, 84, 70, 45, 56, 0, 114, 119, 97], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 130764);
+allocate([17, 0, 10, 0, 17, 17, 17, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 10, 17, 17, 17, 3, 10, 7, 0, 1, 19, 9, 11, 11, 0, 0, 9, 6, 11, 0, 0, 11, 0, 6, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 10, 10, 17, 17, 17, 0, 10, 0, 0, 2, 0, 9, 11, 0, 0, 0, 9, 0, 11, 0, 0, 11, 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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 4, 13, 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 14, 0, 0, 14, 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 18, 0, 0, 0, 18, 18, 18, 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, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 9, 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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 9, 11, 0, 0, 0, 0, 0, 11, 0, 0, 11, 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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 45, 43, 32, 32, 32, 48, 88, 48, 120, 0, 40, 110, 117, 108, 108, 41, 0, 45, 48, 88, 43, 48, 88, 32, 48, 88, 45, 48, 120, 43, 48, 120, 32, 48, 120, 0, 105, 110, 102, 0, 73, 78, 70, 0, 110, 97, 110, 0, 78, 65, 78, 0, 46, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 138079);
+var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
+assert(tempDoublePtr % 8 == 0);
+function copyTempFloat(ptr) {
+ HEAP8[tempDoublePtr] = HEAP8[ptr];
+ HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
+ HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
+ HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3]
+}
+function copyTempDouble(ptr) {
+ HEAP8[tempDoublePtr] = HEAP8[ptr];
+ HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
+ HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
+ HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
+ HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4];
+ HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5];
+ HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6];
+ HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7]
+}
+function _atexit(func, arg) {
+ __ATEXIT__.unshift({
+ func: func,
+ arg: arg
+ })
+}
+function ___cxa_atexit() {
+ return _atexit.apply(null, arguments)
+}
+Module["_i64Subtract"] = _i64Subtract;
+function ___setErrNo(value) {
+ if (Module["___errno_location"])
+ HEAP32[Module["___errno_location"]() >> 2] = value;
+ return value
+}
+var ERRNO_CODES = {
+ EPERM: 1,
+ ENOENT: 2,
+ ESRCH: 3,
+ EINTR: 4,
+ EIO: 5,
+ ENXIO: 6,
+ E2BIG: 7,
+ ENOEXEC: 8,
+ EBADF: 9,
+ ECHILD: 10,
+ EAGAIN: 11,
+ EWOULDBLOCK: 11,
+ ENOMEM: 12,
+ EACCES: 13,
+ EFAULT: 14,
+ ENOTBLK: 15,
+ EBUSY: 16,
+ EEXIST: 17,
+ EXDEV: 18,
+ ENODEV: 19,
+ ENOTDIR: 20,
+ EISDIR: 21,
+ EINVAL: 22,
+ ENFILE: 23,
+ EMFILE: 24,
+ ENOTTY: 25,
+ ETXTBSY: 26,
+ EFBIG: 27,
+ ENOSPC: 28,
+ ESPIPE: 29,
+ EROFS: 30,
+ EMLINK: 31,
+ EPIPE: 32,
+ EDOM: 33,
+ ERANGE: 34,
+ ENOMSG: 42,
+ EIDRM: 43,
+ ECHRNG: 44,
+ EL2NSYNC: 45,
+ EL3HLT: 46,
+ EL3RST: 47,
+ ELNRNG: 48,
+ EUNATCH: 49,
+ ENOCSI: 50,
+ EL2HLT: 51,
+ EDEADLK: 35,
+ ENOLCK: 37,
+ EBADE: 52,
+ EBADR: 53,
+ EXFULL: 54,
+ ENOANO: 55,
+ EBADRQC: 56,
+ EBADSLT: 57,
+ EDEADLOCK: 35,
+ EBFONT: 59,
+ ENOSTR: 60,
+ ENODATA: 61,
+ ETIME: 62,
+ ENOSR: 63,
+ ENONET: 64,
+ ENOPKG: 65,
+ EREMOTE: 66,
+ ENOLINK: 67,
+ EADV: 68,
+ ESRMNT: 69,
+ ECOMM: 70,
+ EPROTO: 71,
+ EMULTIHOP: 72,
+ EDOTDOT: 73,
+ EBADMSG: 74,
+ ENOTUNIQ: 76,
+ EBADFD: 77,
+ EREMCHG: 78,
+ ELIBACC: 79,
+ ELIBBAD: 80,
+ ELIBSCN: 81,
+ ELIBMAX: 82,
+ ELIBEXEC: 83,
+ ENOSYS: 38,
+ ENOTEMPTY: 39,
+ ENAMETOOLONG: 36,
+ ELOOP: 40,
+ EOPNOTSUPP: 95,
+ EPFNOSUPPORT: 96,
+ ECONNRESET: 104,
+ ENOBUFS: 105,
+ EAFNOSUPPORT: 97,
+ EPROTOTYPE: 91,
+ ENOTSOCK: 88,
+ ENOPROTOOPT: 92,
+ ESHUTDOWN: 108,
+ ECONNREFUSED: 111,
+ EADDRINUSE: 98,
+ ECONNABORTED: 103,
+ ENETUNREACH: 101,
+ ENETDOWN: 100,
+ ETIMEDOUT: 110,
+ EHOSTDOWN: 112,
+ EHOSTUNREACH: 113,
+ EINPROGRESS: 115,
+ EALREADY: 114,
+ EDESTADDRREQ: 89,
+ EMSGSIZE: 90,
+ EPROTONOSUPPORT: 93,
+ ESOCKTNOSUPPORT: 94,
+ EADDRNOTAVAIL: 99,
+ ENETRESET: 102,
+ EISCONN: 106,
+ ENOTCONN: 107,
+ ETOOMANYREFS: 109,
+ EUSERS: 87,
+ EDQUOT: 122,
+ ESTALE: 116,
+ ENOTSUP: 95,
+ ENOMEDIUM: 123,
+ EILSEQ: 84,
+ EOVERFLOW: 75,
+ ECANCELED: 125,
+ ENOTRECOVERABLE: 131,
+ EOWNERDEAD: 130,
+ ESTRPIPE: 86
+};
+function _sysconf(name) {
+ switch (name) {
+ case 30:
+ return PAGE_SIZE;
+ case 85:
+ return totalMemory / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0:
+ return 2097152;
+ case 3:
+ return 65536;
+ case 28:
+ return 32768;
+ case 44:
+ return 32767;
+ case 75:
+ return 16384;
+ case 39:
+ return 1e3;
+ case 89:
+ return 700;
+ case 71:
+ return 256;
+ case 40:
+ return 255;
+ case 2:
+ return 100;
+ case 180:
+ return 64;
+ case 25:
+ return 20;
+ case 5:
+ return 16;
+ case 6:
+ return 6;
+ case 73:
+ return 4;
+ case 84:
+ {
+ if (typeof navigator === "object")
+ return navigator["hardwareConcurrency"] || 1;
+ return 1
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1
+}
+function __ZSt18uncaught_exceptionv() {
+ return !!__ZSt18uncaught_exceptionv.uncaught_exception
+}
+var EXCEPTIONS = {
+ last: 0,
+ caught: [],
+ infos: {},
+ deAdjust: (function(adjusted) {
+ if (!adjusted || EXCEPTIONS.infos[adjusted])
+ return adjusted;
+ for (var ptr in EXCEPTIONS.infos) {
+ var info = EXCEPTIONS.infos[ptr];
+ if (info.adjusted === adjusted) {
+ return ptr
+ }
+ }
+ return adjusted
+ }),
+ addRef: (function(ptr) {
+ if (!ptr)
+ return;
+ var info = EXCEPTIONS.infos[ptr];
+ info.refcount++
+ }),
+ decRef: (function(ptr) {
+ if (!ptr)
+ return;
+ var info = EXCEPTIONS.infos[ptr];
+ assert(info.refcount > 0);
+ info.refcount--;
+ if (info.refcount === 0) {
+ if (info.destructor) {
+ Runtime.dynCall("vi", info.destructor, [ptr])
+ }
+ delete EXCEPTIONS.infos[ptr];
+ ___cxa_free_exception(ptr)
+ }
+ }),
+ clearRef: (function(ptr) {
+ if (!ptr)
+ return;
+ var info = EXCEPTIONS.infos[ptr];
+ info.refcount = 0
+ })
+};
+function ___resumeException(ptr) {
+ if (!EXCEPTIONS.last) {
+ EXCEPTIONS.last = ptr
+ }
+ EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));
+ throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."
+}
+function ___cxa_find_matching_catch() {
+ var thrown = EXCEPTIONS.last;
+ if (!thrown) {
+ return (asm["setTempRet0"](0), 0) | 0
+ }
+ var info = EXCEPTIONS.infos[thrown];
+ var throwntype = info.type;
+ if (!throwntype) {
+ return (asm["setTempRet0"](0), thrown) | 0
+ }
+ var typeArray = Array.prototype.slice.call(arguments);
+ var pointer = Module["___cxa_is_pointer_type"](throwntype);
+ if (!___cxa_find_matching_catch.buffer)
+ ___cxa_find_matching_catch.buffer = _malloc(4);
+ HEAP32[___cxa_find_matching_catch.buffer >> 2] = thrown;
+ thrown = ___cxa_find_matching_catch.buffer;
+ for (var i = 0; i < typeArray.length; i++) {
+ if (typeArray[i] && Module["___cxa_can_catch"](typeArray[i], throwntype, thrown)) {
+ thrown = HEAP32[thrown >> 2];
+ info.adjusted = thrown;
+ return (asm["setTempRet0"](typeArray[i]), thrown) | 0
+ }
+ }
+ thrown = HEAP32[thrown >> 2];
+ return (asm["setTempRet0"](throwntype), thrown) | 0
+}
+function ___cxa_throw(ptr, type, destructor) {
+ EXCEPTIONS.infos[ptr] = {
+ ptr: ptr,
+ adjusted: ptr,
+ type: type,
+ destructor: destructor,
+ refcount: 0
+ };
+ EXCEPTIONS.last = ptr;
+ if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
+ __ZSt18uncaught_exceptionv.uncaught_exception = 1
+ } else {
+ __ZSt18uncaught_exceptionv.uncaught_exception++
+ }
+ throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."
+}
+Module["_memset"] = _memset;
+var _BDtoILow = true;
+Module["_bitshift64Shl"] = _bitshift64Shl;
+function _abort() {
+ Module["abort"]()
+}
+function ___lock() {}
+function ___unlock() {}
+Module["_i64Add"] = _i64Add;
+var _sqrt = Math_sqrt;
+var _emscripten_asm_const_int = true;
+var ERRNO_MESSAGES = {
+ 0: "Success",
+ 1: "Not super-user",
+ 2: "No such file or directory",
+ 3: "No such process",
+ 4: "Interrupted system call",
+ 5: "I/O error",
+ 6: "No such device or address",
+ 7: "Arg list too long",
+ 8: "Exec format error",
+ 9: "Bad file number",
+ 10: "No children",
+ 11: "No more processes",
+ 12: "Not enough core",
+ 13: "Permission denied",
+ 14: "Bad address",
+ 15: "Block device required",
+ 16: "Mount device busy",
+ 17: "File exists",
+ 18: "Cross-device link",
+ 19: "No such device",
+ 20: "Not a directory",
+ 21: "Is a directory",
+ 22: "Invalid argument",
+ 23: "Too many open files in system",
+ 24: "Too many open files",
+ 25: "Not a typewriter",
+ 26: "Text file busy",
+ 27: "File too large",
+ 28: "No space left on device",
+ 29: "Illegal seek",
+ 30: "Read only file system",
+ 31: "Too many links",
+ 32: "Broken pipe",
+ 33: "Math arg out of domain of func",
+ 34: "Math result not representable",
+ 35: "File locking deadlock error",
+ 36: "File or path name too long",
+ 37: "No record locks available",
+ 38: "Function not implemented",
+ 39: "Directory not empty",
+ 40: "Too many symbolic links",
+ 42: "No message of desired type",
+ 43: "Identifier removed",
+ 44: "Channel number out of range",
+ 45: "Level 2 not synchronized",
+ 46: "Level 3 halted",
+ 47: "Level 3 reset",
+ 48: "Link number out of range",
+ 49: "Protocol driver not attached",
+ 50: "No CSI structure available",
+ 51: "Level 2 halted",
+ 52: "Invalid exchange",
+ 53: "Invalid request descriptor",
+ 54: "Exchange full",
+ 55: "No anode",
+ 56: "Invalid request code",
+ 57: "Invalid slot",
+ 59: "Bad font file fmt",
+ 60: "Device not a stream",
+ 61: "No data (for no delay io)",
+ 62: "Timer expired",
+ 63: "Out of streams resources",
+ 64: "Machine is not on the network",
+ 65: "Package not installed",
+ 66: "The object is remote",
+ 67: "The link has been severed",
+ 68: "Advertise error",
+ 69: "Srmount error",
+ 70: "Communication error on send",
+ 71: "Protocol error",
+ 72: "Multihop attempted",
+ 73: "Cross mount point (not really error)",
+ 74: "Trying to read unreadable message",
+ 75: "Value too large for defined data type",
+ 76: "Given log. name not unique",
+ 77: "f.d. invalid for this operation",
+ 78: "Remote address changed",
+ 79: "Can access a needed shared lib",
+ 80: "Accessing a corrupted shared lib",
+ 81: ".lib section in a.out corrupted",
+ 82: "Attempting to link in too many libs",
+ 83: "Attempting to exec a shared library",
+ 84: "Illegal byte sequence",
+ 86: "Streams pipe error",
+ 87: "Too many users",
+ 88: "Socket operation on non-socket",
+ 89: "Destination address required",
+ 90: "Message too long",
+ 91: "Protocol wrong type for socket",
+ 92: "Protocol not available",
+ 93: "Unknown protocol",
+ 94: "Socket type not supported",
+ 95: "Not supported",
+ 96: "Protocol family not supported",
+ 97: "Address family not supported by protocol family",
+ 98: "Address already in use",
+ 99: "Address not available",
+ 100: "Network interface is not configured",
+ 101: "Network is unreachable",
+ 102: "Connection reset by network",
+ 103: "Connection aborted",
+ 104: "Connection reset by peer",
+ 105: "No buffer space available",
+ 106: "Socket is already connected",
+ 107: "Socket is not connected",
+ 108: "Can't send after socket shutdown",
+ 109: "Too many references",
+ 110: "Connection timed out",
+ 111: "Connection refused",
+ 112: "Host is down",
+ 113: "Host is unreachable",
+ 114: "Socket already connected",
+ 115: "Connection already in progress",
+ 116: "Stale file handle",
+ 122: "Quota exceeded",
+ 123: "No medium (in tape drive)",
+ 125: "Operation canceled",
+ 130: "Previous owner died",
+ 131: "State not recoverable"
+};
+var TTY = {
+ ttys: [],
+ init: (function() {}),
+ shutdown: (function() {}),
+ register: (function(dev, ops) {
+ TTY.ttys[dev] = {
+ input: [],
+ output: [],
+ ops: ops
+ };
+ FS.registerDevice(dev, TTY.stream_ops)
+ }),
+ stream_ops: {
+ open: (function(stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
+ }
+ stream.tty = tty;
+ stream.seekable = false
+ }),
+ close: (function(stream) {
+ stream.tty.ops.flush(stream.tty)
+ }),
+ flush: (function(stream) {
+ stream.tty.ops.flush(stream.tty)
+ }),
+ read: (function(stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty)
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
+ }
+ if (result === null || result === undefined)
+ break;
+ bytesRead++;
+ buffer[offset + i] = result
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now()
+ }
+ return bytesRead
+ }),
+ write: (function(stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset + i])
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now()
+ }
+ return i
+ })
+ },
+ default_tty_ops: {
+ get_char: (function(tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+ var fd = process.stdin.fd;
+ var usingDevice = false;
+ try {
+ fd = fs.openSync("/dev/stdin", "r");
+ usingDevice = true
+ } catch (e) {}
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ if (usingDevice) {
+ fs.closeSync(fd)
+ }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString("utf-8")
+ } else {
+ result = null
+ }
+ } else if (typeof window != "undefined" && typeof window.prompt == "function") {
+ result = window.prompt("Input: ");
+ if (result !== null) {
+ result += "\n"
+ }
+ } else if (typeof readline == "function") {
+ result = readline();
+ if (result !== null) {
+ result += "\n"
+ }
+ }
+ if (!result) {
+ return null
+ }
+ tty.input = intArrayFromString(result, true)
+ }
+ return tty.input.shift()
+ }),
+ put_char: (function(tty, val) {
+ if (val === null || val === 10) {
+ Module["print"](UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ } else {
+ if (val != 0)
+ tty.output.push(val)
+ }
+ }),
+ flush: (function(tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module["print"](UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ }
+ })
+ },
+ default_tty1_ops: {
+ put_char: (function(tty, val) {
+ if (val === null || val === 10) {
+ Module["printErr"](UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ } else {
+ if (val != 0)
+ tty.output.push(val)
+ }
+ }),
+ flush: (function(tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module["printErr"](UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ }
+ })
+ }
+};
+var MEMFS = {
+ ops_table: null,
+ mount: (function(mount) {
+ return MEMFS.createNode(null, "/", 16384 | 511, 0)
+ }),
+ createNode: (function(parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ }
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {}
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0;
+ node.contents = null
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream
+ }
+ node.timestamp = Date.now();
+ if (parent) {
+ parent.contents[name] = node
+ }
+ return node
+ }),
+ getFileDataAsRegularArray: (function(node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i)
+ arr.push(node.contents[i]);
+ return arr
+ }
+ return node.contents
+ }),
+ getFileDataAsTypedArray: (function(node) {
+ if (!node.contents)
+ return new Uint8Array;
+ if (node.contents.subarray)
+ return node.contents.subarray(0, node.usedBytes);
+ return new Uint8Array(node.contents)
+ }),
+ expandFileStorage: (function(node, newCapacity) {
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length
+ }
+ if (!node.contents || node.contents.subarray) {
+ var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
+ if (prevCapacity >= newCapacity)
+ return;
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);
+ if (prevCapacity != 0)
+ newCapacity = Math.max(newCapacity, 256);
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity);
+ if (node.usedBytes > 0)
+ node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
+ return
+ }
+ if (!node.contents && newCapacity > 0)
+ node.contents = [];
+ while (node.contents.length < newCapacity)
+ node.contents.push(0)
+ }),
+ resizeFileStorage: (function(node, newSize) {
+ if (node.usedBytes == newSize)
+ return;
+ if (newSize == 0) {
+ node.contents = null;
+ node.usedBytes = 0;
+ return
+ }
+ if (!node.contents || node.contents.subarray) {
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize));
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))
+ }
+ node.usedBytes = newSize;
+ return
+ }
+ if (!node.contents)
+ node.contents = [];
+ if (node.contents.length > newSize)
+ node.contents.length = newSize;
+ else
+ while (node.contents.length < newSize)
+ node.contents.push(0);
+ node.usedBytes = newSize
+ }),
+ node_ops: {
+ getattr: (function(node) {
+ var attr = {};
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length
+ } else {
+ attr.size = 0
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr
+ }),
+ setattr: (function(node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size)
+ }
+ }),
+ lookup: (function(parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT]
+ }),
+ mknod: (function(parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev)
+ }),
+ rename: (function(old_node, new_dir, new_name) {
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name)
+ } catch (e) {}
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
+ }
+ }
+ }
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir
+ }),
+ unlink: (function(parent, name) {
+ delete parent.contents[name]
+ }),
+ rmdir: (function(parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
+ }
+ delete parent.contents[name]
+ }),
+ readdir: (function(node) {
+ var entries = [".", ".."];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue
+ }
+ entries.push(key)
+ }
+ return entries
+ }),
+ symlink: (function(parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
+ node.link = oldpath;
+ return node
+ }),
+ readlink: (function(node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ return node.link
+ })
+ },
+ stream_ops: {
+ read: (function(stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes)
+ return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) {
+ buffer.set(contents.subarray(position, position + size), offset)
+ } else {
+ for (var i = 0; i < size; i++)
+ buffer[offset + i] = contents[position + i]
+ }
+ return size
+ }),
+ write: (function(stream, buffer, offset, length, position, canOwn) {
+ if (!length)
+ return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) {
+ if (canOwn) {
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length
+ } else if (node.usedBytes === 0 && position === 0) {
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length
+ } else if (position + length <= node.usedBytes) {
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length
+ }
+ }
+ MEMFS.expandFileStorage(node, position + length);
+ if (node.contents.subarray && buffer.subarray)
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position + length);
+ return length
+ }),
+ llseek: (function(stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) {
+ position += stream.position
+ } else if (whence === 2) {
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ return position
+ }),
+ allocate: (function(stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)
+ }),
+ mmap: (function(stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
+ allocated = false;
+ ptr = contents.byteOffset
+ } else {
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length)
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length)
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)
+ }
+ buffer.set(contents, ptr)
+ }
+ return {
+ ptr: ptr,
+ allocated: allocated
+ }
+ }),
+ msync: (function(stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
+ }
+ if (mmapFlags & 2) {
+ return 0
+ }
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ return 0
+ })
+ }
+};
+var IDBFS = {
+ dbs: {},
+ indexedDB: (function() {
+ if (typeof indexedDB !== "undefined")
+ return indexedDB;
+ var ret = null;
+ if (typeof window === "object")
+ ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, "IDBFS used, but indexedDB not supported");
+ return ret
+ }),
+ DB_VERSION: 21,
+ DB_STORE_NAME: "FILE_DATA",
+ mount: (function(mount) {
+ return MEMFS.mount.apply(null, arguments)
+ }),
+ syncfs: (function(mount, populate, callback) {
+ IDBFS.getLocalSet(mount, (function(err, local) {
+ if (err)
+ return callback(err);
+ IDBFS.getRemoteSet(mount, (function(err, remote) {
+ if (err)
+ return callback(err);
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+ IDBFS.reconcile(src, dst, callback)
+ }))
+ }))
+ }),
+ getDB: (function(name, callback) {
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db)
+ }
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION)
+ } catch (e) {
+ return callback(e)
+ }
+ req.onupgradeneeded = (function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+ var fileStore;
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME)
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME)
+ }
+ if (!fileStore.indexNames.contains("timestamp")) {
+ fileStore.createIndex("timestamp", "timestamp", {
+ unique: false
+ })
+ }
+ });
+ req.onsuccess = (function() {
+ db = req.result;
+ IDBFS.dbs[name] = db;
+ callback(null, db)
+ });
+ req.onerror = (function(e) {
+ callback(this.error);
+ e.preventDefault()
+ })
+ }),
+ getLocalSet: (function(mount, callback) {
+ var entries = {};
+ function isRealDir(p) {
+ return p !== "." && p !== ".."
+ }
+ function toAbsolute(root) {
+ return ( function(p) {
+ return PATH.join2(root, p)
+ })
+ }
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+ try {
+ stat = FS.stat(path)
+ } catch (e) {
+ return callback(e)
+ }
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))
+ }
+ entries[path] = {
+ timestamp: stat.mtime
+ }
+ }
+ return callback(null, {
+ type: "local",
+ entries: entries
+ })
+ }),
+ getRemoteSet: (function(mount, callback) {
+ var entries = {};
+ IDBFS.getDB(mount.mountpoint, (function(err, db) {
+ if (err)
+ return callback(err);
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly");
+ transaction.onerror = (function(e) {
+ callback(this.error);
+ e.preventDefault()
+ });
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index("timestamp");
+ index.openKeyCursor().onsuccess = (function(event) {
+ var cursor = event.target.result;
+ if (!cursor) {
+ return callback(null, {
+ type: "remote",
+ db: db,
+ entries: entries
+ })
+ }
+ entries[cursor.primaryKey] = {
+ timestamp: cursor.key
+ };
+ cursor.continue()
+ })
+ }))
+ }),
+ loadLocalEntry: (function(path, callback) {
+ var stat,
+ node;
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path)
+ } catch (e) {
+ return callback(e)
+ }
+ if (FS.isDir(stat.mode)) {
+ return callback(null, {
+ timestamp: stat.mtime,
+ mode: stat.mode
+ })
+ } else if (FS.isFile(stat.mode)) {
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, {
+ timestamp: stat.mtime,
+ mode: stat.mode,
+ contents: node.contents
+ })
+ } else {
+ return callback(new Error("node type not supported"))
+ }
+ }),
+ storeLocalEntry: (function(path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode)
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, {
+ encoding: "binary",
+ canOwn: true
+ })
+ } else {
+ return callback(new Error("node type not supported"))
+ }
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp)
+ } catch (e) {
+ return callback(e)
+ }
+ callback(null)
+ }),
+ removeLocalEntry: (function(path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path)
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path)
+ }
+ } catch (e) {
+ return callback(e)
+ }
+ callback(null)
+ }),
+ loadRemoteEntry: (function(store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = (function(event) {
+ callback(null, event.target.result)
+ });
+ req.onerror = (function(e) {
+ callback(this.error);
+ e.preventDefault()
+ })
+ }),
+ storeRemoteEntry: (function(store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = (function() {
+ callback(null)
+ });
+ req.onerror = (function(e) {
+ callback(this.error);
+ e.preventDefault()
+ })
+ }),
+ removeRemoteEntry: (function(store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = (function() {
+ callback(null)
+ });
+ req.onerror = (function(e) {
+ callback(this.error);
+ e.preventDefault()
+ })
+ }),
+ reconcile: (function(src, dst, callback) {
+ var total = 0;
+ var create = [];
+ Object.keys(src.entries).forEach((function(key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++
+ }
+ }));
+ var remove = [];
+ Object.keys(dst.entries).forEach((function(key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++
+ }
+ }));
+ if (!total) {
+ return callback(null)
+ }
+ var errored = false;
+ var completed = 0;
+ var db = src.type === "remote" ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite");
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err)
+ }
+ return
+ }
+ if (++completed >= total) {
+ return callback(null)
+ }
+ }
+ transaction.onerror = (function(e) {
+ done(this.error);
+ e.preventDefault()
+ });
+ create.sort().forEach((function(path) {
+ if (dst.type === "local") {
+ IDBFS.loadRemoteEntry(store, path, (function(err, entry) {
+ if (err)
+ return done(err);
+ IDBFS.storeLocalEntry(path, entry, done)
+ }))
+ } else {
+ IDBFS.loadLocalEntry(path, (function(err, entry) {
+ if (err)
+ return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done)
+ }))
+ }
+ }));
+ remove.sort().reverse().forEach((function(path) {
+ if (dst.type === "local") {
+ IDBFS.removeLocalEntry(path, done)
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done)
+ }
+ }))
+ })
+};
+var NODEFS = {
+ isWindows: false,
+ staticInit: (function() {
+ NODEFS.isWindows = !!process.platform.match(/^win/)
+ }),
+ mount: (function(mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0)
+ }),
+ createNode: (function(parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node
+ }),
+ getMode: (function(path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ stat.mode = stat.mode | (stat.mode & 146) >> 1
+ }
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ return stat.mode
+ }),
+ realPath: (function(node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts)
+ }),
+ flagsToPermissionStringMap: {
+ 0: "r",
+ 1: "r+",
+ 2: "r+",
+ 64: "r",
+ 65: "r+",
+ 66: "r+",
+ 129: "rx+",
+ 193: "rx+",
+ 514: "w+",
+ 577: "w",
+ 578: "w+",
+ 705: "wx",
+ 706: "wx+",
+ 1024: "a",
+ 1025: "a",
+ 1026: "a+",
+ 1089: "a",
+ 1090: "a+",
+ 1153: "ax",
+ 1154: "ax+",
+ 1217: "ax",
+ 1218: "ax+",
+ 4096: "rs",
+ 4098: "rs+"
+ },
+ flagsToPermissionString: (function(flags) {
+ flags &= ~32768;
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags]
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ }),
+ node_ops: {
+ getattr: (function(node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ }
+ }),
+ setattr: (function(node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ node.mode = attr.mode
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date)
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size)
+ }
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ lookup: (function(parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode)
+ }),
+ mknod: (function(parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode)
+ } else {
+ fs.writeFileSync(path, "", {
+ mode: node.mode
+ })
+ }
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ return node
+ }),
+ rename: (function(oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ unlink: (function(parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ rmdir: (function(parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ readdir: (function(node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ symlink: (function(parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath)
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ readlink: (function(node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ })
+ },
+ stream_ops: {
+ open: (function(stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags))
+ }
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ close: (function(stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd)
+ }
+ } catch (e) {
+ if (!e.code)
+ throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }),
+ read: (function(stream, buffer, offset, length, position) {
+ if (length === 0)
+ return 0;
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position)
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i]
+ }
+ }
+ return res
+ }),
+ write: (function(stream, buffer, offset, length, position) {
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position)
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ return res
+ }),
+ llseek: (function(stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) {
+ position += stream.position
+ } else if (whence === 2) {
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code])
+ }
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ return position
+ })
+ }
+};
+var WORKERFS = {
+ DIR_MODE: 16895,
+ FILE_MODE: 33279,
+ reader: null,
+ mount: (function(mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader)
+ WORKERFS.reader = new FileReaderSync;
+ var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ var parts = path.split("/");
+ var parent = root;
+ for (var i = 0; i < parts.length - 1; i++) {
+ var curr = parts.slice(0, i + 1).join("/");
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0)
+ }
+ parent = createdParents[curr]
+ }
+ return parent
+ }
+ function base(path) {
+ var parts = path.split("/");
+ return parts[parts.length - 1]
+ }
+ Array.prototype.forEach.call(mount.opts["files"] || [], (function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate)
+ }));
+ (mount.opts["blobs"] || []).forEach((function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"])
+ }));
+ (mount.opts["packages"] || []).forEach((function(pack) {
+ pack["metadata"].files.forEach((function(file) {
+ var name = file.filename.substr(1);
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end))
+ }))
+ }));
+ return root
+ }),
+ createNode: (function(parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents
+ } else {
+ node.size = 4096;
+ node.contents = {}
+ }
+ if (parent) {
+ parent.contents[name] = node
+ }
+ return node
+ }),
+ node_ops: {
+ getattr: (function(node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096)
+ }
+ }),
+ setattr: (function(node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp
+ }
+ }),
+ lookup: (function(parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }),
+ mknod: (function(parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ rename: (function(oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ unlink: (function(parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ rmdir: (function(parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ readdir: (function(node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ symlink: (function(parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }),
+ readlink: (function(node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ })
+ },
+ stream_ops: {
+ read: (function(stream, buffer, offset, length, position) {
+ if (position >= stream.node.size)
+ return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size
+ }),
+ write: (function(stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }),
+ llseek: (function(stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) {
+ position += stream.position
+ } else if (whence === 2) {
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ return position
+ })
+ }
+};
+var _stdin = allocate(1, "i32*", ALLOC_STATIC);
+var _stdout = allocate(1, "i32*", ALLOC_STATIC);
+var _stderr = allocate(1, "i32*", ALLOC_STATIC);
+var FS = {
+ root: null,
+ mounts: [],
+ devices: [null],
+ streams: [],
+ nextInode: 1,
+ nameTable: null,
+ currentPath: "/",
+ initialized: false,
+ ignorePermissions: true,
+ trackingDelegate: {},
+ tracking: {
+ openFlags: {
+ READ: 1,
+ WRITE: 2
+ }
+ },
+ ErrnoError: null,
+ genericErrors: {},
+ filesystems: null,
+ handleFSError: (function(e) {
+ if (!(e instanceof FS.ErrnoError))
+ throw e + " : " + stackTrace();
+ return ___setErrNo(e.errno)
+ }),
+ lookupPath: (function(path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+ if (!path)
+ return {
+ path: "",
+ node: null
+ };
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key]
+ }
+ }
+ if (opts.recurse_count > 8) {
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP)
+ }
+ var parts = PATH.normalizeArray(path.split("/").filter((function(p) {
+ return !!p
+ })), false);
+ var current = FS.root;
+ var current_path = "/";
+ for (var i = 0; i < parts.length; i++) {
+ var islast = i === parts.length - 1;
+ if (islast && opts.parent) {
+ break
+ }
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+ if (FS.isMountpoint(current)) {
+ if (!islast || islast && opts.follow_mount) {
+ current = current.mounted.root
+ }
+ }
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+ var lookup = FS.lookupPath(current_path, {
+ recurse_count: opts.recurse_count
+ });
+ current = lookup.node;
+ if (count++ > 40) {
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP)
+ }
+ }
+ }
+ }
+ return {
+ path: current_path,
+ node: current
+ }
+ }),
+ getPath: (function(node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path)
+ return mount;
+ return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path
+ }
+ path = path ? node.name + "/" + path : node.name;
+ node = node.parent
+ }
+ }),
+ hashName: (function(parentid, name) {
+ var hash = 0;
+ for (var i = 0; i < name.length; i++) {
+ hash = (hash << 5) - hash + name.charCodeAt(i) | 0
+ }
+ return (parentid + hash >>> 0) % FS.nameTable.length
+ }),
+ hashAddNode: (function(node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node
+ }),
+ hashRemoveNode: (function(node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break
+ }
+ current = current.name_next
+ }
+ }
+ }),
+ lookupNode: (function(parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent)
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node
+ }
+ }
+ return FS.lookup(parent, name)
+ }),
+ createNode: (function(parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = (function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev
+ });
+ FS.FSNode.prototype = {};
+ var readMode = 292 | 73;
+ var writeMode = 146;
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: (function() {
+ return (this.mode & readMode) === readMode
+ }),
+ set: (function(val) {
+ val ? this.mode |= readMode : this.mode &= ~readMode
+ })
+ },
+ write: {
+ get: (function() {
+ return (this.mode & writeMode) === writeMode
+ }),
+ set: (function(val) {
+ val ? this.mode |= writeMode : this.mode &= ~writeMode
+ })
+ },
+ isFolder: {
+ get: (function() {
+ return FS.isDir(this.mode)
+ })
+ },
+ isDevice: {
+ get: (function() {
+ return FS.isChrdev(this.mode)
+ })
+ }
+ })
+ }
+ var node = new FS.FSNode(parent, name, mode, rdev);
+ FS.hashAddNode(node);
+ return node
+ }),
+ destroyNode: (function(node) {
+ FS.hashRemoveNode(node)
+ }),
+ isRoot: (function(node) {
+ return node === node.parent
+ }),
+ isMountpoint: (function(node) {
+ return !!node.mounted
+ }),
+ isFile: (function(mode) {
+ return (mode & 61440) === 32768
+ }),
+ isDir: (function(mode) {
+ return (mode & 61440) === 16384
+ }),
+ isLink: (function(mode) {
+ return (mode & 61440) === 40960
+ }),
+ isChrdev: (function(mode) {
+ return (mode & 61440) === 8192
+ }),
+ isBlkdev: (function(mode) {
+ return (mode & 61440) === 24576
+ }),
+ isFIFO: (function(mode) {
+ return (mode & 61440) === 4096
+ }),
+ isSocket: (function(mode) {
+ return (mode & 49152) === 49152
+ }),
+ flagModes: {
+ "r": 0,
+ "rs": 1052672,
+ "r+": 2,
+ "w": 577,
+ "wx": 705,
+ "xw": 705,
+ "w+": 578,
+ "wx+": 706,
+ "xw+": 706,
+ "a": 1089,
+ "ax": 1217,
+ "xa": 1217,
+ "a+": 1090,
+ "ax+": 1218,
+ "xa+": 1218
+ },
+ modeStringToFlags: (function(str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === "undefined") {
+ throw new Error("Unknown file open mode: " + str)
+ }
+ return flags
+ }),
+ flagsToPermissionString: (function(flag) {
+ var perms = ["r", "w", "rw"][flag & 3];
+ if (flag & 512) {
+ perms += "w"
+ }
+ return perms
+ }),
+ nodePermissions: (function(node, perms) {
+ if (FS.ignorePermissions) {
+ return 0
+ }
+ if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES
+ } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES
+ } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES
+ }
+ return 0
+ }),
+ mayLookup: (function(dir) {
+ var err = FS.nodePermissions(dir, "x");
+ if (err)
+ return err;
+ if (!dir.node_ops.lookup)
+ return ERRNO_CODES.EACCES;
+ return 0
+ }),
+ mayCreate: (function(dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST
+ } catch (e) {}
+ return FS.nodePermissions(dir, "wx")
+ }),
+ mayDelete: (function(dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name)
+ } catch (e) {
+ return e.errno
+ }
+ var err = FS.nodePermissions(dir, "wx");
+ if (err) {
+ return err
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR
+ }
+ }
+ return 0
+ }),
+ mayOpen: (function(node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP
+ } else if (FS.isDir(node.mode)) {
+ if ((flags & 2097155) !== 0 || flags & 512) {
+ return ERRNO_CODES.EISDIR
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags))
+ }),
+ MAX_OPEN_FDS: 4096,
+ nextfd: (function(fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE)
+ }),
+ getStream: (function(fd) {
+ return FS.streams[fd]
+ }),
+ createStream: (function(stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = (function() {});
+ FS.FSStream.prototype = {};
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: (function() {
+ return this.node
+ }),
+ set: (function(val) {
+ this.node = val
+ })
+ },
+ isRead: {
+ get: (function() {
+ return (this.flags & 2097155) !== 1
+ })
+ },
+ isWrite: {
+ get: (function() {
+ return (this.flags & 2097155) !== 0
+ })
+ },
+ isAppend: {
+ get: (function() {
+ return this.flags & 1024
+ })
+ }
+ })
+ }
+ var newStream = new FS.FSStream;
+ for (var p in stream) {
+ newStream[p] = stream[p]
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream
+ }),
+ closeStream: (function(fd) {
+ FS.streams[fd] = null
+ }),
+ chrdev_stream_ops: {
+ open: (function(stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ stream.stream_ops = device.stream_ops;
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream)
+ }
+ }),
+ llseek: (function() {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
+ })
+ },
+ major: (function(dev) {
+ return dev >> 8
+ }),
+ minor: (function(dev) {
+ return dev & 255
+ }),
+ makedev: (function(ma, mi) {
+ return ma << 8 | mi
+ }),
+ registerDevice: (function(dev, ops) {
+ FS.devices[dev] = {
+ stream_ops: ops
+ }
+ }),
+ getDevice: (function(dev) {
+ return FS.devices[dev]
+ }),
+ getMounts: (function(mount) {
+ var mounts = [];
+ var check = [mount];
+ while (check.length) {
+ var m = check.pop();
+ mounts.push(m);
+ check.push.apply(check, m.mounts)
+ }
+ return mounts
+ }),
+ syncfs: (function(populate, callback) {
+ if (typeof populate === "function") {
+ callback = populate;
+ populate = false
+ }
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err)
+ }
+ return
+ }
+ if (++completed >= mounts.length) {
+ callback(null)
+ }
+ }
+ mounts.forEach((function(mount) {
+ if (!mount.type.syncfs) {
+ return done(null)
+ }
+ mount.type.syncfs(mount, populate, done)
+ }))
+ }),
+ mount: (function(type, opts, mountpoint) {
+ var root = mountpoint === "/";
+ var pseudo = !mountpoint;
+ var node;
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, {
+ follow_mount: false
+ });
+ mountpoint = lookup.path;
+ node = lookup.node;
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ }
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
+ }
+ }
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+ if (root) {
+ FS.root = mountRoot
+ } else if (node) {
+ node.mounted = mount;
+ if (node.mount) {
+ node.mount.mounts.push(mount)
+ }
+ }
+ return mountRoot
+ }),
+ unmount: (function(mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, {
+ follow_mount: false
+ });
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+ Object.keys(FS.nameTable).forEach((function(hash) {
+ var current = FS.nameTable[hash];
+ while (current) {
+ var next = current.name_next;
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current)
+ }
+ current = next
+ }
+ }));
+ node.mounted = null;
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1)
+ }),
+ lookup: (function(parent, name) {
+ return parent.node_ops.lookup(parent, name)
+ }),
+ mknod: (function(path, mode, dev) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === "." || name === "..") {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev)
+ }),
+ create: (function(path, mode) {
+ mode = mode !== undefined ? mode : 438;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0)
+ }),
+ mkdir: (function(path, mode) {
+ mode = mode !== undefined ? mode : 511;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0)
+ }),
+ mkdev: (function(path, mode, dev) {
+ if (typeof dev === "undefined") {
+ dev = mode;
+ mode = 438
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev)
+ }),
+ symlink: (function(oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ var lookup = FS.lookupPath(newpath, {
+ parent: true
+ });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath)
+ }),
+ rename: (function(old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ var lookup,
+ old_dir,
+ new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, {
+ parent: true
+ });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, {
+ parent: true
+ });
+ new_dir = lookup.node
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ }
+ if (!old_dir || !new_dir)
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV)
+ }
+ var old_node = FS.lookupNode(old_dir, old_name);
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== ".") {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== ".") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
+ }
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name)
+ } catch (e) {}
+ if (old_node === new_node) {
+ return
+ }
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ }
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, "w");
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ }
+ try {
+ if (FS.trackingDelegate["willMovePath"]) {
+ FS.trackingDelegate["willMovePath"](old_path, new_path)
+ }
+ } catch (e) {
+ console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message)
+ }
+ FS.hashRemoveNode(old_node);
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name)
+ } catch (e) {
+ throw e
+ } finally {
+ FS.hashAddNode(old_node)
+ }
+ try {
+ if (FS.trackingDelegate["onMovePath"])
+ FS.trackingDelegate["onMovePath"](old_path, new_path)
+ } catch (e) {
+ console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message)
+ }
+ }),
+ rmdir: (function(path) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ }
+ try {
+ if (FS.trackingDelegate["willDeletePath"]) {
+ FS.trackingDelegate["willDeletePath"](path)
+ }
+ } catch (e) {
+ console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message)
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate["onDeletePath"])
+ FS.trackingDelegate["onDeletePath"](path)
+ } catch (e) {
+ console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message)
+ }
+ }),
+ readdir: (function(path) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
+ }
+ return node.node_ops.readdir(node)
+ }),
+ unlink: (function(path) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ if (err === ERRNO_CODES.EISDIR)
+ err = ERRNO_CODES.EPERM;
+ throw new FS.ErrnoError(err)
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
+ }
+ try {
+ if (FS.trackingDelegate["willDeletePath"]) {
+ FS.trackingDelegate["willDeletePath"](path)
+ }
+ } catch (e) {
+ console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message)
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate["onDeletePath"])
+ FS.trackingDelegate["onDeletePath"](path)
+ } catch (e) {
+ console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message)
+ }
+ }),
+ readlink: (function(path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))
+ }),
+ stat: (function(path, dontFollow) {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ return node.node_ops.getattr(node)
+ }),
+ lstat: (function(path) {
+ return FS.stat(path, true)
+ }),
+ chmod: (function(path, mode, dontFollow) {
+ var node;
+ if (typeof path === "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ node.node_ops.setattr(node, {
+ mode: mode & 4095 | node.mode & ~4095,
+ timestamp: Date.now()
+ })
+ }),
+ lchmod: (function(path, mode) {
+ FS.chmod(path, mode, true)
+ }),
+ fchmod: (function(fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ FS.chmod(stream.node, mode)
+ }),
+ chown: (function(path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ })
+ }),
+ lchown: (function(path, uid, gid) {
+ FS.chown(path, uid, gid, true)
+ }),
+ fchown: (function(fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ FS.chown(stream.node, uid, gid)
+ }),
+ truncate: (function(path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var node;
+ if (typeof path === "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM)
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var err = FS.nodePermissions(node, "w");
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ })
+ }),
+ ftruncate: (function(fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ FS.truncate(stream.node, len)
+ }),
+ utime: (function(path, atime, mtime) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ })
+ }),
+ open: (function(path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === "undefined" ? 438 : mode;
+ if (flags & 64) {
+ mode = mode & 4095 | 32768
+ } else {
+ mode = 0
+ }
+ var node;
+ if (typeof path === "object") {
+ node = path
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node
+ } catch (e) {}
+ }
+ var created = false;
+ if (flags & 64) {
+ if (node) {
+ if (flags & 128) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST)
+ }
+ } else {
+ node = FS.mknod(path, mode, 0);
+ created = true
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
+ }
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512
+ }
+ if (flags & 65536 && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
+ }
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ }
+ if (flags & 512) {
+ FS.truncate(node, 0)
+ }
+ flags &= ~(128 | 512);
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node),
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream)
+ }
+ if (Module["logReadFiles"] && !(flags & 1)) {
+ if (!FS.readFiles)
+ FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module["printErr"]("read file: " + path)
+ }
+ }
+ try {
+ if (FS.trackingDelegate["onOpenFile"]) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE
+ }
+ FS.trackingDelegate["onOpenFile"](path, trackingFlags)
+ }
+ } catch (e) {
+ console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message)
+ }
+ return stream
+ }),
+ close: (function(stream) {
+ if (stream.getdents)
+ stream.getdents = null;
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream)
+ }
+ } catch (e) {
+ throw e
+ } finally {
+ FS.closeStream(stream.fd)
+ }
+ }),
+ llseek: (function(stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position
+ }),
+ read: (function(stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ var seeking = true;
+ if (typeof position === "undefined") {
+ position = stream.position;
+ seeking = false
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking)
+ stream.position += bytesRead;
+ return bytesRead
+ }),
+ write: (function(stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ if (stream.flags & 1024) {
+ FS.llseek(stream, 0, 2)
+ }
+ var seeking = true;
+ if (typeof position === "undefined") {
+ position = stream.position;
+ seeking = false
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking)
+ stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate["onWriteToFile"])
+ FS.trackingDelegate["onWriteToFile"](stream.path)
+ } catch (e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message)
+ }
+ return bytesWritten
+ }),
+ allocate: (function(stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF)
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)
+ }
+ stream.stream_ops.allocate(stream, offset, length)
+ }),
+ mmap: (function(stream, buffer, offset, length, position, prot, flags) {
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES)
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags)
+ }),
+ msync: (function(stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)
+ }),
+ munmap: (function(stream) {
+ return 0
+ }),
+ ioctl: (function(stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg)
+ }),
+ readFile: (function(path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || "r";
+ opts.encoding = opts.encoding || "binary";
+ if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"')
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === "utf8") {
+ ret = UTF8ArrayToString(buf, 0)
+ } else if (opts.encoding === "binary") {
+ ret = buf
+ }
+ FS.close(stream);
+ return ret
+ }),
+ writeFile: (function(path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || "w";
+ opts.encoding = opts.encoding || "utf8";
+ if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"')
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === "utf8") {
+ var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn)
+ } else if (opts.encoding === "binary") {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn)
+ }
+ FS.close(stream)
+ }),
+ cwd: (function() {
+ return FS.currentPath
+ }),
+ chdir: (function(path) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
+ }
+ var err = FS.nodePermissions(lookup.node, "x");
+ if (err) {
+ throw new FS.ErrnoError(err)
+ }
+ FS.currentPath = lookup.path
+ }),
+ createDefaultDirectories: (function() {
+ FS.mkdir("/tmp");
+ FS.mkdir("/home");
+ FS.mkdir("/home/web_user")
+ }),
+ createDefaultDevices: (function() {
+ FS.mkdir("/dev");
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: (function() {
+ return 0
+ }),
+ write: (function(stream, buffer, offset, length, pos) {
+ return length
+ })
+ });
+ FS.mkdev("/dev/null", FS.makedev(1, 3));
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev("/dev/tty", FS.makedev(5, 0));
+ FS.mkdev("/dev/tty1", FS.makedev(6, 0));
+ var random_device;
+ if (typeof crypto !== "undefined") {
+ var randomBuffer = new Uint8Array(1);
+ random_device = (function() {
+ crypto.getRandomValues(randomBuffer);
+ return randomBuffer[0]
+ })
+ } else if (ENVIRONMENT_IS_NODE) {
+ random_device = (function() {
+ return require("crypto").randomBytes(1)[0]
+ })
+ } else {
+ random_device = (function() {
+ return Math.random() * 256 | 0
+ })
+ }
+ FS.createDevice("/dev", "random", random_device);
+ FS.createDevice("/dev", "urandom", random_device);
+ FS.mkdir("/dev/shm");
+ FS.mkdir("/dev/shm/tmp")
+ }),
+ createSpecialDirectories: (function() {
+ FS.mkdir("/proc");
+ FS.mkdir("/proc/self");
+ FS.mkdir("/proc/self/fd");
+ FS.mount({
+ mount: (function() {
+ var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);
+ node.node_ops = {
+ lookup: (function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream)
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: {
+ mountpoint: "fake"
+ },
+ node_ops: {
+ readlink: (function() {
+ return stream.path
+ })
+ }
+ };
+ ret.parent = ret;
+ return ret
+ })
+ };
+ return node
+ })
+ }, {}, "/proc/self/fd")
+ }),
+ createStandardStreams: (function() {
+ if (Module["stdin"]) {
+ FS.createDevice("/dev", "stdin", Module["stdin"])
+ } else {
+ FS.symlink("/dev/tty", "/dev/stdin")
+ }
+ if (Module["stdout"]) {
+ FS.createDevice("/dev", "stdout", null, Module["stdout"])
+ } else {
+ FS.symlink("/dev/tty", "/dev/stdout")
+ }
+ if (Module["stderr"]) {
+ FS.createDevice("/dev", "stderr", null, Module["stderr"])
+ } else {
+ FS.symlink("/dev/tty1", "/dev/stderr")
+ }
+ var stdin = FS.open("/dev/stdin", "r");
+ assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")");
+ var stdout = FS.open("/dev/stdout", "w");
+ assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")");
+ var stderr = FS.open("/dev/stderr", "w");
+ assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")")
+ }),
+ ensureErrnoError: (function() {
+ if (FS.ErrnoError)
+ return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ this.node = node;
+ this.setErrno = (function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break
+ }
+ }
+ });
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno]
+ };
+ FS.ErrnoError.prototype = new Error;
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ [ERRNO_CODES.ENOENT].forEach((function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = ""
+ }))
+ }),
+ staticInit: (function() {
+ FS.ensureErrnoError();
+ FS.nameTable = new Array(4096);
+ FS.mount(MEMFS, {}, "/");
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+ FS.filesystems = {
+ "MEMFS": MEMFS,
+ "IDBFS": IDBFS,
+ "NODEFS": NODEFS,
+ "WORKERFS": WORKERFS
+ }
+ }),
+ init: (function(input, output, error) {
+ assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
+ FS.init.initialized = true;
+ FS.ensureErrnoError();
+ Module["stdin"] = input || Module["stdin"];
+ Module["stdout"] = output || Module["stdout"];
+ Module["stderr"] = error || Module["stderr"];
+ FS.createStandardStreams()
+ }),
+ quit: (function() {
+ FS.init.initialized = false;
+ var fflush = Module["_fflush"];
+ if (fflush)
+ fflush(0);
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue
+ }
+ FS.close(stream)
+ }
+ }),
+ getMode: (function(canRead, canWrite) {
+ var mode = 0;
+ if (canRead)
+ mode |= 292 | 73;
+ if (canWrite)
+ mode |= 146;
+ return mode
+ }),
+ joinPath: (function(parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == "/")
+ path = path.substr(1);
+ return path
+ }),
+ absolutePath: (function(relative, base) {
+ return PATH.resolve(base, relative)
+ }),
+ standardizePath: (function(path) {
+ return PATH.normalize(path)
+ }),
+ findObject: (function(path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object
+ } else {
+ ___setErrNo(ret.error);
+ return null
+ }
+ }),
+ analyzePath: (function(path, dontResolveLastLink) {
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontResolveLastLink
+ });
+ path = lookup.path
+ } catch (e) {}
+ var ret = {
+ isRoot: false,
+ exists: false,
+ error: 0,
+ name: null,
+ path: null,
+ object: null,
+ parentExists: false,
+ parentPath: null,
+ parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, {
+ follow: !dontResolveLastLink
+ });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === "/"
+ } catch (e) {
+ ret.error = e.errno
+ }
+ return ret
+ }),
+ createFolder: (function(parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode)
+ }),
+ createPath: (function(parent, path, canRead, canWrite) {
+ parent = typeof parent === "string" ? parent : FS.getPath(parent);
+ var parts = path.split("/").reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part)
+ continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current)
+ } catch (e) {}
+ parent = current
+ }
+ return current
+ }),
+ createFile: (function(parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode)
+ }),
+ createDataFile: (function(parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === "string") {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i)
+ arr[i] = data.charCodeAt(i);
+ data = arr
+ }
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, "w");
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode)
+ }
+ return node
+ }),
+ createDevice: (function(parent, name, input, output) {
+ var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major)
+ FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ FS.registerDevice(dev, {
+ open: (function(stream) {
+ stream.seekable = false
+ }),
+ close: (function(stream) {
+ if (output && output.buffer && output.buffer.length) {
+ output(10)
+ }
+ }),
+ read: (function(stream, buffer, offset, length, pos) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input()
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
+ }
+ if (result === null || result === undefined)
+ break;
+ bytesRead++;
+ buffer[offset + i] = result
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now()
+ }
+ return bytesRead
+ }),
+ write: (function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset + i])
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now()
+ }
+ return i
+ })
+ });
+ return FS.mkdev(path, mode, dev)
+ }),
+ createLink: (function(parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path)
+ }),
+ forceLoadFile: (function(obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents)
+ return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== "undefined") {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")
+ } else if (Module["read"]) {
+ try {
+ obj.contents = intArrayFromString(Module["read"](obj.url), true);
+ obj.usedBytes = obj.contents.length
+ } catch (e) {
+ success = false
+ }
+ } else {
+ throw new Error("Cannot load without read() or XMLHttpRequest.")
+ }
+ if (!success)
+ ___setErrNo(ERRNO_CODES.EIO);
+ return success
+ }),
+ createLazyFile: (function(parent, name, url, canRead, canWrite) {
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length - 1 || idx < 0) {
+ return undefined
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = idx / this.chunkSize | 0;
+ return this.getter(chunkNum)[chunkOffset]
+ };
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter
+ };
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ var xhr = new XMLHttpRequest;
+ xhr.open("HEAD", url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304))
+ throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var chunkSize = 1024 * 1024;
+ if (!hasByteServing)
+ chunkSize = datalength;
+ var doXHR = (function(from, to) {
+ if (from > to)
+ throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength - 1)
+ throw new Error("only " + datalength + " bytes available! programmer error!");
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, false);
+ if (datalength !== chunkSize)
+ xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+ if (typeof Uint8Array != "undefined")
+ xhr.responseType = "arraybuffer";
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType("text/plain; charset=x-user-defined")
+ }
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304))
+ throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || [])
+ } else {
+ return intArrayFromString(xhr.responseText || "", true)
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter((function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum + 1) * chunkSize - 1;
+ end = Math.min(end, datalength - 1);
+ if (typeof lazyArray.chunks[chunkNum] === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end)
+ }
+ if (typeof lazyArray.chunks[chunkNum] === "undefined")
+ throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum]
+ }));
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true
+ };
+ if (typeof XMLHttpRequest !== "undefined") {
+ if (!ENVIRONMENT_IS_WORKER)
+ throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
+ var lazyArray = new LazyUint8Array;
+ Object.defineProperty(lazyArray, "length", {
+ get: (function() {
+ if (!this.lengthKnown) {
+ this.cacheLength()
+ }
+ return this._length
+ })
+ });
+ Object.defineProperty(lazyArray, "chunkSize", {
+ get: (function() {
+ if (!this.lengthKnown) {
+ this.cacheLength()
+ }
+ return this._chunkSize
+ })
+ });
+ var properties = {
+ isDevice: false,
+ contents: lazyArray
+ }
+ } else {
+ var properties = {
+ isDevice: false,
+ url: url
+ }
+ }
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ if (properties.contents) {
+ node.contents = properties.contents
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url
+ }
+ Object.defineProperty(node, "usedBytes", {
+ get: (function() {
+ return this.contents.length
+ })
+ });
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach((function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ return fn.apply(null, arguments)
+ }
+ }));
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO)
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) {
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i]
+ }
+ } else {
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents.get(position + i)
+ }
+ }
+ return size
+ };
+ node.stream_ops = stream_ops;
+ return node
+ }),
+ createPreloadedFile: (function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init();
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency("cp " + fullname);
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish)
+ preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)
+ }
+ if (onload)
+ onload();
+ removeRunDependency(dep)
+ }
+ var handled = false;
+ Module["preloadPlugins"].forEach((function(plugin) {
+ if (handled)
+ return;
+ if (plugin["canHandle"](fullname)) {
+ plugin["handle"](byteArray, fullname, finish, (function() {
+ if (onerror)
+ onerror();
+ removeRunDependency(dep)
+ }));
+ handled = true
+ }
+ }));
+ if (!handled)
+ finish(byteArray)
+ }
+ addRunDependency(dep);
+ if (typeof url == "string") {
+ Browser.asyncLoad(url, (function(byteArray) {
+ processData(byteArray)
+ }), onerror)
+ } else {
+ processData(url)
+ }
+ }),
+ indexedDB: (function() {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
+ }),
+ DB_NAME: (function() {
+ return "EM_FS_" + window.location.pathname
+ }),
+ DB_VERSION: 20,
+ DB_STORE_NAME: "FILE_DATA",
+ saveFilesToDB: (function(paths, onload, onerror) {
+ onload = onload || (function() {});
+ onerror = onerror || (function() {});
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION)
+ } catch (e) {
+ return onerror(e)
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log("creating db");
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME)
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0,
+ fail = 0,
+ total = paths.length;
+ function finish() {
+ if (fail == 0)
+ onload();
+ else
+ onerror()
+ }
+ paths.forEach((function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() {
+ ok++;
+ if (ok + fail == total)
+ finish()
+ };
+ putRequest.onerror = function putRequest_onerror() {
+ fail++;
+ if (ok + fail == total)
+ finish()
+ }
+ }));
+ transaction.onerror = onerror
+ };
+ openRequest.onerror = onerror
+ }),
+ loadFilesFromDB: (function(paths, onload, onerror) {
+ onload = onload || (function() {});
+ onerror = onerror || (function() {});
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION)
+ } catch (e) {
+ return onerror(e)
+ }
+ openRequest.onupgradeneeded = onerror;
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], "readonly")
+ } catch (e) {
+ onerror(e);
+ return
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0,
+ fail = 0,
+ total = paths.length;
+ function finish() {
+ if (fail == 0)
+ onload();
+ else
+ onerror()
+ }
+ paths.forEach((function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path)
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total)
+ finish()
+ };
+ getRequest.onerror = function getRequest_onerror() {
+ fail++;
+ if (ok + fail == total)
+ finish()
+ }
+ }));
+ transaction.onerror = onerror
+ };
+ openRequest.onerror = onerror
+ })
+};
+var PATH = {
+ splitPath: (function(filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1)
+ }),
+ normalizeArray: (function(parts, allowAboveRoot) {
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === ".") {
+ parts.splice(i, 1)
+ } else if (last === "..") {
+ parts.splice(i, 1);
+ up++
+ } else if (up) {
+ parts.splice(i, 1);
+ up--
+ }
+ }
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift("..")
+ }
+ }
+ return parts
+ }),
+ normalize: (function(path) {
+ var isAbsolute = path.charAt(0) === "/",
+ trailingSlash = path.substr(-1) === "/";
+ path = PATH.normalizeArray(path.split("/").filter((function(p) {
+ return !!p
+ })), !isAbsolute).join("/");
+ if (!path && !isAbsolute) {
+ path = "."
+ }
+ if (path && trailingSlash) {
+ path += "/"
+ }
+ return (isAbsolute ? "/" : "") + path
+ }),
+ dirname: (function(path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ return "."
+ }
+ if (dir) {
+ dir = dir.substr(0, dir.length - 1)
+ }
+ return root + dir
+ }),
+ basename: (function(path) {
+ if (path === "/")
+ return "/";
+ var lastSlash = path.lastIndexOf("/");
+ if (lastSlash === -1)
+ return path;
+ return path.substr(lastSlash + 1)
+ }),
+ extname: (function(path) {
+ return PATH.splitPath(path)[3]
+ }),
+ join: (function() {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join("/"))
+ }),
+ join2: (function(l, r) {
+ return PATH.normalize(l + "/" + r)
+ }),
+ resolve: (function() {
+ var resolvedPath = "",
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = i >= 0 ? arguments[i] : FS.cwd();
+ if (typeof path !== "string") {
+ throw new TypeError("Arguments to path.resolve must be strings")
+ } else if (!path) {
+ return ""
+ }
+ resolvedPath = path + "/" + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === "/"
+ }
+ resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((function(p) {
+ return !!p
+ })), !resolvedAbsolute).join("/");
+ return (resolvedAbsolute ? "/" : "") + resolvedPath || "."
+ }),
+ relative: (function(from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== "")
+ break
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== "")
+ break
+ }
+ if (start > end)
+ return [];
+ return arr.slice(start, end - start + 1)
+ }
+ var fromParts = trim(from.split("/"));
+ var toParts = trim(to.split("/"));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push("..")
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join("/")
+ })
+};
+function _emscripten_set_main_loop_timing(mode, value) {
+ Browser.mainLoop.timingMode = mode;
+ Browser.mainLoop.timingValue = value;
+ if (!Browser.mainLoop.func) {
+ return 1
+ }
+ if (mode == 0) {
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {
+ setTimeout(Browser.mainLoop.runner, value)
+ };
+ Browser.mainLoop.method = "timeout"
+ } else if (mode == 1) {
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {
+ Browser.requestAnimationFrame(Browser.mainLoop.runner)
+ };
+ Browser.mainLoop.method = "rAF"
+ } else if (mode == 2) {
+ if (!window["setImmediate"]) {
+ var setImmediates = [];
+ var emscriptenMainLoopMessageId = "__emcc";
+ function Browser_setImmediate_messageHandler(event) {
+ if (event.source === window && event.data === emscriptenMainLoopMessageId) {
+ event.stopPropagation();
+ setImmediates.shift()()
+ }
+ }
+ window.addEventListener("message", Browser_setImmediate_messageHandler, true);
+ window["setImmediate"] = function Browser_emulated_setImmediate(func) {
+ setImmediates.push(func);
+ window.postMessage(emscriptenMainLoopMessageId, "*")
+ }
+ }
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
+ window["setImmediate"](Browser.mainLoop.runner)
+ };
+ Browser.mainLoop.method = "immediate"
+ }
+ return 0
+}
+function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) {
+ Module["noExitRuntime"] = true;
+ assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");
+ Browser.mainLoop.func = func;
+ Browser.mainLoop.arg = arg;
+ var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
+ Browser.mainLoop.runner = function Browser_mainLoop_runner() {
+ if (ABORT)
+ return;
+ if (Browser.mainLoop.queue.length > 0) {
+ var start = Date.now();
+ var blocker = Browser.mainLoop.queue.shift();
+ blocker.func(blocker.arg);
+ if (Browser.mainLoop.remainingBlockers) {
+ var remaining = Browser.mainLoop.remainingBlockers;
+ var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
+ if (blocker.counted) {
+ Browser.mainLoop.remainingBlockers = next
+ } else {
+ next = next + .5;
+ Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9
+ }
+ }
+ console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms");
+ Browser.mainLoop.updateStatus();
+ setTimeout(Browser.mainLoop.runner, 0);
+ return
+ }
+ if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop)
+ return;
+ Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
+ if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
+ Browser.mainLoop.scheduler();
+ return
+ }
+ if (Browser.mainLoop.method === "timeout" && Module.ctx) {
+ Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");
+ Browser.mainLoop.method = ""
+ }
+ Browser.mainLoop.runIter((function() {
+ if (typeof arg !== "undefined") {
+ Runtime.dynCall("vi", func, [arg])
+ } else {
+ Runtime.dynCall("v", func)
+ }
+ }));
+ if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop)
+ return;
+ if (typeof SDL === "object" && SDL.audio && SDL.audio.queueNewAudioData)
+ SDL.audio.queueNewAudioData();
+ Browser.mainLoop.scheduler()
+ };
+ if (!noSetTiming) {
+ if (fps && fps > 0)
+ _emscripten_set_main_loop_timing(0, 1e3 / fps);
+ else
+ _emscripten_set_main_loop_timing(1, 1);
+ Browser.mainLoop.scheduler()
+ }
+ if (simulateInfiniteLoop) {
+ throw "SimulateInfiniteLoop"
+ }
+}
+var Browser = {
+ mainLoop: {
+ scheduler: null,
+ method: "",
+ currentlyRunningMainloop: 0,
+ func: null,
+ arg: 0,
+ timingMode: 0,
+ timingValue: 0,
+ currentFrameNumber: 0,
+ queue: [],
+ pause: (function() {
+ Browser.mainLoop.scheduler = null;
+ Browser.mainLoop.currentlyRunningMainloop++
+ }),
+ resume: (function() {
+ Browser.mainLoop.currentlyRunningMainloop++;
+ var timingMode = Browser.mainLoop.timingMode;
+ var timingValue = Browser.mainLoop.timingValue;
+ var func = Browser.mainLoop.func;
+ Browser.mainLoop.func = null;
+ _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true);
+ _emscripten_set_main_loop_timing(timingMode, timingValue);
+ Browser.mainLoop.scheduler()
+ }),
+ updateStatus: (function() {
+ if (Module["setStatus"]) {
+ var message = Module["statusMessage"] || "Please wait...";
+ var remaining = Browser.mainLoop.remainingBlockers;
+ var expected = Browser.mainLoop.expectedBlockers;
+ if (remaining) {
+ if (remaining < expected) {
+ Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")")
+ } else {
+ Module["setStatus"](message)
+ }
+ } else {
+ Module["setStatus"]("")
+ }
+ }
+ }),
+ runIter: (function(func) {
+ if (ABORT)
+ return;
+ if (Module["preMainLoop"]) {
+ var preRet = Module["preMainLoop"]();
+ if (preRet === false) {
+ return
+ }
+ }
+ try {
+ func()
+ } catch (e) {
+ if (e instanceof ExitStatus) {
+ return
+ } else {
+ if (e && typeof e === "object" && e.stack)
+ Module.printErr("exception thrown: " + [e, e.stack]);
+ throw e
+ }
+ }
+ if (Module["postMainLoop"])
+ Module["postMainLoop"]()
+ })
+ },
+ isFullScreen: false,
+ pointerLock: false,
+ moduleContextCreatedCallbacks: [],
+ workers: [],
+ init: (function() {
+ if (!Module["preloadPlugins"])
+ Module["preloadPlugins"] = [];
+ if (Browser.initted)
+ return;
+ Browser.initted = true;
+ try {
+ new Blob;
+ Browser.hasBlobConstructor = true
+ } catch (e) {
+ Browser.hasBlobConstructor = false;
+ console.log("warning: no blob constructor, cannot create blobs with mimetypes")
+ }
+ Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null;
+ Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : undefined;
+ if (!Module.noImageDecoding && typeof Browser.URLObject === "undefined") {
+ console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
+ Module.noImageDecoding = true
+ }
+ var imagePlugin = {};
+ imagePlugin["canHandle"] = function imagePlugin_canHandle(name) {
+ return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name)
+ };
+ imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) {
+ var b = null;
+ if (Browser.hasBlobConstructor) {
+ try {
+ b = new Blob([byteArray], {
+ type: Browser.getMimetype(name)
+ });
+ if (b.size !== byteArray.length) {
+ b = new Blob([(new Uint8Array(byteArray)).buffer], {
+ type: Browser.getMimetype(name)
+ })
+ }
+ } catch (e) {
+ Runtime.warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder")
+ }
+ }
+ if (!b) {
+ var bb = new Browser.BlobBuilder;
+ bb.append((new Uint8Array(byteArray)).buffer);
+ b = bb.getBlob()
+ }
+ var url = Browser.URLObject.createObjectURL(b);
+ var img = new Image;
+ img.onload = function img_onload() {
+ assert(img.complete, "Image " + name + " could not be decoded");
+ var canvas = document.createElement("canvas");
+ canvas.width = img.width;
+ canvas.height = img.height;
+ var ctx = canvas.getContext("2d");
+ ctx.drawImage(img, 0, 0);
+ Module["preloadedImages"][name] = canvas;
+ Browser.URLObject.revokeObjectURL(url);
+ if (onload)
+ onload(byteArray)
+ };
+ img.onerror = function img_onerror(event) {
+ console.log("Image " + url + " could not be decoded");
+ if (onerror)
+ onerror()
+ };
+ img.src = url
+ };
+ Module["preloadPlugins"].push(imagePlugin);
+ var audioPlugin = {};
+ audioPlugin["canHandle"] = function audioPlugin_canHandle(name) {
+ return !Module.noAudioDecoding && name.substr(-4) in {
+ ".ogg": 1,
+ ".wav": 1,
+ ".mp3": 1
+ }
+ };
+ audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) {
+ var done = false;
+ function finish(audio) {
+ if (done)
+ return;
+ done = true;
+ Module["preloadedAudios"][name] = audio;
+ if (onload)
+ onload(byteArray)
+ }
+ function fail() {
+ if (done)
+ return;
+ done = true;
+ Module["preloadedAudios"][name] = new Audio;
+ if (onerror)
+ onerror()
+ }
+ if (Browser.hasBlobConstructor) {
+ try {
+ var b = new Blob([byteArray], {
+ type: Browser.getMimetype(name)
+ })
+ } catch (e) {
+ return fail()
+ }
+ var url = Browser.URLObject.createObjectURL(b);
+ var audio = new Audio;
+ audio.addEventListener("canplaythrough", (function() {
+ finish(audio)
+ }), false);
+ audio.onerror = function audio_onerror(event) {
+ if (done)
+ return;
+ console.log("warning: browser could not fully decode audio " + name + ", trying slower base64 approach");
+ function encode64(data) {
+ var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var PAD = "=";
+ var ret = "";
+ var leftchar = 0;
+ var leftbits = 0;
+ for (var i = 0; i < data.length; i++) {
+ leftchar = leftchar << 8 | data[i];
+ leftbits += 8;
+ while (leftbits >= 6) {
+ var curr = leftchar >> leftbits - 6 & 63;
+ leftbits -= 6;
+ ret += BASE[curr]
+ }
+ }
+ if (leftbits == 2) {
+ ret += BASE[(leftchar & 3) << 4];
+ ret += PAD + PAD
+ } else if (leftbits == 4) {
+ ret += BASE[(leftchar & 15) << 2];
+ ret += PAD
+ }
+ return ret
+ }
+ audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray);
+ finish(audio)
+ };
+ audio.src = url;
+ Browser.safeSetTimeout((function() {
+ finish(audio)
+ }), 1e4)
+ } else {
+ return fail()
+ }
+ };
+ Module["preloadPlugins"].push(audioPlugin);
+ var canvas = Module["canvas"];
+ function pointerLockChange() {
+ Browser.pointerLock = document["pointerLockElement"] === canvas || document["mozPointerLockElement"] === canvas || document["webkitPointerLockElement"] === canvas || document["msPointerLockElement"] === canvas
+ }
+ if (canvas) {
+ canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (function() {});
+ canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (function() {});
+ canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
+ document.addEventListener("pointerlockchange", pointerLockChange, false);
+ document.addEventListener("mozpointerlockchange", pointerLockChange, false);
+ document.addEventListener("webkitpointerlockchange", pointerLockChange, false);
+ document.addEventListener("mspointerlockchange", pointerLockChange, false);
+ if (Module["elementPointerLock"]) {
+ canvas.addEventListener("click", (function(ev) {
+ if (!Browser.pointerLock && canvas.requestPointerLock) {
+ canvas.requestPointerLock();
+ ev.preventDefault()
+ }
+ }), false)
+ }
+ }
+ }),
+ createContext: (function(canvas, useWebGL, setInModule, webGLContextAttributes) {
+ if (useWebGL && Module.ctx && canvas == Module.canvas)
+ return Module.ctx;
+ var ctx;
+ var contextHandle;
+ if (useWebGL) {
+ var contextAttributes = {
+ antialias: false,
+ alpha: false
+ };
+ if (webGLContextAttributes) {
+ for (var attribute in webGLContextAttributes) {
+ contextAttributes[attribute] = webGLContextAttributes[attribute]
+ }
+ }
+ contextHandle = GL.createContext(canvas, contextAttributes);
+ if (contextHandle) {
+ ctx = GL.getContext(contextHandle).GLctx
+ }
+ canvas.style.backgroundColor = "black"
+ } else {
+ ctx = canvas.getContext("2d")
+ }
+ if (!ctx)
+ return null;
+ if (setInModule) {
+ if (!useWebGL)
+ assert(typeof GLctx === "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it");
+ Module.ctx = ctx;
+ if (useWebGL)
+ GL.makeContextCurrent(contextHandle);
+ Module.useWebGL = useWebGL;
+ Browser.moduleContextCreatedCallbacks.forEach((function(callback) {
+ callback()
+ }));
+ Browser.init()
+ }
+ return ctx
+ }),
+ destroyContext: (function(canvas, useWebGL, setInModule) {}),
+ fullScreenHandlersInstalled: false,
+ lockPointer: undefined,
+ resizeCanvas: undefined,
+ requestFullScreen: (function(lockPointer, resizeCanvas, vrDevice) {
+ Browser.lockPointer = lockPointer;
+ Browser.resizeCanvas = resizeCanvas;
+ Browser.vrDevice = vrDevice;
+ if (typeof Browser.lockPointer === "undefined")
+ Browser.lockPointer = true;
+ if (typeof Browser.resizeCanvas === "undefined")
+ Browser.resizeCanvas = false;
+ if (typeof Browser.vrDevice === "undefined")
+ Browser.vrDevice = null;
+ var canvas = Module["canvas"];
+ function fullScreenChange() {
+ Browser.isFullScreen = false;
+ var canvasContainer = canvas.parentNode;
+ if ((document["webkitFullScreenElement"] || document["webkitFullscreenElement"] || document["mozFullScreenElement"] || document["mozFullscreenElement"] || document["fullScreenElement"] || document["fullscreenElement"] || document["msFullScreenElement"] || document["msFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) {
+ canvas.cancelFullScreen = document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["webkitCancelFullScreen"] || document["msExitFullscreen"] || document["exitFullscreen"] || (function() {});
+ canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
+ if (Browser.lockPointer)
+ canvas.requestPointerLock();
+ Browser.isFullScreen = true;
+ if (Browser.resizeCanvas)
+ Browser.setFullScreenCanvasSize()
+ } else {
+ canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
+ canvasContainer.parentNode.removeChild(canvasContainer);
+ if (Browser.resizeCanvas)
+ Browser.setWindowedCanvasSize()
+ }
+ if (Module["onFullScreen"])
+ Module["onFullScreen"](Browser.isFullScreen);
+ Browser.updateCanvasDimensions(canvas)
+ }
+ if (!Browser.fullScreenHandlersInstalled) {
+ Browser.fullScreenHandlersInstalled = true;
+ document.addEventListener("fullscreenchange", fullScreenChange, false);
+ document.addEventListener("mozfullscreenchange", fullScreenChange, false);
+ document.addEventListener("webkitfullscreenchange", fullScreenChange, false);
+ document.addEventListener("MSFullscreenChange", fullScreenChange, false)
+ }
+ var canvasContainer = document.createElement("div");
+ canvas.parentNode.insertBefore(canvasContainer, canvas);
+ canvasContainer.appendChild(canvas);
+ canvasContainer.requestFullScreen = canvasContainer["requestFullScreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullScreen"] ? (function() {
+ canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])
+ }) : null);
+ if (vrDevice) {
+ canvasContainer.requestFullScreen({
+ vrDisplay: vrDevice
+ })
+ } else {
+ canvasContainer.requestFullScreen()
+ }
+ }),
+ nextRAF: 0,
+ fakeRequestAnimationFrame: (function(func) {
+ var now = Date.now();
+ if (Browser.nextRAF === 0) {
+ Browser.nextRAF = now + 1e3 / 60
+ } else {
+ while (now + 2 >= Browser.nextRAF) {
+ Browser.nextRAF += 1e3 / 60
+ }
+ }
+ var delay = Math.max(Browser.nextRAF - now, 0);
+ setTimeout(func, delay)
+ }),
+ requestAnimationFrame: function requestAnimationFrame(func) {
+ if (typeof window === "undefined") {
+ Browser.fakeRequestAnimationFrame(func)
+ } else {
+ if (!window.requestAnimationFrame) {
+ window.requestAnimationFrame = window["requestAnimationFrame"] || window["mozRequestAnimationFrame"] || window["webkitRequestAnimationFrame"] || window["msRequestAnimationFrame"] || window["oRequestAnimationFrame"] || Browser.fakeRequestAnimationFrame
+ }
+ window.requestAnimationFrame(func)
+ }
+ },
+ safeCallback: (function(func) {
+ return ( function() {
+ if (!ABORT)
+ return func.apply(null, arguments)
+ })
+ }),
+ allowAsyncCallbacks: true,
+ queuedAsyncCallbacks: [],
+ pauseAsyncCallbacks: (function() {
+ Browser.allowAsyncCallbacks = false
+ }),
+ resumeAsyncCallbacks: (function() {
+ Browser.allowAsyncCallbacks = true;
+ if (Browser.queuedAsyncCallbacks.length > 0) {
+ var callbacks = Browser.queuedAsyncCallbacks;
+ Browser.queuedAsyncCallbacks = [];
+ callbacks.forEach((function(func) {
+ func()
+ }))
+ }
+ }),
+ safeRequestAnimationFrame: (function(func) {
+ return Browser.requestAnimationFrame((function() {
+ if (ABORT)
+ return;
+ if (Browser.allowAsyncCallbacks) {
+ func()
+ } else {
+ Browser.queuedAsyncCallbacks.push(func)
+ }
+ }))
+ }),
+ safeSetTimeout: (function(func, timeout) {
+ Module["noExitRuntime"] = true;
+ return setTimeout((function() {
+ if (ABORT)
+ return;
+ if (Browser.allowAsyncCallbacks) {
+ func()
+ } else {
+ Browser.queuedAsyncCallbacks.push(func)
+ }
+ }), timeout)
+ }),
+ safeSetInterval: (function(func, timeout) {
+ Module["noExitRuntime"] = true;
+ return setInterval((function() {
+ if (ABORT)
+ return;
+ if (Browser.allowAsyncCallbacks) {
+ func()
+ }
+ }), timeout)
+ }),
+ getMimetype: (function(name) {
+ return {
+ "jpg": "image/jpeg",
+ "jpeg": "image/jpeg",
+ "png": "image/png",
+ "bmp": "image/bmp",
+ "ogg": "audio/ogg",
+ "wav": "audio/wav",
+ "mp3": "audio/mpeg"
+ }[name.substr(name.lastIndexOf(".") + 1)]
+ }),
+ getUserMedia: (function(func) {
+ if (!window.getUserMedia) {
+ window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"]
+ }
+ window.getUserMedia(func)
+ }),
+ getMovementX: (function(event) {
+ return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0
+ }),
+ getMovementY: (function(event) {
+ return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0
+ }),
+ getMouseWheelDelta: (function(event) {
+ var delta = 0;
+ switch (event.type) {
+ case "DOMMouseScroll":
+ delta = event.detail;
+ break;
+ case "mousewheel":
+ delta = event.wheelDelta;
+ break;
+ case "wheel":
+ delta = event["deltaY"];
+ break;
+ default:
+ throw "unrecognized mouse wheel event: " + event.type
+ }
+ return delta
+ }),
+ mouseX: 0,
+ mouseY: 0,
+ mouseMovementX: 0,
+ mouseMovementY: 0,
+ touches: {},
+ lastTouches: {},
+ calculateMouseEvent: (function(event) {
+ if (Browser.pointerLock) {
+ if (event.type != "mousemove" && "mozMovementX" in event) {
+ Browser.mouseMovementX = Browser.mouseMovementY = 0
+ } else {
+ Browser.mouseMovementX = Browser.getMovementX(event);
+ Browser.mouseMovementY = Browser.getMovementY(event)
+ }
+ if (typeof SDL != "undefined") {
+ Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
+ Browser.mouseY = SDL.mouseY + Browser.mouseMovementY
+ } else {
+ Browser.mouseX += Browser.mouseMovementX;
+ Browser.mouseY += Browser.mouseMovementY
+ }
+ } else {
+ var rect = Module["canvas"].getBoundingClientRect();
+ var cw = Module["canvas"].width;
+ var ch = Module["canvas"].height;
+ var scrollX = typeof window.scrollX !== "undefined" ? window.scrollX : window.pageXOffset;
+ var scrollY = typeof window.scrollY !== "undefined" ? window.scrollY : window.pageYOffset;
+ if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") {
+ var touch = event.touch;
+ if (touch === undefined) {
+ return
+ }
+ var adjustedX = touch.pageX - (scrollX + rect.left);
+ var adjustedY = touch.pageY - (scrollY + rect.top);
+ adjustedX = adjustedX * (cw / rect.width);
+ adjustedY = adjustedY * (ch / rect.height);
+ var coords = {
+ x: adjustedX,
+ y: adjustedY
+ };
+ if (event.type === "touchstart") {
+ Browser.lastTouches[touch.identifier] = coords;
+ Browser.touches[touch.identifier] = coords
+ } else if (event.type === "touchend" || event.type === "touchmove") {
+ var last = Browser.touches[touch.identifier];
+ if (!last)
+ last = coords;
+ Browser.lastTouches[touch.identifier] = last;
+ Browser.touches[touch.identifier] = coords
+ }
+ return
+ }
+ var x = event.pageX - (scrollX + rect.left);
+ var y = event.pageY - (scrollY + rect.top);
+ x = x * (cw / rect.width);
+ y = y * (ch / rect.height);
+ Browser.mouseMovementX = x - Browser.mouseX;
+ Browser.mouseMovementY = y - Browser.mouseY;
+ Browser.mouseX = x;
+ Browser.mouseY = y
+ }
+ }),
+ xhrLoad: (function(url, onload, onerror) {
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, true);
+ xhr.responseType = "arraybuffer";
+ xhr.onload = function xhr_onload() {
+ if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
+ onload(xhr.response)
+ } else {
+ onerror()
+ }
+ };
+ xhr.onerror = onerror;
+ xhr.send(null)
+ }),
+ asyncLoad: (function(url, onload, onerror, noRunDep) {
+ Browser.xhrLoad(url, (function(arrayBuffer) {
+ assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
+ onload(new Uint8Array(arrayBuffer));
+ if (!noRunDep)
+ removeRunDependency("al " + url)
+ }), (function(event) {
+ if (onerror) {
+ onerror()
+ } else {
+ throw 'Loading data file "' + url + '" failed.'
+ }
+ }));
+ if (!noRunDep)
+ addRunDependency("al " + url)
+ }),
+ resizeListeners: [],
+ updateResizeListeners: (function() {
+ var canvas = Module["canvas"];
+ Browser.resizeListeners.forEach((function(listener) {
+ listener(canvas.width, canvas.height)
+ }))
+ }),
+ setCanvasSize: (function(width, height, noUpdates) {
+ var canvas = Module["canvas"];
+ Browser.updateCanvasDimensions(canvas, width, height);
+ if (!noUpdates)
+ Browser.updateResizeListeners()
+ }),
+ windowedWidth: 0,
+ windowedHeight: 0,
+ setFullScreenCanvasSize: (function() {
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
+ flags = flags | 8388608;
+ HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags
+ }
+ Browser.updateResizeListeners()
+ }),
+ setWindowedCanvasSize: (function() {
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
+ flags = flags & ~8388608;
+ HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags
+ }
+ Browser.updateResizeListeners()
+ }),
+ updateCanvasDimensions: (function(canvas, wNative, hNative) {
+ if (wNative && hNative) {
+ canvas.widthNative = wNative;
+ canvas.heightNative = hNative
+ } else {
+ wNative = canvas.widthNative;
+ hNative = canvas.heightNative
+ }
+ var w = wNative;
+ var h = hNative;
+ if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) {
+ if (w / h < Module["forcedAspectRatio"]) {
+ w = Math.round(h * Module["forcedAspectRatio"])
+ } else {
+ h = Math.round(w / Module["forcedAspectRatio"])
+ }
+ }
+ if ((document["webkitFullScreenElement"] || document["webkitFullscreenElement"] || document["mozFullScreenElement"] || document["mozFullscreenElement"] || document["fullScreenElement"] || document["fullscreenElement"] || document["msFullScreenElement"] || document["msFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") {
+ var factor = Math.min(screen.width / w, screen.height / h);
+ w = Math.round(w * factor);
+ h = Math.round(h * factor)
+ }
+ if (Browser.resizeCanvas) {
+ if (canvas.width != w)
+ canvas.width = w;
+ if (canvas.height != h)
+ canvas.height = h;
+ if (typeof canvas.style != "undefined") {
+ canvas.style.removeProperty("width");
+ canvas.style.removeProperty("height")
+ }
+ } else {
+ if (canvas.width != wNative)
+ canvas.width = wNative;
+ if (canvas.height != hNative)
+ canvas.height = hNative;
+ if (typeof canvas.style != "undefined") {
+ if (w != wNative || h != hNative) {
+ canvas.style.setProperty("width", w + "px", "important");
+ canvas.style.setProperty("height", h + "px", "important")
+ } else {
+ canvas.style.removeProperty("width");
+ canvas.style.removeProperty("height")
+ }
+ }
+ }
+ }),
+ wgetRequests: {},
+ nextWgetRequestHandle: 0,
+ getNextWgetRequestHandle: (function() {
+ var handle = Browser.nextWgetRequestHandle;
+ Browser.nextWgetRequestHandle++;
+ return handle
+ })
+};
+var SYSCALLS = {
+ DEFAULT_POLLMASK: 5,
+ mappings: {},
+ umask: 511,
+ calculateAt: (function(dirfd, path) {
+ if (path[0] !== "/") {
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd()
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream)
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path
+ }
+ path = PATH.join2(dir, path)
+ }
+ return path
+ }),
+ doStat: (function(func, path, buf) {
+ try {
+ var stat = func(path)
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ return -ERRNO_CODES.ENOTDIR
+ }
+ throw e
+ }
+ HEAP32[buf >> 2] = stat.dev;
+ HEAP32[buf + 4 >> 2] = 0;
+ HEAP32[buf + 8 >> 2] = stat.ino;
+ HEAP32[buf + 12 >> 2] = stat.mode;
+ HEAP32[buf + 16 >> 2] = stat.nlink;
+ HEAP32[buf + 20 >> 2] = stat.uid;
+ HEAP32[buf + 24 >> 2] = stat.gid;
+ HEAP32[buf + 28 >> 2] = stat.rdev;
+ HEAP32[buf + 32 >> 2] = 0;
+ HEAP32[buf + 36 >> 2] = stat.size;
+ HEAP32[buf + 40 >> 2] = 4096;
+ HEAP32[buf + 44 >> 2] = stat.blocks;
+ HEAP32[buf + 48 >> 2] = stat.atime.getTime() / 1e3 | 0;
+ HEAP32[buf + 52 >> 2] = 0;
+ HEAP32[buf + 56 >> 2] = stat.mtime.getTime() / 1e3 | 0;
+ HEAP32[buf + 60 >> 2] = 0;
+ HEAP32[buf + 64 >> 2] = stat.ctime.getTime() / 1e3 | 0;
+ HEAP32[buf + 68 >> 2] = 0;
+ HEAP32[buf + 72 >> 2] = stat.ino;
+ return 0
+ }),
+ doMsync: (function(addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags)
+ }),
+ doMkdir: (function(path, mode) {
+ path = PATH.normalize(path);
+ if (path[path.length - 1] === "/")
+ path = path.substr(0, path.length - 1);
+ FS.mkdir(path, mode, 0);
+ return 0
+ }),
+ doMknod: (function(path, mode, dev) {
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default:
+ return -ERRNO_CODES.EINVAL
+ }
+ FS.mknod(path, mode, dev);
+ return 0
+ }),
+ doReadlink: (function(path, buf, bufsize) {
+ if (bufsize <= 0)
+ return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+ ret = ret.slice(0, Math.max(0, bufsize));
+ writeStringToMemory(ret, buf, true);
+ return ret.length
+ }),
+ doAccess: (function(path, amode) {
+ if (amode & ~7) {
+ return -ERRNO_CODES.EINVAL
+ }
+ var node;
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ node = lookup.node;
+ var perms = "";
+ if (amode & 4)
+ perms += "r";
+ if (amode & 2)
+ perms += "w";
+ if (amode & 1)
+ perms += "x";
+ if (perms && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES
+ }
+ return 0
+ }),
+ doDup: (function(path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest)
+ FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd
+ }),
+ doReadv: (function(stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[iov + i * 8 >> 2];
+ var len = HEAP32[iov + (i * 8 + 4) >> 2];
+ var curr = FS.read(stream, HEAP8, ptr, len, offset);
+ if (curr < 0)
+ return -1;
+ ret += curr;
+ if (curr < len)
+ break
+ }
+ return ret
+ }),
+ doWritev: (function(stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[iov + i * 8 >> 2];
+ var len = HEAP32[iov + (i * 8 + 4) >> 2];
+ var curr = FS.write(stream, HEAP8, ptr, len, offset);
+ if (curr < 0)
+ return -1;
+ ret += curr
+ }
+ return ret
+ }),
+ varargs: 0,
+ get: (function(varargs) {
+ SYSCALLS.varargs += 4;
+ var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
+ return ret
+ }),
+ getStr: (function() {
+ var ret = Pointer_stringify(SYSCALLS.get());
+ return ret
+ }),
+ getStreamFromFD: (function() {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream)
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream
+ }),
+ getSocketFromFD: (function() {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket)
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket
+ }),
+ getSocketAddress: (function(allowNull) {
+ var addrp = SYSCALLS.get(),
+ addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0)
+ return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno)
+ throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info
+ }),
+ get64: (function() {
+ var low = SYSCALLS.get(),
+ high = SYSCALLS.get();
+ if (low >= 0)
+ assert(high === 0);
+ else
+ assert(high === -1);
+ return low
+ }),
+ getZero: (function() {
+ assert(SYSCALLS.get() === 0)
+ })
+};
+function ___syscall6(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD();
+ FS.close(stream);
+ return 0
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+function _malloc(bytes) {
+ var ptr = Runtime.dynamicAlloc(bytes + 8);
+ return ptr + 8 & 4294967288
+}
+Module["_malloc"] = _malloc;
+function ___cxa_allocate_exception(size) {
+ return _malloc(size)
+}
+function ___syscall54(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(),
+ op = SYSCALLS.get();
+ switch (op) {
+ case 21505:
+ {
+ if (!stream.tty)
+ return -ERRNO_CODES.ENOTTY;
+ return 0
+ };
+ case 21506:
+ {
+ if (!stream.tty)
+ return -ERRNO_CODES.ENOTTY;
+ return 0
+ };
+ case 21519:
+ {
+ if (!stream.tty)
+ return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[argp >> 2] = 0;
+ return 0
+ };
+ case 21520:
+ {
+ if (!stream.tty)
+ return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL
+ };
+ case 21531:
+ {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp)
+ };
+ default:
+ abort("bad ioctl syscall " + op)
+ }
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+Module["_bitshift64Lshr"] = _bitshift64Lshr;
+var _BDtoIHigh = true;
+function _pthread_cleanup_push(routine, arg) {
+ __ATEXIT__.push((function() {
+ Runtime.dynCall("vi", routine, [arg])
+ }));
+ _pthread_cleanup_push.level = __ATEXIT__.length
+}
+function _pthread_cleanup_pop() {
+ assert(_pthread_cleanup_push.level == __ATEXIT__.length, "cannot pop if something else added meanwhile!");
+ __ATEXIT__.pop();
+ _pthread_cleanup_push.level = __ATEXIT__.length
+}
+function ___syscall5(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var pathname = SYSCALLS.getStr(),
+ flags = SYSCALLS.get(),
+ mode = SYSCALLS.get();
+ var stream = FS.open(pathname, flags, mode);
+ return stream.fd
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+function _emscripten_memcpy_big(dest, src, num) {
+ HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
+ return dest
+}
+Module["_memcpy"] = _memcpy;
+function _llvm_stackrestore(p) {
+ var self = _llvm_stacksave;
+ var ret = self.LLVM_SAVEDSTACKS[p];
+ self.LLVM_SAVEDSTACKS.splice(p, 1);
+ Runtime.stackRestore(ret)
+}
+function _sbrk(bytes) {
+ var self = _sbrk;
+ if (!self.called) {
+ DYNAMICTOP = alignMemoryPage(DYNAMICTOP);
+ self.called = true;
+ assert(Runtime.dynamicAlloc);
+ self.alloc = Runtime.dynamicAlloc;
+ Runtime.dynamicAlloc = (function() {
+ abort("cannot dynamically allocate, sbrk now has control")
+ })
+ }
+ var ret = DYNAMICTOP;
+ if (bytes != 0) {
+ var success = self.alloc(bytes);
+ if (!success)
+ return -1 >>> 0
+ }
+ return ret
+}
+function _llvm_stacksave() {
+ var self = _llvm_stacksave;
+ if (!self.LLVM_SAVEDSTACKS) {
+ self.LLVM_SAVEDSTACKS = []
+ }
+ self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());
+ return self.LLVM_SAVEDSTACKS.length - 1
+}
+Module["_memmove"] = _memmove;
+var _BItoD = true;
+function _time(ptr) {
+ var ret = Date.now() / 1e3 | 0;
+ if (ptr) {
+ HEAP32[ptr >> 2] = ret
+ }
+ return ret
+}
+function _pthread_self() {
+ return 0
+}
+function ___syscall140(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(),
+ offset_high = SYSCALLS.get(),
+ offset_low = SYSCALLS.get(),
+ result = SYSCALLS.get(),
+ whence = SYSCALLS.get();
+ var offset = offset_low;
+ assert(offset_high === 0);
+ FS.llseek(stream, offset, whence);
+ HEAP32[result >> 2] = stream.position;
+ if (stream.getdents && offset === 0 && whence === 0)
+ stream.getdents = null;
+ return 0
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+function ___syscall146(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(),
+ iov = SYSCALLS.get(),
+ iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt)
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+function ___syscall221(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(),
+ cmd = SYSCALLS.get();
+ switch (cmd) {
+ case 0:
+ {
+ var arg = SYSCALLS.get();
+ if (arg < 0) {
+ return -ERRNO_CODES.EINVAL
+ }
+ var newStream;
+ newStream = FS.open(stream.path, stream.flags, 0, arg);
+ return newStream.fd
+ };
+ case 1:
+ case 2:
+ return 0;
+ case 3:
+ return stream.flags;
+ case 4:
+ {
+ var arg = SYSCALLS.get();
+ stream.flags |= arg;
+ return 0
+ };
+ case 12:
+ case 12:
+ {
+ var arg = SYSCALLS.get();
+ var offset = 0;
+ HEAP16[arg + offset >> 1] = 2;
+ return 0
+ };
+ case 13:
+ case 14:
+ case 13:
+ case 14:
+ return 0;
+ case 16:
+ case 8:
+ return -ERRNO_CODES.EINVAL;
+ case 9:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ default:
+ {
+ return -ERRNO_CODES.EINVAL
+ }
+ }
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+function ___syscall145(which, varargs) {
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(),
+ iov = SYSCALLS.get(),
+ iovcnt = SYSCALLS.get();
+ return SYSCALLS.doReadv(stream, iov, iovcnt)
+ } catch (e) {
+ if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
+ abort(e);
+ return -e.errno
+ }
+}
+var ___dso_handle = allocate(1, "i32*", ALLOC_STATIC);
+Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) {
+ Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice)
+};
+Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) {
+ Browser.requestAnimationFrame(func)
+};
+Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) {
+ Browser.setCanvasSize(width, height, noUpdates)
+};
+Module["pauseMainLoop"] = function Module_pauseMainLoop() {
+ Browser.mainLoop.pause()
+};
+Module["resumeMainLoop"] = function Module_resumeMainLoop() {
+ Browser.mainLoop.resume()
+};
+Module["getUserMedia"] = function Module_getUserMedia() {
+ Browser.getUserMedia()
+};
+Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {
+ return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes)
+};
+FS.staticInit();
+__ATINIT__.unshift((function() {
+ if (!Module["noFSInit"] && !FS.init.initialized)
+ FS.init()
+}));
+__ATMAIN__.push((function() {
+ FS.ignorePermissions = false
+}));
+__ATEXIT__.push((function() {
+ FS.quit()
+}));
+Module["FS_createFolder"] = FS.createFolder;
+Module["FS_createPath"] = FS.createPath;
+Module["FS_createDataFile"] = FS.createDataFile;
+Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
+Module["FS_createLazyFile"] = FS.createLazyFile;
+Module["FS_createLink"] = FS.createLink;
+Module["FS_createDevice"] = FS.createDevice;
+Module["FS_unlink"] = FS.unlink;
+__ATINIT__.unshift((function() {
+ TTY.init()
+}));
+__ATEXIT__.push((function() {
+ TTY.shutdown()
+}));
+if (ENVIRONMENT_IS_NODE) {
+ var fs = require("fs");
+ var NODEJS_PATH = require("path");
+ NODEFS.staticInit()
+}
+STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
+staticSealed = true;
+STACK_MAX = STACK_BASE + TOTAL_STACK;
+DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
+assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+var cttz_i8 = allocate([8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0], "i8", ALLOC_DYNAMIC);
+function invoke_iiii(index, a1, a2, a3) {
+ try {
+ return Module["dynCall_iiii"](index, a1, a2, a3)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_viiiii(index, a1, a2, a3, a4, a5) {
+ try {
+ Module["dynCall_viiiii"](index, a1, a2, a3, a4, a5)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_vi(index, a1) {
+ try {
+ Module["dynCall_vi"](index, a1)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_ii(index, a1) {
+ try {
+ return Module["dynCall_ii"](index, a1)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_v(index) {
+ try {
+ Module["dynCall_v"](index)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
+ try {
+ Module["dynCall_viiiiii"](index, a1, a2, a3, a4, a5, a6)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+function invoke_viiii(index, a1, a2, a3, a4) {
+ try {
+ Module["dynCall_viiii"](index, a1, a2, a3, a4)
+ } catch (e) {
+ if (typeof e !== "number" && e !== "longjmp")
+ throw e;
+ asm["setThrew"](1, 0)
+ }
+}
+Module.asmGlobalArg = {
+ "Math": Math,
+ "Int8Array": Int8Array,
+ "Int16Array": Int16Array,
+ "Int32Array": Int32Array,
+ "Uint8Array": Uint8Array,
+ "Uint16Array": Uint16Array,
+ "Uint32Array": Uint32Array,
+ "Float32Array": Float32Array,
+ "Float64Array": Float64Array,
+ "NaN": NaN,
+ "Infinity": Infinity
+};
+Module.asmLibraryArg = {
+ "abort": abort,
+ "assert": assert,
+ "invoke_iiii": invoke_iiii,
+ "invoke_viiiii": invoke_viiiii,
+ "invoke_vi": invoke_vi,
+ "invoke_ii": invoke_ii,
+ "invoke_v": invoke_v,
+ "invoke_viiiiii": invoke_viiiiii,
+ "invoke_viiii": invoke_viiii,
+ "_pthread_cleanup_pop": _pthread_cleanup_pop,
+ "___syscall221": ___syscall221,
+ "_pthread_cleanup_push": _pthread_cleanup_push,
+ "___syscall6": ___syscall6,
+ "___setErrNo": ___setErrNo,
+ "_llvm_stackrestore": _llvm_stackrestore,
+ "___cxa_allocate_exception": ___cxa_allocate_exception,
+ "___cxa_find_matching_catch": ___cxa_find_matching_catch,
+ "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing,
+ "_sbrk": _sbrk,
+ "_emscripten_memcpy_big": _emscripten_memcpy_big,
+ "___resumeException": ___resumeException,
+ "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv,
+ "_sysconf": _sysconf,
+ "_pthread_self": _pthread_self,
+ "_llvm_stacksave": _llvm_stacksave,
+ "_sqrt": _sqrt,
+ "___syscall54": ___syscall54,
+ "___unlock": ___unlock,
+ "_emscripten_set_main_loop": _emscripten_set_main_loop,
+ "___cxa_atexit": ___cxa_atexit,
+ "___cxa_throw": ___cxa_throw,
+ "___lock": ___lock,
+ "_abort": _abort,
+ "___syscall5": ___syscall5,
+ "_time": _time,
+ "___syscall146": ___syscall146,
+ "_atexit": _atexit,
+ "___syscall140": ___syscall140,
+ "___syscall145": ___syscall145,
+ "_emscripten_asm_const_1": _emscripten_asm_const_1,
+ "STACKTOP": STACKTOP,
+ "STACK_MAX": STACK_MAX,
+ "tempDoublePtr": tempDoublePtr,
+ "ABORT": ABORT,
+ "cttz_i8": cttz_i8,
+ "___dso_handle": ___dso_handle
+}; // EMSCRIPTEN_START_ASM
+var asm = (function(global, env, buffer) {
+ "use asm";
+ var a = new global.Int8Array(buffer);
+ var b = new global.Int16Array(buffer);
+ var c = new global.Int32Array(buffer);
+ var d = new global.Uint8Array(buffer);
+ var e = new global.Uint16Array(buffer);
+ var f = new global.Uint32Array(buffer);
+ var g = new global.Float32Array(buffer);
+ var h = new global.Float64Array(buffer);
+ var i = env.STACKTOP | 0;
+ var j = env.STACK_MAX | 0;
+ var k = env.tempDoublePtr | 0;
+ var l = env.ABORT | 0;
+ var m = env.cttz_i8 | 0;
+ var n = env.___dso_handle | 0;
+ var o = 0;
+ var p = 0;
+ var q = 0;
+ var r = 0;
+ var s = global.NaN,
+ t = global.Infinity;
+ var u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0.0,
+ z = 0,
+ A = 0,
+ B = 0,
+ C = 0.0;
+ var D = 0;
+ var E = 0;
+ var F = 0;
+ var G = 0;
+ var H = 0;
+ var I = 0;
+ var J = 0;
+ var K = 0;
+ var L = 0;
+ var M = 0;
+ var N = global.Math.floor;
+ var O = global.Math.abs;
+ var P = global.Math.sqrt;
+ var Q = global.Math.pow;
+ var R = global.Math.cos;
+ var S = global.Math.sin;
+ var T = global.Math.tan;
+ var U = global.Math.acos;
+ var V = global.Math.asin;
+ var W = global.Math.atan;
+ var X = global.Math.atan2;
+ var Y = global.Math.exp;
+ var Z = global.Math.log;
+ var _ = global.Math.ceil;
+ var $ = global.Math.imul;
+ var aa = global.Math.min;
+ var ba = global.Math.clz32;
+ var ca = env.abort;
+ var da = env.assert;
+ var ea = env.invoke_iiii;
+ var fa = env.invoke_viiiii;
+ var ga = env.invoke_vi;
+ var ha = env.invoke_ii;
+ var ia = env.invoke_v;
+ var ja = env.invoke_viiiiii;
+ var ka = env.invoke_viiii;
+ var la = env._pthread_cleanup_pop;
+ var ma = env.___syscall221;
+ var na = env._pthread_cleanup_push;
+ var oa = env.___syscall6;
+ var pa = env.___setErrNo;
+ var qa = env._llvm_stackrestore;
+ var ra = env.___cxa_allocate_exception;
+ var sa = env.___cxa_find_matching_catch;
+ var ta = env._emscripten_set_main_loop_timing;
+ var ua = env._sbrk;
+ var va = env._emscripten_memcpy_big;
+ var wa = env.___resumeException;
+ var xa = env.__ZSt18uncaught_exceptionv;
+ var ya = env._sysconf;
+ var za = env._pthread_self;
+ var Aa = env._llvm_stacksave;
+ var Ba = env._sqrt;
+ var Ca = env.___syscall54;
+ var Da = env.___unlock;
+ var Ea = env._emscripten_set_main_loop;
+ var Fa = env.___cxa_atexit;
+ var Ga = env.___cxa_throw;
+ var Ha = env.___lock;
+ var Ia = env._abort;
+ var Ja = env.___syscall5;
+ var Ka = env._time;
+ var La = env.___syscall146;
+ var Ma = env._atexit;
+ var Na = env.___syscall140;
+ var Oa = env.___syscall145;
+ var Pa = env._emscripten_asm_const_1;
+ var Qa = 0.0;
+ // EMSCRIPTEN_START_FUNCS
+ function Ya(a) {
+ a = a | 0;
+ var b = 0;
+ b = i;
+ i = i + a | 0;
+ i = i + 15 & -16;
+ return b | 0
+ }
+ function Za() {
+ return i | 0
+ }
+ function _a(a) {
+ a = a | 0;
+ i = a
+ }
+ function $a(a, b) {
+ a = a | 0;
+ b = b | 0;
+ i = a;
+ j = b
+ }
+ function ab(a, b) {
+ a = a | 0;
+ b = b | 0;
+ if (!o) {
+ o = a;
+ p = b
+ }
+ }
+ function bb(b) {
+ b = b | 0;
+ a[k >> 0] = a[b >> 0];
+ a[k + 1 >> 0] = a[b + 1 >> 0];
+ a[k + 2 >> 0] = a[b + 2 >> 0];
+ a[k + 3 >> 0] = a[b + 3 >> 0]
+ }
+ function cb(b) {
+ b = b | 0;
+ a[k >> 0] = a[b >> 0];
+ a[k + 1 >> 0] = a[b + 1 >> 0];
+ a[k + 2 >> 0] = a[b + 2 >> 0];
+ a[k + 3 >> 0] = a[b + 3 >> 0];
+ a[k + 4 >> 0] = a[b + 4 >> 0];
+ a[k + 5 >> 0] = a[b + 5 >> 0];
+ a[k + 6 >> 0] = a[b + 6 >> 0];
+ a[k + 7 >> 0] = a[b + 7 >> 0]
+ }
+ function db(a) {
+ a = a | 0;
+ D = a
+ }
+ function eb() {
+ return D | 0
+ }
+ function fb(b, e, f, g) {
+ b = b | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ var h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0;
+ y = i;
+ l = e << 1;
+ w = i;
+ i = i + ((1 * (l << 2) | 0) + 15 & -16) | 0;
+ x = i;
+ i = i + ((1 * (l << 2) | 0) + 15 & -16) | 0;
+ v = i;
+ i = i + ((1 * (l << 2) | 0) + 15 & -16) | 0;
+ a:
+ do if (!e) {
+ l = 0;
+ g = 0
+ } else {
+ if (!g) {
+ h = 0;
+ while (1) {
+ l = a[b + h >> 0] | 0;
+ g = l & 255;
+ if (l << 24 >> 24 < 1) {
+ c[w + (h << 2) >> 2] = g;
+ c[x + (h << 2) >> 2] = 32
+ } else {
+ c[w + (h << 2) >> 2] = c[94752 + (g << 2) >> 2];
+ c[x + (h << 2) >> 2] = c[94240 + (g << 2) >> 2]
+ }
+ h = h + 1 | 0;
+ if ((h | 0) == (e | 0)) {
+ l = 0;
+ g = e;
+ break a
+ }
+ }
+ } else {
+ l = 0;
+ g = 0
+ }
+ do {
+ if (!l) {
+ c[w + (g << 2) >> 2] = 0;
+ k = g + 1 | 0;
+ c[x + (g << 2) >> 2] = 8;
+ c[w + (k << 2) >> 2] = 400;
+ c[x + (k << 2) >> 2] = 8;
+ g = g + 2 | 0
+ }
+ h = b + l | 0;
+ j = a[h >> 0] | 0;
+ do if (j << 24 >> 24 != 91) {
+ k = j & 255;
+ if (j << 24 >> 24 < 1) {
+ c[w + (g << 2) >> 2] = k;
+ c[x + (g << 2) >> 2] = 32;
+ break
+ } else {
+ c[w + (g << 2) >> 2] = c[94752 + (k << 2) >> 2];
+ c[x + (g << 2) >> 2] = c[94240 + ((d[h >> 0] | 0) << 2) >> 2];
+ break
+ }
+ } else {
+ c[w + (g << 2) >> 2] = 0;
+ k = g + 1 | 0;
+ c[x + (g << 2) >> 2] = 8;
+ c[w + (k << 2) >> 2] = 400;
+ c[x + (k << 2) >> 2] = 8;
+ g = k
+ }
+ while (0);
+ g = g + 1 | 0;
+ l = l + 1 | 0
+ } while ((l | 0) != (e | 0));
+ l = 0
+ }
+ while (0);
+ while (1) {
+ k = w + (l << 2) | 0;
+ switch (c[k >> 2] | 0) {
+ case 300:
+ {
+ h = l + 1 | 0;
+ j = w + (h << 2) | 0;
+ if (((c[j >> 2] | 0) == 11 ? (n = x + (l << 2) | 0, (c[n >> 2] | 0) == 8) : 0) ? (o = x + (h << 2) | 0, (c[o >> 2] | 0) == 8) : 0) {
+ c[k >> 2] = 2;
+ c[n >> 2] = 8;
+ b = l + 2 | 0;
+ u = (g << 2) + -4 | 0;
+ xd(j | 0, w + (b << 2) | 0, u | 0) | 0;
+ xd(o | 0, x + (b << 2) | 0, u | 0) | 0;
+ g = g + -1 | 0;
+ u = 28
+ } else
+ u = 28;
+ break
+ }case 302:
+ {
+ h = l + 1 | 0;
+ j = w + (h << 2) | 0;
+ if (((c[j >> 2] | 0) == 1 ? (p = x + (l << 2) | 0, (c[p >> 2] | 0) == 24) : 0) ? (q = x + (h << 2) | 0, (c[q >> 2] | 0) == 23) : 0) {
+ c[k >> 2] = 3;
+ c[p >> 2] = 8;
+ b = l + 2 | 0;
+ u = (g << 2) + -4 | 0;
+ xd(j | 0, w + (b << 2) | 0, u | 0) | 0;
+ xd(q | 0, x + (b << 2) | 0, u | 0) | 0;
+ g = g + -1 | 0;
+ u = 28
+ } else
+ u = 28;
+ break
+ }case 301:
+ {
+ h = l + 1 | 0;
+ j = w + (h << 2) | 0;
+ if (((c[j >> 2] | 0) == 1 ? (r = x + (l << 2) | 0, (c[r >> 2] | 0) == 24) : 0) ? (s = x + (h << 2) | 0, (c[s >> 2] | 0) == 23) : 0) {
+ c[k >> 2] = 4;
+ c[r >> 2] = 8;
+ b = l + 2 | 0;
+ u = (g << 2) + -4 | 0;
+ xd(j | 0, w + (b << 2) | 0, u | 0) | 0;
+ xd(s | 0, x + (b << 2) | 0, u | 0) | 0;
+ g = g + -1 | 0;
+ u = 28
+ } else
+ u = 28;
+ break
+ }case 21:
+ {
+ h = l + 1 | 0;
+ j = w + (h << 2) | 0;
+ if (((c[j >> 2] | 0) == 1 ? (t = x + (l << 2) | 0, (c[t >> 2] | 0) == 8) : 0) ? (m = x + (h << 2) | 0, (c[m >> 2] | 0) == 23) : 0) {
+ c[k >> 2] = 5;
+ c[t >> 2] = 8;
+ l = l + 2 | 0;
+ b = (g << 2) + -4 | 0;
+ xd(j | 0, w + (l << 2) | 0, b | 0) | 0;
+ xd(m | 0, x + (l << 2) | 0, b | 0) | 0;
+ g = g + -1 | 0
+ }
+ break
+ }default:
+ u = 28
+ }
+ if ((u | 0) == 28) {
+ u = 0;
+ h = l + 1 | 0
+ }
+ if ((h | 0) < (g + -1 | 0))
+ l = h;
+ else {
+ m = g;
+ break
+ }
+ }
+ g = c[x >> 2] | 0;
+ c[v >> 2] = g;
+ c[v + (e << 2) >> 2] = 1;
+ if ((m | 0) > 1) {
+ j = e + -1 | 0;
+ k = g;
+ h = 1;
+ l = 1;
+ do {
+ t = k;
+ k = c[x + (l << 2) >> 2] | 0;
+ if ((k | 0) == (t | 0)) {
+ t = v + (j + h << 2) | 0;
+ c[t >> 2] = (c[t >> 2] | 0) + 1
+ } else {
+ c[v + (h << 2) >> 2] = k;
+ c[v + (h + e << 2) >> 2] = 1;
+ h = h + 1 | 0
+ }
+ l = l + 1 | 0
+ } while ((l | 0) != (m | 0));
+ b = h
+ } else
+ b = 1;
+ h = c[v >> 2] | 0;
+ if (!(h & 1))
+ if (!(h & 2))
+ if (!(h & 4)) {
+ if (h & 8) {
+ h = 8;
+ u = 41
+ }
+ } else {
+ h = 4;
+ u = 41
+ }
+ else {
+ h = 2;
+ u = 41
+ }
+ else {
+ h = 1;
+ u = 41
+ }
+ if ((u | 0) == 41)
+ c[v >> 2] = h;
+ if ((b | 0) > 1) {
+ l = 1;
+ do {
+ j = v + (l << 2) | 0;
+ k = c[j >> 2] | 0;
+ h = h & k;
+ if (!h)
+ h = k;
+ else
+ c[j >> 2] = h;
+ l = l + 1 | 0
+ } while ((l | 0) != (b | 0));
+ j = v + (b + -1 << 2) | 0;
+ h = c[j >> 2] | 0;
+ if (!(h & 1))
+ if (!(h & 2))
+ if (!(h & 4)) {
+ if (h & 8) {
+ h = 8;
+ u = 49
+ }
+ } else {
+ h = 4;
+ u = 49
+ }
+ else {
+ h = 2;
+ u = 49
+ }
+ else {
+ h = 1;
+ u = 49
+ }
+ if ((u | 0) == 49)
+ c[j >> 2] = h;
+ j = c[v + (b << 2) >> 2] | 0;
+ l = b;
+ while (1) {
+ l = l + -1 | 0;
+ k = v + (l << 2) | 0;
+ h = c[k >> 2] | 0;
+ j = j & h;
+ if (j) {
+ c[k >> 2] = j;
+ h = j
+ }
+ if ((l | 0) <= 1) {
+ k = 1;
+ break
+ } else
+ j = h
+ }
+ do {
+ j = v + (k << 2) | 0;
+ h = c[j >> 2] | 0;
+ if (!(h & 8))
+ if (!(h & 4))
+ if (!(h & 2)) {
+ if (h & 1) {
+ h = 1;
+ u = 55
+ }
+ } else {
+ h = 2;
+ u = 55
+ }
+ else {
+ h = 4;
+ u = 55
+ }
+ else {
+ h = 8;
+ u = 55
+ }
+ if ((u | 0) == 55) {
+ u = 0;
+ c[j >> 2] = h
+ }
+ k = k + 1 | 0
+ } while ((k | 0) != (b | 0));
+ j = b;
+ k = 0;
+ while (1) {
+ h = k + 1 | 0;
+ if ((c[v + (k << 2) >> 2] | 0) == (c[v + (h << 2) >> 2] | 0)) {
+ t = v + (k + e << 2) | 0;
+ c[t >> 2] = (c[t >> 2] | 0) + (c[v + (h + e << 2) >> 2] | 0);
+ if ((h | 0) < (j | 0))
+ do {
+ t = h;
+ h = h + 1 | 0;
+ c[v + (t << 2) >> 2] = c[v + (h << 2) >> 2];
+ c[v + (t + e << 2) >> 2] = c[v + (h + e << 2) >> 2]
+ } while ((h | 0) != (j | 0));
+ j = j + -1 | 0;
+ h = k
+ }
+ if ((h | 0) < (j | 0))
+ k = h;
+ else
+ break
+ }
+ } else
+ j = b;
+ if ((j | 0) > 0) {
+ l = 0;
+ b = 0;
+ while (1) {
+ k = c[v + (l + e << 2) >> 2] | 0;
+ do if ((k | 0) < 3) {
+ g = c[v + (l << 2) >> 2] | 0;
+ h = (k | 0) > 0;
+ if ((g | 0) == 32)
+ if (h) {
+ u = 66;
+ break
+ } else
+ break;
+ if (h) {
+ g = g + 64 | 0;
+ h = 0;
+ do {
+ c[x + (h + b << 2) >> 2] = g;
+ h = h + 1 | 0
+ } while ((h | 0) < (k | 0))
+ }
+ } else
+ u = 66;
+ while (0);
+ if ((u | 0) == 66) {
+ u = 0;
+ g = c[v + (l << 2) >> 2] | 0;
+ h = 0;
+ do {
+ c[x + (h + b << 2) >> 2] = g;
+ h = h + 1 | 0
+ } while ((h | 0) < (k | 0))
+ }
+ l = l + 1 | 0;
+ if ((l | 0) == (j | 0))
+ break;
+ else
+ b = k + b | 0
+ }
+ g = c[x >> 2] | 0
+ }
+ if ((g | 0) == 65) {
+ c[x >> 2] = 1;
+ g = 1
+ }
+ j = (m | 0) > 0;
+ b:
+ do if (j) {
+ b = 0;
+ do {
+ k = w + (b << 2) | 0;
+ l = c[k >> 2] | 0;
+ c:
+ do if ((l + -300 | 0) >>> 0 < 100) {
+ h = c[x + (b << 2) >> 2] | 0;
+ h = (h | 0) > 64 ? h + -64 | 0 : h;
+ switch (l | 0) {
+ case 300:
+ switch (h | 0) {
+ case 8:
+ {
+ c[k >> 2] = 1;
+ break c
+ }case 4:
+ {
+ c[k >> 2] = 14;
+ break c
+ }default:
+ break c
+ }
+ case 301:
+ switch (h | 0) {
+ case 8:
+ {
+ c[k >> 2] = 17;
+ break c
+ }case 16:
+ {
+ c[k >> 2] = 12;
+ break c
+ }default:
+ break c
+ }
+ case 302:
+ switch (h | 0) {
+ case 8:
+ {
+ c[k >> 2] = 19;
+ break c
+ }case 16:
+ {
+ c[k >> 2] = 13;
+ break c
+ }default:
+ break c
+ }
+ default:
+ break c
+ }
+ }
+ while (0);
+ b = b + 1 | 0
+ } while ((b | 0) != (m | 0));
+ a[f >> 0] = 0;
+ if (j) {
+ k = 1;
+ h = 0;
+ j = 1;
+ d:
+ while (1) {
+ e:
+ do if ((g | 0) != (k | 0)) {
+ if ((c[w + (h << 2) >> 2] | 0) < 400) {
+ k = (k | 0) == 32 ? j : k;
+ if ((g | 0) > 64)
+ switch (g | 0) {
+ case 65:
+ switch (k | 0) {
+ case 2:
+ {
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 4:
+ {
+ jb(f, c[23845] | 0);
+ k = 1;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ k = 1;
+ break e
+ }case 16:
+ {
+ jb(f, c[23863] | 0);
+ k = 16;
+ break e
+ }default:
+ break e
+ }
+ case 66:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 4:
+ {
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }default:
+ break e
+ }
+ case 68:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 2:
+ {
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }default:
+ break e
+ }
+ case 72:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23816] | 0);
+ k = 1;
+ break e
+ }case 2:
+ {
+ jb(f, c[23816] | 0);
+ k = 2;
+ break e
+ }case 4:
+ {
+ jb(f, c[23816] | 0);
+ k = 4;
+ break e
+ }case 16:
+ {
+ jb(f, c[23848] | 0);
+ k = 16;
+ break e
+ }default:
+ break e
+ }
+ case 80:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 2:
+ {
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 4:
+ {
+ jb(f, c[23845] | 0);
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }default:
+ break e
+ }
+ default:
+ break e
+ }
+ switch (g | 0) {
+ case 1:
+ switch (k | 0) {
+ case 2:
+ {
+ jb(f, c[23845] | 0);
+ jb(f, c[23845] | 0);
+ k = 1;
+ break e
+ }case 4:
+ {
+ jb(f, c[23845] | 0);
+ k = 1;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ k = 1;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ k = 1;
+ break e
+ }default:
+ break e
+ }
+ case 2:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 4:
+ {
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23844] | 0);
+ k = 2;
+ break e
+ }default:
+ break e
+ }
+ case 4:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 2:
+ {
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23845] | 0);
+ k = 4;
+ break e
+ }default:
+ break e
+ }
+ case 8:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23845] | 0);
+ jb(f, c[23846] | 0);
+ k = 8;
+ break e
+ }case 2:
+ {
+ jb(f, c[23845] | 0);
+ jb(f, c[23846] | 0);
+ k = 8;
+ break e
+ }case 4:
+ {
+ jb(f, c[23846] | 0);
+ k = 8;
+ break e
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23845] | 0);
+ jb(f, c[23846] | 0);
+ k = 8;
+ break e
+ }default:
+ break e
+ }
+ case 16:
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 2:
+ {
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 4:
+ {
+ jb(f, c[23845] | 0);
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23846] | 0);
+ k = 16;
+ break e
+ }default:
+ break e
+ }
+ case 32:
+ {
+ switch (k | 0) {
+ case 1:
+ {
+ jb(f, c[23847] | 0);
+ l = 32;
+ break
+ }case 2:
+ {
+ jb(f, c[23847] | 0);
+ l = 32;
+ break
+ }case 4:
+ {
+ jb(f, c[23847] | 0);
+ l = 32;
+ break
+ }case 8:
+ {
+ jb(f, c[23847] | 0);
+ jb(f, c[23847] | 0);
+ l = 32;
+ break
+ }case 16:
+ {
+ jb(f, c[23862] | 0);
+ jb(f, c[23847] | 0);
+ l = 32;
+ break
+ }default:
+ l = k
+ }
+ j = 0;
+ while (1)
+ if ((c[x + (j + h << 2) >> 2] | 0) == 32)
+ j = j + 1 | 0;
+ else
+ break;
+ if ((j | 0) > 2079) {
+ g = 5;
+ break d
+ }
+ if ((j | 0) > 31) {
+ j = j + -31 | 0;
+ jb(f, 123574);
+ jb(f, (j & 1024 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 512 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 256 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 128 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 64 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 32 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 16 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 8 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 4 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 2 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 1 | 0) != 0 ? 123303 : 123305);
+ j = k;
+ k = l;
+ break e
+ } else {
+ jb(f, (j & 16 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 8 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 4 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 2 | 0) != 0 ? 123303 : 123305);
+ jb(f, (j & 1 | 0) != 0 ? 123303 : 123305);
+ j = k;
+ k = l;
+ break e
+ }
+ }default:
+ break e
+ }
+ }
+ } else
+ k = g;
+ while (0);
+ f:
+ do switch (((g | 0) > 64 ? g + -64 | 0 : g) | 0) {
+ case 8:
+ case 4:
+ case 2:
+ case 1:
+ {
+ g = c[w + (h << 2) >> 2] | 0;
+ if ((g | 0) > 399) {
+ jb(f, c[95456 + (g + -400 << 2) >> 2] | 0);
+ break f
+ } else {
+ jb(f, c[95264 + (g << 2) >> 2] | 0);
+ break f
+ }
+ }case 16:
+ {
+ jb(f, c[95392 + (c[w + (h << 2) >> 2] << 2) >> 2] | 0);
+ break
+ }case 32:
+ {
+ e = c[w + (h << 2) >> 2] | 0;
+ jb(f, (e & 128 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 64 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 32 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 16 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 8 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 4 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 2 | 0) != 0 ? 123303 : 123305);
+ jb(f, (e & 1 | 0) != 0 ? 123303 : 123305);
+ break
+ }default:
+ {}
+ }
+ while (0);
+ h = h + 1 | 0;
+ if ((h | 0) >= (m | 0))
+ break b;
+ g = c[x + (h << 2) >> 2] | 0
+ }
+ i = y;
+ return g | 0
+ }
+ } else
+ a[f >> 0] = 0;
+ while (0);
+ f = (cd(f) | 0) >>> 0 > 14970;
+ f = f ? 5 : 0;
+ i = y;
+ return f | 0
+ }
+ function gb(b, e, f) {
+ b = b | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0,
+ z = 0,
+ A = 0,
+ B = 0,
+ C = 0,
+ D = 0;
+ D = i;
+ i = i + 60112 | 0;
+ h = D + 4 | 0;
+ v = D + 40104 | 0;
+ C = D + 20058 | 0;
+ A = D + 20016 | 0;
+ x = D + 16 | 0;
+ y = D;
+ z = D + 8 | 0;
+ c[h >> 2] = f;
+ k = i;
+ i = i + ((1 * (f + 1 | 0) | 0) + 15 & -16) | 0;
+ sd(v | 0, 0, 2e4) | 0;
+ sd(x | 0, 0, 2e4) | 0;
+ g = c[b + 4156 >> 2] | 0;
+ B = (g | 0) == 2;
+ j = B & 1;
+ u = c[b + 16 >> 2] & 16;
+ w = u >>> 4;
+ u = (u | 0) == 0 ? 4 : 1;
+ l = (w | 0) == 1;
+ if (B & l) {
+ h = b + 4424 | 0;
+ e = 121676;
+ j = h + 69 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 8;
+ i = D;
+ return b | 0
+ }
+ a:
+ do switch (g | 0) {
+ case 2:
+ case 0:
+ {
+ wd(k | 0, e | 0, f | 0) | 0;
+ a[k + f >> 0] = 0;
+ break
+ }case 1:
+ {
+ f = tb(b, e, k, h) | 0;
+ if (!f) {
+ f = c[h >> 2] | 0;
+ break a
+ } else {
+ b = f;
+ i = D;
+ return b | 0
+ }
+ }default:
+ {}
+ }
+ while (0);
+ f = fb(k, f, v, j) | 0;
+ if (f) {
+ h = b + 4424 | 0;
+ e = 121745;
+ j = h + 53 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = f;
+ i = D;
+ return b | 0
+ }
+ g = b + 4140 | 0;
+ f = c[g >> 2] | 0;
+ if ((f + 1 | 0) >>> 0 < 6)
+ B = 0;
+ else {
+ h = b + 4424 | 0;
+ e = 121798;
+ j = h + 55 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ c[g >> 2] = -1;
+ f = -1;
+ B = 2
+ }
+ s = (f | 0) == -1 | (f | 0) == 0 ? 2 : f;
+ t = cd(v) | 0;
+ g = b + 4144 | 0;
+ f = c[g >> 2] | 0;
+ b:
+ do if (f) {
+ if (l & (f + -2 | 0) >>> 0 < 3) {
+ c[g >> 2] = 5;
+ f = 5
+ }
+ o = (f + -5 | 0) >>> 0 < 32;
+ r = o ? f + -4 | 0 : (f + -1 | 0) >>> 0 < 4 ? f : 0;
+ q = o & 1 ^ 1;
+ if (f >>> 0 > 36) {
+ h = b + 4424 | 0;
+ e = 121901;
+ j = h + 24 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 8;
+ i = D;
+ return b | 0
+ }
+ p = (r | 0) > 22 ? 12 : (r + -9 | 0) >>> 0 < 14 ? 10 : (r + -3 | 0) >>> 0 < 6 ? 8 : 6;
+ n = p + -1 | 0;
+ m = 1 - p | 0;
+ l = t + 1 | 0;
+ g = 0;
+ f = 0;
+ while (1) {
+ k = f + 1 | 0;
+ do if (!((k | 0) % (p | 0) | 0)) {
+ h = g + m | 0;
+ e = 0;
+ j = 0;
+ do {
+ e = ((a[v + (h + j) >> 0] | 0) == 49 & 1) + e | 0;
+ j = j + 1 | 0
+ } while ((j | 0) < (n | 0));
+ if ((e | 0) == (n | 0)) {
+ a[x + f >> 0] = 48;
+ h = 1;
+ f = k
+ } else
+ h = 0;
+ if (!e) {
+ a[x + f >> 0] = 49;
+ f = f + 1 | 0;
+ break
+ }
+ if (!h) {
+ a[x + f >> 0] = a[v + g >> 0] | 0;
+ g = g + 1 | 0;
+ f = f + 1 | 0
+ }
+ }
+ while (0);
+ a[x + f >> 0] = a[v + g >> 0] | 0;
+ f = f + 1 | 0;
+ if ((g | 0) < (l | 0))
+ g = g + 1 | 0;
+ else
+ break
+ }
+ a[x + f >> 0] = 0;
+ f = (cd(x) | 0) % (p | 0) | 0;
+ f = (f | 0) == 0 ? 0 : p - f | 0;
+ if ((f | 0) > 0) {
+ g = 0;
+ do {
+ jb(x, 123303);
+ g = g + 1 | 0
+ } while ((g | 0) != (f | 0))
+ }
+ e = cd(x) | 0;
+ f = 0;
+ g = e - p | 0;
+ do {
+ f = ((a[x + g >> 0] | 0) == 49 & 1) + f | 0;
+ g = g + 1 | 0
+ } while ((g | 0) < (e | 0));
+ if ((f | 0) == (p | 0))
+ a[x + (e + -1) >> 0] = 48;
+ v = r + -1 | 0;
+ if ((e | 0) > ($((c[(o ? 95488 + (v << 2) | 0 : 95616 + (v << 2) | 0) >> 2] | 0) + -3 | 0, p) | 0)) {
+ h = b + 4424 | 0;
+ e = 121925;
+ j = h + 51 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 5;
+ i = D;
+ return b | 0
+ } else {
+ m = p;
+ g = q;
+ f = r
+ }
+ } else {
+ r = t + 1 | 0;
+ k = 0;
+ e = 0;
+ c:
+ while (1) {
+ switch (s | 0) {
+ case 1:
+ {
+ j = k + t | 0;
+ g = 32;
+ f = 0;
+ do {
+ q = g;
+ g = g + -1 | 0;
+ p = c[95632 + (g << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ g = 0;
+ h = u;
+ do {
+ q = h;
+ h = h + -1 | 0;
+ p = c[96144 + (h << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ g = o ? 1 : g;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ q = e;
+ break
+ }case 2:
+ {
+ j = k + t | 0;
+ g = 32;
+ f = 0;
+ do {
+ q = g;
+ g = g + -1 | 0;
+ p = c[95760 + (g << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ g = 0;
+ h = u;
+ do {
+ q = h;
+ h = h + -1 | 0;
+ p = c[96160 + (h << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ g = o ? 1 : g;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ q = e;
+ break
+ }case 3:
+ {
+ j = k + t | 0;
+ g = 32;
+ f = 0;
+ do {
+ q = g;
+ g = g + -1 | 0;
+ p = c[95888 + (g << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ g = 0;
+ h = u;
+ do {
+ q = h;
+ h = h + -1 | 0;
+ p = c[96176 + (h << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ g = o ? 1 : g;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ q = e;
+ break
+ }case 4:
+ {
+ j = k + t | 0;
+ g = 32;
+ f = 0;
+ do {
+ q = g;
+ g = g + -1 | 0;
+ p = c[96016 + (g << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ g = 0;
+ h = u;
+ do {
+ q = h;
+ h = h + -1 | 0;
+ p = c[96192 + (h << 2) >> 2] | 0;
+ o = (j | 0) < (p | 0);
+ f = o ? q : f;
+ g = o ? 1 : g;
+ e = o ? p : e
+ } while ((q | 0) > 1);
+ q = e;
+ break
+ }default:
+ break c
+ }
+ if (!f)
+ break;
+ p = (f | 0) > 22 ? 12 : (f + -9 | 0) >>> 0 < 14 ? 10 : (f + -3 | 0) >>> 0 < 6 ? 8 : 6;
+ o = p + -1 | 0;
+ n = 1 - p | 0;
+ h = 0;
+ e = 0;
+ while (1) {
+ m = e + 1 | 0;
+ do if (!((m | 0) % (p | 0) | 0)) {
+ k = h + n | 0;
+ j = 0;
+ l = 0;
+ do {
+ j = ((a[v + (k + l) >> 0] | 0) == 49 & 1) + j | 0;
+ l = l + 1 | 0
+ } while ((l | 0) < (o | 0));
+ if ((j | 0) == (o | 0)) {
+ a[x + e >> 0] = 48;
+ k = 1;
+ e = m
+ } else
+ k = 0;
+ if (!j) {
+ a[x + e >> 0] = 49;
+ e = e + 1 | 0;
+ break
+ }
+ if (!k) {
+ a[x + e >> 0] = a[v + h >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ }
+ }
+ while (0);
+ a[x + e >> 0] = a[v + h >> 0] | 0;
+ e = e + 1 | 0;
+ if ((h | 0) < (r | 0))
+ h = h + 1 | 0;
+ else
+ break
+ }
+ a[x + e >> 0] = 0;
+ e = cd(x) | 0;
+ k = e - t | 0;
+ e = (e | 0) % (p | 0) | 0;
+ e = (e | 0) == 0 ? 0 : p - e | 0;
+ if ((e | 0) > 0) {
+ h = 0;
+ do {
+ jb(x, 123303);
+ h = h + 1 | 0
+ } while ((h | 0) != (e | 0))
+ }
+ e = cd(x) | 0;
+ h = 0;
+ j = e - p | 0;
+ do {
+ h = ((a[x + j >> 0] | 0) == 49 & 1) + h | 0;
+ j = j + 1 | 0
+ } while ((j | 0) < (e | 0));
+ if ((h | 0) == (p | 0))
+ a[x + (e + -1) >> 0] = 48;
+ if ((e | 0) <= (q | 0)) {
+ m = p;
+ break b
+ } else
+ e = q
+ }
+ h = b + 4424 | 0;
+ e = 121853;
+ j = h + 48 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 5;
+ i = D;
+ return b | 0
+ }
+ while (0);
+ l = (w | 0) != 0;
+ if (l & (f | 0) > 22) {
+ h = b + 4424 | 0;
+ e = 121976;
+ j = h + 47 | 0;
+ do {
+ a[h >> 0] = a[e >> 0] | 0;
+ h = h + 1 | 0;
+ e = e + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 5;
+ i = D;
+ return b | 0
+ }
+ n = (e | 0) / (m | 0) | 0;
+ p = (g | 0) != 0;
+ o = f + -1 | 0;
+ j = c[(p ? 95616 + (o << 2) | 0 : 95488 + (o << 2) | 0) >> 2] | 0;
+ f = j - n | 0;
+ h = i;
+ i = i + ((1 * (n + 3 << 2) | 0) + 15 & -16) | 0;
+ k = i;
+ i = i + ((1 * (f + 3 << 2) | 0) + 15 & -16) | 0;
+ sd(h | 0, 0, (n << 2) + 8 | 0) | 0;
+ sd(k | 0, 0, (f << 2) + 8 | 0) | 0;
+ switch (m | 0) {
+ case 6:
+ {
+ if ((n | 0) > 0) {
+ e = 0;
+ do {
+ g = e * 6 | 0;
+ if ((a[x + g >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 32
+ }
+ if ((a[x + (g | 1) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 16
+ }
+ if ((a[x + (g + 2) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 8
+ }
+ if ((a[x + (g + 3) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 4
+ }
+ if ((a[x + (g + 4) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 2
+ }
+ if ((a[x + (g + 5) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 1
+ }
+ e = e + 1 | 0
+ } while ((e | 0) != (n | 0))
+ }
+ Ab(67);
+ Bb(f, 1);
+ Db(n, h, k);
+ if ((f | 0) > 0)
+ do {
+ w = f;
+ f = f + -1 | 0;
+ v = c[k + (f << 2) >> 2] | 0;
+ jb(x, (v & 32 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 16 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 8 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 4 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 2 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 1 | 0) != 0 ? 123303 : 123305)
+ } while ((w | 0) > 1);
+ Eb();
+ break
+ }case 8:
+ {
+ if ((n | 0) > 0) {
+ e = 0;
+ do {
+ g = e << 3;
+ if ((a[x + g >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 128
+ }
+ if ((a[x + (g | 1) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 64
+ }
+ if ((a[x + (g | 2) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 32
+ }
+ if ((a[x + (g | 3) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 16
+ }
+ if ((a[x + (g | 4) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 8
+ }
+ if ((a[x + (g | 5) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 4
+ }
+ if ((a[x + (g | 6) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 2
+ }
+ if ((a[x + (g | 7) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 1
+ }
+ e = e + 1 | 0
+ } while ((e | 0) != (n | 0))
+ }
+ Ab(301);
+ Bb(f, 1);
+ Db(n, h, k);
+ if ((f | 0) > 0)
+ do {
+ w = f;
+ f = f + -1 | 0;
+ v = c[k + (f << 2) >> 2] | 0;
+ jb(x, (v & 128 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 64 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 32 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 16 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 8 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 4 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 2 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 1 | 0) != 0 ? 123303 : 123305)
+ } while ((w | 0) > 1);
+ Eb();
+ break
+ }case 10:
+ {
+ if ((n | 0) > 0) {
+ e = 0;
+ do {
+ g = e * 10 | 0;
+ if ((a[x + g >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 512
+ }
+ if ((a[x + (g | 1) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 256
+ }
+ if ((a[x + (g + 2) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 128
+ }
+ if ((a[x + (g + 3) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 64
+ }
+ if ((a[x + (g + 4) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 32
+ }
+ if ((a[x + (g + 5) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 16
+ }
+ if ((a[x + (g + 6) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 8
+ }
+ if ((a[x + (g + 7) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 4
+ }
+ if ((a[x + (g + 8) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 2
+ }
+ if ((a[x + (g + 9) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 1
+ }
+ e = e + 1 | 0
+ } while ((e | 0) != (n | 0))
+ }
+ Ab(1033);
+ Bb(f, 1);
+ Db(n, h, k);
+ if ((f | 0) > 0)
+ do {
+ w = f;
+ f = f + -1 | 0;
+ v = c[k + (f << 2) >> 2] | 0;
+ jb(x, (v & 512 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 256 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 128 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 64 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 32 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 16 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 8 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 4 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 2 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 1 | 0) != 0 ? 123303 : 123305)
+ } while ((w | 0) > 1);
+ Eb();
+ break
+ }case 12:
+ {
+ if ((n | 0) > 0) {
+ e = 0;
+ do {
+ g = e * 12 | 0;
+ if ((a[x + g >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 2048
+ }
+ if ((a[x + (g | 1) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 1024
+ }
+ if ((a[x + (g | 2) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 512
+ }
+ if ((a[x + (g | 3) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 256
+ }
+ if ((a[x + (g + 4) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 128
+ }
+ if ((a[x + (g + 5) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 64
+ }
+ if ((a[x + (g + 6) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 32
+ }
+ if ((a[x + (g + 7) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 16
+ }
+ if ((a[x + (g + 8) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 8
+ }
+ if ((a[x + (g + 9) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 4
+ }
+ if ((a[x + (g + 10) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 2
+ }
+ if ((a[x + (g + 11) >> 0] | 0) == 49) {
+ w = h + (e << 2) | 0;
+ c[w >> 2] = (c[w >> 2] | 0) + 1
+ }
+ e = e + 1 | 0
+ } while ((e | 0) != (n | 0))
+ }
+ Ab(4201);
+ Bb(f, 1);
+ Db(n, h, k);
+ if ((f | 0) > 0)
+ do {
+ w = f;
+ f = f + -1 | 0;
+ v = c[k + (f << 2) >> 2] | 0;
+ jb(x, (v & 2048 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 1024 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 512 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 256 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 128 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 64 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 32 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 16 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 8 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 4 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 2 | 0) != 0 ? 123303 : 123305);
+ jb(x, (v & 1 | 0) != 0 ? 123303 : 123305)
+ } while ((w | 0) > 1);
+ Eb();
+ break
+ }default:
+ {}
+ }
+ sd(C | 0, 48, 20045) | 0;
+ f = $(j, m) | 0;
+ if ((f | 0) > 0) {
+ g = f + -1 | 0;
+ e = 0;
+ do {
+ a[C + e >> 0] = a[x + (g - e) >> 0] | 0;
+ e = e + 1 | 0
+ } while ((e | 0) != (f | 0))
+ }
+ c[y >> 2] = 0;
+ a[z >> 0] = 0;
+ a[z + 1 >> 0] = 0;
+ a[z + 2 >> 0] = 0;
+ a[z + 3 >> 0] = 0;
+ a[z + 4 >> 0] = 0;
+ a[z + 5 >> 0] = 0;
+ h = A;
+ j = h + 42 | 0;
+ do {
+ a[h >> 0] = 0;
+ h = h + 1 | 0
+ } while ((h | 0) < (j | 0));
+ if (p) {
+ a[A >> 0] = o >>> 1 & 1 | 48;
+ a[A + 1 >> 0] = o & 1 | 48;
+ if (l)
+ f = 49;
+ else
+ f = ((n + 63 | 0) >>> 5 & 1 | 48) & 255;
+ a[A + 2 >> 0] = f;
+ h = n + -1 | 0;
+ a[A + 3 >> 0] = (h & 16) >>> 4 | 48;
+ a[A + 4 >> 0] = (h & 8) >>> 3 | 48;
+ a[A + 5 >> 0] = (h & 4) >>> 2 | 48;
+ a[A + 6 >> 0] = (h & 2) >>> 1 | 48;
+ a[A + 7 >> 0] = h & 1 | 48;
+ a[A + 8 >> 0] = 0;
+ h = 0
+ } else {
+ a[A >> 0] = (o & 16) >>> 4 | 48;
+ a[A + 1 >> 0] = (o & 8) >>> 3 | 48;
+ a[A + 2 >> 0] = (o & 4) >>> 2 | 48;
+ a[A + 3 >> 0] = (o & 2) >>> 1 | 48;
+ a[A + 4 >> 0] = o & 1 | 48;
+ if (l)
+ f = 49;
+ else
+ f = ((n + 2047 | 0) >>> 10 & 1 | 48) & 255;
+ a[A + 5 >> 0] = f;
+ h = n + -1 | 0;
+ a[A + 6 >> 0] = (h & 512 | 0) != 0 ? 49 : 48;
+ a[A + 7 >> 0] = (h & 256 | 0) != 0 ? 49 : 48;
+ a[A + 8 >> 0] = (h & 255) >>> 7 | 48;
+ a[A + 9 >> 0] = (h & 64) >>> 6 | 48;
+ a[A + 10 >> 0] = (h & 32) >>> 5 | 48;
+ a[A + 11 >> 0] = (h & 16) >>> 4 | 48;
+ a[A + 12 >> 0] = (h & 8) >>> 3 | 48;
+ a[A + 13 >> 0] = (h & 4) >>> 2 | 48;
+ a[A + 14 >> 0] = (h & 2) >>> 1 | 48;
+ a[A + 15 >> 0] = h & 1 | 48;
+ a[A + 16 >> 0] = 0;
+ h = 0
+ }
+ do {
+ f = h << 2;
+ g = y + h | 0;
+ e = f | 1;
+ if ((a[A + f >> 0] | 0) == 49)
+ a[g >> 0] = (d[g >> 0] | 0) + 8;
+ if ((a[A + e >> 0] | 0) == 49)
+ a[g >> 0] = (d[g >> 0] | 0) + 4;
+ if ((a[A + (e + 1) >> 0] | 0) == 49)
+ a[g >> 0] = (d[g >> 0] | 0) + 2;
+ if ((a[A + (f | 3) >> 0] | 0) == 49)
+ a[g >> 0] = (d[g >> 0] | 0) + 1;
+ h = h + 1 | 0
+ } while ((h | 0) != 4);
+ Ab(19);
+ if (p) {
+ Bb(5, 1);
+ Cb(2, y, z);
+ f = 0;
+ do {
+ y = f << 2;
+ x = d[z + (4 - f) >> 0] | 0;
+ a[A + (y + 8) >> 0] = (x & 8) >>> 3 | 48;
+ a[A + (y + 9) >> 0] = (x & 4) >>> 2 | 48;
+ a[A + (y + 10) >> 0] = (x & 2) >>> 1 | 48;
+ a[A + (y + 11) >> 0] = x & 1 | 48;
+ f = f + 1 | 0
+ } while ((f | 0) != 5)
+ } else {
+ Bb(6, 1);
+ Cb(4, y, z);
+ f = 0;
+ do {
+ y = f << 2;
+ x = d[z + (5 - f) >> 0] | 0;
+ a[A + (y + 16) >> 0] = (x & 8) >>> 3 | 48;
+ a[A + (y + 17) >> 0] = (x & 4) >>> 2 | 48;
+ a[A + (y + 18) >> 0] = (x & 2) >>> 1 | 48;
+ a[A + (y + 19) >> 0] = x & 1 | 48;
+ f = f + 1 | 0
+ } while ((f | 0) != 6)
+ }
+ Eb();
+ if (p) {
+ f = 0;
+ do {
+ a[C + (f + 1998) >> 0] = a[A + f >> 0] | 0;
+ f = f + 1 | 0
+ } while ((f | 0) != 40)
+ } else {
+ f = 0;
+ do {
+ a[C + (f + 19998) >> 0] = a[A + f >> 0] | 0;
+ f = f + 1 | 0
+ } while ((f | 0) != 40)
+ }
+ if (p) {
+ f = c[96336 + (o << 2) >> 2] | 0;
+ g = 27 - f | 0;
+ if ((f | 0) < (g | 0)) {
+ m = f;
+ do {
+ e = m * 27 | 0;
+ h = m - f | 0;
+ j = m - f | 0;
+ l = f;
+ do {
+ k = c[91324 + (l + e << 2) >> 2] | 0;
+ if ((k | 0) != 1) {
+ if ((k | 0) > 1 ? (a[C + (k + -2) >> 0] | 0) == 49 : 0)
+ pb(b, j, l - f | 0)
+ } else
+ pb(b, h, l - f | 0);
+ l = l + 1 | 0
+ } while ((l | 0) < (g | 0));
+ c[b + 36208 + (m - f << 2) >> 2] = 1;
+ m = m + 1 | 0
+ } while ((m | 0) < (g | 0))
+ }
+ C = 27 - (f << 1) | 0;
+ c[b + 4288 >> 2] = C;
+ c[b + 4292 >> 2] = C;
+ b = B;
+ i = D;
+ return b | 0
+ } else {
+ f = c[96208 + (o << 2) >> 2] | 0;
+ g = 151 - f | 0;
+ if ((f | 0) < (g | 0)) {
+ m = f;
+ do {
+ e = m * 151 | 0;
+ h = m - f | 0;
+ j = m - f | 0;
+ l = f;
+ do {
+ k = c[120 + (l + e << 2) >> 2] | 0;
+ if ((k | 0) != 1) {
+ if ((k | 0) > 1 ? (a[C + (k + -2) >> 0] | 0) == 49 : 0)
+ pb(b, j, l - f | 0)
+ } else
+ pb(b, h, l - f | 0);
+ l = l + 1 | 0
+ } while ((l | 0) < (g | 0));
+ c[b + 36208 + (m - f << 2) >> 2] = 1;
+ m = m + 1 | 0
+ } while ((m | 0) < (g | 0))
+ }
+ C = 151 - (f << 1) | 0;
+ c[b + 4288 >> 2] = C;
+ c[b + 4292 >> 2] = C;
+ b = B;
+ i = D;
+ return b | 0
+ }
+ return 0
+ }
+ function hb(b, e, f) {
+ b = b | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0;
+ n = i;
+ i = i + 48 | 0;
+ m = n + 12 | 0;
+ k = n + 6 | 0;
+ l = n;
+ if ((f | 0) > 3) {
+ f = b + 4424 | 0;
+ e = 122023;
+ g = f + 16 | 0;
+ do {
+ a[f >> 0] = a[e >> 0] | 0;
+ f = f + 1 | 0;
+ e = e + 1 | 0
+ } while ((f | 0) < (g | 0));
+ b = 6;
+ i = n;
+ return b | 0
+ }
+ if (mb(122039, e, f) | 0) {
+ f = b + 4424 | 0;
+ e = 122050;
+ g = f + 28 | 0;
+ do {
+ a[f >> 0] = a[e >> 0] | 0;
+ f = f + 1 | 0;
+ e = e + 1 | 0
+ } while ((f | 0) < (g | 0));
+ b = 6;
+ i = n;
+ return b | 0
+ }
+ switch (f | 0) {
+ case 3:
+ {
+ f = ((kb(a[e >> 0] | 0) | 0) * 100 | 0) + ((kb(a[e + 1 >> 0] | 0) | 0) * 10 | 0) + (kb(a[e + 2 >> 0] | 0) | 0) | 0;
+ g = 9;
+ break
+ }case 2:
+ {
+ f = ((kb(a[e >> 0] | 0) | 0) * 10 | 0) + (kb(a[e + 1 >> 0] | 0) | 0) | 0;
+ g = 9;
+ break
+ }case 1:
+ {
+ f = kb(a[e >> 0] | 0) | 0;
+ g = 9;
+ break
+ }default:
+ f = 0
+ }
+ if ((g | 0) == 9)
+ if ((f | 0) > 255) {
+ f = b + 4424 | 0;
+ e = 122023;
+ g = f + 16 | 0;
+ do {
+ a[f >> 0] = a[e >> 0] | 0;
+ f = f + 1 | 0;
+ e = e + 1 | 0
+ } while ((f | 0) < (g | 0));
+ b = 6;
+ i = n;
+ return b | 0
+ }
+ a[m >> 0] = 0;
+ jb(m, (f & 128 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 64 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 32 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 16 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 8 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 4 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 2 | 0) != 0 ? 123303 : 123305);
+ jb(m, (f & 1 | 0) != 0 ? 123303 : 123305);
+ a[k >> 0] = 0;
+ h = k + 1 | 0;
+ a[h >> 0] = 0;
+ if ((a[m >> 0] | 0) == 49) {
+ a[k >> 0] = 8;
+ f = 8
+ } else
+ f = 0;
+ if ((a[m + 1 >> 0] | 0) == 49) {
+ f = (f & 255 | 4) & 255;
+ a[k >> 0] = f
+ }
+ j = m + 2 | 0;
+ if ((a[j >> 0] | 0) == 49) {
+ f = (f & 255) + 2 & 255;
+ a[k >> 0] = f
+ }
+ if ((a[m + 3 >> 0] | 0) == 49)
+ a[k >> 0] = (f & 255) + 1;
+ g = m + 4 | 0;
+ if ((a[g >> 0] | 0) == 49) {
+ a[h >> 0] = 8;
+ f = 8
+ } else
+ f = 0;
+ if ((a[m + 5 >> 0] | 0) == 49) {
+ f = (f & 255 | 4) & 255;
+ a[h >> 0] = f
+ }
+ e = m + 6 | 0;
+ if ((a[e >> 0] | 0) == 49) {
+ f = (f & 255) + 2 & 255;
+ a[h >> 0] = f
+ }
+ if ((a[m + 7 >> 0] | 0) == 49)
+ a[h >> 0] = (f & 255) + 1;
+ Ab(19);
+ Bb(5, 1);
+ Cb(2, k, l);
+ Eb();
+ a[m >> 0] = 0;
+ f = 0;
+ do {
+ k = f << 2;
+ h = d[l + (4 - f) >> 0] | 0;
+ a[m + (k + 8) >> 0] = (h & 8) >>> 3 | 48;
+ a[m + (k + 9) >> 0] = (h & 4) >>> 2 | 48;
+ a[m + (k + 10) >> 0] = (h & 2) >>> 1 | 48;
+ a[m + (k + 11) >> 0] = h & 1 | 48;
+ f = f + 1 | 0
+ } while ((f | 0) != 5);
+ a[m >> 0] = (a[m >> 0] | 0) == 49 ? 48 : 49;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ a[g >> 0] = (a[g >> 0] | 0) == 49 ? 48 : 49;
+ a[e >> 0] = (a[e >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 8 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 10 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 12 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 14 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 16 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 18 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 20 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 22 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 24 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = m + 26 | 0;
+ a[j >> 0] = (a[j >> 0] | 0) == 49 ? 48 : 49;
+ j = 8;
+ do {
+ f = j * 27 | 0;
+ e = j + -8 | 0;
+ h = 8;
+ do {
+ g = c[91324 + (h + f << 2) >> 2] | 0;
+ if ((g | 0) != 1) {
+ if ((g | 0) > 1 ? (a[m + (g + -2e3) >> 0] | 0) == 49 : 0)
+ pb(b, e, h + -8 | 0)
+ } else
+ pb(b, e, h + -8 | 0);
+ h = h + 1 | 0
+ } while ((h | 0) != 19);
+ c[b + 36208 + (e << 2) >> 2] = 1;
+ j = j + 1 | 0
+ } while ((j | 0) != 19);
+ c[b + 4288 >> 2] = 11;
+ c[b + 4292 >> 2] = 11;
+ b = 0;
+ i = n;
+ return b | 0
+ }
+ function ib(b) {
+ b = b | 0;
+ var c = 0;
+ c = 0;
+ while (1)
+ if (!(a[b + c >> 0] | 0))
+ break;
+ else
+ c = c + 1 | 0;
+ return c | 0
+ }
+ function jb(b, c) {
+ b = b | 0;
+ c = c | 0;
+ var d = 0,
+ e = 0,
+ f = 0;
+ d = cd(b) | 0;
+ e = cd(c) | 0;
+ f = 0;
+ do {
+ a[b + (f + d) >> 0] = a[c + f >> 0] | 0;
+ f = f + 1 | 0
+ } while (f >>> 0 <= e >>> 0);
+ return
+ }
+ function kb(a) {
+ a = a | 0;
+ return ((a + -48 & 255) < 10 ? -48 : -55) + (a << 24 >> 24) | 0
+ }
+ function lb(b) {
+ b = b | 0;
+ var c = 0,
+ d = 0,
+ e = 0,
+ f = 0;
+ c = 0;
+ while (1)
+ if (!(a[b + c >> 0] | 0))
+ break;
+ else
+ c = c + 1 | 0;
+ if (!c)
+ return;
+ else
+ f = 0;
+ do {
+ d = b + f | 0;
+ e = a[d >> 0] | 0;
+ if ((e + -97 & 255) < 26)
+ a[d >> 0] = (e & 255) + 224;
+ f = f + 1 | 0
+ } while ((f | 0) != (c | 0));
+ return
+ }
+ function mb(b, c, e) {
+ b = b | 0;
+ c = c | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0;
+ f = cd(b) | 0;
+ if (!e) {
+ b = 0;
+ return b | 0
+ }
+ if (!f) {
+ b = 6;
+ return b | 0
+ } else
+ h = 0;
+ a:
+ while (1) {
+ g = d[c + h >> 0] | 0;
+ i = 0;
+ while (1) {
+ if ((g | 0) == (a[b + i >> 0] | 0))
+ break;
+ i = i + 1 | 0;
+ if (i >>> 0 >= f >>> 0) {
+ f = 6;
+ g = 7;
+ break a
+ }
+ }
+ h = h + 1 | 0;
+ if (h >>> 0 >= e >>> 0) {
+ f = 0;
+ g = 7;
+ break
+ }
+ }
+ if ((g | 0) == 7)
+ return f | 0;
+ return 0
+ }
+ function nb(b, d, e, f) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0;
+ g = cd(b) | 0;
+ if (!g)
+ return;
+ else
+ k = 0;
+ do {
+ if ((a[b + k >> 0] | 0) == e << 24 >> 24) {
+ h = c[d + (k << 2) >> 2] | 0;
+ i = cd(f) | 0;
+ j = cd(h) | 0;
+ l = 0;
+ do {
+ a[f + (l + i) >> 0] = a[h + l >> 0] | 0;
+ l = l + 1 | 0
+ } while (l >>> 0 <= j >>> 0)
+ }
+ k = k + 1 | 0
+ } while ((k | 0) != (g | 0));
+ return
+ }
+ function ob(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ return (d[((c | 0) / 7 | 0) + (a + 4524 + (b * 178 | 0)) >> 0] | 0) >>> ((c | 0) % 7 | 0) & 1 | 0
+ }
+ function pb(b, c, e) {
+ b = b | 0;
+ c = c | 0;
+ e = e | 0;
+ c = ((e | 0) / 7 | 0) + (b + 4524 + (c * 178 | 0)) | 0;
+ a[c >> 0] = d[c >> 0] | 0 | 1 << ((e | 0) % 7 | 0);
+ return
+ }
+ function qb(a) {
+ a = a | 0;
+ a:
+ do if ((a | 0) < 55)
+ a = 1;
+ else {
+ switch (a | 0) {
+ case 129:
+ case 89:
+ case 87:
+ case 86:
+ case 77:
+ case 75:
+ case 72:
+ case 69:
+ case 60:
+ {
+ a = 1;
+ break a
+ }default:
+ {}
+ }
+ a = 0
+ }
+ while (0);
+ return a | 0
+ }
+ function rb(a) {
+ a = a | 0;
+ switch (a | 0) {
+ case 130:
+ case 136:
+ case 135:
+ case 69:
+ case 37:
+ case 34:
+ case 13:
+ {
+ a = 1;
+ break
+ }default:
+ a = 0
+ }
+ return a | 0
+ }
+ function sb(a) {
+ a = +a;
+ var b = 0;
+ b = ~~a;
+ return (a - +(b | 0) > .1 & 1) + b | 0
+ }
+ function tb(b, e, f, g) {
+ b = b | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ var h = 0,
+ i = 0,
+ j = 0,
+ k = 0;
+ i = 0;
+ h = 0;
+ while (1) {
+ j = e + i | 0;
+ k = a[j >> 0] | 0;
+ if (k << 24 >> 24 <= -1) {
+ if (k << 24 >> 24 == -62) {
+ a[f + h >> 0] = a[e + (i + 1) >> 0] | 0;
+ k = a[j >> 0] | 0;
+ h = h + 1 | 0;
+ j = i + 2 | 0
+ } else
+ j = -1;
+ if (k << 24 >> 24 == -61) {
+ a[f + h >> 0] = (d[e + (i + 1) >> 0] | 0) + 64;
+ h = h + 1 | 0;
+ i = i + 2 | 0
+ } else
+ i = j
+ } else {
+ a[f + h >> 0] = k;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ }
+ if ((i | 0) == -1) {
+ i = 9;
+ break
+ }
+ if ((i | 0) >= (c[g >> 2] | 0)) {
+ i = 11;
+ break
+ }
+ }
+ if ((i | 0) == 9) {
+ h = b + 4424 | 0;
+ i = 122078;
+ j = h + 77 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ f = 6;
+ return f | 0
+ } else if ((i | 0) == 11) {
+ a[f + h >> 0] = 0;
+ c[g >> 2] = h;
+ f = 0;
+ return f | 0
+ }
+ return 0
+ }
+ function ub() {
+ var b = 0,
+ d = 0,
+ e = 0;
+ b = md(36936) | 0;
+ if (!b) {
+ b = 0;
+ return b | 0
+ }
+ sd(b | 0, 0, 36936) | 0;
+ c[b >> 2] = 20;
+ e = b + 4 | 0;
+ c[b + 4288 >> 2] = 0;
+ c[b + 4292 >> 2] = 0;
+ d = b + 20 | 0;
+ c[e >> 2] = 0;
+ c[e + 4 >> 2] = 0;
+ c[e + 8 >> 2] = 0;
+ c[e + 12 >> 2] = 0;
+ a[d >> 0] = a[122155] | 0;
+ a[d + 1 >> 0] = a[122156] | 0;
+ a[d + 2 >> 0] = a[122157] | 0;
+ a[d + 3 >> 0] = a[122158] | 0;
+ a[d + 4 >> 0] = a[122159] | 0;
+ a[d + 5 >> 0] = a[122160] | 0;
+ a[d + 6 >> 0] = a[122161] | 0;
+ d = b + 30 | 0;
+ a[d >> 0] = a[122162] | 0;
+ a[d + 1 >> 0] = a[122163] | 0;
+ a[d + 2 >> 0] = a[122164] | 0;
+ a[d + 3 >> 0] = a[122165] | 0;
+ a[d + 4 >> 0] = a[122166] | 0;
+ a[d + 5 >> 0] = a[122167] | 0;
+ a[d + 6 >> 0] = a[122168] | 0;
+ a[b + 40 >> 0] = 0;
+ g[b + 4136 >> 2] = 1.0;
+ c[b + 4140 >> 2] = -1;
+ c[b + 4144 >> 2] = 0;
+ c[b + 4148 >> 2] = 928;
+ c[b + 4152 >> 2] = 1;
+ c[b + 4156 >> 2] = 0;
+ a[b + 4296 >> 0] = 0;
+ sd(b + 4524 | 0, 0, 32408) | 0;
+ return b | 0
+ }
+ function vb(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0;
+ b = c[a + 36920 >> 2] | 0;
+ if (b)
+ nd(b);
+ e = a + 36932 | 0;
+ b = c[e >> 2] | 0;
+ if (!b) {
+ nd(a);
+ return
+ }
+ d = c[b + 8 >> 2] | 0;
+ if (d) {
+ b = d;
+ do {
+ d = b;
+ b = c[b + 16 >> 2] | 0;
+ nd(d)
+ } while ((b | 0) != 0);
+ b = c[e >> 2] | 0
+ }
+ d = c[b + 12 >> 2] | 0;
+ if (d) {
+ b = d;
+ do {
+ d = b;
+ b = c[b + 24 >> 2] | 0;
+ nd(c[d + 20 >> 2] | 0);
+ nd(d)
+ } while ((b | 0) != 0);
+ b = c[e >> 2] | 0
+ }
+ nd(b);
+ nd(a);
+ return
+ }
+ function wb(b) {
+ b = b | 0;
+ var d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0;
+ i = b + 16 | 0;
+ if (!(c[i >> 2] & 8)) {
+ d = Dc(b + 40 | 0, 122475) | 0;
+ if (!d) {
+ d = b + 4424 | 0;
+ e = 122477;
+ f = d + 27 | 0;
+ do {
+ a[d >> 0] = a[e >> 0] | 0;
+ d = d + 1 | 0;
+ e = e + 1 | 0
+ } while ((d | 0) < (f | 0));
+ b = 10;
+ return b | 0
+ }
+ } else
+ d = c[30180] | 0;
+ Hc(122179, 2, 1, d) | 0;
+ f = b + 4288 | 0;
+ if ((c[f >> 2] | 0) > 0) {
+ e = b + 4292 | 0;
+ h = 0;
+ do {
+ Hc(122182, 3, 1, d) | 0;
+ if ((c[e >> 2] | 0) > 0) {
+ g = 0;
+ do {
+ j = (ob(b, h, g) | 0) != 0;
+ Hc(j ? 122186 : 122189, 2, 1, d) | 0;
+ g = g + 1 | 0
+ } while ((g | 0) < (c[e >> 2] | 0))
+ }
+ Hc(122192, 2, 1, d) | 0;
+ h = h + 1 | 0
+ } while ((h | 0) < (c[f >> 2] | 0))
+ }
+ Hc(122192, 2, 1, d) | 0;
+ if (!(c[i >> 2] & 8)) {
+ Bc(d) | 0;
+ j = 0;
+ return j | 0
+ } else {
+ Cc(d) | 0;
+ j = 0;
+ return j | 0
+ }
+ return 0
+ }
+ function xb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0;
+ j = i;
+ i = i + 16 | 0;
+ g = j;
+ c[g >> 2] = e;
+ h = i;
+ i = i + ((1 * (e + 1 | 0) | 0) + 15 & -16) | 0;
+ f = c[b >> 2] | 0;
+ switch (f | 0) {
+ case 23:
+ {
+ c[b + 8 >> 2] = 16;
+ c[b + 12 >> 2] = 2;
+ c[b + 16 >> 2] = 2;
+ break
+ }case 89:
+ {
+ c[b + 8 >> 2] = 20;
+ c[b + 12 >> 2] = 8;
+ c[b + 16 >> 2] = 4;
+ break
+ }default:
+ {}
+ }
+ a:
+ do switch (c[b + 4156 >> 2] | 0) {
+ case 2:
+ case 0:
+ {
+ wd(h | 0, d | 0, e | 0) | 0;
+ a[h + e >> 0] = 0;
+ break
+ }case 1:
+ {
+ f = tb(b, d, h, g) | 0;
+ if (!f) {
+ f = c[b >> 2] | 0;
+ break a
+ } else {
+ b = f;
+ i = j;
+ return b | 0
+ }
+ }default:
+ {}
+ }
+ while (0);
+ switch (f | 0) {
+ case 128:
+ {
+ b = hb(b, h, c[g >> 2] | 0) | 0;
+ i = j;
+ return b | 0
+ }case 55:
+ {
+ b = Sb(b, h, c[g >> 2] | 0) | 0;
+ i = j;
+ return b | 0
+ }case 92:
+ {
+ b = gb(b, h, c[g >> 2] | 0) | 0;
+ i = j;
+ return b | 0
+ }default:
+ {
+ b = 0;
+ i = j;
+ return b | 0
+ }
+ }
+ return 0
+ }
+ function yb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0;
+ p = i;
+ i = i + 112 | 0;
+ o = p;
+ if (!e) {
+ e = ib(d) | 0;
+ if (!e) {
+ e = b + 4424 | 0;
+ g = e;
+ h = 122195;
+ j = g + 14 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ bd(o, e) | 0;
+ n = e;
+ m = n;
+ a[m >> 0] = 101;
+ a[m + 1 >> 0] = 114;
+ a[m + 2 >> 0] = 114;
+ a[m + 3 >> 0] = 111;
+ n = n + 4 | 0;
+ a[n >> 0] = 114;
+ a[n + 1 >> 0] = 58;
+ a[n + 2 >> 0] = 32;
+ a[n + 3 >> 0] = 0;
+ jb(e, o);
+ o = 6;
+ i = p;
+ return o | 0
+ } else
+ l = e
+ } else
+ l = e;
+ e = b + 40 | 0;
+ if (!(a[e >> 0] | 0)) {
+ n = e;
+ m = n;
+ a[m >> 0] = 111;
+ a[m + 1 >> 0] = 117;
+ a[m + 2 >> 0] = 116;
+ a[m + 3 >> 0] = 46;
+ n = n + 4 | 0;
+ a[n >> 0] = 112;
+ a[n + 1 >> 0] = 110;
+ a[n + 2 >> 0] = 103;
+ a[n + 3 >> 0] = 0
+ }
+ n = Aa() | 0;
+ k = i;
+ i = i + ((1 * (l + 1 | 0) | 0) + 15 & -16) | 0;
+ e = c[b >> 2] | 0;
+ a:
+ do if ((e | 0) < 1) {
+ g = b + 4424 | 0;
+ h = 122209;
+ j = g + 39 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 20
+ } else {
+ if ((e | 0) == 5) {
+ c[b >> 2] = 2;
+ f = 2;
+ e = 0;
+ m = 20;
+ break
+ }
+ if ((e + -10 | 0) >>> 0 < 3) {
+ c[b >> 2] = 13;
+ f = 13;
+ e = 0;
+ m = 36;
+ break
+ }
+ if ((e & -2 | 0) == 14) {
+ c[b >> 2] = 13;
+ f = 13;
+ e = 0;
+ m = 24;
+ break
+ }
+ switch (e | 0) {
+ case 17:
+ {
+ c[b >> 2] = 34;
+ f = 34;
+ e = 0;
+ m = 36;
+ break a
+ }case 19:
+ {
+ g = b + 4424 | 0;
+ h = 122248;
+ j = g + 40 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 18;
+ f = 18;
+ e = 2;
+ m = 24;
+ break a
+ }case 26:
+ {
+ c[b >> 2] = 34;
+ f = 34;
+ e = 0;
+ m = 36;
+ break a
+ }case 27:
+ {
+ g = b + 4424 | 0;
+ h = 122288;
+ j = g + 20 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ f = 27;
+ e = 8;
+ m = 36;
+ break a
+ }case 33:
+ {
+ c[b >> 2] = 16;
+ f = 16;
+ e = 0;
+ m = 24;
+ break a
+ }default:
+ {
+ f = e;
+ e = 0;
+ m = 20;
+ break a
+ }
+ }
+ }
+ while (0);
+ do if ((m | 0) == 20) {
+ if ((f + -35 | 0) >>> 0 < 2) {
+ c[b >> 2] = 34;
+ f = 34;
+ m = 57;
+ break
+ }
+ if ((f & -2 | 0) == 38) {
+ c[b >> 2] = 37;
+ f = 37;
+ m = 57
+ } else
+ m = 24
+ }
+ while (0);
+ b:
+ do if ((m | 0) == 24) {
+ if ((f + -41 | 0) >>> 0 < 5) {
+ c[b >> 2] = 40;
+ f = 40;
+ m = 57;
+ break
+ }
+ switch (f | 0) {
+ case 46:
+ {
+ c[b >> 2] = 86;
+ f = 86;
+ m = 57;
+ break b
+ }case 48:
+ {
+ c[b >> 2] = 75;
+ f = 75;
+ m = 57;
+ break b
+ }case 54:
+ {
+ g = b + 4424 | 0;
+ h = 122308;
+ j = g + 50 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 60;
+ break b
+ }case 61:
+ case 59:
+ {
+ c[b >> 2] = 20;
+ f = 20;
+ m = 57;
+ break b
+ }case 62:
+ {
+ c[b >> 2] = 25;
+ f = 25;
+ m = 57;
+ break b
+ }default:
+ {
+ if ((f & -2 | 0) == 64) {
+ c[b >> 2] = 63;
+ f = 63;
+ m = 57;
+ break b
+ }
+ if ((f | 0) != 73) {
+ m = 36;
+ break b
+ }
+ g = b + 4424 | 0;
+ h = 122358;
+ j = g + 26 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ e = 8;
+ m = 58;
+ break b
+ }
+ }
+ }
+ while (0);
+ c:
+ do if ((m | 0) == 36)
+ switch (f | 0) {
+ case 78:
+ {
+ c[b >> 2] = 29;
+ f = 29;
+ m = 57;
+ break c
+ }case 83:
+ {
+ c[b >> 2] = 82;
+ f = 82;
+ m = 57;
+ break c
+ }case 88:
+ {
+ c[b >> 2] = 16;
+ f = 16;
+ m = 57;
+ break c
+ }case 91:
+ {
+ g = b + 4424 | 0;
+ h = 122209;
+ j = g + 39 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 60;
+ break c
+ }default:
+ {
+ if ((f + -94 | 0) >>> 0 < 3) {
+ g = b + 4424 | 0;
+ h = 122209;
+ j = g + 39 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 60;
+ break c
+ }
+ d:
+ do switch (f | 0) {
+ case 100:
+ {
+ c[b >> 2] = 98;
+ f = 98;
+ m = 57;
+ break c
+ }case 101:
+ {
+ c[b >> 2] = 99;
+ f = 99;
+ m = 57;
+ break c
+ }case 103:
+ {
+ c[b >> 2] = 102;
+ f = 102;
+ m = 57;
+ break c
+ }case 105:
+ {
+ c[b >> 2] = 104;
+ f = 104;
+ m = 57;
+ break c
+ }case 107:
+ {
+ c[b >> 2] = 106;
+ f = 106;
+ m = 57;
+ break c
+ }case 109:
+ {
+ c[b >> 2] = 108;
+ f = 108;
+ m = 57;
+ break c
+ }case 111:
+ {
+ c[b >> 2] = 110;
+ break
+ }default:
+ {
+ if ((f + -113 | 0) >>> 0 < 15) {
+ g = b + 4424 | 0;
+ h = 122209;
+ j = g + 39 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 60;
+ break c
+ }
+ if ((f | 0) > 142) {
+ g = b + 4424 | 0;
+ h = 122209;
+ j = g + 39 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ c[b >> 2] = 20;
+ f = 20;
+ e = 2;
+ m = 60;
+ break c
+ } else
+ switch (f | 0) {
+ case 110:
+ case 74:
+ break d;
+ default:
+ {
+ m = 57;
+ break c
+ }
+ }
+ }
+ }
+ while (0);
+ f = b + 4424 | 0;
+ g = f;
+ h = 122384;
+ j = g + 26 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0));
+ e = 8;
+ m = 59;
+ break c
+ }
+ }
+ while (0);
+ if ((m | 0) == 57)
+ if ((e | 0) > 4)
+ m = 58;
+ else
+ m = 60;
+ if ((m | 0) == 58) {
+ f = b + 4424 | 0;
+ m = 59
+ } else if ((m | 0) == 60) {
+ g = b + 4156 | 0;
+ h = c[g >> 2] | 0;
+ if (h >>> 0 <= 2) {
+ if ((h | 0) != 2)
+ m = 63
+ } else {
+ c[g >> 2] = 0;
+ m = 63
+ }
+ if ((m | 0) == 63) {
+ wd(k | 0, d | 0, l | 0) | 0;
+ a[k + l >> 0] = 0
+ }
+ switch (f | 0) {
+ case 142:
+ case 97:
+ case 58:
+ {
+ g = 0;
+ break
+ }default:
+ {
+ g = xb(b, k, l) | 0;
+ f = c[b >> 2] | 0
+ }
+ }
+ switch (f | 0) {
+ case 60:
+ case 20:
+ {
+ if ((l | 0) > 0) {
+ f = 0;
+ do {
+ d = a[k + f >> 0] | 0;
+ a[b + 4160 + f >> 0] = d << 24 >> 24 == 0 ? 32 : d;
+ f = f + 1 | 0
+ } while ((f | 0) != (l | 0))
+ }
+ break
+ }default:
+ {}
+ }
+ e = (g | 0) == 0 ? e : g;
+ f = b + 4424 | 0;
+ if (e) {
+ bd(o, f) | 0;
+ if ((e | 0) > 4) {
+ b = f;
+ l = b;
+ a[l >> 0] = 101;
+ a[l + 1 >> 0] = 114;
+ a[l + 2 >> 0] = 114;
+ a[l + 3 >> 0] = 111;
+ b = b + 4 | 0;
+ a[b >> 0] = 114;
+ a[b + 1 >> 0] = 58;
+ a[b + 2 >> 0] = 32;
+ a[b + 3 >> 0] = 0
+ } else {
+ g = f;
+ h = 122169;
+ j = g + 10 | 0;
+ do {
+ a[g >> 0] = a[h >> 0] | 0;
+ g = g + 1 | 0;
+ h = h + 1 | 0
+ } while ((g | 0) < (j | 0))
+ }
+ jb(f, o)
+ }
+ }
+ if ((m | 0) == 59) {
+ bd(o, f) | 0;
+ m = f;
+ b = m;
+ a[b >> 0] = 101;
+ a[b + 1 >> 0] = 114;
+ a[b + 2 >> 0] = 114;
+ a[b + 3 >> 0] = 111;
+ m = m + 4 | 0;
+ a[m >> 0] = 114;
+ a[m + 1 >> 0] = 58;
+ a[m + 2 >> 0] = 32;
+ a[m + 3 >> 0] = 0;
+ jb(f, o)
+ }
+ qa(n | 0);
+ o = e;
+ i = p;
+ return o | 0
+ }
+ function zb(b, d) {
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0;
+ l = i;
+ i = i + 112 | 0;
+ g = l;
+ k = l + 12 | 0;
+ f = l + 8 | 0;
+ switch (d | 0) {
+ case 270:
+ case 180:
+ case 90:
+ case 0:
+ break;
+ default:
+ {
+ b = b + 4424 | 0;
+ h = 122410;
+ j = b + 23 | 0;
+ do {
+ a[b >> 0] = a[h >> 0] | 0;
+ b = b + 1 | 0;
+ h = h + 1 | 0
+ } while ((b | 0) < (j | 0));
+ k = 8;
+ i = l;
+ return k | 0
+ }
+ }
+ e = b + 40 | 0;
+ d = cd(e) | 0;
+ if (d >>> 0 <= 3) {
+ d = b + 4424 | 0;
+ b = d;
+ h = 122441;
+ j = b + 22 | 0;
+ do {
+ a[b >> 0] = a[h >> 0] | 0;
+ b = b + 1 | 0;
+ h = h + 1 | 0
+ } while ((b | 0) < (j | 0));
+ bd(k, d) | 0;
+ j = d;
+ h = j;
+ a[h >> 0] = 101;
+ a[h + 1 >> 0] = 114;
+ a[h + 2 >> 0] = 114;
+ a[h + 3 >> 0] = 111;
+ j = j + 4 | 0;
+ a[j >> 0] = 114;
+ a[j + 1 >> 0] = 58;
+ a[j + 2 >> 0] = 32;
+ a[j + 3 >> 0] = 0;
+ jb(d, k);
+ k = 8;
+ i = l;
+ return k | 0
+ }
+ a[f >> 0] = a[d + -3 + (b + 40) >> 0] | 0;
+ a[f + 1 >> 0] = a[(cd(e) | 0) + -2 + (b + 40) >> 0] | 0;
+ a[f + 2 >> 0] = a[(cd(e) | 0) + -1 + (b + 40) >> 0] | 0;
+ a[f + 3 >> 0] = 0;
+ lb(f);
+ do if (!(ad(f, 122433) | 0))
+ e = wb(b) | 0;
+ else {
+ if (!(ad(f, 122437) | 0)) {
+ e = Fb(b) | 0;
+ break
+ }
+ d = b + 4424 | 0;
+ b = d;
+ h = 122441;
+ j = b + 22 | 0;
+ do {
+ a[b >> 0] = a[h >> 0] | 0;
+ b = b + 1 | 0;
+ h = h + 1 | 0
+ } while ((b | 0) < (j | 0));
+ c[g >> 2] = f;
+ c[g + 4 >> 2] = e;
+ Ic(122463, g) | 0;
+ bd(k, d) | 0;
+ j = d;
+ h = j;
+ a[h >> 0] = 101;
+ a[h + 1 >> 0] = 114;
+ a[h + 2 >> 0] = 114;
+ a[h + 3 >> 0] = 111;
+ j = j + 4 | 0;
+ a[j >> 0] = 114;
+ a[j + 1 >> 0] = 58;
+ a[j + 2 >> 0] = 32;
+ a[j + 3 >> 0] = 0;
+ jb(d, k);
+ k = 8;
+ i = l;
+ return k | 0
+ }
+ while (0);
+ d = b + 4424 | 0;
+ if (e) {
+ bd(k, d) | 0;
+ if ((e | 0) > 4) {
+ j = d;
+ h = j;
+ a[h >> 0] = 101;
+ a[h + 1 >> 0] = 114;
+ a[h + 2 >> 0] = 114;
+ a[h + 3 >> 0] = 111;
+ j = j + 4 | 0;
+ a[j >> 0] = 114;
+ a[j + 1 >> 0] = 58;
+ a[j + 2 >> 0] = 32;
+ a[j + 3 >> 0] = 0
+ } else {
+ b = d;
+ h = 122169;
+ j = b + 10 | 0;
+ do {
+ a[b >> 0] = a[h >> 0] | 0;
+ b = b + 1 | 0;
+ h = h + 1 | 0
+ } while ((b | 0) < (j | 0))
+ }
+ jb(d, k)
+ }
+ k = e;
+ i = l;
+ return k | 0
+ }
+ function Ab(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0;
+ if ((a | 0) < 1) {
+ h = 0;
+ b = -1
+ } else {
+ b = 1;
+ d = 0;
+ while (1) {
+ b = b << 1;
+ if ((b | 0) > (a | 0))
+ break;
+ else
+ d = d + 1 | 0
+ }
+ h = b >> 1;
+ b = d
+ }
+ c[24091] = a;
+ c[24092] = b;
+ g = 1 << b;
+ f = g + -1 | 0;
+ c[24093] = f;
+ e = md(g << 2) | 0;
+ c[24088] = e;
+ f = md(f << 2) | 0;
+ c[24089] = f;
+ if ((g | 0) <= 1)
+ return;
+ d = c[24093] | 0;
+ b = 1;
+ g = 0;
+ while (1) {
+ c[f + (g << 2) >> 2] = b;
+ c[e + (b << 2) >> 2] = g;
+ b = b << 1;
+ g = g + 1 | 0;
+ if ((g | 0) >= (d | 0))
+ break;
+ else
+ b = ((b & h | 0) == 0 ? 0 : a) ^ b
+ }
+ return
+ }
+ function Bb(a, b) {
+ a = a | 0;
+ b = b | 0;
+ var d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0;
+ i = md((a << 2) + 4 | 0) | 0;
+ c[24090] = i;
+ c[24094] = a;
+ c[i >> 2] = 1;
+ if ((a | 0) < 1)
+ return;
+ j = c[24088] | 0;
+ k = c[24089] | 0;
+ f = 1;
+ while (1) {
+ c[i + (f << 2) >> 2] = 1;
+ if ((f | 0) > 1) {
+ g = f;
+ do {
+ h = g;
+ g = g + -1 | 0;
+ e = i + (g << 2) | 0;
+ d = c[e >> 2] | 0;
+ if (!d)
+ d = 0;
+ else {
+ d = c[k + ((((c[j + (d << 2) >> 2] | 0) + b | 0) % (c[24093] | 0) | 0) << 2) >> 2] | 0;
+ c[e >> 2] = d
+ }
+ c[e >> 2] = d ^ c[i + (h + -2 << 2) >> 2]
+ } while ((g | 0) > 1)
+ }
+ c[i >> 2] = c[k + ((((c[j + (c[i >> 2] << 2) >> 2] | 0) + b | 0) % (c[24093] | 0) | 0) << 2) >> 2];
+ if ((f | 0) == (a | 0))
+ break;
+ else {
+ b = b + 1 | 0;
+ f = f + 1 | 0
+ }
+ }
+ return
+ }
+ function Cb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0;
+ f = c[24094] | 0;
+ if ((f | 0) > 0) {
+ g = 0;
+ do {
+ a[e + g >> 0] = 0;
+ g = g + 1 | 0;
+ f = c[24094] | 0
+ } while ((g | 0) < (f | 0))
+ }
+ if ((b | 0) > 0)
+ g = 0;
+ else
+ return;
+ while (1) {
+ h = f + -1 | 0;
+ j = a[e + h >> 0] | 0;
+ l = a[d + g >> 0] | 0;
+ k = (l ^ j) & 255;
+ l = j << 24 >> 24 != l << 24 >> 24;
+ a:
+ do if ((f | 0) > 1) {
+ if (!l) {
+ f = h;
+ while (1) {
+ j = f;
+ f = f + -1 | 0;
+ a[e + j >> 0] = a[e + f >> 0] | 0;
+ if ((j | 0) <= 1)
+ break a
+ }
+ }
+ do {
+ f = c[(c[24090] | 0) + (h << 2) >> 2] | 0;
+ j = h;
+ h = h + -1 | 0;
+ i = a[e + h >> 0] | 0;
+ if (!f)
+ a[e + j >> 0] = i;
+ else {
+ n = c[24088] | 0;
+ a[e + j >> 0] = c[(c[24089] | 0) + ((((c[n + (f << 2) >> 2] | 0) + (c[n + (k << 2) >> 2] | 0) | 0) % (c[24093] | 0) | 0) << 2) >> 2] ^ i & 255
+ }
+ } while ((j | 0) > 1)
+ }
+ while (0);
+ if (l ? (m = c[c[24090] >> 2] | 0, (m | 0) != 0) : 0) {
+ f = c[24088] | 0;
+ f = c[(c[24089] | 0) + ((((c[f + (m << 2) >> 2] | 0) + (c[f + (k << 2) >> 2] | 0) | 0) % (c[24093] | 0) | 0) << 2) >> 2] & 255
+ } else
+ f = 0;
+ a[e >> 0] = f;
+ g = g + 1 | 0;
+ if ((g | 0) == (b | 0))
+ break;
+ f = c[24094] | 0
+ }
+ return
+ }
+ function Db(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0;
+ e = c[24094] | 0;
+ if ((e | 0) > 0) {
+ f = 0;
+ do {
+ c[d + (f << 2) >> 2] = 0;
+ f = f + 1 | 0;
+ e = c[24094] | 0
+ } while ((f | 0) < (e | 0))
+ }
+ if ((a | 0) <= 0)
+ return;
+ m = c[24090] | 0;
+ n = c[24088] | 0;
+ o = c[24089] | 0;
+ f = 0;
+ while (1) {
+ g = e + -1 | 0;
+ j = c[d + (g << 2) >> 2] | 0;
+ l = c[b + (f << 2) >> 2] | 0;
+ k = l ^ j;
+ l = (j | 0) != (l | 0);
+ a:
+ do if ((e | 0) > 1) {
+ j = n + (k << 2) | 0;
+ if (!l) {
+ e = g;
+ while (1) {
+ j = e;
+ e = e + -1 | 0;
+ c[d + (j << 2) >> 2] = c[d + (e << 2) >> 2];
+ if ((j | 0) <= 1)
+ break a
+ }
+ }
+ do {
+ e = c[m + (g << 2) >> 2] | 0;
+ i = g;
+ g = g + -1 | 0;
+ h = c[d + (g << 2) >> 2] | 0;
+ if (!e)
+ c[d + (i << 2) >> 2] = h;
+ else
+ c[d + (i << 2) >> 2] = c[o + ((((c[n + (e << 2) >> 2] | 0) + (c[j >> 2] | 0) | 0) % (c[24093] | 0) | 0) << 2) >> 2] ^ h
+ } while ((i | 0) > 1)
+ }
+ while (0);
+ if (l ? (p = c[m >> 2] | 0, (p | 0) != 0) : 0)
+ e = c[o + ((((c[n + (p << 2) >> 2] | 0) + (c[n + (k << 2) >> 2] | 0) | 0) % (c[24093] | 0) | 0) << 2) >> 2] | 0;
+ else
+ e = 0;
+ c[d >> 2] = e;
+ f = f + 1 | 0;
+ if ((f | 0) == (a | 0))
+ break;
+ e = c[24094] | 0
+ }
+ return
+ }
+ function Eb() {
+ nd(c[24088] | 0);
+ nd(c[24089] | 0);
+ nd(c[24090] | 0);
+ c[24090] = 0;
+ return
+ }
+ function Fb(b) {
+ b = b | 0;
+ var e = 0,
+ f = 0,
+ j = 0,
+ k = 0.0,
+ l = 0.0,
+ m = 0.0,
+ n = 0,
+ o = 0,
+ p = 0.0,
+ q = 0.0,
+ r = 0,
+ s = 0.0,
+ t = 0.0,
+ u = 0.0,
+ v = 0.0,
+ w = 0.0,
+ x = 0.0,
+ y = 0.0,
+ z = 0,
+ A = 0,
+ B = 0,
+ C = 0,
+ D = 0,
+ E = 0,
+ F = 0,
+ G = 0,
+ H = 0,
+ I = 0,
+ J = 0,
+ K = 0,
+ L = 0,
+ M = 0,
+ N = 0,
+ O = 0,
+ P = 0,
+ Q = 0,
+ R = 0,
+ S = 0,
+ T = 0,
+ U = 0,
+ V = 0,
+ W = 0.0,
+ X = 0,
+ Y = 0,
+ Z = 0.0,
+ _ = 0,
+ $ = 0,
+ aa = 0,
+ ba = 0,
+ ca = 0,
+ da = 0,
+ ea = 0,
+ fa = 0,
+ ga = 0,
+ ha = 0,
+ ia = 0,
+ ja = 0,
+ ka = 0,
+ la = 0,
+ ma = 0,
+ na = 0,
+ oa = 0,
+ pa = 0,
+ qa = 0,
+ ra = 0,
+ sa = 0,
+ ta = 0,
+ ua = 0,
+ va = 0,
+ wa = 0,
+ xa = 0,
+ ya = 0,
+ za = 0,
+ Aa = 0,
+ Ba = 0,
+ Ca = 0,
+ Da = 0,
+ Ea = 0,
+ Fa = 0,
+ Ga = 0,
+ Ha = 0,
+ Ia = 0,
+ Ja = 0,
+ Ka = 0,
+ La = 0,
+ Ma = 0,
+ Na = 0,
+ Oa = 0,
+ Pa = 0,
+ Qa = 0,
+ Ra = 0,
+ Sa = 0,
+ Ta = 0,
+ Ua = 0,
+ Va = 0,
+ Wa = 0,
+ Xa = 0,
+ Ya = 0,
+ Za = 0,
+ _a = 0,
+ $a = 0,
+ ab = 0,
+ bb = 0,
+ cb = 0,
+ db = 0,
+ eb = 0,
+ fb = 0,
+ gb = 0,
+ hb = 0,
+ jb = 0,
+ kb = 0,
+ nb = 0,
+ pb = 0,
+ tb = 0,
+ ub = 0,
+ vb = 0,
+ wb = 0,
+ xb = 0,
+ yb = 0,
+ zb = 0,
+ Ab = 0,
+ Bb = 0,
+ Cb = 0,
+ Db = 0,
+ Eb = 0,
+ Fb = 0,
+ Gb = 0,
+ Ib = 0,
+ Jb = 0,
+ Kb = 0,
+ Lb = 0,
+ Mb = 0,
+ Nb = 0,
+ Ob = 0,
+ Pb = 0,
+ Qb = 0,
+ Rb = 0,
+ Sb = 0,
+ Tb = 0,
+ Ub = 0,
+ Vb = 0,
+ Wb = 0,
+ Xb = 0,
+ Yb = 0,
+ Zb = 0,
+ _b = 0,
+ $b = 0,
+ ac = 0,
+ bc = 0,
+ cc = 0,
+ dc = 0,
+ ec = 0,
+ fc = 0,
+ gc = 0,
+ hc = 0,
+ ic = 0,
+ jc = 0,
+ kc = 0,
+ lc = 0.0,
+ mc = 0,
+ nc = 0,
+ oc = 0,
+ pc = 0,
+ qc = 0,
+ rc = 0,
+ sc = 0,
+ tc = 0,
+ uc = 0,
+ vc = 0,
+ xc = 0,
+ yc = 0,
+ zc = 0,
+ Ac = 0,
+ Ec = 0,
+ Fc = 0;
+ Fc = i;
+ i = i + 2544 | 0;
+ Ec = Fc + 2512 | 0;
+ Ac = Fc + 2504 | 0;
+ zc = Fc + 2496 | 0;
+ yc = Fc + 2488 | 0;
+ xc = Fc + 2472 | 0;
+ vc = Fc + 2456 | 0;
+ uc = Fc + 2424 | 0;
+ tc = Fc + 2392 | 0;
+ kc = Fc + 2360 | 0;
+ jc = Fc + 2328 | 0;
+ ic = Fc + 2296 | 0;
+ gc = Fc + 2288 | 0;
+ fc = Fc + 2280 | 0;
+ ec = Fc + 2264 | 0;
+ dc = Fc + 2248 | 0;
+ cc = Fc + 2240 | 0;
+ bc = Fc + 2232 | 0;
+ ac = Fc + 2216 | 0;
+ $b = Fc + 2200 | 0;
+ _b = Fc + 2192 | 0;
+ Zb = Fc + 2184 | 0;
+ Yb = Fc + 2168 | 0;
+ Xb = Fc + 2152 | 0;
+ Wb = Fc + 2144 | 0;
+ Vb = Fc + 2136 | 0;
+ Ub = Fc + 2120 | 0;
+ Rb = Fc + 2104 | 0;
+ Qb = Fc + 2096 | 0;
+ Pb = Fc + 2088 | 0;
+ Ob = Fc + 2072 | 0;
+ Nb = Fc + 2056 | 0;
+ Mb = Fc + 2024 | 0;
+ Lb = Fc + 1992 | 0;
+ Kb = Fc + 1960 | 0;
+ Jb = Fc + 1928 | 0;
+ Ib = Fc + 1896 | 0;
+ Gb = Fc + 1888 | 0;
+ Fb = Fc + 1880 | 0;
+ Eb = Fc + 1864 | 0;
+ Db = Fc + 1848 | 0;
+ Cb = Fc + 1840 | 0;
+ Bb = Fc + 1832 | 0;
+ Ab = Fc + 1816 | 0;
+ zb = Fc + 1800 | 0;
+ yb = Fc + 1792 | 0;
+ xb = Fc + 1784 | 0;
+ wb = Fc + 1768 | 0;
+ vb = Fc + 1752 | 0;
+ ub = Fc + 1744 | 0;
+ tb = Fc + 1736 | 0;
+ pb = Fc + 1720 | 0;
+ nb = Fc + 1704 | 0;
+ kb = Fc + 1696 | 0;
+ jb = Fc + 1688 | 0;
+ hb = Fc + 1672 | 0;
+ gb = Fc + 1656 | 0;
+ fb = Fc + 1648 | 0;
+ eb = Fc + 1640 | 0;
+ db = Fc + 1624 | 0;
+ cb = Fc + 1608 | 0;
+ bb = Fc + 1576 | 0;
+ ab = Fc + 1544 | 0;
+ $a = Fc + 1512 | 0;
+ _a = Fc + 1480 | 0;
+ Va = Fc + 1472 | 0;
+ Ua = Fc + 1464 | 0;
+ Ta = Fc + 1448 | 0;
+ Sa = Fc + 1432 | 0;
+ Ra = Fc + 1424 | 0;
+ Qa = Fc + 1416 | 0;
+ Pa = Fc + 1400 | 0;
+ Oa = Fc + 1384 | 0;
+ Na = Fc + 1376 | 0;
+ Ma = Fc + 1368 | 0;
+ La = Fc + 1352 | 0;
+ Ka = Fc + 1336 | 0;
+ Ja = Fc + 1328 | 0;
+ Ia = Fc + 1320 | 0;
+ Ha = Fc + 1304 | 0;
+ Ga = Fc + 1288 | 0;
+ Fa = Fc + 1280 | 0;
+ Ea = Fc + 1272 | 0;
+ Da = Fc + 1256 | 0;
+ la = Fc + 1240 | 0;
+ ka = Fc + 1208 | 0;
+ ja = Fc + 1176 | 0;
+ ia = Fc + 1144 | 0;
+ ha = Fc + 1112 | 0;
+ ga = Fc + 1080 | 0;
+ fa = Fc + 1048 | 0;
+ Ca = Fc + 1040 | 0;
+ Ba = Fc + 1032 | 0;
+ Aa = Fc + 1016 | 0;
+ za = Fc + 1e3 | 0;
+ ya = Fc + 992 | 0;
+ xa = Fc + 984 | 0;
+ wa = Fc + 968 | 0;
+ va = Fc + 952 | 0;
+ ua = Fc + 944 | 0;
+ ta = Fc + 936 | 0;
+ sa = Fc + 920 | 0;
+ ra = Fc + 904 | 0;
+ qa = Fc + 896 | 0;
+ pa = Fc + 888 | 0;
+ oa = Fc + 872 | 0;
+ ea = Fc + 856 | 0;
+ da = Fc + 824 | 0;
+ ca = Fc + 792 | 0;
+ ba = Fc + 760 | 0;
+ aa = Fc + 728 | 0;
+ $ = Fc + 696 | 0;
+ _ = Fc + 664 | 0;
+ Y = Fc + 632 | 0;
+ X = Fc + 600 | 0;
+ T = Fc + 504 | 0;
+ U = Fc + 408 | 0;
+ S = Fc + 376 | 0;
+ R = Fc + 344 | 0;
+ Q = Fc + 312 | 0;
+ P = Fc + 280 | 0;
+ O = Fc + 248 | 0;
+ N = Fc + 216 | 0;
+ L = Fc + 184 | 0;
+ K = Fc + 152 | 0;
+ J = Fc + 120 | 0;
+ I = Fc + 88 | 0;
+ G = Fc + 72 | 0;
+ F = Fc + 56 | 0;
+ E = Fc + 48 | 0;
+ D = Fc + 40 | 0;
+ C = Fc + 32 | 0;
+ H = Fc + 24 | 0;
+ B = Fc + 16 | 0;
+ A = Fc + 8 | 0;
+ z = Fc;
+ Tb = Fc + 2516 | 0;
+ Sb = Fc + 2526 | 0;
+ lc = +g[b + 4136 >> 2];
+ nc = b + 4292 | 0;
+ f = c[nc >> 2] | 0;
+ a[Sb >> 0] = 0;
+ rc = b + 16 | 0;
+ if (!(c[rc >> 2] & 8))
+ sc = Dc(b + 40 | 0, 122475) | 0;
+ else
+ sc = c[30180] | 0;
+ if (!sc) {
+ e = b + 4424 | 0;
+ f = 122477;
+ j = e + 27 | 0;
+ do {
+ a[e >> 0] = a[f >> 0] | 0;
+ e = e + 1 | 0;
+ f = f + 1 | 0
+ } while ((e | 0) < (j | 0));
+ Ec = 10;
+ i = Fc;
+ return Ec | 0
+ }
+ mc = b + 20 | 0;
+ lb(mc);
+ M = b + 30 | 0;
+ lb(M);
+ if ((cd(mc) | 0) != 6) {
+ e = b + 4424 | 0;
+ f = 122504;
+ j = e + 35 | 0;
+ do {
+ a[e >> 0] = a[f >> 0] | 0;
+ e = e + 1 | 0;
+ f = f + 1 | 0
+ } while ((e | 0) < (j | 0));
+ Ec = 8;
+ i = Fc;
+ return Ec | 0
+ }
+ if ((cd(M) | 0) != 6) {
+ e = b + 4424 | 0;
+ f = 122539;
+ j = e + 35 | 0;
+ do {
+ a[e >> 0] = a[f >> 0] | 0;
+ e = e + 1 | 0;
+ f = f + 1 | 0
+ } while ((e | 0) < (j | 0));
+ Ec = 8;
+ i = Fc;
+ return Ec | 0
+ }
+ if ((mb(122574, mc, 6) | 0) == 6) {
+ e = b + 4424 | 0;
+ f = 122504;
+ j = e + 35 | 0;
+ do {
+ a[e >> 0] = a[f >> 0] | 0;
+ e = e + 1 | 0;
+ f = f + 1 | 0
+ } while ((e | 0) < (j | 0));
+ Ec = 8;
+ i = Fc;
+ return Ec | 0
+ }
+ oc = mb(122574, M, cd(M) | 0) | 0;
+ if ((oc | 0) == 6) {
+ e = b + 4424 | 0;
+ f = 122539;
+ j = e + 35 | 0;
+ do {
+ a[e >> 0] = a[f >> 0] | 0;
+ e = e + 1 | 0;
+ f = f + 1 | 0
+ } while ((e | 0) < (j | 0));
+ Ec = 8;
+ i = Fc;
+ return Ec | 0
+ }
+ pc = wc(6, 122591) | 0;
+ qc = b + 4 | 0;
+ e = c[qc >> 2] | 0;
+ if (!e) {
+ c[qc >> 2] = 50;
+ e = 50
+ }
+ hc = b + 4288 | 0;
+ o = c[hc >> 2] | 0;
+ if ((o | 0) > 0) {
+ n = 0;
+ j = 0;
+ k = 0.0;
+ do {
+ Za = c[b + 36208 + (n << 2) >> 2] | 0;
+ k = k + +(Za | 0);
+ j = ((Za | 0) == 0 & 1) + j | 0;
+ n = n + 1 | 0
+ } while ((n | 0) < (o | 0));
+ l = (+(e | 0) - k) / +(j | 0);
+ if (!j)
+ Wa = 20;
+ else
+ W = l
+ } else {
+ l = +(e | 0) / 0.0;
+ k = 0.0;
+ Wa = 20
+ }
+ if ((Wa | 0) == 20) {
+ c[qc >> 2] = ~~k;
+ W = l
+ }
+ if (!(ob(b, o + -1 | 0, 0) | 0)) {
+ e = 0;
+ do e = e + 1 | 0;
+ while ((ob(b, (c[hc >> 2] | 0) + -1 | 0, e) | 0) == 0);
+ na = e
+ } else
+ na = 0;
+ switch (c[b >> 2] | 0) {
+ case 13:
+ {
+ if ((c[hc >> 2] | 0) == 1)
+ Wa = 25;
+ break
+ }case 69:
+ case 130:
+ {
+ Wa = 25;
+ break
+ }default:
+ {}
+ }
+ a:
+ do if ((Wa | 0) == 25) {
+ switch (ib(b + 4160 | 0) | 0) {
+ case 19:
+ case 16:
+ case 13:
+ break;
+ default:
+ {
+ f = na + 68 | 0;
+ break a
+ }
+ }
+ e = b + 8 | 0;
+ if (!(c[e >> 2] | 0))
+ c[e >> 2] = 10;
+ f = na + 96 | 0
+ }
+ while (0);
+ j = c[b >> 2] | 0;
+ switch (j | 0) {
+ case 34:
+ {
+ if ((c[hc >> 2] | 0) == 1)
+ Wa = 32;
+ else
+ V = f;
+ break
+ }case 135:
+ {
+ Wa = 32;
+ break
+ }default:
+ Wa = 34
+ }
+ if ((Wa | 0) == 32) {
+ e = b + 8 | 0;
+ if (!(c[e >> 2] | 0)) {
+ c[e >> 2] = 10;
+ f = na + 96 | 0;
+ Wa = 34
+ } else
+ Wa = 34
+ }
+ b:
+ do if ((Wa | 0) == 34) {
+ switch (j | 0) {
+ case 37:
+ {
+ if ((c[hc >> 2] | 0) != 1) {
+ V = f;
+ break b
+ }
+ break
+ }case 136:
+ break;
+ default:
+ {
+ V = f;
+ break b
+ }
+ }
+ e = b + 8 | 0;
+ if (!(c[e >> 2] | 0)) {
+ c[e >> 2] = 10;
+ V = na + 51 | 0
+ } else
+ V = f
+ }
+ while (0);
+ if ((rb(j) | 0) != 0 ? (r = b + 4160 | 0, (ib(r) | 0) > 0) : 0) {
+ j = 0;
+ n = 0;
+ e = 0;
+ while (1) {
+ f = a[b + 4160 + j >> 0] | 0;
+ if ((n | 0) == 1) {
+ a[Sb + e >> 0] = f;
+ e = e + 1 | 0
+ }
+ j = j + 1 | 0;
+ if ((j | 0) >= (ib(r) | 0))
+ break;
+ else
+ n = f << 24 >> 24 == 43 ? 1 : n
+ }
+ } else
+ e = 0;
+ a[Sb + e >> 0] = 0;
+ if ((c[b + 4152 >> 2] | 0) != 0 ? (ib(b + 4160 | 0) | 0) != 0 : 0)
+ Za = 1;
+ else
+ Za = 0;
+ n = Za ? 9 : 0;
+ Xa = b + 12 | 0;
+ ma = c[Xa >> 2] | 0;
+ Ya = (c[b + 8 >> 2] | 0) + ma | 0;
+ if ((c[b >> 2] | 0) == 57) {
+ Z = +(Ya | 0);
+ y = lc;
+ r = sb(y * (Z + (Z + 74.0))) | 0;
+ Z = +(ma | 0);
+ z = sb(y * (Z + (Z + 72.0))) | 0;
+ c[A >> 2] = r;
+ c[A + 4 >> 2] = z;
+ Hb(sc, 122593, A) | 0
+ } else {
+ r = sb(lc * +((Ya << 1) + (c[nc >> 2] | 0) | 0)) | 0;
+ A = sb(lc * +((c[qc >> 2] | 0) + n + (ma << 1) | 0)) | 0;
+ c[z >> 2] = r;
+ c[z + 4 >> 2] = A;
+ Hb(sc, 122593, z) | 0
+ }
+ Hb(sc, 122636, B) | 0;
+ z = b + 4160 | 0;
+ if (!(ib(z) | 0))
+ Hb(sc, 122689, C) | 0;
+ else {
+ c[H >> 2] = z;
+ Hb(sc, 122676, H) | 0
+ }
+ Hb(sc, 122721, D) | 0;
+ c[E >> 2] = mc;
+ Hb(sc, 122733, E) | 0;
+ if ((c[b >> 2] | 0) == 57) {
+ Z = +(Ya | 0);
+ y = lc;
+ F = sb(y * (Z + (Z + 74.0))) | 0;
+ Z = +(ma | 0);
+ H = sb(y * (Z + (Z + 72.0))) | 0;
+ c[G >> 2] = F;
+ c[G + 4 >> 2] = H;
+ c[G + 8 >> 2] = M;
+ Hb(sc, 122766, G) | 0
+ } else {
+ G = sb(lc * +((Ya << 1) + (c[nc >> 2] | 0) | 0)) | 0;
+ H = sb(lc * +((c[qc >> 2] | 0) + n + (ma << 1) | 0)) | 0;
+ c[F >> 2] = G;
+ c[F + 4 >> 2] = H;
+ c[F + 8 >> 2] = M;
+ Hb(sc, 122766, F) | 0
+ }
+ e = c[rc >> 2] | 0;
+ f = (e & 6 | 0) == 0;
+ j = c[Xa >> 2] | 0;
+ Z = lc * +((c[qc >> 2] | 0) + n + j + (f ? 0 : j) | 0);
+ if ((c[b >> 2] | 0) == 57) {
+ if (!f) {
+ y = +(Ya | 0);
+ x = lc;
+ y = x * (y + (y + 74.0));
+ h[I >> 3] = 0.0;
+ h[I + 8 >> 3] = 0.0;
+ h[I + 16 >> 3] = y;
+ h[I + 24 >> 3] = lc * +(j | 0);
+ Hb(sc, 122828, I) | 0;
+ e = c[Xa >> 2] | 0;
+ h[J >> 3] = 0.0;
+ h[J + 8 >> 3] = x * (+(e | 0) + 72.0);
+ h[J + 16 >> 3] = y;
+ h[J + 24 >> 3] = lc * +(e | 0);
+ Hb(sc, 122828, J) | 0;
+ e = c[rc >> 2] | 0
+ }
+ if (!(e & 4)) {
+ s = +(Ya | 0);
+ k = lc
+ } else {
+ J = c[Xa >> 2] | 0;
+ k = lc;
+ h[K >> 3] = 0.0;
+ h[K + 8 >> 3] = 0.0;
+ h[K + 16 >> 3] = lc * +(J | 0);
+ h[K + 24 >> 3] = k * (+(J << 1 | 0) + 72.0);
+ Hb(sc, 122828, K) | 0;
+ s = +(Ya | 0);
+ K = c[Xa >> 2] | 0;
+ h[L >> 3] = k * (s + (s + 74.0) - +(K | 0));
+ h[L + 8 >> 3] = 0.0;
+ h[L + 16 >> 3] = lc * +(K | 0);
+ h[L + 24 >> 3] = k * (+(K << 1 | 0) + 72.0);
+ Hb(sc, 122828, L) | 0
+ }
+ x = k * (s + 35.76);
+ t = +(ma | 0);
+ y = k * (t + 35.6);
+ h[N >> 3] = x;
+ h[N + 8 >> 3] = y;
+ h[N + 16 >> 3] = k * 10.85;
+ c[N + 24 >> 2] = mc;
+ Hb(sc, 122889, N) | 0;
+ h[O >> 3] = x;
+ h[O + 8 >> 3] = y;
+ h[O + 16 >> 3] = k * 8.97;
+ c[O + 24 >> 2] = M;
+ Hb(sc, 122889, O) | 0;
+ h[P >> 3] = x;
+ h[P + 8 >> 3] = y;
+ h[P + 16 >> 3] = k * 7.1;
+ c[P + 24 >> 2] = mc;
+ Hb(sc, 122889, P) | 0;
+ h[Q >> 3] = x;
+ h[Q + 8 >> 3] = y;
+ h[Q + 16 >> 3] = k * 5.22;
+ c[Q + 24 >> 2] = M;
+ Hb(sc, 122889, Q) | 0;
+ h[R >> 3] = x;
+ h[R + 8 >> 3] = y;
+ h[R + 16 >> 3] = k * 3.31;
+ c[R + 24 >> 2] = mc;
+ Hb(sc, 122889, R) | 0;
+ h[S >> 3] = x;
+ h[S + 8 >> 3] = y;
+ h[S + 16 >> 3] = k * 1.43;
+ c[S + 24 >> 2] = M;
+ Hb(sc, 122889, S) | 0;
+ e = c[hc >> 2] | 0;
+ if ((e | 0) > 0) {
+ q = +(Ya | 0);
+ f = c[nc >> 2] | 0;
+ j = 0;
+ do {
+ if ((f | 0) > 0) {
+ p = +(j | 0) * 2.135 + 1.43;
+ k = lc * (t + (p + 1.0));
+ l = lc * (t + (p + .5));
+ m = lc * (t + (p + -.5));
+ p = lc * (t + (p + -1.0));
+ if (!(j & 1)) {
+ e = 0;
+ do {
+ if (ob(b, j, e) | 0) {
+ x = +(e | 0) * 2.46 + 1.23;
+ y = x;
+ x = lc * (q + x);
+ w = lc * (s + (y + .86));
+ y = lc * (s + (y + -.86));
+ h[U >> 3] = x;
+ h[U + 8 >> 3] = k;
+ h[U + 16 >> 3] = w;
+ h[U + 24 >> 3] = l;
+ h[U + 32 >> 3] = w;
+ h[U + 40 >> 3] = m;
+ h[U + 48 >> 3] = x;
+ h[U + 56 >> 3] = p;
+ h[U + 64 >> 3] = y;
+ h[U + 72 >> 3] = m;
+ h[U + 80 >> 3] = y;
+ h[U + 88 >> 3] = l;
+ Hb(sc, 122947, U) | 0
+ }
+ e = e + 1 | 0;
+ f = c[nc >> 2] | 0
+ } while ((e | 0) < (f | 0))
+ } else {
+ e = 0;
+ do {
+ if (ob(b, j, e) | 0) {
+ x = +(e | 0) * 2.46 + 1.23 + 1.23;
+ y = x;
+ x = lc * (q + x);
+ w = lc * (s + (y + .86));
+ y = lc * (s + (y + -.86));
+ h[T >> 3] = x;
+ h[T + 8 >> 3] = k;
+ h[T + 16 >> 3] = w;
+ h[T + 24 >> 3] = l;
+ h[T + 32 >> 3] = w;
+ h[T + 40 >> 3] = m;
+ h[T + 48 >> 3] = x;
+ h[T + 56 >> 3] = p;
+ h[T + 64 >> 3] = y;
+ h[T + 72 >> 3] = m;
+ h[T + 80 >> 3] = y;
+ h[T + 88 >> 3] = l;
+ Hb(sc, 122947, T) | 0
+ }
+ e = e + 1 | 0;
+ f = c[nc >> 2] | 0
+ } while ((e | 0) < (f | 0))
+ }
+ e = c[hc >> 2] | 0
+ }
+ j = j + 1 | 0
+ } while ((j | 0) < (e | 0))
+ }
+ if ((c[b >> 2] | 0) == 57) {
+ q = 0.0;
+ y = 0.0;
+ k = 0.0
+ } else
+ Wa = 75
+ } else {
+ e = c[hc >> 2] | 0;
+ Wa = 75
+ }
+ if ((Wa | 0) == 75)
+ if ((e | 0) > 0) {
+ w = +(ma | 0);
+ x = lc;
+ f = 0;
+ l = 0.0;
+ j = 0;
+ do {
+ U = c[b + 36208 + (j << 2) >> 2] | 0;
+ y = (U | 0) == 0 ? W : +(U | 0);
+ if ((j | 0) > 0) {
+ e = 0;
+ k = 0.0;
+ do {
+ U = c[b + 36208 + (e << 2) >> 2] | 0;
+ k = k + ((U | 0) == 0 ? W : +(U | 0));
+ e = e + 1 | 0
+ } while ((e | 0) != (j | 0))
+ } else
+ k = 0.0;
+ k = w + k;
+ u = k;
+ q = x * (u + 8.0);
+ s = lc * k;
+ t = lc * y;
+ u = x * (u + 10.0);
+ v = x * (y + -5.0);
+ r = 0;
+ o = (ob(b, j, 0) | 0) != 0 & 1;
+ while (1) {
+ e = 0;
+ do {
+ e = e + 1 | 0;
+ n = e + r | 0;
+ U = ob(b, j, n) | 0
+ } while ((U | 0) == (ob(b, j, r) | 0));
+ if (!f) {
+ U = (r | 0) > (V | 0) ? (j | 0) == ((c[hc >> 2] | 0) + -1 | 0) : 0;
+ f = U & 1;
+ l = U ? q : l
+ }
+ do if ((o | 0) == 1) {
+ p = lc * +(r + Ya | 0);
+ m = lc * +(e | 0);
+ if (!f) {
+ h[X >> 3] = p;
+ h[X + 8 >> 3] = s;
+ h[X + 16 >> 3] = m;
+ h[X + 24 >> 3] = t;
+ Hb(sc, 122828, X) | 0;
+ e = 0;
+ break
+ } else {
+ h[Y >> 3] = p;
+ h[Y + 8 >> 3] = u;
+ h[Y + 16 >> 3] = m;
+ h[Y + 24 >> 3] = v;
+ Hb(sc, 122828, Y) | 0;
+ e = 0;
+ break
+ }
+ } else
+ e = 1;
+ while (0);
+ if ((n | 0) < (c[nc >> 2] | 0)) {
+ r = n;
+ o = e
+ } else
+ break
+ }
+ j = j + 1 | 0;
+ e = c[hc >> 2] | 0
+ } while ((j | 0) < (e | 0));
+ q = l
+ } else {
+ q = 0.0;
+ y = 0.0;
+ k = 0.0
+ }
+ r = Ya + na | 0;
+ p = lc * (W + k);
+ c:
+ do if (Za) {
+ switch (c[b >> 2] | 0) {
+ case 13:
+ {
+ if ((e | 0) == 1)
+ Wa = 93;
+ else
+ f = 0;
+ break
+ }case 69:
+ case 130:
+ {
+ Wa = 93;
+ break
+ }default:
+ f = 0
+ }
+ d:
+ do if ((Wa | 0) == 93)
+ switch (ib(z) | 0) {
+ case 14:
+ case 11:
+ case 8:
+ {
+ x = +(r | 0);
+ w = p;
+ k = lc;
+ W = k * 5.0;
+ h[_ >> 3] = lc * x;
+ h[_ + 8 >> 3] = w;
+ h[_ + 16 >> 3] = k;
+ h[_ + 24 >> 3] = W;
+ Hb(sc, 122828, _) | 0;
+ h[$ >> 3] = lc * +(r + 2 | 0);
+ h[$ + 8 >> 3] = w;
+ h[$ + 16 >> 3] = k;
+ h[$ + 24 >> 3] = W;
+ Hb(sc, 122828, $) | 0;
+ h[aa >> 3] = lc * +(r + 32 | 0);
+ h[aa + 8 >> 3] = w;
+ h[aa + 16 >> 3] = k;
+ h[aa + 24 >> 3] = W;
+ Hb(sc, 122828, aa) | 0;
+ h[ba >> 3] = lc * +(r + 34 | 0);
+ h[ba + 8 >> 3] = w;
+ h[ba + 16 >> 3] = k;
+ h[ba + 24 >> 3] = W;
+ Hb(sc, 122828, ba) | 0;
+ h[ca >> 3] = lc * +(r + 64 | 0);
+ h[ca + 8 >> 3] = w;
+ h[ca + 16 >> 3] = k;
+ h[ca + 24 >> 3] = W;
+ Hb(sc, 122828, ca) | 0;
+ h[da >> 3] = lc * +(r + 66 | 0);
+ h[da + 8 >> 3] = w;
+ h[da + 16 >> 3] = k;
+ h[da + 24 >> 3] = W;
+ Hb(sc, 122828, da) | 0;
+ c[Tb >> 2] = d[z >> 0] | d[z + 1 >> 0] << 8 | d[z + 2 >> 0] << 16 | d[z + 3 >> 0] << 24;
+ Va = Tb + 4 | 0;
+ a[Va >> 0] = 0;
+ W = Z;
+ h[ea >> 3] = lc * (x + 17.0);
+ h[ea + 8 >> 3] = W;
+ Hb(sc, 123041, ea) | 0;
+ k = k * 11.0;
+ h[oa >> 3] = k;
+ c[oa + 8 >> 2] = mc;
+ Hb(sc, 123093, oa) | 0;
+ c[pa >> 2] = Tb;
+ Hb(sc, 123157, pa) | 0;
+ Hb(sc, 123170, qa) | 0;
+ Ua = b + 4164 | 0;
+ c[Tb >> 2] = d[Ua >> 0] | d[Ua + 1 >> 0] << 8 | d[Ua + 2 >> 0] << 16 | d[Ua + 3 >> 0] << 24;
+ a[Va >> 0] = 0;
+ h[ra >> 3] = lc * (x + 50.0);
+ h[ra + 8 >> 3] = W;
+ Hb(sc, 123041, ra) | 0;
+ h[sa >> 3] = k;
+ c[sa + 8 >> 2] = mc;
+ Hb(sc, 123093, sa) | 0;
+ c[ta >> 2] = Tb;
+ Hb(sc, 123157, ta) | 0;
+ Hb(sc, 123170, ua) | 0;
+ switch (cd(Sb) | 0) {
+ case 2:
+ {
+ h[va >> 3] = lc * +(r + 86 | 0);
+ h[va + 8 >> 3] = lc * q;
+ Hb(sc, 123041, va) | 0;
+ h[wa >> 3] = k;
+ c[wa + 8 >> 2] = mc;
+ Hb(sc, 123093, wa) | 0;
+ c[xa >> 2] = Sb;
+ Hb(sc, 123157, xa) | 0;
+ Hb(sc, 123170, ya) | 0;
+ f = 1;
+ break d
+ }case 5:
+ {
+ h[za >> 3] = lc * +(r + 100 | 0);
+ h[za + 8 >> 3] = lc * q;
+ Hb(sc, 123041, za) | 0;
+ h[Aa >> 3] = k;
+ c[Aa + 8 >> 2] = mc;
+ Hb(sc, 123093, Aa) | 0;
+ c[Ba >> 2] = Sb;
+ Hb(sc, 123157, Ba) | 0;
+ Hb(sc, 123170, Ca) | 0;
+ f = 1;
+ break d
+ }default:
+ {
+ f = 1;
+ break d
+ }
+ }
+ }case 19:
+ case 16:
+ case 13:
+ {
+ x = +(r | 0);
+ w = p;
+ k = lc;
+ W = k * 5.0;
+ h[fa >> 3] = lc * x;
+ h[fa + 8 >> 3] = w;
+ h[fa + 16 >> 3] = k;
+ h[fa + 24 >> 3] = W;
+ Hb(sc, 122828, fa) | 0;
+ h[ga >> 3] = lc * +(r + 2 | 0);
+ h[ga + 8 >> 3] = w;
+ h[ga + 16 >> 3] = k;
+ h[ga + 24 >> 3] = W;
+ Hb(sc, 122828, ga) | 0;
+ h[ha >> 3] = lc * +(r + 46 | 0);
+ h[ha + 8 >> 3] = w;
+ h[ha + 16 >> 3] = k;
+ h[ha + 24 >> 3] = W;
+ Hb(sc, 122828, ha) | 0;
+ h[ia >> 3] = lc * +(r + 48 | 0);
+ h[ia + 8 >> 3] = w;
+ h[ia + 16 >> 3] = k;
+ h[ia + 24 >> 3] = W;
+ Hb(sc, 122828, ia) | 0;
+ h[ja >> 3] = lc * +(r + 92 | 0);
+ h[ja + 8 >> 3] = w;
+ h[ja + 16 >> 3] = k;
+ h[ja + 24 >> 3] = W;
+ Hb(sc, 122828, ja) | 0;
+ h[ka >> 3] = lc * +(r + 94 | 0);
+ h[ka + 8 >> 3] = w;
+ h[ka + 16 >> 3] = k;
+ h[ka + 24 >> 3] = W;
+ Hb(sc, 122828, ka) | 0;
+ a[Tb >> 0] = a[z >> 0] | 0;
+ a[Tb + 1 >> 0] = 0;
+ W = Z;
+ h[la >> 3] = lc * (x + -7.0);
+ h[la + 8 >> 3] = W;
+ Hb(sc, 123041, la) | 0;
+ k = k * 11.0;
+ h[Da >> 3] = k;
+ c[Da + 8 >> 2] = mc;
+ Hb(sc, 123093, Da) | 0;
+ c[Ea >> 2] = Tb;
+ Hb(sc, 123157, Ea) | 0;
+ Hb(sc, 123170, Fa) | 0;
+ Fa = b + 4161 | 0;
+ a[Tb >> 0] = a[Fa >> 0] | 0;
+ a[Tb + 1 >> 0] = a[Fa + 1 >> 0] | 0;
+ a[Tb + 2 >> 0] = a[Fa + 2 >> 0] | 0;
+ a[Tb + 3 >> 0] = a[Fa + 3 >> 0] | 0;
+ a[Tb + 4 >> 0] = a[Fa + 4 >> 0] | 0;
+ a[Tb + 5 >> 0] = a[Fa + 5 >> 0] | 0;
+ Fa = Tb + 6 | 0;
+ a[Fa >> 0] = 0;
+ h[Ga >> 3] = lc * (x + 24.0);
+ h[Ga + 8 >> 3] = W;
+ Hb(sc, 123041, Ga) | 0;
+ h[Ha >> 3] = k;
+ c[Ha + 8 >> 2] = mc;
+ Hb(sc, 123093, Ha) | 0;
+ c[Ia >> 2] = Tb;
+ Hb(sc, 123157, Ia) | 0;
+ Hb(sc, 123170, Ja) | 0;
+ Ja = b + 4167 | 0;
+ a[Tb >> 0] = a[Ja >> 0] | 0;
+ a[Tb + 1 >> 0] = a[Ja + 1 >> 0] | 0;
+ a[Tb + 2 >> 0] = a[Ja + 2 >> 0] | 0;
+ a[Tb + 3 >> 0] = a[Ja + 3 >> 0] | 0;
+ a[Tb + 4 >> 0] = a[Ja + 4 >> 0] | 0;
+ a[Tb + 5 >> 0] = a[Ja + 5 >> 0] | 0;
+ a[Fa >> 0] = 0;
+ h[Ka >> 3] = lc * (x + 71.0);
+ h[Ka + 8 >> 3] = W;
+ Hb(sc, 123041, Ka) | 0;
+ h[La >> 3] = k;
+ c[La + 8 >> 2] = mc;
+ Hb(sc, 123093, La) | 0;
+ c[Ma >> 2] = Tb;
+ Hb(sc, 123157, Ma) | 0;
+ Hb(sc, 123170, Na) | 0;
+ switch (cd(Sb) | 0) {
+ case 2:
+ {
+ h[Oa >> 3] = lc * +(r + 114 | 0);
+ h[Oa + 8 >> 3] = lc * q;
+ Hb(sc, 123041, Oa) | 0;
+ h[Pa >> 3] = k;
+ c[Pa + 8 >> 2] = mc;
+ Hb(sc, 123093, Pa) | 0;
+ c[Qa >> 2] = Sb;
+ Hb(sc, 123157, Qa) | 0;
+ Hb(sc, 123170, Ra) | 0;
+ f = 1;
+ break d
+ }case 5:
+ {
+ h[Sa >> 3] = lc * +(r + 128 | 0);
+ h[Sa + 8 >> 3] = lc * q;
+ Hb(sc, 123041, Sa) | 0;
+ h[Ta >> 3] = k;
+ c[Ta + 8 >> 2] = mc;
+ Hb(sc, 123093, Ta) | 0;
+ c[Ua >> 2] = Sb;
+ Hb(sc, 123157, Ua) | 0;
+ Hb(sc, 123170, Va) | 0;
+ f = 1;
+ break d
+ }default:
+ {
+ f = 1;
+ break d
+ }
+ }
+ }default:
+ {
+ f = 0;
+ break d
+ }
+ }
+ while (0);
+ switch (c[b >> 2] | 0) {
+ case 34:
+ {
+ if ((c[hc >> 2] | 0) == 1)
+ Wa = 102;
+ break
+ }case 135:
+ {
+ Wa = 102;
+ break
+ }default:
+ {}
+ }
+ e:
+ do if ((Wa | 0) == 102) {
+ k = p;
+ l = lc;
+ m = l * 5.0;
+ n = na + 11 | 0;
+ o = na;
+ j = 1;
+ while (1) {
+ e = 0;
+ do {
+ e = e + 1 | 0;
+ f = e + o | 0;
+ Wa = ob(b, (c[hc >> 2] | 0) + -1 | 0, f) | 0
+ } while ((Wa | 0) == (ob(b, (c[hc >> 2] | 0) + -1 | 0, o) | 0));
+ if ((j | 0) == 1) {
+ h[_a >> 3] = lc * +(Ya + o | 0);
+ h[_a + 8 >> 3] = k;
+ h[_a + 16 >> 3] = lc * +(e | 0);
+ h[_a + 24 >> 3] = m;
+ Hb(sc, 122828, _a) | 0;
+ e = 0
+ } else
+ e = 1;
+ if ((f | 0) < (n | 0)) {
+ o = f;
+ j = e
+ } else
+ break
+ }
+ h[$a >> 3] = lc * +(r + 46 | 0);
+ h[$a + 8 >> 3] = k;
+ h[$a + 16 >> 3] = l;
+ h[$a + 24 >> 3] = m;
+ Hb(sc, 122828, $a) | 0;
+ h[ab >> 3] = lc * +(r + 48 | 0);
+ h[ab + 8 >> 3] = k;
+ h[ab + 16 >> 3] = l;
+ h[ab + 24 >> 3] = m;
+ Hb(sc, 122828, ab) | 0;
+ o = na + 96 | 0;
+ n = na + 85 | 0;
+ j = 1;
+ while (1) {
+ e = 0;
+ do {
+ e = e + 1 | 0;
+ f = e + n | 0;
+ ab = ob(b, (c[hc >> 2] | 0) + -1 | 0, f) | 0
+ } while ((ab | 0) == (ob(b, (c[hc >> 2] | 0) + -1 | 0, n) | 0));
+ if ((j | 0) == 1) {
+ h[bb >> 3] = lc * +(Ya + n | 0);
+ h[bb + 8 >> 3] = k;
+ h[bb + 16 >> 3] = lc * +(e | 0);
+ h[bb + 24 >> 3] = m;
+ Hb(sc, 122828, bb) | 0;
+ e = 0
+ } else
+ e = 1;
+ if ((f | 0) < (o | 0)) {
+ n = f;
+ j = e
+ } else
+ break
+ }
+ a[Tb >> 0] = a[z >> 0] | 0;
+ bb = Tb + 1 | 0;
+ a[bb >> 0] = 0;
+ w = +(r | 0);
+ x = Z;
+ h[cb >> 3] = lc * (w + -5.0);
+ h[cb + 8 >> 3] = x;
+ Hb(sc, 123041, cb) | 0;
+ W = l * 8.0;
+ h[db >> 3] = W;
+ c[db + 8 >> 2] = mc;
+ Hb(sc, 123093, db) | 0;
+ c[eb >> 2] = Tb;
+ Hb(sc, 123157, eb) | 0;
+ Hb(sc, 123170, fb) | 0;
+ fb = b + 4161 | 0;
+ a[Tb >> 0] = a[fb >> 0] | 0;
+ a[Tb + 1 >> 0] = a[fb + 1 >> 0] | 0;
+ a[Tb + 2 >> 0] = a[fb + 2 >> 0] | 0;
+ a[Tb + 3 >> 0] = a[fb + 3 >> 0] | 0;
+ a[Tb + 4 >> 0] = a[fb + 4 >> 0] | 0;
+ a[Tb + 5 >> 0] = 0;
+ h[gb >> 3] = lc * (w + 27.0);
+ h[gb + 8 >> 3] = x;
+ Hb(sc, 123041, gb) | 0;
+ k = l * 11.0;
+ h[hb >> 3] = k;
+ c[hb + 8 >> 2] = mc;
+ Hb(sc, 123093, hb) | 0;
+ c[jb >> 2] = Tb;
+ Hb(sc, 123157, jb) | 0;
+ Hb(sc, 123170, kb) | 0;
+ kb = b + 4166 | 0;
+ a[Tb >> 0] = a[kb >> 0] | 0;
+ a[Tb + 1 >> 0] = a[kb + 1 >> 0] | 0;
+ a[Tb + 2 >> 0] = a[kb + 2 >> 0] | 0;
+ a[Tb + 3 >> 0] = a[kb + 3 >> 0] | 0;
+ a[Tb + 4 >> 0] = a[kb + 4 >> 0] | 0;
+ a[Tb + 6 >> 0] = 0;
+ h[nb >> 3] = lc * (w + 68.0);
+ h[nb + 8 >> 3] = x;
+ Hb(sc, 123041, nb) | 0;
+ h[pb >> 3] = k;
+ c[pb + 8 >> 2] = mc;
+ Hb(sc, 123093, pb) | 0;
+ c[tb >> 2] = Tb;
+ Hb(sc, 123157, tb) | 0;
+ Hb(sc, 123170, ub) | 0;
+ a[Tb >> 0] = a[b + 4171 >> 0] | 0;
+ a[bb >> 0] = 0;
+ h[vb >> 3] = lc * (w + 100.0);
+ h[vb + 8 >> 3] = x;
+ Hb(sc, 123041, vb) | 0;
+ h[wb >> 3] = W;
+ c[wb + 8 >> 2] = mc;
+ Hb(sc, 123093, wb) | 0;
+ c[xb >> 2] = Tb;
+ Hb(sc, 123157, xb) | 0;
+ Hb(sc, 123170, yb) | 0;
+ switch (cd(Sb) | 0) {
+ case 2:
+ {
+ h[zb >> 3] = lc * +(r + 116 | 0);
+ h[zb + 8 >> 3] = lc * q;
+ Hb(sc, 123041, zb) | 0;
+ h[Ab >> 3] = k;
+ c[Ab + 8 >> 2] = mc;
+ Hb(sc, 123093, Ab) | 0;
+ c[Bb >> 2] = Sb;
+ Hb(sc, 123157, Bb) | 0;
+ Hb(sc, 123170, Cb) | 0;
+ f = 1;
+ break e
+ }case 5:
+ {
+ h[Db >> 3] = lc * +(r + 130 | 0);
+ h[Db + 8 >> 3] = lc * q;
+ Hb(sc, 123041, Db) | 0;
+ h[Eb >> 3] = k;
+ c[Eb + 8 >> 2] = mc;
+ Hb(sc, 123093, Eb) | 0;
+ c[Fb >> 2] = Sb;
+ Hb(sc, 123157, Fb) | 0;
+ Hb(sc, 123170, Gb) | 0;
+ f = 1;
+ break e
+ }default:
+ {
+ f = 1;
+ break e
+ }
+ }
+ }
+ while (0);
+ switch (c[b >> 2] | 0) {
+ case 37:
+ {
+ if ((c[hc >> 2] | 0) != 1)
+ break c;
+ break
+ }case 136:
+ break;
+ default:
+ break c
+ }
+ w = +(r | 0);
+ W = p;
+ k = lc;
+ x = k * 5.0;
+ h[Ib >> 3] = lc * w;
+ h[Ib + 8 >> 3] = W;
+ h[Ib + 16 >> 3] = k;
+ h[Ib + 24 >> 3] = x;
+ Hb(sc, 122828, Ib) | 0;
+ h[Jb >> 3] = lc * +(r + 2 | 0);
+ h[Jb + 8 >> 3] = W;
+ h[Jb + 16 >> 3] = k;
+ h[Jb + 24 >> 3] = x;
+ Hb(sc, 122828, Jb) | 0;
+ h[Kb >> 3] = lc * +(r + 46 | 0);
+ h[Kb + 8 >> 3] = W;
+ h[Kb + 16 >> 3] = k;
+ h[Kb + 24 >> 3] = x;
+ Hb(sc, 122828, Kb) | 0;
+ h[Lb >> 3] = lc * +(r + 48 | 0);
+ h[Lb + 8 >> 3] = W;
+ h[Lb + 16 >> 3] = k;
+ h[Lb + 24 >> 3] = x;
+ Hb(sc, 122828, Lb) | 0;
+ h[Mb >> 3] = lc * +(r + 50 | 0);
+ h[Mb + 8 >> 3] = W;
+ h[Mb + 16 >> 3] = k;
+ h[Mb + 24 >> 3] = x;
+ Hb(sc, 122828, Mb) | 0;
+ a[Tb >> 0] = a[z >> 0] | 0;
+ Mb = Tb + 1 | 0;
+ a[Mb >> 0] = 0;
+ x = Z;
+ h[Nb >> 3] = lc * (w + -5.0);
+ h[Nb + 8 >> 3] = x;
+ Hb(sc, 123041, Nb) | 0;
+ W = k * 8.0;
+ h[Ob >> 3] = W;
+ c[Ob + 8 >> 2] = mc;
+ Hb(sc, 123093, Ob) | 0;
+ c[Pb >> 2] = Tb;
+ Hb(sc, 123157, Pb) | 0;
+ Hb(sc, 123170, Qb) | 0;
+ Qb = b + 4161 | 0;
+ a[Tb >> 0] = a[Qb >> 0] | 0;
+ a[Tb + 1 >> 0] = a[Qb + 1 >> 0] | 0;
+ a[Tb + 2 >> 0] = a[Qb + 2 >> 0] | 0;
+ a[Tb + 3 >> 0] = a[Qb + 3 >> 0] | 0;
+ a[Tb + 4 >> 0] = a[Qb + 4 >> 0] | 0;
+ a[Tb + 5 >> 0] = a[Qb + 5 >> 0] | 0;
+ a[Tb + 6 >> 0] = 0;
+ h[Rb >> 3] = lc * (w + 24.0);
+ h[Rb + 8 >> 3] = x;
+ Hb(sc, 123041, Rb) | 0;
+ k = k * 11.0;
+ h[Ub >> 3] = k;
+ c[Ub + 8 >> 2] = mc;
+ Hb(sc, 123093, Ub) | 0;
+ c[Vb >> 2] = Tb;
+ Hb(sc, 123157, Vb) | 0;
+ Hb(sc, 123170, Wb) | 0;
+ a[Tb >> 0] = a[b + 4167 >> 0] | 0;
+ a[Mb >> 0] = 0;
+ h[Xb >> 3] = lc * (w + 55.0);
+ h[Xb + 8 >> 3] = x;
+ Hb(sc, 123041, Xb) | 0;
+ h[Yb >> 3] = W;
+ c[Yb + 8 >> 2] = mc;
+ Hb(sc, 123093, Yb) | 0;
+ c[Zb >> 2] = Tb;
+ Hb(sc, 123157, Zb) | 0;
+ Hb(sc, 123170, _b) | 0;
+ switch (cd(Sb) | 0) {
+ case 2:
+ {
+ h[$b >> 3] = lc * +(r + 70 | 0);
+ h[$b + 8 >> 3] = lc * q;
+ Hb(sc, 123041, $b) | 0;
+ h[ac >> 3] = k;
+ c[ac + 8 >> 2] = mc;
+ Hb(sc, 123093, ac) | 0;
+ c[bc >> 2] = Sb;
+ Hb(sc, 123157, bc) | 0;
+ Hb(sc, 123170, cc) | 0;
+ f = 1;
+ break c
+ }case 5:
+ {
+ h[dc >> 3] = lc * +(r + 84 | 0);
+ h[dc + 8 >> 3] = lc * q;
+ Hb(sc, 123041, dc) | 0;
+ h[ec >> 3] = k;
+ c[ec + 8 >> 2] = mc;
+ Hb(sc, 123093, ec) | 0;
+ c[fc >> 2] = Sb;
+ Hb(sc, 123157, fc) | 0;
+ Hb(sc, 123170, gc) | 0;
+ f = 1;
+ break c
+ }default:
+ {
+ f = 1;
+ break c
+ }
+ }
+ } else
+ f = 0;
+ while (0);
+ e = c[b >> 2] | 0;
+ do if ((e | 0) != 57) {
+ do if (c[rc >> 2] & 2) {
+ if ((c[hc >> 2] | 0) <= 1)
+ break;
+ if ((qb(e) | 0) != 1)
+ break;
+ if ((c[hc >> 2] | 0) <= 1)
+ break;
+ m = lc * +(Ya | 0);
+ k = +(ma | 0);
+ l = lc * 2.0;
+ e = 1;
+ do {
+ W = lc * +(c[nc >> 2] | 0);
+ h[ic >> 3] = m;
+ h[ic + 8 >> 3] = lc * (k + y * +(e | 0) + -1.0);
+ h[ic + 16 >> 3] = W;
+ h[ic + 24 >> 3] = l;
+ Hb(sc, 122828, ic) | 0;
+ e = e + 1 | 0
+ } while ((e | 0) < (c[hc >> 2] | 0))
+ }
+ while (0);
+ e = c[rc >> 2] | 0;
+ if (e & 6) {
+ ic = Ya << 1;
+ W = lc * +(ic + (c[nc >> 2] | 0) | 0);
+ y = lc * +(c[Xa >> 2] | 0);
+ h[jc >> 3] = 0.0;
+ h[jc + 8 >> 3] = 0.0;
+ h[jc + 16 >> 3] = W;
+ h[jc + 24 >> 3] = y;
+ Hb(sc, 122828, jc) | 0;
+ e = c[Xa >> 2] | 0;
+ y = lc * +(e + (c[qc >> 2] | 0) | 0);
+ W = lc * +(ic + (c[nc >> 2] | 0) | 0);
+ h[kc >> 3] = 0.0;
+ h[kc + 8 >> 3] = y;
+ h[kc + 16 >> 3] = W;
+ h[kc + 24 >> 3] = lc * +(e | 0);
+ Hb(sc, 122828, kc) | 0;
+ e = c[rc >> 2] | 0
+ }
+ if (!(e & 4))
+ break;
+ kc = c[Xa >> 2] | 0;
+ W = lc * +((c[qc >> 2] | 0) + (kc << 1) | 0);
+ h[tc >> 3] = 0.0;
+ h[tc + 8 >> 3] = 0.0;
+ h[tc + 16 >> 3] = lc * +(kc | 0);
+ h[tc + 24 >> 3] = W;
+ Hb(sc, 122828, tc) | 0;
+ tc = c[Xa >> 2] | 0;
+ W = lc * +((c[qc >> 2] | 0) + (tc << 1) | 0);
+ h[uc >> 3] = lc * +((c[nc >> 2] | 0) - tc + (Ya << 1) | 0);
+ h[uc + 8 >> 3] = 0.0;
+ h[uc + 16 >> 3] = lc * +(tc | 0);
+ h[uc + 24 >> 3] = W;
+ Hb(sc, 122828, uc) | 0
+ }
+ while (0);
+ if (Za & (f | 0) == 0) {
+ h[vc >> 3] = lc * (+(Ya | 0) + +(c[nc >> 2] | 0) * .5);
+ h[vc + 8 >> 3] = Z;
+ Hb(sc, 123041, vc) | 0;
+ h[xc >> 3] = lc * 8.0;
+ c[xc + 8 >> 2] = mc;
+ Hb(sc, 123093, xc) | 0;
+ c[yc >> 2] = z;
+ Hb(sc, 123157, yc) | 0;
+ Hb(sc, 123170, zc) | 0
+ }
+ Hb(sc, 123185, Ac) | 0;
+ Hb(sc, 123194, Ec) | 0;
+ if (!(c[rc >> 2] & 8))
+ Bc(sc) | 0;
+ else
+ Cc(sc) | 0;
+ if (!pc) {
+ Ec = oc;
+ i = Fc;
+ return Ec | 0
+ }
+ Ec = oc;
+ i = Fc;
+ return Ec | 0
+ }
+ function Gb(b, c, e) {
+ b = b | 0;
+ c = c | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0;
+ i = md(e + 1 | 0) | 0;
+ h = 0;
+ f = 0;
+ while (1) {
+ g = a[c + h >> 0] | 0;
+ a:
+ do if (g << 24 >> 24 == 92) {
+ g = h + 1 | 0;
+ do switch (d[c + g >> 0] | 0 | 0) {
+ case 48:
+ {
+ a[i + f >> 0] = 0;
+ g = h + 2 | 0;
+ break a
+ }case 69:
+ {
+ a[i + f >> 0] = 4;
+ g = h + 2 | 0;
+ break a
+ }case 97:
+ {
+ a[i + f >> 0] = 7;
+ g = h + 2 | 0;
+ break a
+ }case 98:
+ {
+ a[i + f >> 0] = 8;
+ g = h + 2 | 0;
+ break a
+ }case 116:
+ {
+ a[i + f >> 0] = 9;
+ g = h + 2 | 0;
+ break a
+ }case 110:
+ {
+ a[i + f >> 0] = 10;
+ g = h + 2 | 0;
+ break a
+ }case 118:
+ {
+ a[i + f >> 0] = 11;
+ g = h + 2 | 0;
+ break a
+ }case 102:
+ {
+ a[i + f >> 0] = 12;
+ g = h + 2 | 0;
+ break a
+ }case 114:
+ {
+ a[i + f >> 0] = 13;
+ g = h + 2 | 0;
+ break a
+ }case 101:
+ {
+ a[i + f >> 0] = 27;
+ g = h + 2 | 0;
+ break a
+ }case 71:
+ {
+ a[i + f >> 0] = 29;
+ g = h + 2 | 0;
+ break a
+ }case 82:
+ {
+ a[i + f >> 0] = 30;
+ g = h + 2 | 0;
+ break a
+ }case 92:
+ {
+ a[i + f >> 0] = 92;
+ g = h + 2 | 0;
+ break a
+ }default:
+ {
+ a[i + f >> 0] = 92;
+ break a
+ }
+ }
+ while (0)
+ } else {
+ a[i + f >> 0] = g;
+ g = h + 1 | 0
+ }
+ while (0);
+ f = f + 1 | 0;
+ if ((g | 0) < (e | 0))
+ h = g;
+ else
+ break
+ }
+ a[i + f >> 0] = 0;
+ b = yb(b, i, f) | 0;
+ nd(i);
+ return b | 0
+ }
+ function Hb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0;
+ l = i;
+ i = i + 16 | 0;
+ k = l;
+ c[k >> 2] = e;
+ j = Lc(0, 0, d, k) | 0;
+ b = a[96380] | 0;
+ f = (b & 1) == 0;
+ g = c[24096] | 0;
+ m = f ? (b & 255) >>> 1 : g;
+ h = m + -1 | 0;
+ h = (h | 0) < 0 ? 0 : h;
+ e = m + j | 0;
+ do if (e >>> 0 > m >>> 0) {
+ if (j) {
+ if (f)
+ e = 10;
+ else {
+ e = c[24095] | 0;
+ b = e & 255;
+ e = (e & -2) + -1 | 0
+ }
+ f = (b & 1) == 0 ? (b & 255) >>> 1 : g;
+ if ((e - f | 0) >>> 0 < j >>> 0) {
+ Jb(96380, e, j - e + f | 0, f, f, 0, 0);
+ b = a[96380] | 0
+ }
+ e = (b & 1) == 0 ? 96381 : c[24097] | 0;
+ sd(e + f | 0, 0, j | 0) | 0;
+ b = f + j | 0;
+ if (!(a[96380] & 1))
+ a[96380] = b << 1;
+ else
+ c[24096] = b;
+ a[e + b >> 0] = 0
+ }
+ } else if (f) {
+ a[96381 + e >> 0] = 0;
+ a[96380] = e << 1;
+ break
+ } else {
+ a[(c[24097] | 0) + e >> 0] = 0;
+ c[24096] = e;
+ break
+ }
+ while (0);
+ m = Lc(((a[96380] & 1) == 0 ? 96381 : c[24097] | 0) + h | 0, j + 1 | 0, d, k) | 0;
+ i = l;
+ return m | 0
+ }
+ function Ib(b, d, e, f) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var h = 0,
+ j = 0,
+ k = 0,
+ l = 0;
+ k = i;
+ i = i + 16 | 0;
+ j = k;
+ if (!(a[96380] & 1)) {
+ a[96381] = 0;
+ a[96380] = 0
+ } else {
+ a[c[24097] >> 0] = 0;
+ c[24096] = 0
+ }
+ h = ub() | 0;
+ c[h + 4156 >> 2] = 0;
+ l = h + 16 | 0;
+ c[l >> 2] = (c[l >> 2] | 0) + 8;
+ dd(h + 40 | 0, 123202, 250) | 0;
+ switch (b | 0) {
+ case 0:
+ {
+ c[h >> 2] = 92;
+ break
+ }case 1:
+ {
+ c[h >> 2] = 55;
+ break
+ }default:
+ {}
+ }
+ g[h + 4136 >> 2] = 10.0;
+ c[h + 4140 >> 2] = e;
+ c[h + 4144 >> 2] = f;
+ if (!(Gb(h, d, cd(d) | 0) | 0)) {
+ zb(h, 0) | 0;
+ Pa(0, ((a[96380] & 1) == 0 ? 96381 : c[24097] | 0) | 0) | 0;
+ vb(h);
+ l = 0;
+ i = k;
+ return l | 0
+ } else {
+ l = c[30179] | 0;
+ c[j >> 2] = h + 4424;
+ Ec(l, 123217, j) | 0;
+ Cc(l) | 0;
+ vb(h);
+ l = -1;
+ i = k;
+ return l | 0
+ }
+ return 0
+ }
+ function Jb(b, d, e, f, g, h, i) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ h = h | 0;
+ i = i | 0;
+ var j = 0,
+ k = 0,
+ l = 0,
+ m = 0;
+ if ((-17 - d | 0) >>> 0 < e >>> 0)
+ Mb(b);
+ if (!(a[b >> 0] & 1))
+ m = b + 1 | 0;
+ else
+ m = c[b + 8 >> 2] | 0;
+ if (d >>> 0 < 2147483623) {
+ k = e + d | 0;
+ l = d << 1;
+ k = k >>> 0 < l >>> 0 ? l : k;
+ k = k >>> 0 < 11 ? 11 : k + 16 & -16
+ } else
+ k = -17;
+ l = Tb(k) | 0;
+ do if (g)
+ if (m >>> 0 >= l >>> 0 & (l + g | 0) >>> 0 > m >>> 0) {
+ Jc(123255) | 0;
+ Ia()
+ } else {
+ wd(l | 0, m | 0, g | 0) | 0;
+ break
+ }
+ while (0);
+ f = f - h | 0;
+ do if ((f | 0) != (g | 0)) {
+ j = l + (i + g) | 0;
+ e = m + (h + g) | 0;
+ if (e >>> 0 >= j >>> 0 ? (l + (f + i) | 0) >>> 0 > e >>> 0 : 0) {
+ Jc(123255) | 0;
+ Ia()
+ } else {
+ wd(j | 0, e | 0, f - g | 0) | 0;
+ break
+ }
+ }
+ while (0);
+ if ((d | 0) == 10) {
+ d = b + 8 | 0;
+ c[d >> 2] = l;
+ d = k | 1;
+ c[b >> 2] = d;
+ return
+ }
+ Ub(m);
+ d = b + 8 | 0;
+ c[d >> 2] = l;
+ d = k | 1;
+ c[b >> 2] = d;
+ return
+ }
+ function Kb() {
+ a[96380] = 2;
+ if (96381 >>> 0 <= 123253 >>> 0 & 96382 >>> 0 > 123253 >>> 0) {
+ Jc(123255) | 0;
+ Ia()
+ } else {
+ a[96381] = 0;
+ a[96382] = 0;
+ Fa(11, 96380, n | 0) | 0;
+ return
+ }
+ }
+ function Lb(b) {
+ b = b | 0;
+ if (!(a[b >> 0] & 1))
+ return;
+ Ub(c[b + 8 >> 2] | 0);
+ return
+ }
+ function Mb(a) {
+ a = a | 0;
+ a = ra(8) | 0;
+ od(a, 123290);
+ c[a >> 2] = 120580;
+ Ga(a | 0, 48, 3)
+ }
+ function Nb(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0;
+ b = c[a >> 2] | 0;
+ if ((b | 0) > 0)
+ k = 0;
+ else
+ return;
+ do {
+ i = 116528 + (k << 2) | 0;
+ j = c[112528 + (k << 2) >> 2] | 0;
+ e = (k | 0) == 0;
+ if (e)
+ h = 0;
+ else
+ h = c[116528 + (k + -1 << 2) >> 2] | 0;
+ d = (k | 0) == (b + -1 | 0);
+ if (d)
+ g = 0;
+ else
+ g = c[116528 + (k + 1 << 2) >> 2] | 0;
+ do if ((c[i >> 2] | 0) == 902) {
+ if (e) {
+ if ((b | 0) <= 1)
+ break;
+ if ((j | 0) < 8 & (g | 0) == 900)
+ c[i >> 2] = 900;
+ if (!((j | 0) == 1 & (g | 0) == 901))
+ break;
+ c[i >> 2] = 901;
+ break
+ }
+ if (d) {
+ if ((j | 0) < 7 & (h | 0) == 900)
+ c[i >> 2] = 900;
+ if (!((j | 0) == 1 & (h | 0) == 901))
+ break;
+ c[i >> 2] = 901;
+ break
+ }
+ b = (h | 0) == 901;
+ f = (g | 0) == 901;
+ d = (j | 0) < 4;
+ if (d & (b & f))
+ c[i >> 2] = 901;
+ e = (g | 0) == 900;
+ if (d & (b & e))
+ c[i >> 2] = 900;
+ b = (h | 0) == 900;
+ if ((j | 0) < 5 & (b & f))
+ c[i >> 2] = 900;
+ if ((j | 0) < 8 & (b & e))
+ c[i >> 2] = 900
+ }
+ while (0);
+ k = k + 1 | 0;
+ b = c[a >> 2] | 0
+ } while ((k | 0) < (b | 0));
+ if ((b | 0) > 1) {
+ f = 1;
+ do {
+ d = f + -1 | 0;
+ if ((c[116528 + (d << 2) >> 2] | 0) == (c[116528 + (f << 2) >> 2] | 0)) {
+ e = 112528 + (d << 2) | 0;
+ c[e >> 2] = (c[112528 + (f << 2) >> 2] | 0) + (c[e >> 2] | 0);
+ e = f + 1 | 0;
+ b = c[a >> 2] | 0;
+ if ((e | 0) < (b | 0)) {
+ b = f;
+ f = e;
+ while (1) {
+ c[112528 + (b << 2) >> 2] = c[112528 + (f << 2) >> 2];
+ c[116528 + (b << 2) >> 2] = c[116528 + (f << 2) >> 2];
+ e = f + 1 | 0;
+ b = c[a >> 2] | 0;
+ if ((e | 0) < (b | 0)) {
+ b = f;
+ f = e
+ } else
+ break
+ }
+ }
+ b = b + -1 | 0;
+ c[a >> 2] = b
+ } else
+ d = f;
+ f = d + 1 | 0
+ } while ((f | 0) < (b | 0))
+ }
+ if ((b | 0) > 0)
+ i = 0;
+ else
+ return;
+ do {
+ f = 116528 + (i << 2) | 0;
+ g = c[112528 + (i << 2) >> 2] | 0;
+ if (!i)
+ h = 0;
+ else
+ h = c[116528 + (i + -1 << 2) >> 2] | 0;
+ b = (i | 0) == (b + -1 | 0);
+ if (b)
+ e = 0;
+ else
+ e = c[116528 + (i + 1 << 2) >> 2] | 0;
+ do if ((i | 0) > 0 & (c[f >> 2] | 0) == 900) {
+ d = (h | 0) == 901;
+ if (b) {
+ if (!((g | 0) == 1 & d))
+ break;
+ c[f >> 2] = 901;
+ break
+ }
+ b = (e | 0) == 901;
+ if ((g | 0) < 5 & (d & b))
+ c[f >> 2] = 901;
+ if (d & (e | 0) != 901) {
+ if ((g | 0) >= 3)
+ break
+ } else if (!((g | 0) < 3 & ((h | 0) != 901 & b)))
+ break;
+ c[f >> 2] = 901
+ }
+ while (0);
+ i = i + 1 | 0;
+ b = c[a >> 2] | 0
+ } while ((i | 0) < (b | 0));
+ if ((b | 0) > 1)
+ f = 1;
+ else
+ return;
+ do {
+ d = f + -1 | 0;
+ if ((c[116528 + (d << 2) >> 2] | 0) == (c[116528 + (f << 2) >> 2] | 0)) {
+ e = 112528 + (d << 2) | 0;
+ c[e >> 2] = (c[112528 + (f << 2) >> 2] | 0) + (c[e >> 2] | 0);
+ e = f + 1 | 0;
+ b = c[a >> 2] | 0;
+ if ((e | 0) < (b | 0)) {
+ b = f;
+ f = e;
+ while (1) {
+ c[112528 + (b << 2) >> 2] = c[112528 + (f << 2) >> 2];
+ c[116528 + (b << 2) >> 2] = c[116528 + (f << 2) >> 2];
+ e = f + 1 | 0;
+ b = c[a >> 2] | 0;
+ if ((e | 0) < (b | 0)) {
+ b = f;
+ f = e
+ } else
+ break
+ }
+ }
+ b = b + -1 | 0;
+ c[a >> 2] = b
+ } else
+ d = f;
+ f = d + 1 | 0
+ } while ((f | 0) < (b | 0));
+ return
+ }
+ function Ob(b, d, e, f, g, h) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ h = h | 0;
+ var j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0;
+ t = i;
+ i = i + 6e4 | 0;
+ p = t + 2e4 | 0;
+ s = t;
+ sd(p | 0, 0, 4e3) | 0;
+ h = (g | 0) > 0;
+ if (h) {
+ k = 0;
+ do {
+ j = a[e + (k + f) >> 0] | 0;
+ switch (j | 0) {
+ case 9:
+ {
+ c[p + (k << 2) >> 2] = 12;
+ c[p + 2e4 + (k << 2) >> 2] = 12;
+ break
+ }case 10:
+ {
+ c[p + (k << 2) >> 2] = 8;
+ c[p + 2e4 + (k << 2) >> 2] = 15;
+ break
+ }case 13:
+ {
+ c[p + (k << 2) >> 2] = 12;
+ c[p + 2e4 + (k << 2) >> 2] = 11;
+ break
+ }default:
+ {
+ o = j + -32 | 0;
+ c[p + (k << 2) >> 2] = c[111768 + (o << 2) >> 2];
+ c[p + 2e4 + (k << 2) >> 2] = c[112148 + (o << 2) >> 2]
+ }
+ }
+ k = k + 1 | 0
+ } while ((k | 0) != (g | 0));
+ if (h) {
+ n = g + -1 | 0;
+ m = 1;
+ o = 0;
+ h = 0;
+ while (1) {
+ j = c[p + (o << 2) >> 2] | 0;
+ do if (!(j & m)) {
+ e = (o | 0) == (n | 0);
+ if (!e ? (q = c[p + (o + 1 << 2) >> 2] | 0, (q & j | 0) != 0) : 0) {
+ k = q;
+ r = 21
+ } else {
+ f = (j & 1 | 0) != 0;
+ l = (m | 0) == 2;
+ if (l & f) {
+ c[s + (h << 2) >> 2] = 27;
+ c[s + (h + 1 << 2) >> 2] = c[p + 2e4 + (o << 2) >> 2];
+ h = h + 2 | 0
+ }
+ k = (j & 8 | 0) == 0;
+ if (!k) {
+ c[s + (h << 2) >> 2] = 29;
+ c[s + (h + 1 << 2) >> 2] = c[p + 2e4 + (o << 2) >> 2];
+ j = m;
+ h = h + 2 | 0;
+ break
+ }
+ if (!(k & (l & f ^ 1))) {
+ j = m;
+ break
+ }
+ if (!e) {
+ k = c[p + (o + 1 << 2) >> 2] | 0;
+ r = 21
+ }
+ }
+ if ((r | 0) == 21) {
+ r = 0;
+ l = k & j;
+ j = (l | 0) == 0 ? j : l
+ }
+ switch (j | 0) {
+ case 15:
+ case 13:
+ case 11:
+ case 9:
+ case 7:
+ case 5:
+ case 3:
+ {
+ j = 1;
+ break
+ }case 14:
+ case 10:
+ case 6:
+ {
+ j = 2;
+ break
+ }case 12:
+ {
+ j = 4;
+ break
+ }default:
+ {}
+ }
+ a:
+ do switch (m | 0) {
+ case 1:
+ switch (j | 0) {
+ case 2:
+ {
+ c[s + (h << 2) >> 2] = 27;
+ h = h + 1 | 0;
+ break a
+ }case 4:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ h = h + 1 | 0;
+ break a
+ }case 8:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ c[s + (h + 1 << 2) >> 2] = 25;
+ h = h + 2 | 0;
+ break a
+ }default:
+ break a
+ }
+ case 2:
+ switch (j | 0) {
+ case 1:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ c[s + (h + 1 << 2) >> 2] = 28;
+ h = h + 2 | 0;
+ break a
+ }case 4:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ h = h + 1 | 0;
+ break a
+ }case 8:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ c[s + (h + 1 << 2) >> 2] = 25;
+ h = h + 2 | 0;
+ break a
+ }default:
+ break a
+ }
+ case 4:
+ switch (j | 0) {
+ case 1:
+ {
+ c[s + (h << 2) >> 2] = 28;
+ h = h + 1 | 0;
+ break a
+ }case 2:
+ {
+ c[s + (h << 2) >> 2] = 27;
+ h = h + 1 | 0;
+ break a
+ }case 8:
+ {
+ c[s + (h << 2) >> 2] = 25;
+ h = h + 1 | 0;
+ break a
+ }default:
+ break a
+ }
+ case 8:
+ switch (j | 0) {
+ case 1:
+ {
+ c[s + (h << 2) >> 2] = 29;
+ h = h + 1 | 0;
+ break a
+ }case 2:
+ {
+ c[s + (h << 2) >> 2] = 29;
+ c[s + (h + 1 << 2) >> 2] = 27;
+ h = h + 2 | 0;
+ break a
+ }case 4:
+ {
+ c[s + (h << 2) >> 2] = 29;
+ c[s + (h + 1 << 2) >> 2] = 28;
+ h = h + 2 | 0;
+ break a
+ }default:
+ break a
+ }
+ default:
+ {}
+ }
+ while (0);
+ c[s + (h << 2) >> 2] = c[p + 2e4 + (o << 2) >> 2];
+ h = h + 1 | 0
+ } else {
+ c[s + (h << 2) >> 2] = c[p + 2e4 + (o << 2) >> 2];
+ j = m;
+ h = h + 1 | 0
+ }
+ while (0);
+ o = o + 1 | 0;
+ if ((o | 0) == (g | 0))
+ break;
+ else
+ m = j
+ }
+ if (h & 1) {
+ c[s + (h << 2) >> 2] = 29;
+ h = h + 1 | 0
+ }
+ } else
+ h = 0
+ } else
+ h = 0;
+ c[b + (c[d >> 2] << 2) >> 2] = 900;
+ j = (c[d >> 2] | 0) + 1 | 0;
+ c[d >> 2] = j;
+ if ((h | 0) > 0)
+ k = 0;
+ else {
+ i = t;
+ return
+ }
+ do {
+ c[b + (j << 2) >> 2] = ((c[s + (k << 2) >> 2] | 0) * 30 | 0) + (c[s + ((k | 1) << 2) >> 2] | 0);
+ j = (c[d >> 2] | 0) + 1 | 0;
+ c[d >> 2] = j;
+ k = k + 2 | 0
+ } while ((k | 0) < (h | 0));
+ i = t;
+ return
+ }
+ function Pb(a, b, e, f, g, h) {
+ a = a | 0;
+ b = b | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ h = h | 0;
+ var i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0;
+ if ((g | 0) == 1) {
+ j = c[b >> 2] | 0;
+ c[b >> 2] = j + 1;
+ c[a + (j << 2) >> 2] = 913;
+ j = d[e + f >> 0] | 0;
+ e = c[b >> 2] | 0;
+ c[b >> 2] = e + 1;
+ c[a + (e << 2) >> 2] = j;
+ return
+ }
+ i = c[b >> 2] | 0;
+ c[b >> 2] = i + 1;
+ c[a + (i << 2) >> 2] = ((g | 0) % 6 | 0 | 0) == 0 ? 924 : 901;
+ if ((g | 0) > 0)
+ i = 0;
+ else
+ return;
+ while (1) {
+ h = g - i | 0;
+ if (h >>> 0 <= 5)
+ break;
+ i = i + 6 | 0;
+ k = td(d[e + f >> 0] | 0 | 0, 0, 40) | 0;
+ h = d[e + (f + 1) >> 0] | 0 | D;
+ l = td(d[e + (f + 2) >> 0] | 0 | 0, 0, 24) | 0;
+ h = D | h;
+ m = td(d[e + (f + 3) >> 0] | 0 | 0, 0, 16) | 0;
+ h = D | h;
+ n = td(d[e + (f + 4) >> 0] | 0 | 0, 0, 8) | 0;
+ h = D | h;
+ k = d[e + (f + 5) >> 0] | 0 | (n | (m | (l | k)));
+ l = Fd(k | 0, h | 0, 900, 0) | 0;
+ c[a + ((c[b >> 2] | 0) + 4 << 2) >> 2] = l;
+ l = Ed(k | 0, h | 0, 900, 0) | 0;
+ l = Fd(l | 0, D | 0, 900, 0) | 0;
+ c[a + ((c[b >> 2] | 0) + 3 << 2) >> 2] = l;
+ l = Ed(k | 0, h | 0, 81e4, 0) | 0;
+ l = Fd(l | 0, D | 0, 900, 0) | 0;
+ c[a + ((c[b >> 2] | 0) + 2 << 2) >> 2] = l;
+ l = Ed(k | 0, h | 0, 729e6, 0) | 0;
+ l = Fd(l | 0, D | 0, 900, 0) | 0;
+ c[a + ((c[b >> 2] | 0) + 1 << 2) >> 2] = l;
+ h = Ed(k | 0, h | 0, -1029996288, 152) | 0;
+ h = Fd(h | 0, D | 0, 900, 0) | 0;
+ c[a + (c[b >> 2] << 2) >> 2] = h;
+ c[b >> 2] = (c[b >> 2] | 0) + 5;
+ if ((i | 0) >= (g | 0)) {
+ j = 8;
+ break
+ } else
+ f = f + 6 | 0
+ }
+ if ((j | 0) == 8)
+ return;
+ if ((i | 0) == (g | 0))
+ return;
+ while (1) {
+ h = h + -1 | 0;
+ m = d[e + f >> 0] | 0;
+ n = c[b >> 2] | 0;
+ c[b >> 2] = n + 1;
+ c[a + (n << 2) >> 2] = m;
+ if (!h)
+ break;
+ else
+ f = f + 1 | 0
+ }
+ return
+ }
+ function Qb(b, d, e, f, g, h) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ h = h | 0;
+ var j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0;
+ s = i;
+ i = i + 560 | 0;
+ p = s;
+ n = s + 500 | 0;
+ o = s + 400 | 0;
+ a[n >> 0] = 0;
+ sd(p | 0, 0, 204) | 0;
+ c[b + (c[d >> 2] << 2) >> 2] = 902;
+ c[d >> 2] = (c[d >> 2] | 0) + 1;
+ if ((g | 0) <= 0) {
+ i = s;
+ return
+ }
+ m = ~g;
+ r = n + 1 | 0;
+ q = 0;
+ do {
+ a[n >> 0] = 0;
+ l = g - q | 0;
+ l = (l | 0) > 44 ? 44 : l;
+ jb(n, 123303);
+ if ((l | 0) >= 1) {
+ k = q + m | 0;
+ wd(r | 0, e + (q + f) | 0, ((k | 0) > -45 ? ~k : 44) | 0) | 0
+ }
+ a[n + (l + 1) >> 0] = 0;
+ k = 0;
+ while (1) {
+ a[o >> 0] = 0;
+ j = a[n >> 0] | 0;
+ if (!(j << 24 >> 24))
+ h = 0;
+ else {
+ h = 0;
+ do {
+ h = (kb(j) | 0) + (h * 10 | 0) | 0;
+ if (a[n >> 0] | 0) {
+ j = 0;
+ do {
+ u = j;
+ j = j + 1 | 0;
+ a[n + u >> 0] = a[n + j >> 0] | 0
+ } while (j >>> 0 < (cd(n) | 0) >>> 0)
+ }
+ if ((h | 0) < 900) {
+ if (a[o >> 0] | 0)
+ jb(o, 123305)
+ } else {
+ a[o + ((cd(o) | 0) + 1) >> 0] = 0;
+ a[o + (cd(o) | 0) >> 0] = ((h | 0) / 900 | 0) + 48
+ }
+ h = (h | 0) % 900 | 0;
+ j = a[n >> 0] | 0
+ } while (j << 24 >> 24 != 0)
+ }
+ if ((k | 0) > 0) {
+ j = k;
+ do {
+ u = j;
+ j = j + -1 | 0;
+ c[p + (u << 2) >> 2] = c[p + (j << 2) >> 2]
+ } while ((u | 0) > 1)
+ }
+ c[p >> 2] = h;
+ j = k + 1 | 0;
+ bd(n, o) | 0;
+ if (!(a[o >> 0] | 0))
+ break;
+ else
+ k = j
+ }
+ if ((k | 0) > -1 ? (c[b + (c[d >> 2] << 2) >> 2] = h, t = (c[d >> 2] | 0) + 1 | 0, c[d >> 2] = t, (k | 0) > 0) : 0) {
+ h = 1;
+ k = t;
+ do {
+ c[b + (k << 2) >> 2] = c[p + (h << 2) >> 2];
+ k = (c[d >> 2] | 0) + 1 | 0;
+ c[d >> 2] = k;
+ h = h + 1 | 0
+ } while ((h | 0) < (j | 0))
+ }
+ q = l + q | 0
+ } while ((q | 0) < (g | 0));
+ i = s;
+ return
+ }
+ function Rb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0;
+ x = i;
+ i = i + 13760 | 0;
+ n = x + 13024 | 0;
+ r = x + 10944 | 0;
+ t = x + 144 | 0;
+ s = x;
+ v = x + 4 | 0;
+ u = x + 13608 | 0;
+ w = x + 13028 | 0;
+ c[n >> 2] = 0;
+ f = a[d >> 0] | 0;
+ switch (f << 24 >> 24) {
+ case 13:
+ case 10:
+ case 9:
+ {
+ g = 900;
+ break
+ }default:
+ if (f << 24 >> 24 < 32 | f << 24 >> 24 == 127)
+ g = (f + -48 & 255) < 10 ? 902 : 901;
+ else
+ g = 900
+ }
+ sd(112528, 0, 4e3) | 0;
+ f = 0;
+ h = 0;
+ while (1) {
+ c[116528 + (f << 2) >> 2] = g;
+ if ((h | 0) >= (e | 0)) {
+ o = 6;
+ break
+ }
+ j = 112528 + (f << 2) | 0;
+ k = c[j >> 2] | 0;
+ l = h;
+ do {
+ k = k + 1 | 0;
+ c[j >> 2] = k;
+ l = l + 1 | 0;
+ h = a[d + l >> 0] | 0;
+ switch (h << 24 >> 24) {
+ case 13:
+ case 10:
+ case 9:
+ {
+ m = 900;
+ break
+ }default:
+ if (h << 24 >> 24 < 32 | h << 24 >> 24 == 127)
+ m = (h + -48 & 255) < 10 ? 902 : 901;
+ else
+ m = 900
+ }
+ h = (l | 0) < (e | 0)
+ } while (h & (g | 0) == (m | 0));
+ f = f + 1 | 0;
+ if (h) {
+ h = l;
+ g = m
+ } else
+ break
+ }
+ if ((o | 0) == 6)
+ f = f + 1 | 0;
+ c[n >> 2] = f;
+ Nb(n);
+ c[s >> 2] = 0;
+ if (c[b + 16 >> 2] & 16) {
+ c[t >> 2] = 921;
+ c[s >> 2] = 1
+ }
+ g = c[n >> 2] | 0;
+ a:
+ do if ((g | 0) > 0) {
+ h = 0;
+ j = 0;
+ while (1) {
+ switch (c[116528 + (h << 2) >> 2] | 0) {
+ case 900:
+ {
+ f = 112528 + (h << 2) | 0;
+ Ob(t, s, d, j, c[f >> 2] | 0, 0);
+ break
+ }case 901:
+ {
+ f = 112528 + (h << 2) | 0;
+ Pb(t, s, d, j, c[f >> 2] | 0, 0);
+ break
+ }case 902:
+ {
+ f = 112528 + (h << 2) | 0;
+ Qb(t, s, d, j, c[f >> 2] | 0, 0);
+ break
+ }default:
+ f = 112528 + (h << 2) | 0
+ }
+ h = h + 1 | 0;
+ if ((h | 0) >= (g | 0))
+ break a;
+ else
+ j = (c[f >> 2] | 0) + j | 0
+ }
+ }
+ while (0);
+ f = b + 4140 | 0;
+ g = c[f >> 2] | 0;
+ if ((g | 0) < 0) {
+ g = c[s >> 2] | 0;
+ g = (g | 0) < 41 ? 2 : (g | 0) < 161 ? 3 : (g | 0) < 321 ? 4 : (g | 0) < 864 ? 5 : 6;
+ c[f >> 2] = g
+ }
+ f = g + 1 | 0;
+ k = 1;
+ j = 1;
+ while (1) {
+ h = k << 1;
+ if ((j | 0) < (f | 0)) {
+ k = h;
+ j = j + 1 | 0
+ } else
+ break
+ }
+ m = c[s >> 2] | 0;
+ q = b + 4144 | 0;
+ f = c[q >> 2] | 0;
+ if ((f | 0) <= 30) {
+ if ((f | 0) < 1) {
+ f = ~~(+P(+(+(m + h | 0) / 3.0)) + .5);
+ c[q >> 2] = f
+ }
+ } else {
+ c[q >> 2] = 30;
+ f = 30
+ }
+ j = m + h | 0;
+ if (((j | 0) / (f | 0) | 0 | 0) > 90) {
+ p = f + 1 | 0;
+ c[q >> 2] = p
+ } else
+ p = f;
+ if ((j | 0) > 928) {
+ b = 2;
+ i = x;
+ return b | 0
+ }
+ if (((j | 0) / (p | 0) | 0 | 0) > 90) {
+ b = 4;
+ i = x;
+ return b | 0
+ }
+ f = (h | 1) + m | 0;
+ if (((f | 0) / (p | 0) | 0 | 0) >= 3) {
+ f = (f | 0) % (p | 0) | 0;
+ if ((f | 0) > 0) {
+ l = p - f | 0;
+ o = 38
+ } else
+ l = m
+ } else {
+ l = (p * 3 | 0) - f | 0;
+ o = 38
+ }
+ if ((o | 0) == 38)
+ if ((l | 0) > 0) {
+ f = m;
+ j = l;
+ while (1) {
+ c[t + (f << 2) >> 2] = 900;
+ if ((j | 0) > 1) {
+ f = f + 1 | 0;
+ j = j + -1 | 0
+ } else
+ break
+ }
+ l = l + m | 0;
+ c[s >> 2] = l
+ } else
+ l = m;
+ if ((l | 0) > 0) {
+ f = l;
+ do {
+ o = f;
+ f = f + -1 | 0;
+ c[t + (o << 2) >> 2] = c[t + (f << 2) >> 2]
+ } while ((o | 0) > 1)
+ }
+ o = l + 1 | 0;
+ c[t >> 2] = o;
+ c[s >> 2] = o;
+ switch (g | 0) {
+ case 1:
+ {
+ n = 2;
+ break
+ }case 2:
+ {
+ n = 6;
+ break
+ }case 3:
+ {
+ n = 14;
+ break
+ }case 4:
+ {
+ n = 30;
+ break
+ }case 5:
+ {
+ n = 62;
+ break
+ }case 6:
+ {
+ n = 126;
+ break
+ }case 7:
+ {
+ n = 254;
+ break
+ }case 8:
+ {
+ n = 510;
+ break
+ }default:
+ n = 0
+ }
+ sd(r | 0, 0, 2080) | 0;
+ b:
+ do if ((l | 0) > -1) {
+ e = h + -1 | 0;
+ d = r + (e << 2) | 0;
+ if ((h | 0) <= 1) {
+ j = c[96392 + (e + n << 2) >> 2] | 0;
+ c[r >> 2] = (929 - (($(j, ((c[d >> 2] | 0) + o | 0) % 929 | 0) | 0) % 929 | 0) | 0) % 929 | 0;
+ if (!l)
+ break;
+ else
+ f = 1;
+ while (1) {
+ c[r >> 2] = (929 - (($(j, ((c[d >> 2] | 0) + (c[t + (f << 2) >> 2] | 0) | 0) % 929 | 0) | 0) % 929 | 0) | 0) % 929 | 0;
+ f = f + 1 | 0;
+ if ((f | 0) == (o | 0))
+ break b
+ }
+ }
+ m = c[96392 + (n << 2) >> 2] | 0;
+ j = o;
+ f = 0;
+ while (1) {
+ j = ((c[d >> 2] | 0) + j | 0) % 929 | 0;
+ l = e;
+ do {
+ y = l;
+ l = l + -1 | 0;
+ c[r + (y << 2) >> 2] = ((c[r + (l << 2) >> 2] | 0) + 929 - (($(c[96392 + (y + n << 2) >> 2] | 0, j) | 0) % 929 | 0) | 0) % 929 | 0
+ } while ((y | 0) > 1);
+ c[r >> 2] = (929 - (($(m, j) | 0) % 929 | 0) | 0) % 929 | 0;
+ f = f + 1 | 0;
+ if ((f | 0) == (o | 0))
+ break b;
+ j = c[t + (f << 2) >> 2] | 0
+ }
+ }
+ while (0);
+ if ((k | 0) > 0) {
+ f = o;
+ j = h;
+ while (1) {
+ y = j;
+ j = j + -1 | 0;
+ d = c[r + (j << 2) >> 2] | 0;
+ c[t + (f << 2) >> 2] = (d | 0) == 0 ? 0 : 929 - d | 0;
+ if ((y | 0) <= 1)
+ break;
+ else
+ f = f + 1 | 0
+ }
+ o = h + o | 0;
+ c[s >> 2] = o
+ }
+ f = (o | 0) / (p | 0) | 0;
+ l = f + -1 | 0;
+ e = (l | 0) / 3 | 0;
+ l = (g * 3 | 0) + ((l | 0) % 3 | 0) | 0;
+ m = p + -1 | 0;
+ c:
+ do if ((f | 0) >= 1) {
+ k = b + 4 | 0;
+ h = p;
+ j = 0;
+ while (1) {
+ if ((h | 0) > 0) {
+ f = $(h, j) | 0;
+ g = 0;
+ do {
+ y = g;
+ g = g + 1 | 0;
+ c[v + (g << 2) >> 2] = c[t + (f + y << 2) >> 2]
+ } while ((g | 0) < (h | 0))
+ }
+ f = ((j | 0) / 3 | 0) * 30 | 0;
+ g = (j | 0) % 3 | 0;
+ switch (g | 0) {
+ case 0:
+ {
+ c[v >> 2] = f + e;
+ c[v + (h + 1 << 2) >> 2] = f + m;
+ break
+ }case 1:
+ {
+ c[v >> 2] = f + l;
+ c[v + (h + 1 << 2) >> 2] = f + e;
+ break
+ }case 2:
+ {
+ c[v >> 2] = f + m;
+ c[v + (h + 1 << 2) >> 2] = f + l;
+ break
+ }default:
+ {}
+ }
+ a[u >> 0] = a[123307] | 0;
+ a[u + 1 >> 0] = a[123308] | 0;
+ a[u + 2 >> 0] = a[123309] | 0;
+ if ((c[b >> 2] | 0) == 56) {
+ if ((h | 0) >= 0) {
+ g = (g | 0) == 1 ? 929 : (g | 0) == 2 ? 1858 : 0;
+ f = 0;
+ while (1) {
+ jb(u, c[100620 + ((c[v + (f << 2) >> 2] | 0) + g << 2) >> 2] | 0);
+ jb(u, 123310);
+ if ((f | 0) < (c[q >> 2] | 0))
+ f = f + 1 | 0;
+ else
+ break
+ }
+ }
+ } else {
+ if ((h | 0) >= -1) {
+ g = (g | 0) == 1 ? 929 : (g | 0) == 2 ? 1858 : 0;
+ f = 0;
+ while (1) {
+ jb(u, c[100620 + ((c[v + (f << 2) >> 2] | 0) + g << 2) >> 2] | 0);
+ jb(u, 123310);
+ if ((f | 0) < ((c[q >> 2] | 0) + 1 | 0))
+ f = f + 1 | 0;
+ else
+ break
+ }
+ }
+ jb(u, 123312)
+ }
+ a[w >> 0] = 0;
+ f = a[u >> 0] | 0;
+ d:
+ do if (f << 24 >> 24) {
+ nb(123314, 100480, f, w);
+ if ((cd(u) | 0) >>> 0 > 1) {
+ f = 1;
+ do {
+ nb(123314, 100480, a[u + f >> 0] | 0, w);
+ f = f + 1 | 0
+ } while (f >>> 0 < (cd(u) | 0) >>> 0)
+ }
+ f = a[w >> 0] | 0;
+ if (f << 24 >> 24) {
+ g = 0;
+ while (1) {
+ if (f << 24 >> 24 == 49)
+ pb(b, j, g);
+ g = g + 1 | 0;
+ if (g >>> 0 >= (cd(w) | 0) >>> 0)
+ break d;
+ f = a[w + g >> 0] | 0
+ }
+ }
+ }
+ while (0);
+ if (!(c[k >> 2] | 0))
+ c[b + 36208 + (j << 2) >> 2] = 3;
+ h = c[q >> 2] | 0;
+ f = (o | 0) / (h | 0) | 0;
+ if ((j | 0) >= (f + -1 | 0))
+ break c;
+ else
+ j = j + 1 | 0
+ }
+ }
+ while (0);
+ c[b + 4288 >> 2] = f;
+ c[b + 4292 >> 2] = cd(w) | 0;
+ y = 0;
+ i = x;
+ return y | 0
+ }
+ function Sb(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0;
+ f = b + 4140 | 0;
+ if (((c[f >> 2] | 0) + 1 | 0) >>> 0 > 9) {
+ h = b + 4424 | 0;
+ i = 123350;
+ j = h + 28 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ c[f >> 2] = -1;
+ f = 2
+ } else
+ f = 0;
+ g = b + 4144 | 0;
+ if ((c[g >> 2] | 0) >>> 0 > 30) {
+ h = b + 4424 | 0;
+ i = 123378;
+ j = h + 31 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ c[g >> 2] = 0;
+ f = 2
+ }
+ switch (Rb(b, d, e) | 0) {
+ case 1:
+ {
+ h = b + 4424 | 0;
+ i = 123409;
+ j = h + 32 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 8;
+ return b | 0
+ }case 2:
+ {
+ h = b + 4424 | 0;
+ i = 123441;
+ j = h + 22 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 5;
+ return b | 0
+ }case 3:
+ {
+ h = b + 4424 | 0;
+ i = 123463;
+ j = h + 38 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 2;
+ return b | 0
+ }case 4:
+ {
+ h = b + 4424 | 0;
+ i = 123501;
+ j = h + 46 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 5;
+ return b | 0
+ }case 0:
+ {
+ b = f;
+ return b | 0
+ }default:
+ {
+ h = b + 4424 | 0;
+ i = 123547;
+ j = h + 27 | 0;
+ do {
+ a[h >> 0] = a[i >> 0] | 0;
+ h = h + 1 | 0;
+ i = i + 1 | 0
+ } while ((h | 0) < (j | 0));
+ b = 9;
+ return b | 0
+ }
+ }
+ return 0
+ }
+ function Tb(a) {
+ a = a | 0;
+ var b = 0;
+ b = (a | 0) == 0 ? 1 : a;
+ a = md(b) | 0;
+ a:
+ do if (!a) {
+ while (1) {
+ a = Yb() | 0;
+ if (!a)
+ break;
+ Va[a & 0]();
+ a = md(b) | 0;
+ if (a)
+ break a
+ }
+ b = ra(4) | 0;
+ c[b >> 2] = 120536;
+ Ga(b | 0, 8, 1)
+ }
+ while (0);
+ return a | 0
+ }
+ function Ub(a) {
+ a = a | 0;
+ nd(a);
+ return
+ }
+ function Vb(a) {
+ a = a | 0;
+ return
+ }
+ function Wb(a) {
+ a = a | 0;
+ Ub(a);
+ return
+ }
+ function Xb(a) {
+ a = a | 0;
+ return 135128
+ }
+ function Yb() {
+ var a = 0;
+ a = c[30137] | 0;
+ c[30137] = a + 0;
+ return a | 0
+ }
+ function Zb(a) {
+ a = a | 0;
+ return
+ }
+ function _b(a) {
+ a = a | 0;
+ c[a >> 2] = 120560;
+ sc(a + 4 | 0);
+ return
+ }
+ function $b(a) {
+ a = a | 0;
+ _b(a);
+ Ub(a);
+ return
+ }
+ function ac(a) {
+ a = a | 0;
+ return c[a + 4 >> 2] | 0
+ }
+ function bc(a) {
+ a = a | 0;
+ _b(a);
+ Ub(a);
+ return
+ }
+ function cc(a) {
+ a = a | 0;
+ return
+ }
+ function dc(a) {
+ a = a | 0;
+ return
+ }
+ function ec(a) {
+ a = a | 0;
+ return
+ }
+ function fc(a) {
+ a = a | 0;
+ return
+ }
+ function gc(a) {
+ a = a | 0;
+ Ub(a);
+ return
+ }
+ function hc(a) {
+ a = a | 0;
+ Ub(a);
+ return
+ }
+ function ic(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0;
+ h = i;
+ i = i + 64 | 0;
+ g = h;
+ if ((a | 0) != (b | 0))
+ if ((b | 0) != 0 ? (f = mc(b, 72, 88, 0) | 0, (f | 0) != 0) : 0) {
+ b = g;
+ e = b + 56 | 0;
+ do {
+ c[b >> 2] = 0;
+ b = b + 4 | 0
+ } while ((b | 0) < (e | 0));
+ c[g >> 2] = f;
+ c[g + 8 >> 2] = a;
+ c[g + 12 >> 2] = -1;
+ c[g + 48 >> 2] = 1;
+ Xa[c[(c[f >> 2] | 0) + 28 >> 2] & 3](f, g, c[d >> 2] | 0, 1);
+ if ((c[g + 24 >> 2] | 0) == 1) {
+ c[d >> 2] = c[g + 16 >> 2];
+ b = 1
+ } else
+ b = 0
+ } else
+ b = 0;
+ else
+ b = 1;
+ i = h;
+ return b | 0
+ }
+ function jc(b, d, e, f) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0;
+ b = d + 16 | 0;
+ g = c[b >> 2] | 0;
+ do if (g) {
+ if ((g | 0) != (e | 0)) {
+ f = d + 36 | 0;
+ c[f >> 2] = (c[f >> 2] | 0) + 1;
+ c[d + 24 >> 2] = 2;
+ a[d + 54 >> 0] = 1;
+ break
+ }
+ b = d + 24 | 0;
+ if ((c[b >> 2] | 0) == 2)
+ c[b >> 2] = f
+ } else {
+ c[b >> 2] = e;
+ c[d + 24 >> 2] = f;
+ c[d + 36 >> 2] = 1
+ }
+ while (0);
+ return
+ }
+ function kc(a, b, d, e) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ if ((a | 0) == (c[b + 8 >> 2] | 0))
+ jc(0, b, d, e);
+ return
+ }
+ function lc(a, b, d, e) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ if ((a | 0) == (c[b + 8 >> 2] | 0))
+ jc(0, b, d, e);
+ else {
+ a = c[a + 8 >> 2] | 0;
+ Xa[c[(c[a >> 2] | 0) + 28 >> 2] & 3](a, b, d, e)
+ }
+ return
+ }
+ function mc(d, e, f, g) {
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ var h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0;
+ r = i;
+ i = i + 64 | 0;
+ q = r;
+ p = c[d >> 2] | 0;
+ o = d + (c[p + -8 >> 2] | 0) | 0;
+ p = c[p + -4 >> 2] | 0;
+ c[q >> 2] = f;
+ c[q + 4 >> 2] = d;
+ c[q + 8 >> 2] = e;
+ c[q + 12 >> 2] = g;
+ g = q + 16 | 0;
+ d = q + 20 | 0;
+ e = q + 24 | 0;
+ h = q + 28 | 0;
+ j = q + 32 | 0;
+ k = q + 40 | 0;
+ l = (p | 0) == (f | 0);
+ m = g;
+ n = m + 36 | 0;
+ do {
+ c[m >> 2] = 0;
+ m = m + 4 | 0
+ } while ((m | 0) < (n | 0));
+ b[g + 36 >> 1] = 0;
+ a[g + 38 >> 0] = 0;
+ a:
+ do if (l) {
+ c[q + 48 >> 2] = 1;
+ Wa[c[(c[f >> 2] | 0) + 20 >> 2] & 3](f, q, o, o, 1, 0);
+ g = (c[e >> 2] | 0) == 1 ? o : 0
+ } else {
+ Sa[c[(c[p >> 2] | 0) + 24 >> 2] & 3](p, q, o, 1, 0);
+ switch (c[q + 36 >> 2] | 0) {
+ case 0:
+ {
+ g = (c[k >> 2] | 0) == 1 & (c[h >> 2] | 0) == 1 & (c[j >> 2] | 0) == 1 ? c[d >> 2] | 0 : 0;
+ break a
+ }case 1:
+ break;
+ default:
+ {
+ g = 0;
+ break a
+ }
+ }
+ if ((c[e >> 2] | 0) != 1 ? !((c[k >> 2] | 0) == 0 & (c[h >> 2] | 0) == 1 & (c[j >> 2] | 0) == 1) : 0) {
+ g = 0;
+ break
+ }
+ g = c[g >> 2] | 0
+ }
+ while (0);
+ i = r;
+ return g | 0
+ }
+ function nc(b, d, e, f, g) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ a[d + 53 >> 0] = 1;
+ do if ((c[d + 4 >> 2] | 0) == (f | 0)) {
+ a[d + 52 >> 0] = 1;
+ f = d + 16 | 0;
+ b = c[f >> 2] | 0;
+ if (!b) {
+ c[f >> 2] = e;
+ c[d + 24 >> 2] = g;
+ c[d + 36 >> 2] = 1;
+ if (!((g | 0) == 1 ? (c[d + 48 >> 2] | 0) == 1 : 0))
+ break;
+ a[d + 54 >> 0] = 1;
+ break
+ }
+ if ((b | 0) != (e | 0)) {
+ g = d + 36 | 0;
+ c[g >> 2] = (c[g >> 2] | 0) + 1;
+ a[d + 54 >> 0] = 1;
+ break
+ }
+ b = d + 24 | 0;
+ f = c[b >> 2] | 0;
+ if ((f | 0) == 2) {
+ c[b >> 2] = g;
+ f = g
+ }
+ if ((f | 0) == 1 ? (c[d + 48 >> 2] | 0) == 1 : 0)
+ a[d + 54 >> 0] = 1
+ }
+ while (0);
+ return
+ }
+ function oc(b, d, e, f, g) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ var h = 0,
+ i = 0,
+ j = 0,
+ k = 0;
+ a:
+ do if ((b | 0) == (c[d + 8 >> 2] | 0)) {
+ if ((c[d + 4 >> 2] | 0) == (e | 0) ? (h = d + 28 | 0, (c[h >> 2] | 0) != 1) : 0)
+ c[h >> 2] = f
+ } else {
+ if ((b | 0) != (c[d >> 2] | 0)) {
+ j = c[b + 8 >> 2] | 0;
+ Sa[c[(c[j >> 2] | 0) + 24 >> 2] & 3](j, d, e, f, g);
+ break
+ }
+ if ((c[d + 16 >> 2] | 0) != (e | 0) ? (i = d + 20 | 0, (c[i >> 2] | 0) != (e | 0)) : 0) {
+ c[d + 32 >> 2] = f;
+ f = d + 44 | 0;
+ if ((c[f >> 2] | 0) == 4)
+ break;
+ h = d + 52 | 0;
+ a[h >> 0] = 0;
+ k = d + 53 | 0;
+ a[k >> 0] = 0;
+ b = c[b + 8 >> 2] | 0;
+ Wa[c[(c[b >> 2] | 0) + 20 >> 2] & 3](b, d, e, e, 1, g);
+ if (a[k >> 0] | 0) {
+ if (!(a[h >> 0] | 0)) {
+ h = 1;
+ j = 13
+ }
+ } else {
+ h = 0;
+ j = 13
+ }
+ do if ((j | 0) == 13) {
+ c[i >> 2] = e;
+ k = d + 40 | 0;
+ c[k >> 2] = (c[k >> 2] | 0) + 1;
+ if ((c[d + 36 >> 2] | 0) == 1 ? (c[d + 24 >> 2] | 0) == 2 : 0) {
+ a[d + 54 >> 0] = 1;
+ if (h)
+ break
+ } else
+ j = 16;
+ if ((j | 0) == 16 ? h : 0)
+ break;
+ c[f >> 2] = 4;
+ break a
+ }
+ while (0);
+ c[f >> 2] = 3;
+ break
+ }
+ if ((f | 0) == 1)
+ c[d + 32 >> 2] = 1
+ }
+ while (0);
+ return
+ }
+ function pc(b, d, e, f, g) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ var h = 0,
+ i = 0;
+ do if ((b | 0) == (c[d + 8 >> 2] | 0)) {
+ if ((c[d + 4 >> 2] | 0) == (e | 0) ? (i = d + 28 | 0, (c[i >> 2] | 0) != 1) : 0)
+ c[i >> 2] = f
+ } else if ((b | 0) == (c[d >> 2] | 0)) {
+ if ((c[d + 16 >> 2] | 0) != (e | 0) ? (h = d + 20 | 0, (c[h >> 2] | 0) != (e | 0)) : 0) {
+ c[d + 32 >> 2] = f;
+ c[h >> 2] = e;
+ g = d + 40 | 0;
+ c[g >> 2] = (c[g >> 2] | 0) + 1;
+ if ((c[d + 36 >> 2] | 0) == 1 ? (c[d + 24 >> 2] | 0) == 2 : 0)
+ a[d + 54 >> 0] = 1;
+ c[d + 44 >> 2] = 4;
+ break
+ }
+ if ((f | 0) == 1)
+ c[d + 32 >> 2] = 1
+ }
+ while (0);
+ return
+ }
+ function qc(a, b, d, e, f, g) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ if ((a | 0) == (c[b + 8 >> 2] | 0))
+ nc(0, b, d, e, f);
+ else {
+ a = c[a + 8 >> 2] | 0;
+ Wa[c[(c[a >> 2] | 0) + 20 >> 2] & 3](a, b, d, e, f, g)
+ }
+ return
+ }
+ function rc(a, b, d, e, f, g) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ if ((a | 0) == (c[b + 8 >> 2] | 0))
+ nc(0, b, d, e, f);
+ return
+ }
+ function sc(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0;
+ d = (c[a >> 2] | 0) + -4 | 0;
+ b = c[d >> 2] | 0;
+ c[d >> 2] = b + -1;
+ if ((b + -1 | 0) < 0)
+ Ub((c[a >> 2] | 0) + -12 | 0);
+ return
+ }
+ function tc(b) {
+ b = b | 0;
+ var c = 0,
+ e = 0;
+ c = 0;
+ while (1) {
+ if ((d[135143 + c >> 0] | 0) == (b | 0)) {
+ e = 2;
+ break
+ }
+ c = c + 1 | 0;
+ if ((c | 0) == 87) {
+ c = 87;
+ b = 135231;
+ e = 5;
+ break
+ }
+ }
+ if ((e | 0) == 2)
+ if (!c)
+ b = 135231;
+ else {
+ b = 135231;
+ e = 5
+ }
+ if ((e | 0) == 5)
+ while (1) {
+ e = b;
+ while (1) {
+ b = e + 1 | 0;
+ if (!(a[e >> 0] | 0))
+ break;
+ else
+ e = b
+ }
+ c = c + -1 | 0;
+ if (!c)
+ break;
+ else
+ e = 5
+ }
+ return b | 0
+ }
+ function uc() {
+ var a = 0;
+ if (!(c[30168] | 0))
+ a = 120728;
+ else
+ a = c[(za() | 0) + 60 >> 2] | 0;
+ return a | 0
+ }
+ function vc(a) {
+ a = a | 0;
+ if (a >>> 0 > 4294963200) {
+ c[(uc() | 0) >> 2] = 0 - a;
+ a = -1
+ }
+ return a | 0
+ }
+ function wc(a, b) {
+ a = a | 0;
+ b = b | 0;
+ return 137035
+ }
+ function xc(a, b) {
+ a = +a;
+ b = b | 0;
+ var d = 0,
+ e = 0,
+ f = 0;
+ h[k >> 3] = a;
+ d = c[k >> 2] | 0;
+ e = c[k + 4 >> 2] | 0;
+ f = vd(d | 0, e | 0, 52) | 0;
+ f = f & 2047;
+ switch (f | 0) {
+ case 0:
+ {
+ if (a != 0.0) {
+ a = +xc(a * 18446744073709552.0e3, b);
+ d = (c[b >> 2] | 0) + -64 | 0
+ } else
+ d = 0;
+ c[b >> 2] = d;
+ break
+ }case 2047:
+ break;
+ default:
+ {
+ c[b >> 2] = f + -1022;
+ c[k >> 2] = d;
+ c[k + 4 >> 2] = e & -2146435073 | 1071644672;
+ a = +h[k >> 3]
+ }
+ }
+ return +a
+ }
+ function yc(a, b) {
+ a = +a;
+ b = b | 0;
+ return +(+xc(a, b))
+ }
+ function zc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ do if (b) {
+ if (d >>> 0 < 128) {
+ a[b >> 0] = d;
+ b = 1;
+ break
+ }
+ if (d >>> 0 < 2048) {
+ a[b >> 0] = d >>> 6 | 192;
+ a[b + 1 >> 0] = d & 63 | 128;
+ b = 2;
+ break
+ }
+ if (d >>> 0 < 55296 | (d & -8192 | 0) == 57344) {
+ a[b >> 0] = d >>> 12 | 224;
+ a[b + 1 >> 0] = d >>> 6 & 63 | 128;
+ a[b + 2 >> 0] = d & 63 | 128;
+ b = 3;
+ break
+ }
+ if ((d + -65536 | 0) >>> 0 < 1048576) {
+ a[b >> 0] = d >>> 18 | 240;
+ a[b + 1 >> 0] = d >>> 12 & 63 | 128;
+ a[b + 2 >> 0] = d >>> 6 & 63 | 128;
+ a[b + 3 >> 0] = d & 63 | 128;
+ b = 4;
+ break
+ } else {
+ c[(uc() | 0) >> 2] = 84;
+ b = -1;
+ break
+ }
+ } else
+ b = 1;
+ while (0);
+ return b | 0
+ }
+ function Ac(a, b) {
+ a = a | 0;
+ b = b | 0;
+ if (!a)
+ a = 0;
+ else
+ a = zc(a, b, 0) | 0;
+ return a | 0
+ }
+ function Bc(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0;
+ if ((c[a + 76 >> 2] | 0) > -1)
+ Oc(a) | 0;
+ e = (c[a >> 2] & 1 | 0) != 0;
+ if (!e) {
+ Ha(120700);
+ d = c[a + 52 >> 2] | 0;
+ b = a + 56 | 0;
+ if (d)
+ c[d + 56 >> 2] = c[b >> 2];
+ b = c[b >> 2] | 0;
+ if (b)
+ c[b + 52 >> 2] = d;
+ if ((c[30174] | 0) == (a | 0))
+ c[30174] = b;
+ Da(120700)
+ }
+ b = Cc(a) | 0;
+ b = Ua[c[a + 12 >> 2] & 3](a) | 0 | b;
+ d = c[a + 92 >> 2] | 0;
+ if (d)
+ nd(d);
+ if (!e)
+ nd(a);
+ return b | 0
+ }
+ function Cc(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0;
+ do if (a) {
+ if ((c[a + 76 >> 2] | 0) <= -1) {
+ b = ed(a) | 0;
+ break
+ }
+ d = (Oc(a) | 0) == 0;
+ b = ed(a) | 0;
+ if (!d)
+ Pc(a)
+ } else {
+ if (!(c[30181] | 0))
+ b = 0;
+ else
+ b = Cc(c[30181] | 0) | 0;
+ Ha(120700);
+ a = c[30174] | 0;
+ if (a)
+ do {
+ if ((c[a + 76 >> 2] | 0) > -1)
+ d = Oc(a) | 0;
+ else
+ d = 0;
+ if ((c[a + 20 >> 2] | 0) >>> 0 > (c[a + 28 >> 2] | 0) >>> 0)
+ b = ed(a) | 0 | b;
+ if (d)
+ Pc(a);
+ a = c[a + 56 >> 2] | 0
+ } while ((a | 0) != 0);
+ Da(120700)
+ }
+ while (0);
+ return b | 0
+ }
+ function Dc(b, d) {
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0;
+ g = i;
+ i = i + 32 | 0;
+ f = g + 16 | 0;
+ e = g;
+ if (Xc(137043, a[d >> 0] | 0, 4) | 0) {
+ h = Nc(d) | 0 | 32768;
+ c[e >> 2] = b;
+ c[e + 4 >> 2] = h;
+ c[e + 8 >> 2] = 438;
+ e = vc(Ja(5, e | 0) | 0) | 0;
+ if ((e | 0) >= 0) {
+ b = Mc(e, d) | 0;
+ if (!b) {
+ c[f >> 2] = e;
+ oa(6, f | 0) | 0;
+ b = 0
+ }
+ } else
+ b = 0
+ } else {
+ c[(uc() | 0) >> 2] = 22;
+ b = 0
+ }
+ i = g;
+ return b | 0
+ }
+ function Ec(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0;
+ e = i;
+ i = i + 16 | 0;
+ f = e;
+ c[f >> 2] = d;
+ d = Kc(a, b, f) | 0;
+ i = e;
+ return d | 0
+ }
+ function Fc(a, b) {
+ a = a | 0;
+ b = b | 0;
+ return (Hc(a, cd(a) | 0, 1, b) | 0) + -1 | 0
+ }
+ function Gc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0;
+ f = e + 16 | 0;
+ g = c[f >> 2] | 0;
+ if (!g)
+ if (!(Wc(e) | 0)) {
+ g = c[f >> 2] | 0;
+ h = 4
+ } else
+ f = 0;
+ else
+ h = 4;
+ a:
+ do if ((h | 0) == 4) {
+ i = e + 20 | 0;
+ h = c[i >> 2] | 0;
+ if ((g - h | 0) >>> 0 < d >>> 0) {
+ f = Ra[c[e + 36 >> 2] & 7](e, b, d) | 0;
+ break
+ }
+ b:
+ do if ((a[e + 75 >> 0] | 0) > -1) {
+ f = d;
+ while (1) {
+ if (!f) {
+ g = h;
+ f = 0;
+ break b
+ }
+ g = f + -1 | 0;
+ if ((a[b + g >> 0] | 0) == 10)
+ break;
+ else
+ f = g
+ }
+ if ((Ra[c[e + 36 >> 2] & 7](e, b, f) | 0) >>> 0 < f >>> 0)
+ break a;
+ d = d - f | 0;
+ b = b + f | 0;
+ g = c[i >> 2] | 0
+ } else {
+ g = h;
+ f = 0
+ }
+ while (0);
+ wd(g | 0, b | 0, d | 0) | 0;
+ c[i >> 2] = (c[i >> 2] | 0) + d;
+ f = f + d | 0
+ }
+ while (0);
+ return f | 0
+ }
+ function Hc(a, b, d, e) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0;
+ f = $(d, b) | 0;
+ if ((c[e + 76 >> 2] | 0) > -1) {
+ g = (Oc(e) | 0) == 0;
+ a = Gc(a, f, e) | 0;
+ if (!g)
+ Pc(e)
+ } else
+ a = Gc(a, f, e) | 0;
+ if ((a | 0) != (f | 0))
+ d = (a >>> 0) / (b >>> 0) | 0;
+ return d | 0
+ }
+ function Ic(a, b) {
+ a = a | 0;
+ b = b | 0;
+ var d = 0,
+ e = 0;
+ d = i;
+ i = i + 16 | 0;
+ e = d;
+ c[e >> 2] = b;
+ b = Kc(c[30180] | 0, a, e) | 0;
+ i = d;
+ return b | 0
+ }
+ function Jc(b) {
+ b = b | 0;
+ var d = 0,
+ e = 0,
+ f = 0,
+ g = 0;
+ f = c[30180] | 0;
+ if ((c[f + 76 >> 2] | 0) > -1)
+ g = Oc(f) | 0;
+ else
+ g = 0;
+ do if ((Fc(b, f) | 0) < 0)
+ d = 1;
+ else {
+ if ((a[f + 75 >> 0] | 0) != 10 ? (d = f + 20 | 0, e = c[d >> 2] | 0, e >>> 0 < (c[f + 16 >> 2] | 0) >>> 0) : 0) {
+ c[d >> 2] = e + 1;
+ a[e >> 0] = 10;
+ d = 0;
+ break
+ }
+ d = (Qc(f, 10) | 0) < 0
+ }
+ while (0);
+ if (g)
+ Pc(f);
+ return d << 31 >> 31 | 0
+ }
+ function Kc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0;
+ s = i;
+ i = i + 224 | 0;
+ o = s + 120 | 0;
+ r = s + 80 | 0;
+ q = s;
+ p = s + 136 | 0;
+ f = r;
+ g = f + 40 | 0;
+ do {
+ c[f >> 2] = 0;
+ f = f + 4 | 0
+ } while ((f | 0) < (g | 0));
+ c[o >> 2] = c[e >> 2];
+ if ((fd(0, d, o, q, r) | 0) < 0)
+ e = -1;
+ else {
+ if ((c[b + 76 >> 2] | 0) > -1)
+ m = Oc(b) | 0;
+ else
+ m = 0;
+ e = c[b >> 2] | 0;
+ n = e & 32;
+ if ((a[b + 74 >> 0] | 0) < 1)
+ c[b >> 2] = e & -33;
+ e = b + 48 | 0;
+ if (!(c[e >> 2] | 0)) {
+ g = b + 44 | 0;
+ h = c[g >> 2] | 0;
+ c[g >> 2] = p;
+ j = b + 28 | 0;
+ c[j >> 2] = p;
+ k = b + 20 | 0;
+ c[k >> 2] = p;
+ c[e >> 2] = 80;
+ l = b + 16 | 0;
+ c[l >> 2] = p + 80;
+ f = fd(b, d, o, q, r) | 0;
+ if (h) {
+ Ra[c[b + 36 >> 2] & 7](b, 0, 0) | 0;
+ f = (c[k >> 2] | 0) == 0 ? -1 : f;
+ c[g >> 2] = h;
+ c[e >> 2] = 0;
+ c[l >> 2] = 0;
+ c[j >> 2] = 0;
+ c[k >> 2] = 0
+ }
+ } else
+ f = fd(b, d, o, q, r) | 0;
+ e = c[b >> 2] | 0;
+ c[b >> 2] = e | n;
+ if (m)
+ Pc(b);
+ e = (e & 32 | 0) == 0 ? f : -1
+ }
+ i = s;
+ return e | 0
+ }
+ function Lc(b, d, e, f) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0;
+ n = i;
+ i = i + 128 | 0;
+ g = n + 112 | 0;
+ m = n;
+ h = m;
+ j = 120732;
+ k = h + 112 | 0;
+ do {
+ c[h >> 2] = c[j >> 2];
+ h = h + 4 | 0;
+ j = j + 4 | 0
+ } while ((h | 0) < (k | 0));
+ if ((d + -1 | 0) >>> 0 > 2147483646)
+ if (!d) {
+ d = 1;
+ l = 4
+ } else {
+ c[(uc() | 0) >> 2] = 75;
+ d = -1
+ }
+ else {
+ g = b;
+ l = 4
+ }
+ if ((l | 0) == 4) {
+ l = -2 - g | 0;
+ l = d >>> 0 > l >>> 0 ? l : d;
+ c[m + 48 >> 2] = l;
+ b = m + 20 | 0;
+ c[b >> 2] = g;
+ c[m + 44 >> 2] = g;
+ d = g + l | 0;
+ g = m + 16 | 0;
+ c[g >> 2] = d;
+ c[m + 28 >> 2] = d;
+ d = Kc(m, e, f) | 0;
+ if (l) {
+ e = c[b >> 2] | 0;
+ a[e + (((e | 0) == (c[g >> 2] | 0)) << 31 >> 31) >> 0] = 0
+ }
+ }
+ i = n;
+ return d | 0
+ }
+ function Mc(b, d) {
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0;
+ o = i;
+ i = i + 112 | 0;
+ n = o + 40 | 0;
+ l = o + 24 | 0;
+ k = o + 16 | 0;
+ g = o;
+ m = o + 52 | 0;
+ f = a[d >> 0] | 0;
+ if (Xc(137043, f << 24 >> 24, 4) | 0) {
+ e = md(1144) | 0;
+ if (!e)
+ e = 0;
+ else {
+ h = e;
+ j = h + 112 | 0;
+ do {
+ c[h >> 2] = 0;
+ h = h + 4 | 0
+ } while ((h | 0) < (j | 0));
+ if (!(_c(d, 43) | 0))
+ c[e >> 2] = f << 24 >> 24 == 114 ? 8 : 4;
+ if (_c(d, 101) | 0) {
+ c[g >> 2] = b;
+ c[g + 4 >> 2] = 2;
+ c[g + 8 >> 2] = 1;
+ ma(221, g | 0) | 0;
+ f = a[d >> 0] | 0
+ }
+ if (f << 24 >> 24 == 97) {
+ c[k >> 2] = b;
+ c[k + 4 >> 2] = 3;
+ f = ma(221, k | 0) | 0;
+ if (!(f & 1024)) {
+ c[l >> 2] = b;
+ c[l + 4 >> 2] = 4;
+ c[l + 8 >> 2] = f | 1024;
+ ma(221, l | 0) | 0
+ }
+ d = c[e >> 2] | 128;
+ c[e >> 2] = d
+ } else
+ d = c[e >> 2] | 0;
+ c[e + 60 >> 2] = b;
+ c[e + 44 >> 2] = e + 120;
+ c[e + 48 >> 2] = 1024;
+ f = e + 75 | 0;
+ a[f >> 0] = -1;
+ if ((d & 8 | 0) == 0 ? (c[n >> 2] = b, c[n + 4 >> 2] = 21505, c[n + 8 >> 2] = m, (Ca(54, n | 0) | 0) == 0) : 0)
+ a[f >> 0] = 10;
+ c[e + 32 >> 2] = 6;
+ c[e + 36 >> 2] = 3;
+ c[e + 40 >> 2] = 4;
+ c[e + 12 >> 2] = 3;
+ if (!(c[30169] | 0))
+ c[e + 76 >> 2] = -1;
+ Ha(120700);
+ f = c[30174] | 0;
+ c[e + 56 >> 2] = f;
+ if (f)
+ c[f + 52 >> 2] = e;
+ c[30174] = e;
+ Da(120700)
+ }
+ } else {
+ c[(uc() | 0) >> 2] = 22;
+ e = 0
+ }
+ i = o;
+ return e | 0
+ }
+ function Nc(b) {
+ b = b | 0;
+ var c = 0,
+ d = 0,
+ e = 0;
+ d = (_c(b, 43) | 0) == 0;
+ c = a[b >> 0] | 0;
+ d = d ? c << 24 >> 24 != 114 & 1 : 2;
+ e = (_c(b, 120) | 0) == 0;
+ d = e ? d : d | 128;
+ b = (_c(b, 101) | 0) == 0;
+ b = b ? d : d | 524288;
+ b = c << 24 >> 24 == 114 ? b : b | 64;
+ b = c << 24 >> 24 == 119 ? b | 512 : b;
+ return (c << 24 >> 24 == 97 ? b | 1024 : b) | 0
+ }
+ function Oc(a) {
+ a = a | 0;
+ return 0
+ }
+ function Pc(a) {
+ a = a | 0;
+ return
+ }
+ function Qc(b, e) {
+ b = b | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0;
+ m = i;
+ i = i + 16 | 0;
+ l = m;
+ k = e & 255;
+ a[l >> 0] = k;
+ g = b + 16 | 0;
+ h = c[g >> 2] | 0;
+ if (!h)
+ if (!(Wc(b) | 0)) {
+ h = c[g >> 2] | 0;
+ j = 4
+ } else
+ f = -1;
+ else
+ j = 4;
+ do if ((j | 0) == 4) {
+ g = b + 20 | 0;
+ j = c[g >> 2] | 0;
+ if (j >>> 0 < h >>> 0 ? (f = e & 255, (f | 0) != (a[b + 75 >> 0] | 0)) : 0) {
+ c[g >> 2] = j + 1;
+ a[j >> 0] = k;
+ break
+ }
+ if ((Ra[c[b + 36 >> 2] & 7](b, l, 1) | 0) == 1)
+ f = d[l >> 0] | 0;
+ else
+ f = -1
+ }
+ while (0);
+ i = m;
+ return f | 0
+ }
+ function Rc(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0;
+ b = i;
+ i = i + 16 | 0;
+ d = b;
+ c[d >> 2] = c[a + 60 >> 2];
+ a = vc(oa(6, d | 0) | 0) | 0;
+ i = b;
+ return a | 0
+ }
+ function Sc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0;
+ m = i;
+ i = i + 48 | 0;
+ h = m + 16 | 0;
+ g = m;
+ f = m + 32 | 0;
+ c[f >> 2] = d;
+ j = f + 4 | 0;
+ l = b + 48 | 0;
+ n = c[l >> 2] | 0;
+ c[j >> 2] = e - ((n | 0) != 0 & 1);
+ k = b + 44 | 0;
+ c[f + 8 >> 2] = c[k >> 2];
+ c[f + 12 >> 2] = n;
+ if (!(c[30168] | 0)) {
+ c[h >> 2] = c[b + 60 >> 2];
+ c[h + 4 >> 2] = f;
+ c[h + 8 >> 2] = 2;
+ f = vc(Oa(145, h | 0) | 0) | 0
+ } else {
+ na(12, b | 0);
+ c[g >> 2] = c[b + 60 >> 2];
+ c[g + 4 >> 2] = f;
+ c[g + 8 >> 2] = 2;
+ f = vc(Oa(145, g | 0) | 0) | 0;
+ la(0)
+ }
+ if ((f | 0) >= 1) {
+ j = c[j >> 2] | 0;
+ if (f >>> 0 > j >>> 0) {
+ h = c[k >> 2] | 0;
+ g = b + 4 | 0;
+ c[g >> 2] = h;
+ c[b + 8 >> 2] = h + (f - j);
+ if (!(c[l >> 2] | 0))
+ f = e;
+ else {
+ c[g >> 2] = h + 1;
+ a[d + (e + -1) >> 0] = a[h >> 0] | 0;
+ f = e
+ }
+ }
+ } else {
+ c[b >> 2] = c[b >> 2] | f & 48 ^ 16;
+ c[b + 8 >> 2] = 0;
+ c[b + 4 >> 2] = 0
+ }
+ i = m;
+ return f | 0
+ }
+ function Tc(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0;
+ f = i;
+ i = i + 32 | 0;
+ g = f;
+ e = f + 20 | 0;
+ c[g >> 2] = c[a + 60 >> 2];
+ c[g + 4 >> 2] = 0;
+ c[g + 8 >> 2] = b;
+ c[g + 12 >> 2] = e;
+ c[g + 16 >> 2] = d;
+ if ((vc(Na(140, g | 0) | 0) | 0) < 0) {
+ c[e >> 2] = -1;
+ a = -1
+ } else
+ a = c[e >> 2] | 0;
+ i = f;
+ return a | 0
+ }
+ function Uc(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0;
+ q = i;
+ i = i + 48 | 0;
+ n = q + 16 | 0;
+ m = q;
+ e = q + 32 | 0;
+ o = a + 28 | 0;
+ f = c[o >> 2] | 0;
+ c[e >> 2] = f;
+ p = a + 20 | 0;
+ f = (c[p >> 2] | 0) - f | 0;
+ c[e + 4 >> 2] = f;
+ c[e + 8 >> 2] = b;
+ c[e + 12 >> 2] = d;
+ k = a + 60 | 0;
+ l = a + 44 | 0;
+ b = 2;
+ f = f + d | 0;
+ while (1) {
+ if (!(c[30168] | 0)) {
+ c[n >> 2] = c[k >> 2];
+ c[n + 4 >> 2] = e;
+ c[n + 8 >> 2] = b;
+ h = vc(La(146, n | 0) | 0) | 0
+ } else {
+ na(13, a | 0);
+ c[m >> 2] = c[k >> 2];
+ c[m + 4 >> 2] = e;
+ c[m + 8 >> 2] = b;
+ h = vc(La(146, m | 0) | 0) | 0;
+ la(0)
+ }
+ if ((f | 0) == (h | 0)) {
+ f = 6;
+ break
+ }
+ if ((h | 0) < 0) {
+ f = 8;
+ break
+ }
+ f = f - h | 0;
+ g = c[e + 4 >> 2] | 0;
+ if (h >>> 0 <= g >>> 0)
+ if ((b | 0) == 2) {
+ c[o >> 2] = (c[o >> 2] | 0) + h;
+ j = g;
+ b = 2
+ } else
+ j = g;
+ else {
+ j = c[l >> 2] | 0;
+ c[o >> 2] = j;
+ c[p >> 2] = j;
+ j = c[e + 12 >> 2] | 0;
+ h = h - g | 0;
+ e = e + 8 | 0;
+ b = b + -1 | 0
+ }
+ c[e >> 2] = (c[e >> 2] | 0) + h;
+ c[e + 4 >> 2] = j - h
+ }
+ if ((f | 0) == 6) {
+ n = c[l >> 2] | 0;
+ c[a + 16 >> 2] = n + (c[a + 48 >> 2] | 0);
+ a = n;
+ c[o >> 2] = a;
+ c[p >> 2] = a
+ } else if ((f | 0) == 8) {
+ c[a + 16 >> 2] = 0;
+ c[o >> 2] = 0;
+ c[p >> 2] = 0;
+ c[a >> 2] = c[a >> 2] | 32;
+ if ((b | 0) == 2)
+ d = 0;
+ else
+ d = d - (c[e + 4 >> 2] | 0) | 0
+ }
+ i = q;
+ return d | 0
+ }
+ function Vc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0;
+ g = i;
+ i = i + 80 | 0;
+ f = g;
+ c[b + 36 >> 2] = 3;
+ if ((c[b >> 2] & 64 | 0) == 0 ? (c[f >> 2] = c[b + 60 >> 2], c[f + 4 >> 2] = 21505, c[f + 8 >> 2] = g + 12, (Ca(54, f | 0) | 0) != 0) : 0)
+ a[b + 75 >> 0] = -1;
+ f = Uc(b, d, e) | 0;
+ i = g;
+ return f | 0
+ }
+ function Wc(b) {
+ b = b | 0;
+ var d = 0,
+ e = 0;
+ d = b + 74 | 0;
+ e = a[d >> 0] | 0;
+ a[d >> 0] = e + 255 | e;
+ d = c[b >> 2] | 0;
+ if (!(d & 8)) {
+ c[b + 8 >> 2] = 0;
+ c[b + 4 >> 2] = 0;
+ d = c[b + 44 >> 2] | 0;
+ c[b + 28 >> 2] = d;
+ c[b + 20 >> 2] = d;
+ c[b + 16 >> 2] = d + (c[b + 48 >> 2] | 0);
+ d = 0
+ } else {
+ c[b >> 2] = d | 32;
+ d = -1
+ }
+ return d | 0
+ }
+ function Xc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0;
+ h = d & 255;
+ f = (e | 0) != 0;
+ a:
+ do if (f & (b & 3 | 0) != 0) {
+ g = d & 255;
+ while (1) {
+ if ((a[b >> 0] | 0) == g << 24 >> 24) {
+ i = 6;
+ break a
+ }
+ b = b + 1 | 0;
+ e = e + -1 | 0;
+ f = (e | 0) != 0;
+ if (!(f & (b & 3 | 0) != 0)) {
+ i = 5;
+ break
+ }
+ }
+ } else
+ i = 5;
+ while (0);
+ if ((i | 0) == 5)
+ if (f)
+ i = 6;
+ else
+ e = 0;
+ b:
+ do if ((i | 0) == 6) {
+ g = d & 255;
+ if ((a[b >> 0] | 0) != g << 24 >> 24) {
+ f = $(h, 16843009) | 0;
+ c:
+ do if (e >>> 0 > 3)
+ while (1) {
+ h = c[b >> 2] ^ f;
+ if ((h & -2139062144 ^ -2139062144) & h + -16843009)
+ break;
+ b = b + 4 | 0;
+ e = e + -4 | 0;
+ if (e >>> 0 <= 3) {
+ i = 11;
+ break c
+ }
+ }
+ else
+ i = 11;
+ while (0);
+ if ((i | 0) == 11)
+ if (!e) {
+ e = 0;
+ break
+ }
+ while (1) {
+ if ((a[b >> 0] | 0) == g << 24 >> 24)
+ break b;
+ b = b + 1 | 0;
+ e = e + -1 | 0;
+ if (!e) {
+ e = 0;
+ break
+ }
+ }
+ }
+ }
+ while (0);
+ return ((e | 0) != 0 ? b : 0) | 0
+ }
+ function Yc(b, d) {
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0;
+ e = d;
+ a:
+ do if (!((e ^ b) & 3)) {
+ if (e & 3)
+ do {
+ e = a[d >> 0] | 0;
+ a[b >> 0] = e;
+ if (!(e << 24 >> 24))
+ break a;
+ d = d + 1 | 0;
+ b = b + 1 | 0
+ } while ((d & 3 | 0) != 0);
+ e = c[d >> 2] | 0;
+ if (!((e & -2139062144 ^ -2139062144) & e + -16843009)) {
+ f = b;
+ while (1) {
+ d = d + 4 | 0;
+ b = f + 4 | 0;
+ c[f >> 2] = e;
+ e = c[d >> 2] | 0;
+ if ((e & -2139062144 ^ -2139062144) & e + -16843009)
+ break;
+ else
+ f = b
+ }
+ }
+ f = 8
+ } else
+ f = 8;
+ while (0);
+ if ((f | 0) == 8) {
+ f = a[d >> 0] | 0;
+ a[b >> 0] = f;
+ if (f << 24 >> 24)
+ do {
+ d = d + 1 | 0;
+ b = b + 1 | 0;
+ f = a[d >> 0] | 0;
+ a[b >> 0] = f
+ } while (f << 24 >> 24 != 0)
+ }
+ return b | 0
+ }
+ function Zc(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0;
+ g = d;
+ do if (!((g ^ b) & 3)) {
+ f = (e | 0) != 0;
+ a:
+ do if (f & (g & 3 | 0) != 0)
+ while (1) {
+ g = a[d >> 0] | 0;
+ a[b >> 0] = g;
+ if (!(g << 24 >> 24))
+ break a;
+ e = e + -1 | 0;
+ d = d + 1 | 0;
+ b = b + 1 | 0;
+ f = (e | 0) != 0;
+ if (!(f & (d & 3 | 0) != 0)) {
+ h = 5;
+ break
+ }
+ }
+ else
+ h = 5;
+ while (0);
+ if ((h | 0) == 5)
+ if (!f) {
+ e = 0;
+ break
+ }
+ if (a[d >> 0] | 0) {
+ b:
+ do if (e >>> 0 > 3)
+ do {
+ f = c[d >> 2] | 0;
+ if ((f & -2139062144 ^ -2139062144) & f + -16843009)
+ break b;
+ c[b >> 2] = f;
+ e = e + -4 | 0;
+ d = d + 4 | 0;
+ b = b + 4 | 0
+ } while (e >>> 0 > 3);
+ while (0);
+ h = 11
+ }
+ } else
+ h = 11;
+ while (0);
+ c:
+ do if ((h | 0) == 11)
+ if (!e)
+ e = 0;
+ else
+ while (1) {
+ h = a[d >> 0] | 0;
+ a[b >> 0] = h;
+ if (!(h << 24 >> 24))
+ break c;
+ e = e + -1 | 0;
+ b = b + 1 | 0;
+ if (!e) {
+ e = 0;
+ break
+ } else
+ d = d + 1 | 0
+ }
+ while (0);
+ sd(b | 0, 0, e | 0) | 0;
+ return b | 0
+ }
+ function _c(b, c) {
+ b = b | 0;
+ c = c | 0;
+ b = $c(b, c) | 0;
+ return ((a[b >> 0] | 0) == (c & 255) << 24 >> 24 ? b : 0) | 0
+ }
+ function $c(b, d) {
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0;
+ f = d & 255;
+ a:
+ do if (!f)
+ b = b + (cd(b) | 0) | 0;
+ else {
+ if (b & 3) {
+ e = d & 255;
+ do {
+ g = a[b >> 0] | 0;
+ if (g << 24 >> 24 == 0 ? 1 : g << 24 >> 24 == e << 24 >> 24)
+ break a;
+ b = b + 1 | 0
+ } while ((b & 3 | 0) != 0)
+ }
+ f = $(f, 16843009) | 0;
+ e = c[b >> 2] | 0;
+ b:
+ do if (!((e & -2139062144 ^ -2139062144) & e + -16843009))
+ do {
+ g = e ^ f;
+ if ((g & -2139062144 ^ -2139062144) & g + -16843009)
+ break b;
+ b = b + 4 | 0;
+ e = c[b >> 2] | 0
+ } while (((e & -2139062144 ^ -2139062144) & e + -16843009 | 0) == 0);
+ while (0);
+ e = d & 255;
+ while (1) {
+ g = a[b >> 0] | 0;
+ if (g << 24 >> 24 == 0 ? 1 : g << 24 >> 24 == e << 24 >> 24)
+ break;
+ else
+ b = b + 1 | 0
+ }
+ }
+ while (0);
+ return b | 0
+ }
+ function ad(b, c) {
+ b = b | 0;
+ c = c | 0;
+ var d = 0,
+ e = 0;
+ e = a[b >> 0] | 0;
+ d = a[c >> 0] | 0;
+ if (e << 24 >> 24 == 0 ? 1 : e << 24 >> 24 != d << 24 >> 24)
+ c = e;
+ else {
+ do {
+ b = b + 1 | 0;
+ c = c + 1 | 0;
+ e = a[b >> 0] | 0;
+ d = a[c >> 0] | 0
+ } while (!(e << 24 >> 24 == 0 ? 1 : e << 24 >> 24 != d << 24 >> 24));
+ c = e
+ }
+ return (c & 255) - (d & 255) | 0
+ }
+ function bd(a, b) {
+ a = a | 0;
+ b = b | 0;
+ Yc(a, b) | 0;
+ return a | 0
+ }
+ function cd(b) {
+ b = b | 0;
+ var d = 0,
+ e = 0,
+ f = 0;
+ f = b;
+ a:
+ do if (!(f & 3))
+ e = 4;
+ else {
+ d = b;
+ b = f;
+ while (1) {
+ if (!(a[d >> 0] | 0))
+ break a;
+ d = d + 1 | 0;
+ b = d;
+ if (!(b & 3)) {
+ b = d;
+ e = 4;
+ break
+ }
+ }
+ }
+ while (0);
+ if ((e | 0) == 4) {
+ while (1) {
+ d = c[b >> 2] | 0;
+ if (!((d & -2139062144 ^ -2139062144) & d + -16843009))
+ b = b + 4 | 0;
+ else
+ break
+ }
+ if ((d & 255) << 24 >> 24)
+ do b = b + 1 | 0;
+ while ((a[b >> 0] | 0) != 0)
+ }
+ return b - f | 0
+ }
+ function dd(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ Zc(a, b, c) | 0;
+ return a | 0
+ }
+ function ed(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0;
+ b = a + 20 | 0;
+ g = a + 28 | 0;
+ if ((c[b >> 2] | 0) >>> 0 > (c[g >> 2] | 0) >>> 0 ? (Ra[c[a + 36 >> 2] & 7](a, 0, 0) | 0, (c[b >> 2] | 0) == 0) : 0)
+ b = -1;
+ else {
+ h = a + 4 | 0;
+ d = c[h >> 2] | 0;
+ e = a + 8 | 0;
+ f = c[e >> 2] | 0;
+ if (d >>> 0 < f >>> 0)
+ Ra[c[a + 40 >> 2] & 7](a, d - f | 0, 1) | 0;
+ c[a + 16 >> 2] = 0;
+ c[g >> 2] = 0;
+ c[b >> 2] = 0;
+ c[e >> 2] = 0;
+ c[h >> 2] = 0;
+ b = 0
+ }
+ return b | 0
+ }
+ function fd(e, f, g, j, l) {
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ j = j | 0;
+ l = l | 0;
+ var m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0.0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0.0,
+ w = 0,
+ x = 0,
+ y = 0,
+ z = 0,
+ A = 0,
+ B = 0,
+ C = 0,
+ E = 0,
+ F = 0,
+ G = 0,
+ H = 0,
+ I = 0,
+ J = 0,
+ K = 0,
+ L = 0,
+ M = 0,
+ N = 0,
+ O = 0,
+ P = 0,
+ Q = 0,
+ R = 0,
+ S = 0,
+ T = 0,
+ U = 0,
+ V = 0,
+ W = 0,
+ X = 0,
+ Y = 0,
+ Z = 0,
+ _ = 0,
+ aa = 0,
+ ba = 0,
+ ca = 0,
+ da = 0,
+ ea = 0,
+ fa = 0,
+ ga = 0,
+ ha = 0;
+ ha = i;
+ i = i + 624 | 0;
+ ca = ha + 24 | 0;
+ ea = ha + 16 | 0;
+ da = ha + 588 | 0;
+ Y = ha + 576 | 0;
+ ba = ha;
+ V = ha + 536 | 0;
+ ga = ha + 8 | 0;
+ fa = ha + 528 | 0;
+ M = (e | 0) != 0;
+ N = V + 40 | 0;
+ U = N;
+ V = V + 39 | 0;
+ W = ga + 4 | 0;
+ X = Y + 12 | 0;
+ Y = Y + 11 | 0;
+ Z = da;
+ _ = X;
+ aa = _ - Z | 0;
+ O = -2 - Z | 0;
+ P = _ + 2 | 0;
+ Q = ca + 288 | 0;
+ R = da + 9 | 0;
+ S = R;
+ T = da + 8 | 0;
+ m = 0;
+ w = f;
+ n = 0;
+ f = 0;
+ a:
+ while (1) {
+ do if ((m | 0) > -1)
+ if ((n | 0) > (2147483647 - m | 0)) {
+ c[(uc() | 0) >> 2] = 75;
+ m = -1;
+ break
+ } else {
+ m = n + m | 0;
+ break
+ }
+ while (0);
+ n = a[w >> 0] | 0;
+ if (!(n << 24 >> 24)) {
+ L = 245;
+ break
+ } else
+ o = w;
+ b:
+ while (1) {
+ switch (n << 24 >> 24) {
+ case 37:
+ {
+ n = o;
+ L = 9;
+ break b
+ }case 0:
+ {
+ n = o;
+ break b
+ }default:
+ {}
+ }
+ K = o + 1 | 0;
+ n = a[K >> 0] | 0;
+ o = K
+ }
+ c:
+ do if ((L | 0) == 9)
+ while (1) {
+ L = 0;
+ if ((a[n + 1 >> 0] | 0) != 37)
+ break c;
+ o = o + 1 | 0;
+ n = n + 2 | 0;
+ if ((a[n >> 0] | 0) == 37)
+ L = 9;
+ else
+ break
+ }
+ while (0);
+ y = o - w | 0;
+ if (M ? (c[e >> 2] & 32 | 0) == 0 : 0)
+ Gc(w, y, e) | 0;
+ if ((o | 0) != (w | 0)) {
+ w = n;
+ n = y;
+ continue
+ }
+ r = n + 1 | 0;
+ o = a[r >> 0] | 0;
+ p = (o << 24 >> 24) + -48 | 0;
+ if (p >>> 0 < 10) {
+ K = (a[n + 2 >> 0] | 0) == 36;
+ r = K ? n + 3 | 0 : r;
+ o = a[r >> 0] | 0;
+ u = K ? p : -1;
+ f = K ? 1 : f
+ } else
+ u = -1;
+ n = o << 24 >> 24;
+ d:
+ do if ((n & -32 | 0) == 32) {
+ p = 0;
+ while (1) {
+ if (!(1 << n + -32 & 75913)) {
+ s = p;
+ n = r;
+ break d
+ }
+ p = 1 << (o << 24 >> 24) + -32 | p;
+ r = r + 1 | 0;
+ o = a[r >> 0] | 0;
+ n = o << 24 >> 24;
+ if ((n & -32 | 0) != 32) {
+ s = p;
+ n = r;
+ break
+ }
+ }
+ } else {
+ s = 0;
+ n = r
+ }
+ while (0);
+ do if (o << 24 >> 24 == 42) {
+ p = n + 1 | 0;
+ o = (a[p >> 0] | 0) + -48 | 0;
+ if (o >>> 0 < 10 ? (a[n + 2 >> 0] | 0) == 36 : 0) {
+ c[l + (o << 2) >> 2] = 10;
+ f = 1;
+ n = n + 3 | 0;
+ o = c[j + ((a[p >> 0] | 0) + -48 << 3) >> 2] | 0
+ } else {
+ if (f) {
+ m = -1;
+ break a
+ }
+ if (!M) {
+ x = s;
+ n = p;
+ f = 0;
+ K = 0;
+ break
+ }
+ f = (c[g >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ o = c[f >> 2] | 0;
+ c[g >> 2] = f + 4;
+ f = 0;
+ n = p
+ }
+ if ((o | 0) < 0) {
+ x = s | 8192;
+ K = 0 - o | 0
+ } else {
+ x = s;
+ K = o
+ }
+ } else {
+ p = (o << 24 >> 24) + -48 | 0;
+ if (p >>> 0 < 10) {
+ o = 0;
+ do {
+ o = (o * 10 | 0) + p | 0;
+ n = n + 1 | 0;
+ p = (a[n >> 0] | 0) + -48 | 0
+ } while (p >>> 0 < 10);
+ if ((o | 0) < 0) {
+ m = -1;
+ break a
+ } else {
+ x = s;
+ K = o
+ }
+ } else {
+ x = s;
+ K = 0
+ }
+ }
+ while (0);
+ e:
+ do if ((a[n >> 0] | 0) == 46) {
+ p = n + 1 | 0;
+ o = a[p >> 0] | 0;
+ if (o << 24 >> 24 != 42) {
+ r = (o << 24 >> 24) + -48 | 0;
+ if (r >>> 0 < 10) {
+ n = p;
+ o = 0
+ } else {
+ n = p;
+ r = 0;
+ break
+ }
+ while (1) {
+ o = (o * 10 | 0) + r | 0;
+ n = n + 1 | 0;
+ r = (a[n >> 0] | 0) + -48 | 0;
+ if (r >>> 0 >= 10) {
+ r = o;
+ break e
+ }
+ }
+ }
+ p = n + 2 | 0;
+ o = (a[p >> 0] | 0) + -48 | 0;
+ if (o >>> 0 < 10 ? (a[n + 3 >> 0] | 0) == 36 : 0) {
+ c[l + (o << 2) >> 2] = 10;
+ n = n + 4 | 0;
+ r = c[j + ((a[p >> 0] | 0) + -48 << 3) >> 2] | 0;
+ break
+ }
+ if (f) {
+ m = -1;
+ break a
+ }
+ if (M) {
+ n = (c[g >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ r = c[n >> 2] | 0;
+ c[g >> 2] = n + 4;
+ n = p
+ } else {
+ n = p;
+ r = 0
+ }
+ } else
+ r = -1;
+ while (0);
+ t = 0;
+ while (1) {
+ o = (a[n >> 0] | 0) + -65 | 0;
+ if (o >>> 0 > 57) {
+ m = -1;
+ break a
+ }
+ p = n + 1 | 0;
+ o = a[138087 + (t * 58 | 0) + o >> 0] | 0;
+ s = o & 255;
+ if ((s + -1 | 0) >>> 0 < 8) {
+ n = p;
+ t = s
+ } else {
+ J = p;
+ break
+ }
+ }
+ if (!(o << 24 >> 24)) {
+ m = -1;
+ break
+ }
+ p = (u | 0) > -1;
+ do if (o << 24 >> 24 == 19)
+ if (p) {
+ m = -1;
+ break a
+ } else
+ L = 52;
+ else {
+ if (p) {
+ c[l + (u << 2) >> 2] = s;
+ H = j + (u << 3) | 0;
+ I = c[H + 4 >> 2] | 0;
+ L = ba;
+ c[L >> 2] = c[H >> 2];
+ c[L + 4 >> 2] = I;
+ L = 52;
+ break
+ }
+ if (!M) {
+ m = 0;
+ break a
+ }
+ jd(ba, s, g)
+ }
+ while (0);
+ if ((L | 0) == 52 ? (L = 0, !M) : 0) {
+ w = J;
+ n = y;
+ continue
+ }
+ u = a[n >> 0] | 0;
+ u = (t | 0) != 0 & (u & 15 | 0) == 3 ? u & -33 : u;
+ p = x & -65537;
+ I = (x & 8192 | 0) == 0 ? x : p;
+ f:
+ do switch (u | 0) {
+ case 110:
+ switch (t | 0) {
+ case 0:
+ {
+ c[c[ba >> 2] >> 2] = m;
+ w = J;
+ n = y;
+ continue a
+ }case 1:
+ {
+ c[c[ba >> 2] >> 2] = m;
+ w = J;
+ n = y;
+ continue a
+ }case 2:
+ {
+ w = c[ba >> 2] | 0;
+ c[w >> 2] = m;
+ c[w + 4 >> 2] = ((m | 0) < 0) << 31 >> 31;
+ w = J;
+ n = y;
+ continue a
+ }case 3:
+ {
+ b[c[ba >> 2] >> 1] = m;
+ w = J;
+ n = y;
+ continue a
+ }case 4:
+ {
+ a[c[ba >> 2] >> 0] = m;
+ w = J;
+ n = y;
+ continue a
+ }case 6:
+ {
+ c[c[ba >> 2] >> 2] = m;
+ w = J;
+ n = y;
+ continue a
+ }case 7:
+ {
+ w = c[ba >> 2] | 0;
+ c[w >> 2] = m;
+ c[w + 4 >> 2] = ((m | 0) < 0) << 31 >> 31;
+ w = J;
+ n = y;
+ continue a
+ }default:
+ {
+ w = J;
+ n = y;
+ continue a
+ }
+ }
+ case 112:
+ {
+ t = I | 8;
+ r = r >>> 0 > 8 ? r : 8;
+ u = 120;
+ L = 64;
+ break
+ }case 88:
+ case 120:
+ {
+ t = I;
+ L = 64;
+ break
+ }case 111:
+ {
+ p = ba;
+ o = c[p >> 2] | 0;
+ p = c[p + 4 >> 2] | 0;
+ if ((o | 0) == 0 & (p | 0) == 0)
+ n = N;
+ else {
+ n = N;
+ do {
+ n = n + -1 | 0;
+ a[n >> 0] = o & 7 | 48;
+ o = vd(o | 0, p | 0, 3) | 0;
+ p = D
+ } while (!((o | 0) == 0 & (p | 0) == 0))
+ }
+ if (!(I & 8)) {
+ o = I;
+ t = 0;
+ s = 138567;
+ L = 77
+ } else {
+ t = U - n + 1 | 0;
+ o = I;
+ r = (r | 0) < (t | 0) ? t : r;
+ t = 0;
+ s = 138567;
+ L = 77
+ }
+ break
+ }case 105:
+ case 100:
+ {
+ o = ba;
+ n = c[o >> 2] | 0;
+ o = c[o + 4 >> 2] | 0;
+ if ((o | 0) < 0) {
+ n = rd(0, 0, n | 0, o | 0) | 0;
+ o = D;
+ p = ba;
+ c[p >> 2] = n;
+ c[p + 4 >> 2] = o;
+ p = 1;
+ s = 138567;
+ L = 76;
+ break f
+ }
+ if (!(I & 2048)) {
+ s = I & 1;
+ p = s;
+ s = (s | 0) == 0 ? 138567 : 138569;
+ L = 76
+ } else {
+ p = 1;
+ s = 138568;
+ L = 76
+ }
+ break
+ }case 117:
+ {
+ o = ba;
+ n = c[o >> 2] | 0;
+ o = c[o + 4 >> 2] | 0;
+ p = 0;
+ s = 138567;
+ L = 76;
+ break
+ }case 99:
+ {
+ a[V >> 0] = c[ba >> 2];
+ w = V;
+ o = 1;
+ t = 0;
+ u = 138567;
+ n = N;
+ break
+ }case 109:
+ {
+ n = tc(c[(uc() | 0) >> 2] | 0) | 0;
+ L = 82;
+ break
+ }case 115:
+ {
+ n = c[ba >> 2] | 0;
+ n = (n | 0) != 0 ? n : 138577;
+ L = 82;
+ break
+ }case 67:
+ {
+ c[ga >> 2] = c[ba >> 2];
+ c[W >> 2] = 0;
+ c[ba >> 2] = ga;
+ r = -1;
+ L = 86;
+ break
+ }case 83:
+ {
+ if (!r) {
+ ld(e, 32, K, 0, I);
+ n = 0;
+ L = 98
+ } else
+ L = 86;
+ break
+ }case 65:
+ case 71:
+ case 70:
+ case 69:
+ case 97:
+ case 103:
+ case 102:
+ case 101:
+ {
+ q = +h[ba >> 3];
+ c[ea >> 2] = 0;
+ h[k >> 3] = q;
+ if ((c[k + 4 >> 2] | 0) >= 0)
+ if (!(I & 2048)) {
+ H = I & 1;
+ G = H;
+ H = (H | 0) == 0 ? 138585 : 138590
+ } else {
+ G = 1;
+ H = 138587
+ }
+ else {
+ q = -q;
+ G = 1;
+ H = 138584
+ }
+ h[k >> 3] = q;
+ F = c[k + 4 >> 2] & 2146435072;
+ do if (F >>> 0 < 2146435072 | (F | 0) == 2146435072 & 0 < 0) {
+ v = +yc(q, ea) * 2.0;
+ o = v != 0.0;
+ if (o)
+ c[ea >> 2] = (c[ea >> 2] | 0) + -1;
+ C = u | 32;
+ if ((C | 0) == 97) {
+ w = u & 32;
+ y = (w | 0) == 0 ? H : H + 9 | 0;
+ x = G | 2;
+ n = 12 - r | 0;
+ do if (!(r >>> 0 > 11 | (n | 0) == 0)) {
+ q = 8.0;
+ do {
+ n = n + -1 | 0;
+ q = q * 16.0
+ } while ((n | 0) != 0);
+ if ((a[y >> 0] | 0) == 45) {
+ q = -(q + (-v - q));
+ break
+ } else {
+ q = v + q - q;
+ break
+ }
+ } else
+ q = v;
+ while (0);
+ o = c[ea >> 2] | 0;
+ n = (o | 0) < 0 ? 0 - o | 0 : o;
+ n = kd(n, ((n | 0) < 0) << 31 >> 31, X) | 0;
+ if ((n | 0) == (X | 0)) {
+ a[Y >> 0] = 48;
+ n = Y
+ }
+ a[n + -1 >> 0] = (o >> 31 & 2) + 43;
+ t = n + -2 | 0;
+ a[t >> 0] = u + 15;
+ s = (r | 0) < 1;
+ p = (I & 8 | 0) == 0;
+ o = da;
+ while (1) {
+ H = ~~q;
+ n = o + 1 | 0;
+ a[o >> 0] = d[138551 + H >> 0] | w;
+ q = (q - +(H | 0)) * 16.0;
+ do if ((n - Z | 0) == 1) {
+ if (p & (s & q == 0.0))
+ break;
+ a[n >> 0] = 46;
+ n = o + 2 | 0
+ }
+ while (0);
+ if (!(q != 0.0))
+ break;
+ else
+ o = n
+ }
+ r = (r | 0) != 0 & (O + n | 0) < (r | 0) ? P + r - t | 0 : aa - t + n | 0;
+ p = r + x | 0;
+ ld(e, 32, K, p, I);
+ if (!(c[e >> 2] & 32))
+ Gc(y, x, e) | 0;
+ ld(e, 48, K, p, I ^ 65536);
+ n = n - Z | 0;
+ if (!(c[e >> 2] & 32))
+ Gc(da, n, e) | 0;
+ o = _ - t | 0;
+ ld(e, 48, r - (n + o) | 0, 0, 0);
+ if (!(c[e >> 2] & 32))
+ Gc(t, o, e) | 0;
+ ld(e, 32, K, p, I ^ 8192);
+ n = (p | 0) < (K | 0) ? K : p;
+ break
+ }
+ n = (r | 0) < 0 ? 6 : r;
+ if (o) {
+ o = (c[ea >> 2] | 0) + -28 | 0;
+ c[ea >> 2] = o;
+ q = v * 268435456.0
+ } else {
+ q = v;
+ o = c[ea >> 2] | 0
+ }
+ F = (o | 0) < 0 ? ca : Q;
+ E = F;
+ o = F;
+ do {
+ B = ~~q >>> 0;
+ c[o >> 2] = B;
+ o = o + 4 | 0;
+ q = (q - +(B >>> 0)) * 1.0e9
+ } while (q != 0.0);
+ p = o;
+ o = c[ea >> 2] | 0;
+ if ((o | 0) > 0) {
+ s = F;
+ while (1) {
+ t = (o | 0) > 29 ? 29 : o;
+ r = p + -4 | 0;
+ do if (r >>> 0 < s >>> 0)
+ r = s;
+ else {
+ o = 0;
+ do {
+ B = td(c[r >> 2] | 0, 0, t | 0) | 0;
+ B = ud(B | 0, D | 0, o | 0, 0) | 0;
+ o = D;
+ A = Fd(B | 0, o | 0, 1e9, 0) | 0;
+ c[r >> 2] = A;
+ o = Ed(B | 0, o | 0, 1e9, 0) | 0;
+ r = r + -4 | 0
+ } while (r >>> 0 >= s >>> 0);
+ if (!o) {
+ r = s;
+ break
+ }
+ r = s + -4 | 0;
+ c[r >> 2] = o
+ }
+ while (0);
+ while (1) {
+ if (p >>> 0 <= r >>> 0)
+ break;
+ o = p + -4 | 0;
+ if (!(c[o >> 2] | 0))
+ p = o;
+ else
+ break
+ }
+ o = (c[ea >> 2] | 0) - t | 0;
+ c[ea >> 2] = o;
+ if ((o | 0) > 0)
+ s = r;
+ else
+ break
+ }
+ } else
+ r = F;
+ if ((o | 0) < 0) {
+ y = ((n + 25 | 0) / 9 | 0) + 1 | 0;
+ z = (C | 0) == 102;
+ w = r;
+ while (1) {
+ x = 0 - o | 0;
+ x = (x | 0) > 9 ? 9 : x;
+ do if (w >>> 0 < p >>> 0) {
+ o = (1 << x) + -1 | 0;
+ s = 1e9 >>> x;
+ r = 0;
+ t = w;
+ do {
+ B = c[t >> 2] | 0;
+ c[t >> 2] = (B >>> x) + r;
+ r = $(B & o, s) | 0;
+ t = t + 4 | 0
+ } while (t >>> 0 < p >>> 0);
+ o = (c[w >> 2] | 0) == 0 ? w + 4 | 0 : w;
+ if (!r) {
+ r = o;
+ break
+ }
+ c[p >> 2] = r;
+ r = o;
+ p = p + 4 | 0
+ } else
+ r = (c[w >> 2] | 0) == 0 ? w + 4 | 0 : w;
+ while (0);
+ o = z ? F : r;
+ p = (p - o >> 2 | 0) > (y | 0) ? o + (y << 2) | 0 : p;
+ o = (c[ea >> 2] | 0) + x | 0;
+ c[ea >> 2] = o;
+ if ((o | 0) >= 0) {
+ w = r;
+ break
+ } else
+ w = r
+ }
+ } else
+ w = r;
+ do if (w >>> 0 < p >>> 0) {
+ o = (E - w >> 2) * 9 | 0;
+ s = c[w >> 2] | 0;
+ if (s >>> 0 < 10)
+ break;
+ else
+ r = 10;
+ do {
+ r = r * 10 | 0;
+ o = o + 1 | 0
+ } while (s >>> 0 >= r >>> 0)
+ } else
+ o = 0;
+ while (0);
+ A = (C | 0) == 103;
+ B = (n | 0) != 0;
+ r = n - ((C | 0) != 102 ? o : 0) + ((B & A) << 31 >> 31) | 0;
+ if ((r | 0) < (((p - E >> 2) * 9 | 0) + -9 | 0)) {
+ t = r + 9216 | 0;
+ z = (t | 0) / 9 | 0;
+ r = F + (z + -1023 << 2) | 0;
+ t = ((t | 0) % 9 | 0) + 1 | 0;
+ if ((t | 0) < 9) {
+ s = 10;
+ do {
+ s = s * 10 | 0;
+ t = t + 1 | 0
+ } while ((t | 0) != 9)
+ } else
+ s = 10;
+ x = c[r >> 2] | 0;
+ y = (x >>> 0) % (s >>> 0) | 0;
+ if ((y | 0) == 0 ? (F + (z + -1022 << 2) | 0) == (p | 0) : 0)
+ s = w;
+ else
+ L = 163;
+ do if ((L | 0) == 163) {
+ L = 0;
+ v = (((x >>> 0) / (s >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0;
+ t = (s | 0) / 2 | 0;
+ do if (y >>> 0 < t >>> 0)
+ q = .5;
+ else {
+ if ((y | 0) == (t | 0) ? (F + (z + -1022 << 2) | 0) == (p | 0) : 0) {
+ q = 1.0;
+ break
+ }
+ q = 1.5
+ }
+ while (0);
+ do if (G) {
+ if ((a[H >> 0] | 0) != 45)
+ break;
+ v = -v;
+ q = -q
+ }
+ while (0);
+ t = x - y | 0;
+ c[r >> 2] = t;
+ if (!(v + q != v)) {
+ s = w;
+ break
+ }
+ C = t + s | 0;
+ c[r >> 2] = C;
+ if (C >>> 0 > 999999999) {
+ o = w;
+ while (1) {
+ s = r + -4 | 0;
+ c[r >> 2] = 0;
+ if (s >>> 0 < o >>> 0) {
+ o = o + -4 | 0;
+ c[o >> 2] = 0
+ }
+ C = (c[s >> 2] | 0) + 1 | 0;
+ c[s >> 2] = C;
+ if (C >>> 0 > 999999999)
+ r = s;
+ else {
+ w = o;
+ r = s;
+ break
+ }
+ }
+ }
+ o = (E - w >> 2) * 9 | 0;
+ t = c[w >> 2] | 0;
+ if (t >>> 0 < 10) {
+ s = w;
+ break
+ } else
+ s = 10;
+ do {
+ s = s * 10 | 0;
+ o = o + 1 | 0
+ } while (t >>> 0 >= s >>> 0);
+ s = w
+ }
+ while (0);
+ C = r + 4 | 0;
+ w = s;
+ p = p >>> 0 > C >>> 0 ? C : p
+ }
+ y = 0 - o | 0;
+ while (1) {
+ if (p >>> 0 <= w >>> 0) {
+ z = 0;
+ C = p;
+ break
+ }
+ r = p + -4 | 0;
+ if (!(c[r >> 2] | 0))
+ p = r;
+ else {
+ z = 1;
+ C = p;
+ break
+ }
+ }
+ do if (A) {
+ n = (B & 1 ^ 1) + n | 0;
+ if ((n | 0) > (o | 0) & (o | 0) > -5) {
+ u = u + -1 | 0;
+ n = n + -1 - o | 0
+ } else {
+ u = u + -2 | 0;
+ n = n + -1 | 0
+ }
+ p = I & 8;
+ if (p)
+ break;
+ do if (z) {
+ p = c[C + -4 >> 2] | 0;
+ if (!p) {
+ r = 9;
+ break
+ }
+ if (!((p >>> 0) % 10 | 0)) {
+ s = 10;
+ r = 0
+ } else {
+ r = 0;
+ break
+ }
+ do {
+ s = s * 10 | 0;
+ r = r + 1 | 0
+ } while (((p >>> 0) % (s >>> 0) | 0 | 0) == 0)
+ } else
+ r = 9;
+ while (0);
+ p = ((C - E >> 2) * 9 | 0) + -9 | 0;
+ if ((u | 32 | 0) == 102) {
+ p = p - r | 0;
+ p = (p | 0) < 0 ? 0 : p;
+ n = (n | 0) < (p | 0) ? n : p;
+ p = 0;
+ break
+ } else {
+ p = p + o - r | 0;
+ p = (p | 0) < 0 ? 0 : p;
+ n = (n | 0) < (p | 0) ? n : p;
+ p = 0;
+ break
+ }
+ } else
+ p = I & 8;
+ while (0);
+ x = n | p;
+ s = (x | 0) != 0 & 1;
+ t = (u | 32 | 0) == 102;
+ if (t) {
+ o = (o | 0) > 0 ? o : 0;
+ u = 0
+ } else {
+ r = (o | 0) < 0 ? y : o;
+ r = kd(r, ((r | 0) < 0) << 31 >> 31, X) | 0;
+ if ((_ - r | 0) < 2)
+ do {
+ r = r + -1 | 0;
+ a[r >> 0] = 48
+ } while ((_ - r | 0) < 2);
+ a[r + -1 >> 0] = (o >> 31 & 2) + 43;
+ E = r + -2 | 0;
+ a[E >> 0] = u;
+ o = _ - E | 0;
+ u = E
+ }
+ y = G + 1 + n + s + o | 0;
+ ld(e, 32, K, y, I);
+ if (!(c[e >> 2] & 32))
+ Gc(H, G, e) | 0;
+ ld(e, 48, K, y, I ^ 65536);
+ do if (t) {
+ r = w >>> 0 > F >>> 0 ? F : w;
+ o = r;
+ do {
+ p = kd(c[o >> 2] | 0, 0, R) | 0;
+ do if ((o | 0) == (r | 0)) {
+ if ((p | 0) != (R | 0))
+ break;
+ a[T >> 0] = 48;
+ p = T
+ } else {
+ if (p >>> 0 <= da >>> 0)
+ break;
+ do {
+ p = p + -1 | 0;
+ a[p >> 0] = 48
+ } while (p >>> 0 > da >>> 0)
+ }
+ while (0);
+ if (!(c[e >> 2] & 32))
+ Gc(p, S - p | 0, e) | 0;
+ o = o + 4 | 0
+ } while (o >>> 0 <= F >>> 0);
+ do if (x) {
+ if (c[e >> 2] & 32)
+ break;
+ Gc(138619, 1, e) | 0
+ }
+ while (0);
+ if ((n | 0) > 0 & o >>> 0 < C >>> 0) {
+ p = o;
+ while (1) {
+ o = kd(c[p >> 2] | 0, 0, R) | 0;
+ if (o >>> 0 > da >>> 0)
+ do {
+ o = o + -1 | 0;
+ a[o >> 0] = 48
+ } while (o >>> 0 > da >>> 0);
+ if (!(c[e >> 2] & 32))
+ Gc(o, (n | 0) > 9 ? 9 : n, e) | 0;
+ p = p + 4 | 0;
+ o = n + -9 | 0;
+ if (!((n | 0) > 9 & p >>> 0 < C >>> 0)) {
+ n = o;
+ break
+ } else
+ n = o
+ }
+ }
+ ld(e, 48, n + 9 | 0, 9, 0)
+ } else {
+ t = z ? C : w + 4 | 0;
+ if ((n | 0) > -1) {
+ s = (p | 0) == 0;
+ r = w;
+ do {
+ o = kd(c[r >> 2] | 0, 0, R) | 0;
+ if ((o | 0) == (R | 0)) {
+ a[T >> 0] = 48;
+ o = T
+ }
+ do if ((r | 0) == (w | 0)) {
+ p = o + 1 | 0;
+ if (!(c[e >> 2] & 32))
+ Gc(o, 1, e) | 0;
+ if (s & (n | 0) < 1) {
+ o = p;
+ break
+ }
+ if (c[e >> 2] & 32) {
+ o = p;
+ break
+ }
+ Gc(138619, 1, e) | 0;
+ o = p
+ } else {
+ if (o >>> 0 <= da >>> 0)
+ break;
+ do {
+ o = o + -1 | 0;
+ a[o >> 0] = 48
+ } while (o >>> 0 > da >>> 0)
+ }
+ while (0);
+ p = S - o | 0;
+ if (!(c[e >> 2] & 32))
+ Gc(o, (n | 0) > (p | 0) ? p : n, e) | 0;
+ n = n - p | 0;
+ r = r + 4 | 0
+ } while (r >>> 0 < t >>> 0 & (n | 0) > -1)
+ }
+ ld(e, 48, n + 18 | 0, 18, 0);
+ if (c[e >> 2] & 32)
+ break;
+ Gc(u, _ - u | 0, e) | 0
+ }
+ while (0);
+ ld(e, 32, K, y, I ^ 8192);
+ n = (y | 0) < (K | 0) ? K : y
+ } else {
+ t = (u & 32 | 0) != 0;
+ s = q != q | 0.0 != 0.0;
+ o = s ? 0 : G;
+ r = o + 3 | 0;
+ ld(e, 32, K, r, p);
+ n = c[e >> 2] | 0;
+ if (!(n & 32)) {
+ Gc(H, o, e) | 0;
+ n = c[e >> 2] | 0
+ }
+ if (!(n & 32))
+ Gc(s ? (t ? 138611 : 138615) : t ? 138603 : 138607, 3, e) | 0;
+ ld(e, 32, K, r, I ^ 8192);
+ n = (r | 0) < (K | 0) ? K : r
+ }
+ while (0);
+ w = J;
+ continue a
+ }default:
+ {
+ p = I;
+ o = r;
+ t = 0;
+ u = 138567;
+ n = N
+ }
+ }
+ while (0);
+ g:
+ do if ((L | 0) == 64) {
+ p = ba;
+ o = c[p >> 2] | 0;
+ p = c[p + 4 >> 2] | 0;
+ s = u & 32;
+ if (!((o | 0) == 0 & (p | 0) == 0)) {
+ n = N;
+ do {
+ n = n + -1 | 0;
+ a[n >> 0] = d[138551 + (o & 15) >> 0] | s;
+ o = vd(o | 0, p | 0, 4) | 0;
+ p = D
+ } while (!((o | 0) == 0 & (p | 0) == 0));
+ L = ba;
+ if ((t & 8 | 0) == 0 | (c[L >> 2] | 0) == 0 & (c[L + 4 >> 2] | 0) == 0) {
+ o = t;
+ t = 0;
+ s = 138567;
+ L = 77
+ } else {
+ o = t;
+ t = 2;
+ s = 138567 + (u >> 4) | 0;
+ L = 77
+ }
+ } else {
+ n = N;
+ o = t;
+ t = 0;
+ s = 138567;
+ L = 77
+ }
+ } else if ((L | 0) == 76) {
+ n = kd(n, o, N) | 0;
+ o = I;
+ t = p;
+ L = 77
+ } else if ((L | 0) == 82) {
+ L = 0;
+ I = Xc(n, 0, r) | 0;
+ H = (I | 0) == 0;
+ w = n;
+ o = H ? r : I - n | 0;
+ t = 0;
+ u = 138567;
+ n = H ? n + r | 0 : I
+ } else if ((L | 0) == 86) {
+ L = 0;
+ o = 0;
+ n = 0;
+ s = c[ba >> 2] | 0;
+ while (1) {
+ p = c[s >> 2] | 0;
+ if (!p)
+ break;
+ n = Ac(fa, p) | 0;
+ if ((n | 0) < 0 | n >>> 0 > (r - o | 0) >>> 0)
+ break;
+ o = n + o | 0;
+ if (r >>> 0 > o >>> 0)
+ s = s + 4 | 0;
+ else
+ break
+ }
+ if ((n | 0) < 0) {
+ m = -1;
+ break a
+ }
+ ld(e, 32, K, o, I);
+ if (!o) {
+ n = 0;
+ L = 98
+ } else {
+ p = 0;
+ r = c[ba >> 2] | 0;
+ while (1) {
+ n = c[r >> 2] | 0;
+ if (!n) {
+ n = o;
+ L = 98;
+ break g
+ }
+ n = Ac(fa, n) | 0;
+ p = n + p | 0;
+ if ((p | 0) > (o | 0)) {
+ n = o;
+ L = 98;
+ break g
+ }
+ if (!(c[e >> 2] & 32))
+ Gc(fa, n, e) | 0;
+ if (p >>> 0 >= o >>> 0) {
+ n = o;
+ L = 98;
+ break
+ } else
+ r = r + 4 | 0
+ }
+ }
+ }
+ while (0);
+ if ((L | 0) == 98) {
+ L = 0;
+ ld(e, 32, K, n, I ^ 8192);
+ w = J;
+ n = (K | 0) > (n | 0) ? K : n;
+ continue
+ }
+ if ((L | 0) == 77) {
+ L = 0;
+ p = (r | 0) > -1 ? o & -65537 : o;
+ o = ba;
+ o = (c[o >> 2] | 0) != 0 | (c[o + 4 >> 2] | 0) != 0;
+ if ((r | 0) != 0 | o) {
+ o = (o & 1 ^ 1) + (U - n) | 0;
+ w = n;
+ o = (r | 0) > (o | 0) ? r : o;
+ u = s;
+ n = N
+ } else {
+ w = N;
+ o = 0;
+ u = s;
+ n = N
+ }
+ }
+ s = n - w | 0;
+ o = (o | 0) < (s | 0) ? s : o;
+ r = t + o | 0;
+ n = (K | 0) < (r | 0) ? r : K;
+ ld(e, 32, n, r, p);
+ if (!(c[e >> 2] & 32))
+ Gc(u, t, e) | 0;
+ ld(e, 48, n, r, p ^ 65536);
+ ld(e, 48, o, s, 0);
+ if (!(c[e >> 2] & 32))
+ Gc(w, s, e) | 0;
+ ld(e, 32, n, r, p ^ 8192);
+ w = J
+ }
+ h:
+ do if ((L | 0) == 245)
+ if (!e)
+ if (f) {
+ m = 1;
+ while (1) {
+ f = c[l + (m << 2) >> 2] | 0;
+ if (!f)
+ break;
+ jd(j + (m << 3) | 0, f, g);
+ m = m + 1 | 0;
+ if ((m | 0) >= 10) {
+ m = 1;
+ break h
+ }
+ }
+ if ((m | 0) < 10)
+ while (1) {
+ if (c[l + (m << 2) >> 2] | 0) {
+ m = -1;
+ break h
+ }
+ m = m + 1 | 0;
+ if ((m | 0) >= 10) {
+ m = 1;
+ break
+ }
+ }
+ else
+ m = 1
+ } else
+ m = 0;
+ while (0);
+ i = ha;
+ return m | 0
+ }
+ function gd(a) {
+ a = a | 0;
+ if (!(c[a + 68 >> 2] | 0))
+ Pc(a);
+ return
+ }
+ function hd(a) {
+ a = a | 0;
+ if (!(c[a + 68 >> 2] | 0))
+ Pc(a);
+ return
+ }
+ function id(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0;
+ e = a + 20 | 0;
+ f = c[e >> 2] | 0;
+ a = (c[a + 16 >> 2] | 0) - f | 0;
+ a = a >>> 0 > d >>> 0 ? d : a;
+ wd(f | 0, b | 0, a | 0) | 0;
+ c[e >> 2] = (c[e >> 2] | 0) + a;
+ return d | 0
+ }
+ function jd(a, b, d) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0.0;
+ a:
+ do if (b >>> 0 <= 20)
+ do switch (b | 0) {
+ case 9:
+ {
+ e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ b = c[e >> 2] | 0;
+ c[d >> 2] = e + 4;
+ c[a >> 2] = b;
+ break a
+ }case 10:
+ {
+ e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ b = c[e >> 2] | 0;
+ c[d >> 2] = e + 4;
+ e = a;
+ c[e >> 2] = b;
+ c[e + 4 >> 2] = ((b | 0) < 0) << 31 >> 31;
+ break a
+ }case 11:
+ {
+ e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ b = c[e >> 2] | 0;
+ c[d >> 2] = e + 4;
+ e = a;
+ c[e >> 2] = b;
+ c[e + 4 >> 2] = 0;
+ break a
+ }case 12:
+ {
+ e = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);
+ b = e;
+ f = c[b >> 2] | 0;
+ b = c[b + 4 >> 2] | 0;
+ c[d >> 2] = e + 8;
+ e = a;
+ c[e >> 2] = f;
+ c[e + 4 >> 2] = b;
+ break a
+ }case 13:
+ {
+ f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ e = c[f >> 2] | 0;
+ c[d >> 2] = f + 4;
+ e = (e & 65535) << 16 >> 16;
+ f = a;
+ c[f >> 2] = e;
+ c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31;
+ break a
+ }case 14:
+ {
+ f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ e = c[f >> 2] | 0;
+ c[d >> 2] = f + 4;
+ f = a;
+ c[f >> 2] = e & 65535;
+ c[f + 4 >> 2] = 0;
+ break a
+ }case 15:
+ {
+ f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ e = c[f >> 2] | 0;
+ c[d >> 2] = f + 4;
+ e = (e & 255) << 24 >> 24;
+ f = a;
+ c[f >> 2] = e;
+ c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31;
+ break a
+ }case 16:
+ {
+ f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);
+ e = c[f >> 2] | 0;
+ c[d >> 2] = f + 4;
+ f = a;
+ c[f >> 2] = e & 255;
+ c[f + 4 >> 2] = 0;
+ break a
+ }case 17:
+ {
+ f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);
+ g = +h[f >> 3];
+ c[d >> 2] = f + 8;
+ h[a >> 3] = g;
+ break a
+ }case 18:
+ {
+ f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);
+ g = +h[f >> 3];
+ c[d >> 2] = f + 8;
+ h[a >> 3] = g;
+ break a
+ }default:
+ break a
+ }
+ while (0);
+ while (0);
+ return
+ }
+ function kd(b, c, d) {
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ var e = 0;
+ if (c >>> 0 > 0 | (c | 0) == 0 & b >>> 0 > 4294967295)
+ while (1) {
+ e = Fd(b | 0, c | 0, 10, 0) | 0;
+ d = d + -1 | 0;
+ a[d >> 0] = e | 48;
+ e = Ed(b | 0, c | 0, 10, 0) | 0;
+ if (c >>> 0 > 9 | (c | 0) == 9 & b >>> 0 > 4294967295) {
+ b = e;
+ c = D
+ } else {
+ b = e;
+ break
+ }
+ }
+ if (b)
+ while (1) {
+ d = d + -1 | 0;
+ a[d >> 0] = (b >>> 0) % 10 | 0 | 48;
+ if (b >>> 0 < 10)
+ break;
+ else
+ b = (b >>> 0) / 10 | 0
+ }
+ return d | 0
+ }
+ function ld(a, b, d, e, f) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ j = 0;
+ j = i;
+ i = i + 256 | 0;
+ h = j;
+ do if ((d | 0) > (e | 0) & (f & 73728 | 0) == 0) {
+ f = d - e | 0;
+ sd(h | 0, b | 0, (f >>> 0 > 256 ? 256 : f) | 0) | 0;
+ b = c[a >> 2] | 0;
+ g = (b & 32 | 0) == 0;
+ if (f >>> 0 > 255) {
+ e = d - e | 0;
+ do {
+ if (g) {
+ Gc(h, 256, a) | 0;
+ b = c[a >> 2] | 0
+ }
+ f = f + -256 | 0;
+ g = (b & 32 | 0) == 0
+ } while (f >>> 0 > 255);
+ if (g)
+ f = e & 255;
+ else
+ break
+ } else if (!g)
+ break;
+ Gc(h, f, a) | 0
+ }
+ while (0);
+ i = j;
+ return
+ }
+ function md(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0,
+ z = 0,
+ A = 0,
+ B = 0,
+ C = 0,
+ D = 0,
+ E = 0,
+ F = 0,
+ G = 0,
+ H = 0,
+ I = 0,
+ J = 0,
+ K = 0,
+ L = 0,
+ M = 0;
+ do if (a >>> 0 < 245) {
+ o = a >>> 0 < 11 ? 16 : a + 11 & -8;
+ a = o >>> 3;
+ i = c[30267] | 0;
+ d = i >>> a;
+ if (d & 3) {
+ a = (d & 1 ^ 1) + a | 0;
+ e = a << 1;
+ d = 121108 + (e << 2) | 0;
+ e = 121108 + (e + 2 << 2) | 0;
+ f = c[e >> 2] | 0;
+ g = f + 8 | 0;
+ h = c[g >> 2] | 0;
+ do if ((d | 0) != (h | 0)) {
+ if (h >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = h + 12 | 0;
+ if ((c[b >> 2] | 0) == (f | 0)) {
+ c[b >> 2] = d;
+ c[e >> 2] = h;
+ break
+ } else
+ Ia()
+ } else
+ c[30267] = i & ~(1 << a);
+ while (0);
+ M = a << 3;
+ c[f + 4 >> 2] = M | 3;
+ M = f + (M | 4) | 0;
+ c[M >> 2] = c[M >> 2] | 1;
+ M = g;
+ return M | 0
+ }
+ h = c[30269] | 0;
+ if (o >>> 0 > h >>> 0) {
+ if (d) {
+ e = 2 << a;
+ e = d << a & (e | 0 - e);
+ e = (e & 0 - e) + -1 | 0;
+ j = e >>> 12 & 16;
+ e = e >>> j;
+ f = e >>> 5 & 8;
+ e = e >>> f;
+ g = e >>> 2 & 4;
+ e = e >>> g;
+ d = e >>> 1 & 2;
+ e = e >>> d;
+ a = e >>> 1 & 1;
+ a = (f | j | g | d | a) + (e >>> a) | 0;
+ e = a << 1;
+ d = 121108 + (e << 2) | 0;
+ e = 121108 + (e + 2 << 2) | 0;
+ g = c[e >> 2] | 0;
+ j = g + 8 | 0;
+ f = c[j >> 2] | 0;
+ do if ((d | 0) != (f | 0)) {
+ if (f >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = f + 12 | 0;
+ if ((c[b >> 2] | 0) == (g | 0)) {
+ c[b >> 2] = d;
+ c[e >> 2] = f;
+ k = c[30269] | 0;
+ break
+ } else
+ Ia()
+ } else {
+ c[30267] = i & ~(1 << a);
+ k = h
+ }
+ while (0);
+ M = a << 3;
+ h = M - o | 0;
+ c[g + 4 >> 2] = o | 3;
+ i = g + o | 0;
+ c[g + (o | 4) >> 2] = h | 1;
+ c[g + M >> 2] = h;
+ if (k) {
+ f = c[30272] | 0;
+ d = k >>> 3;
+ b = d << 1;
+ e = 121108 + (b << 2) | 0;
+ a = c[30267] | 0;
+ d = 1 << d;
+ if (a & d) {
+ a = 121108 + (b + 2 << 2) | 0;
+ b = c[a >> 2] | 0;
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ l = a;
+ m = b
+ }
+ } else {
+ c[30267] = a | d;
+ l = 121108 + (b + 2 << 2) | 0;
+ m = e
+ }
+ c[l >> 2] = f;
+ c[m + 12 >> 2] = f;
+ c[f + 8 >> 2] = m;
+ c[f + 12 >> 2] = e
+ }
+ c[30269] = h;
+ c[30272] = i;
+ M = j;
+ return M | 0
+ }
+ a = c[30268] | 0;
+ if (a) {
+ d = (a & 0 - a) + -1 | 0;
+ L = d >>> 12 & 16;
+ d = d >>> L;
+ K = d >>> 5 & 8;
+ d = d >>> K;
+ M = d >>> 2 & 4;
+ d = d >>> M;
+ a = d >>> 1 & 2;
+ d = d >>> a;
+ e = d >>> 1 & 1;
+ e = c[121372 + ((K | L | M | a | e) + (d >>> e) << 2) >> 2] | 0;
+ d = (c[e + 4 >> 2] & -8) - o | 0;
+ a = e;
+ while (1) {
+ b = c[a + 16 >> 2] | 0;
+ if (!b) {
+ b = c[a + 20 >> 2] | 0;
+ if (!b) {
+ j = d;
+ break
+ }
+ }
+ a = (c[b + 4 >> 2] & -8) - o | 0;
+ M = a >>> 0 < d >>> 0;
+ d = M ? a : d;
+ a = b;
+ e = M ? b : e
+ }
+ g = c[30271] | 0;
+ if (e >>> 0 < g >>> 0)
+ Ia();
+ i = e + o | 0;
+ if (e >>> 0 >= i >>> 0)
+ Ia();
+ h = c[e + 24 >> 2] | 0;
+ d = c[e + 12 >> 2] | 0;
+ do if ((d | 0) == (e | 0)) {
+ a = e + 20 | 0;
+ b = c[a >> 2] | 0;
+ if (!b) {
+ a = e + 16 | 0;
+ b = c[a >> 2] | 0;
+ if (!b) {
+ n = 0;
+ break
+ }
+ }
+ while (1) {
+ d = b + 20 | 0;
+ f = c[d >> 2] | 0;
+ if (f) {
+ b = f;
+ a = d;
+ continue
+ }
+ d = b + 16 | 0;
+ f = c[d >> 2] | 0;
+ if (!f)
+ break;
+ else {
+ b = f;
+ a = d
+ }
+ }
+ if (a >>> 0 < g >>> 0)
+ Ia();
+ else {
+ c[a >> 2] = 0;
+ n = b;
+ break
+ }
+ } else {
+ f = c[e + 8 >> 2] | 0;
+ if (f >>> 0 < g >>> 0)
+ Ia();
+ b = f + 12 | 0;
+ if ((c[b >> 2] | 0) != (e | 0))
+ Ia();
+ a = d + 8 | 0;
+ if ((c[a >> 2] | 0) == (e | 0)) {
+ c[b >> 2] = d;
+ c[a >> 2] = f;
+ n = d;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ do if (h) {
+ b = c[e + 28 >> 2] | 0;
+ a = 121372 + (b << 2) | 0;
+ if ((e | 0) == (c[a >> 2] | 0)) {
+ c[a >> 2] = n;
+ if (!n) {
+ c[30268] = c[30268] & ~(1 << b);
+ break
+ }
+ } else {
+ if (h >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = h + 16 | 0;
+ if ((c[b >> 2] | 0) == (e | 0))
+ c[b >> 2] = n;
+ else
+ c[h + 20 >> 2] = n;
+ if (!n)
+ break
+ }
+ a = c[30271] | 0;
+ if (n >>> 0 < a >>> 0)
+ Ia();
+ c[n + 24 >> 2] = h;
+ b = c[e + 16 >> 2] | 0;
+ do if (b)
+ if (b >>> 0 < a >>> 0)
+ Ia();
+ else {
+ c[n + 16 >> 2] = b;
+ c[b + 24 >> 2] = n;
+ break
+ }
+ while (0);
+ b = c[e + 20 >> 2] | 0;
+ if (b)
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[n + 20 >> 2] = b;
+ c[b + 24 >> 2] = n;
+ break
+ }
+ }
+ while (0);
+ if (j >>> 0 < 16) {
+ M = j + o | 0;
+ c[e + 4 >> 2] = M | 3;
+ M = e + (M + 4) | 0;
+ c[M >> 2] = c[M >> 2] | 1
+ } else {
+ c[e + 4 >> 2] = o | 3;
+ c[e + (o | 4) >> 2] = j | 1;
+ c[e + (j + o) >> 2] = j;
+ b = c[30269] | 0;
+ if (b) {
+ g = c[30272] | 0;
+ d = b >>> 3;
+ b = d << 1;
+ f = 121108 + (b << 2) | 0;
+ a = c[30267] | 0;
+ d = 1 << d;
+ if (a & d) {
+ b = 121108 + (b + 2 << 2) | 0;
+ a = c[b >> 2] | 0;
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ p = b;
+ q = a
+ }
+ } else {
+ c[30267] = a | d;
+ p = 121108 + (b + 2 << 2) | 0;
+ q = f
+ }
+ c[p >> 2] = g;
+ c[q + 12 >> 2] = g;
+ c[g + 8 >> 2] = q;
+ c[g + 12 >> 2] = f
+ }
+ c[30269] = j;
+ c[30272] = i
+ }
+ M = e + 8 | 0;
+ return M | 0
+ } else
+ q = o
+ } else
+ q = o
+ } else if (a >>> 0 <= 4294967231) {
+ a = a + 11 | 0;
+ m = a & -8;
+ l = c[30268] | 0;
+ if (l) {
+ d = 0 - m | 0;
+ a = a >>> 8;
+ if (a)
+ if (m >>> 0 > 16777215)
+ k = 31;
+ else {
+ q = (a + 1048320 | 0) >>> 16 & 8;
+ v = a << q;
+ p = (v + 520192 | 0) >>> 16 & 4;
+ v = v << p;
+ k = (v + 245760 | 0) >>> 16 & 2;
+ k = 14 - (p | q | k) + (v << k >>> 15) | 0;
+ k = m >>> (k + 7 | 0) & 1 | k << 1
+ }
+ else
+ k = 0;
+ a = c[121372 + (k << 2) >> 2] | 0;
+ a:
+ do if (!a) {
+ f = 0;
+ a = 0;
+ v = 86
+ } else {
+ h = d;
+ f = 0;
+ i = m << ((k | 0) == 31 ? 0 : 25 - (k >>> 1) | 0);
+ j = a;
+ a = 0;
+ while (1) {
+ g = c[j + 4 >> 2] & -8;
+ d = g - m | 0;
+ if (d >>> 0 < h >>> 0)
+ if ((g | 0) == (m | 0)) {
+ g = j;
+ a = j;
+ v = 90;
+ break a
+ } else
+ a = j;
+ else
+ d = h;
+ v = c[j + 20 >> 2] | 0;
+ j = c[j + 16 + (i >>> 31 << 2) >> 2] | 0;
+ f = (v | 0) == 0 | (v | 0) == (j | 0) ? f : v;
+ if (!j) {
+ v = 86;
+ break
+ } else {
+ h = d;
+ i = i << 1
+ }
+ }
+ }
+ while (0);
+ if ((v | 0) == 86) {
+ if ((f | 0) == 0 & (a | 0) == 0) {
+ a = 2 << k;
+ a = l & (a | 0 - a);
+ if (!a) {
+ q = m;
+ break
+ }
+ a = (a & 0 - a) + -1 | 0;
+ n = a >>> 12 & 16;
+ a = a >>> n;
+ l = a >>> 5 & 8;
+ a = a >>> l;
+ p = a >>> 2 & 4;
+ a = a >>> p;
+ q = a >>> 1 & 2;
+ a = a >>> q;
+ f = a >>> 1 & 1;
+ f = c[121372 + ((l | n | p | q | f) + (a >>> f) << 2) >> 2] | 0;
+ a = 0
+ }
+ if (!f) {
+ i = d;
+ j = a
+ } else {
+ g = f;
+ v = 90
+ }
+ }
+ if ((v | 0) == 90)
+ while (1) {
+ v = 0;
+ q = (c[g + 4 >> 2] & -8) - m | 0;
+ f = q >>> 0 < d >>> 0;
+ d = f ? q : d;
+ a = f ? g : a;
+ f = c[g + 16 >> 2] | 0;
+ if (f) {
+ g = f;
+ v = 90;
+ continue
+ }
+ g = c[g + 20 >> 2] | 0;
+ if (!g) {
+ i = d;
+ j = a;
+ break
+ } else
+ v = 90
+ }
+ if ((j | 0) != 0 ? i >>> 0 < ((c[30269] | 0) - m | 0) >>> 0 : 0) {
+ f = c[30271] | 0;
+ if (j >>> 0 < f >>> 0)
+ Ia();
+ h = j + m | 0;
+ if (j >>> 0 >= h >>> 0)
+ Ia();
+ g = c[j + 24 >> 2] | 0;
+ d = c[j + 12 >> 2] | 0;
+ do if ((d | 0) == (j | 0)) {
+ a = j + 20 | 0;
+ b = c[a >> 2] | 0;
+ if (!b) {
+ a = j + 16 | 0;
+ b = c[a >> 2] | 0;
+ if (!b) {
+ o = 0;
+ break
+ }
+ }
+ while (1) {
+ d = b + 20 | 0;
+ e = c[d >> 2] | 0;
+ if (e) {
+ b = e;
+ a = d;
+ continue
+ }
+ d = b + 16 | 0;
+ e = c[d >> 2] | 0;
+ if (!e)
+ break;
+ else {
+ b = e;
+ a = d
+ }
+ }
+ if (a >>> 0 < f >>> 0)
+ Ia();
+ else {
+ c[a >> 2] = 0;
+ o = b;
+ break
+ }
+ } else {
+ e = c[j + 8 >> 2] | 0;
+ if (e >>> 0 < f >>> 0)
+ Ia();
+ b = e + 12 | 0;
+ if ((c[b >> 2] | 0) != (j | 0))
+ Ia();
+ a = d + 8 | 0;
+ if ((c[a >> 2] | 0) == (j | 0)) {
+ c[b >> 2] = d;
+ c[a >> 2] = e;
+ o = d;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ do if (g) {
+ b = c[j + 28 >> 2] | 0;
+ a = 121372 + (b << 2) | 0;
+ if ((j | 0) == (c[a >> 2] | 0)) {
+ c[a >> 2] = o;
+ if (!o) {
+ c[30268] = c[30268] & ~(1 << b);
+ break
+ }
+ } else {
+ if (g >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = g + 16 | 0;
+ if ((c[b >> 2] | 0) == (j | 0))
+ c[b >> 2] = o;
+ else
+ c[g + 20 >> 2] = o;
+ if (!o)
+ break
+ }
+ a = c[30271] | 0;
+ if (o >>> 0 < a >>> 0)
+ Ia();
+ c[o + 24 >> 2] = g;
+ b = c[j + 16 >> 2] | 0;
+ do if (b)
+ if (b >>> 0 < a >>> 0)
+ Ia();
+ else {
+ c[o + 16 >> 2] = b;
+ c[b + 24 >> 2] = o;
+ break
+ }
+ while (0);
+ b = c[j + 20 >> 2] | 0;
+ if (b)
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[o + 20 >> 2] = b;
+ c[b + 24 >> 2] = o;
+ break
+ }
+ }
+ while (0);
+ b:
+ do if (i >>> 0 >= 16) {
+ c[j + 4 >> 2] = m | 3;
+ c[j + (m | 4) >> 2] = i | 1;
+ c[j + (i + m) >> 2] = i;
+ b = i >>> 3;
+ if (i >>> 0 < 256) {
+ a = b << 1;
+ e = 121108 + (a << 2) | 0;
+ d = c[30267] | 0;
+ b = 1 << b;
+ if (d & b) {
+ b = 121108 + (a + 2 << 2) | 0;
+ a = c[b >> 2] | 0;
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ s = b;
+ t = a
+ }
+ } else {
+ c[30267] = d | b;
+ s = 121108 + (a + 2 << 2) | 0;
+ t = e
+ }
+ c[s >> 2] = h;
+ c[t + 12 >> 2] = h;
+ c[j + (m + 8) >> 2] = t;
+ c[j + (m + 12) >> 2] = e;
+ break
+ }
+ b = i >>> 8;
+ if (b)
+ if (i >>> 0 > 16777215)
+ e = 31;
+ else {
+ L = (b + 1048320 | 0) >>> 16 & 8;
+ M = b << L;
+ K = (M + 520192 | 0) >>> 16 & 4;
+ M = M << K;
+ e = (M + 245760 | 0) >>> 16 & 2;
+ e = 14 - (K | L | e) + (M << e >>> 15) | 0;
+ e = i >>> (e + 7 | 0) & 1 | e << 1
+ }
+ else
+ e = 0;
+ b = 121372 + (e << 2) | 0;
+ c[j + (m + 28) >> 2] = e;
+ c[j + (m + 20) >> 2] = 0;
+ c[j + (m + 16) >> 2] = 0;
+ a = c[30268] | 0;
+ d = 1 << e;
+ if (!(a & d)) {
+ c[30268] = a | d;
+ c[b >> 2] = h;
+ c[j + (m + 24) >> 2] = b;
+ c[j + (m + 12) >> 2] = h;
+ c[j + (m + 8) >> 2] = h;
+ break
+ }
+ b = c[b >> 2] | 0;
+ c:
+ do if ((c[b + 4 >> 2] & -8 | 0) != (i | 0)) {
+ e = i << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
+ while (1) {
+ a = b + 16 + (e >>> 31 << 2) | 0;
+ d = c[a >> 2] | 0;
+ if (!d)
+ break;
+ if ((c[d + 4 >> 2] & -8 | 0) == (i | 0)) {
+ y = d;
+ break c
+ } else {
+ e = e << 1;
+ b = d
+ }
+ }
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[a >> 2] = h;
+ c[j + (m + 24) >> 2] = b;
+ c[j + (m + 12) >> 2] = h;
+ c[j + (m + 8) >> 2] = h;
+ break b
+ }
+ } else
+ y = b;
+ while (0);
+ b = y + 8 | 0;
+ a = c[b >> 2] | 0;
+ M = c[30271] | 0;
+ if (a >>> 0 >= M >>> 0 & y >>> 0 >= M >>> 0) {
+ c[a + 12 >> 2] = h;
+ c[b >> 2] = h;
+ c[j + (m + 8) >> 2] = a;
+ c[j + (m + 12) >> 2] = y;
+ c[j + (m + 24) >> 2] = 0;
+ break
+ } else
+ Ia()
+ } else {
+ M = i + m | 0;
+ c[j + 4 >> 2] = M | 3;
+ M = j + (M + 4) | 0;
+ c[M >> 2] = c[M >> 2] | 1
+ }
+ while (0);
+ M = j + 8 | 0;
+ return M | 0
+ } else
+ q = m
+ } else
+ q = m
+ } else
+ q = -1;
+ while (0);
+ d = c[30269] | 0;
+ if (d >>> 0 >= q >>> 0) {
+ b = d - q | 0;
+ a = c[30272] | 0;
+ if (b >>> 0 > 15) {
+ c[30272] = a + q;
+ c[30269] = b;
+ c[a + (q + 4) >> 2] = b | 1;
+ c[a + d >> 2] = b;
+ c[a + 4 >> 2] = q | 3
+ } else {
+ c[30269] = 0;
+ c[30272] = 0;
+ c[a + 4 >> 2] = d | 3;
+ M = a + (d + 4) | 0;
+ c[M >> 2] = c[M >> 2] | 1
+ }
+ M = a + 8 | 0;
+ return M | 0
+ }
+ a = c[30270] | 0;
+ if (a >>> 0 > q >>> 0) {
+ L = a - q | 0;
+ c[30270] = L;
+ M = c[30273] | 0;
+ c[30273] = M + q;
+ c[M + (q + 4) >> 2] = L | 1;
+ c[M + 4 >> 2] = q | 3;
+ M = M + 8 | 0;
+ return M | 0
+ }
+ do if (!(c[30385] | 0)) {
+ a = ya(30) | 0;
+ if (!(a + -1 & a)) {
+ c[30387] = a;
+ c[30386] = a;
+ c[30388] = -1;
+ c[30389] = -1;
+ c[30390] = 0;
+ c[30378] = 0;
+ c[30385] = (Ka(0) | 0) & -16 ^ 1431655768;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ j = q + 48 | 0;
+ i = c[30387] | 0;
+ k = q + 47 | 0;
+ h = i + k | 0;
+ i = 0 - i | 0;
+ l = h & i;
+ if (l >>> 0 <= q >>> 0) {
+ M = 0;
+ return M | 0
+ }
+ a = c[30377] | 0;
+ if ((a | 0) != 0 ? (t = c[30375] | 0, y = t + l | 0, y >>> 0 <= t >>> 0 | y >>> 0 > a >>> 0) : 0) {
+ M = 0;
+ return M | 0
+ }
+ d:
+ do if (!(c[30378] & 4)) {
+ a = c[30273] | 0;
+ e:
+ do if (a) {
+ f = 121516;
+ while (1) {
+ d = c[f >> 2] | 0;
+ if (d >>> 0 <= a >>> 0 ? (r = f + 4 | 0, (d + (c[r >> 2] | 0) | 0) >>> 0 > a >>> 0) : 0) {
+ g = f;
+ a = r;
+ break
+ }
+ f = c[f + 8 >> 2] | 0;
+ if (!f) {
+ v = 174;
+ break e
+ }
+ }
+ d = h - (c[30270] | 0) & i;
+ if (d >>> 0 < 2147483647) {
+ f = ua(d | 0) | 0;
+ y = (f | 0) == ((c[g >> 2] | 0) + (c[a >> 2] | 0) | 0);
+ a = y ? d : 0;
+ if (y) {
+ if ((f | 0) != (-1 | 0)) {
+ w = f;
+ p = a;
+ v = 194;
+ break d
+ }
+ } else
+ v = 184
+ } else
+ a = 0
+ } else
+ v = 174;
+ while (0);
+ do if ((v | 0) == 174) {
+ g = ua(0) | 0;
+ if ((g | 0) != (-1 | 0)) {
+ a = g;
+ d = c[30386] | 0;
+ f = d + -1 | 0;
+ if (!(f & a))
+ d = l;
+ else
+ d = l - a + (f + a & 0 - d) | 0;
+ a = c[30375] | 0;
+ f = a + d | 0;
+ if (d >>> 0 > q >>> 0 & d >>> 0 < 2147483647) {
+ y = c[30377] | 0;
+ if ((y | 0) != 0 ? f >>> 0 <= a >>> 0 | f >>> 0 > y >>> 0 : 0) {
+ a = 0;
+ break
+ }
+ f = ua(d | 0) | 0;
+ y = (f | 0) == (g | 0);
+ a = y ? d : 0;
+ if (y) {
+ w = g;
+ p = a;
+ v = 194;
+ break d
+ } else
+ v = 184
+ } else
+ a = 0
+ } else
+ a = 0
+ }
+ while (0);
+ f:
+ do if ((v | 0) == 184) {
+ g = 0 - d | 0;
+ do if (j >>> 0 > d >>> 0 & (d >>> 0 < 2147483647 & (f | 0) != (-1 | 0)) ? (u = c[30387] | 0, u = k - d + u & 0 - u, u >>> 0 < 2147483647) : 0)
+ if ((ua(u | 0) | 0) == (-1 | 0)) {
+ ua(g | 0) | 0;
+ break f
+ } else {
+ d = u + d | 0;
+ break
+ }
+ while (0);
+ if ((f | 0) != (-1 | 0)) {
+ w = f;
+ p = d;
+ v = 194;
+ break d
+ }
+ }
+ while (0);
+ c[30378] = c[30378] | 4;
+ v = 191
+ } else {
+ a = 0;
+ v = 191
+ }
+ while (0);
+ if ((((v | 0) == 191 ? l >>> 0 < 2147483647 : 0) ? (w = ua(l | 0) | 0, x = ua(0) | 0, w >>> 0 < x >>> 0 & ((w | 0) != (-1 | 0) & (x | 0) != (-1 | 0))) : 0) ? (z = x - w | 0, A = z >>> 0 > (q + 40 | 0) >>> 0, A) : 0) {
+ p = A ? z : a;
+ v = 194
+ }
+ if ((v | 0) == 194) {
+ a = (c[30375] | 0) + p | 0;
+ c[30375] = a;
+ if (a >>> 0 > (c[30376] | 0) >>> 0)
+ c[30376] = a;
+ h = c[30273] | 0;
+ g:
+ do if (h) {
+ g = 121516;
+ do {
+ a = c[g >> 2] | 0;
+ d = g + 4 | 0;
+ f = c[d >> 2] | 0;
+ if ((w | 0) == (a + f | 0)) {
+ B = a;
+ C = d;
+ D = f;
+ E = g;
+ v = 204;
+ break
+ }
+ g = c[g + 8 >> 2] | 0
+ } while ((g | 0) != 0);
+ if (((v | 0) == 204 ? (c[E + 12 >> 2] & 8 | 0) == 0 : 0) ? h >>> 0 < w >>> 0 & h >>> 0 >= B >>> 0 : 0) {
+ c[C >> 2] = D + p;
+ M = (c[30270] | 0) + p | 0;
+ L = h + 8 | 0;
+ L = (L & 7 | 0) == 0 ? 0 : 0 - L & 7;
+ K = M - L | 0;
+ c[30273] = h + L;
+ c[30270] = K;
+ c[h + (L + 4) >> 2] = K | 1;
+ c[h + (M + 4) >> 2] = 40;
+ c[30274] = c[30389];
+ break
+ }
+ a = c[30271] | 0;
+ if (w >>> 0 < a >>> 0) {
+ c[30271] = w;
+ a = w
+ }
+ d = w + p | 0;
+ g = 121516;
+ while (1) {
+ if ((c[g >> 2] | 0) == (d | 0)) {
+ f = g;
+ d = g;
+ v = 212;
+ break
+ }
+ g = c[g + 8 >> 2] | 0;
+ if (!g) {
+ d = 121516;
+ break
+ }
+ }
+ if ((v | 0) == 212)
+ if (!(c[d + 12 >> 2] & 8)) {
+ c[f >> 2] = w;
+ n = d + 4 | 0;
+ c[n >> 2] = (c[n >> 2] | 0) + p;
+ n = w + 8 | 0;
+ n = (n & 7 | 0) == 0 ? 0 : 0 - n & 7;
+ k = w + (p + 8) | 0;
+ k = (k & 7 | 0) == 0 ? 0 : 0 - k & 7;
+ b = w + (k + p) | 0;
+ m = n + q | 0;
+ o = w + m | 0;
+ l = b - (w + n) - q | 0;
+ c[w + (n + 4) >> 2] = q | 3;
+ h:
+ do if ((b | 0) != (h | 0)) {
+ if ((b | 0) == (c[30272] | 0)) {
+ M = (c[30269] | 0) + l | 0;
+ c[30269] = M;
+ c[30272] = o;
+ c[w + (m + 4) >> 2] = M | 1;
+ c[w + (M + m) >> 2] = M;
+ break
+ }
+ i = p + 4 | 0;
+ d = c[w + (i + k) >> 2] | 0;
+ if ((d & 3 | 0) == 1) {
+ j = d & -8;
+ g = d >>> 3;
+ i:
+ do if (d >>> 0 >= 256) {
+ h = c[w + ((k | 24) + p) >> 2] | 0;
+ e = c[w + (p + 12 + k) >> 2] | 0;
+ do if ((e | 0) == (b | 0)) {
+ f = k | 16;
+ e = w + (i + f) | 0;
+ d = c[e >> 2] | 0;
+ if (!d) {
+ e = w + (f + p) | 0;
+ d = c[e >> 2] | 0;
+ if (!d) {
+ J = 0;
+ break
+ }
+ }
+ while (1) {
+ f = d + 20 | 0;
+ g = c[f >> 2] | 0;
+ if (g) {
+ d = g;
+ e = f;
+ continue
+ }
+ f = d + 16 | 0;
+ g = c[f >> 2] | 0;
+ if (!g)
+ break;
+ else {
+ d = g;
+ e = f
+ }
+ }
+ if (e >>> 0 < a >>> 0)
+ Ia();
+ else {
+ c[e >> 2] = 0;
+ J = d;
+ break
+ }
+ } else {
+ f = c[w + ((k | 8) + p) >> 2] | 0;
+ if (f >>> 0 < a >>> 0)
+ Ia();
+ a = f + 12 | 0;
+ if ((c[a >> 2] | 0) != (b | 0))
+ Ia();
+ d = e + 8 | 0;
+ if ((c[d >> 2] | 0) == (b | 0)) {
+ c[a >> 2] = e;
+ c[d >> 2] = f;
+ J = e;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ if (!h)
+ break;
+ a = c[w + (p + 28 + k) >> 2] | 0;
+ d = 121372 + (a << 2) | 0;
+ do if ((b | 0) != (c[d >> 2] | 0)) {
+ if (h >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ a = h + 16 | 0;
+ if ((c[a >> 2] | 0) == (b | 0))
+ c[a >> 2] = J;
+ else
+ c[h + 20 >> 2] = J;
+ if (!J)
+ break i
+ } else {
+ c[d >> 2] = J;
+ if (J)
+ break;
+ c[30268] = c[30268] & ~(1 << a);
+ break i
+ }
+ while (0);
+ d = c[30271] | 0;
+ if (J >>> 0 < d >>> 0)
+ Ia();
+ c[J + 24 >> 2] = h;
+ b = k | 16;
+ a = c[w + (b + p) >> 2] | 0;
+ do if (a)
+ if (a >>> 0 < d >>> 0)
+ Ia();
+ else {
+ c[J + 16 >> 2] = a;
+ c[a + 24 >> 2] = J;
+ break
+ }
+ while (0);
+ b = c[w + (i + b) >> 2] | 0;
+ if (!b)
+ break;
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[J + 20 >> 2] = b;
+ c[b + 24 >> 2] = J;
+ break
+ }
+ } else {
+ e = c[w + ((k | 8) + p) >> 2] | 0;
+ f = c[w + (p + 12 + k) >> 2] | 0;
+ d = 121108 + (g << 1 << 2) | 0;
+ do if ((e | 0) != (d | 0)) {
+ if (e >>> 0 < a >>> 0)
+ Ia();
+ if ((c[e + 12 >> 2] | 0) == (b | 0))
+ break;
+ Ia()
+ }
+ while (0);
+ if ((f | 0) == (e | 0)) {
+ c[30267] = c[30267] & ~(1 << g);
+ break
+ }
+ do if ((f | 0) == (d | 0))
+ F = f + 8 | 0;
+ else {
+ if (f >>> 0 < a >>> 0)
+ Ia();
+ a = f + 8 | 0;
+ if ((c[a >> 2] | 0) == (b | 0)) {
+ F = a;
+ break
+ }
+ Ia()
+ }
+ while (0);
+ c[e + 12 >> 2] = f;
+ c[F >> 2] = e
+ }
+ while (0);
+ b = w + ((j | k) + p) | 0;
+ f = j + l | 0
+ } else
+ f = l;
+ b = b + 4 | 0;
+ c[b >> 2] = c[b >> 2] & -2;
+ c[w + (m + 4) >> 2] = f | 1;
+ c[w + (f + m) >> 2] = f;
+ b = f >>> 3;
+ if (f >>> 0 < 256) {
+ a = b << 1;
+ e = 121108 + (a << 2) | 0;
+ d = c[30267] | 0;
+ b = 1 << b;
+ do if (!(d & b)) {
+ c[30267] = d | b;
+ K = 121108 + (a + 2 << 2) | 0;
+ L = e
+ } else {
+ b = 121108 + (a + 2 << 2) | 0;
+ a = c[b >> 2] | 0;
+ if (a >>> 0 >= (c[30271] | 0) >>> 0) {
+ K = b;
+ L = a;
+ break
+ }
+ Ia()
+ }
+ while (0);
+ c[K >> 2] = o;
+ c[L + 12 >> 2] = o;
+ c[w + (m + 8) >> 2] = L;
+ c[w + (m + 12) >> 2] = e;
+ break
+ }
+ b = f >>> 8;
+ do if (!b)
+ e = 0;
+ else {
+ if (f >>> 0 > 16777215) {
+ e = 31;
+ break
+ }
+ K = (b + 1048320 | 0) >>> 16 & 8;
+ L = b << K;
+ J = (L + 520192 | 0) >>> 16 & 4;
+ L = L << J;
+ e = (L + 245760 | 0) >>> 16 & 2;
+ e = 14 - (J | K | e) + (L << e >>> 15) | 0;
+ e = f >>> (e + 7 | 0) & 1 | e << 1
+ }
+ while (0);
+ b = 121372 + (e << 2) | 0;
+ c[w + (m + 28) >> 2] = e;
+ c[w + (m + 20) >> 2] = 0;
+ c[w + (m + 16) >> 2] = 0;
+ a = c[30268] | 0;
+ d = 1 << e;
+ if (!(a & d)) {
+ c[30268] = a | d;
+ c[b >> 2] = o;
+ c[w + (m + 24) >> 2] = b;
+ c[w + (m + 12) >> 2] = o;
+ c[w + (m + 8) >> 2] = o;
+ break
+ }
+ b = c[b >> 2] | 0;
+ j:
+ do if ((c[b + 4 >> 2] & -8 | 0) != (f | 0)) {
+ e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
+ while (1) {
+ a = b + 16 + (e >>> 31 << 2) | 0;
+ d = c[a >> 2] | 0;
+ if (!d)
+ break;
+ if ((c[d + 4 >> 2] & -8 | 0) == (f | 0)) {
+ M = d;
+ break j
+ } else {
+ e = e << 1;
+ b = d
+ }
+ }
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[a >> 2] = o;
+ c[w + (m + 24) >> 2] = b;
+ c[w + (m + 12) >> 2] = o;
+ c[w + (m + 8) >> 2] = o;
+ break h
+ }
+ } else
+ M = b;
+ while (0);
+ b = M + 8 | 0;
+ a = c[b >> 2] | 0;
+ L = c[30271] | 0;
+ if (a >>> 0 >= L >>> 0 & M >>> 0 >= L >>> 0) {
+ c[a + 12 >> 2] = o;
+ c[b >> 2] = o;
+ c[w + (m + 8) >> 2] = a;
+ c[w + (m + 12) >> 2] = M;
+ c[w + (m + 24) >> 2] = 0;
+ break
+ } else
+ Ia()
+ } else {
+ M = (c[30270] | 0) + l | 0;
+ c[30270] = M;
+ c[30273] = o;
+ c[w + (m + 4) >> 2] = M | 1
+ }
+ while (0);
+ M = w + (n | 8) | 0;
+ return M | 0
+ } else
+ d = 121516;
+ while (1) {
+ a = c[d >> 2] | 0;
+ if (a >>> 0 <= h >>> 0 ? (b = c[d + 4 >> 2] | 0, e = a + b | 0, e >>> 0 > h >>> 0) : 0)
+ break;
+ d = c[d + 8 >> 2] | 0
+ }
+ f = a + (b + -39) | 0;
+ a = a + (b + -47 + ((f & 7 | 0) == 0 ? 0 : 0 - f & 7)) | 0;
+ f = h + 16 | 0;
+ a = a >>> 0 < f >>> 0 ? h : a;
+ b = a + 8 | 0;
+ d = w + 8 | 0;
+ d = (d & 7 | 0) == 0 ? 0 : 0 - d & 7;
+ M = p + -40 - d | 0;
+ c[30273] = w + d;
+ c[30270] = M;
+ c[w + (d + 4) >> 2] = M | 1;
+ c[w + (p + -36) >> 2] = 40;
+ c[30274] = c[30389];
+ d = a + 4 | 0;
+ c[d >> 2] = 27;
+ c[b >> 2] = c[30379];
+ c[b + 4 >> 2] = c[30380];
+ c[b + 8 >> 2] = c[30381];
+ c[b + 12 >> 2] = c[30382];
+ c[30379] = w;
+ c[30380] = p;
+ c[30382] = 0;
+ c[30381] = b;
+ b = a + 28 | 0;
+ c[b >> 2] = 7;
+ if ((a + 32 | 0) >>> 0 < e >>> 0)
+ do {
+ M = b;
+ b = b + 4 | 0;
+ c[b >> 2] = 7
+ } while ((M + 8 | 0) >>> 0 < e >>> 0);
+ if ((a | 0) != (h | 0)) {
+ g = a - h | 0;
+ c[d >> 2] = c[d >> 2] & -2;
+ c[h + 4 >> 2] = g | 1;
+ c[a >> 2] = g;
+ b = g >>> 3;
+ if (g >>> 0 < 256) {
+ a = b << 1;
+ e = 121108 + (a << 2) | 0;
+ d = c[30267] | 0;
+ b = 1 << b;
+ if (d & b) {
+ b = 121108 + (a + 2 << 2) | 0;
+ a = c[b >> 2] | 0;
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ G = b;
+ H = a
+ }
+ } else {
+ c[30267] = d | b;
+ G = 121108 + (a + 2 << 2) | 0;
+ H = e
+ }
+ c[G >> 2] = h;
+ c[H + 12 >> 2] = h;
+ c[h + 8 >> 2] = H;
+ c[h + 12 >> 2] = e;
+ break
+ }
+ b = g >>> 8;
+ if (b)
+ if (g >>> 0 > 16777215)
+ e = 31;
+ else {
+ L = (b + 1048320 | 0) >>> 16 & 8;
+ M = b << L;
+ K = (M + 520192 | 0) >>> 16 & 4;
+ M = M << K;
+ e = (M + 245760 | 0) >>> 16 & 2;
+ e = 14 - (K | L | e) + (M << e >>> 15) | 0;
+ e = g >>> (e + 7 | 0) & 1 | e << 1
+ }
+ else
+ e = 0;
+ d = 121372 + (e << 2) | 0;
+ c[h + 28 >> 2] = e;
+ c[h + 20 >> 2] = 0;
+ c[f >> 2] = 0;
+ b = c[30268] | 0;
+ a = 1 << e;
+ if (!(b & a)) {
+ c[30268] = b | a;
+ c[d >> 2] = h;
+ c[h + 24 >> 2] = d;
+ c[h + 12 >> 2] = h;
+ c[h + 8 >> 2] = h;
+ break
+ }
+ b = c[d >> 2] | 0;
+ k:
+ do if ((c[b + 4 >> 2] & -8 | 0) != (g | 0)) {
+ e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
+ while (1) {
+ a = b + 16 + (e >>> 31 << 2) | 0;
+ d = c[a >> 2] | 0;
+ if (!d)
+ break;
+ if ((c[d + 4 >> 2] & -8 | 0) == (g | 0)) {
+ I = d;
+ break k
+ } else {
+ e = e << 1;
+ b = d
+ }
+ }
+ if (a >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[a >> 2] = h;
+ c[h + 24 >> 2] = b;
+ c[h + 12 >> 2] = h;
+ c[h + 8 >> 2] = h;
+ break g
+ }
+ } else
+ I = b;
+ while (0);
+ b = I + 8 | 0;
+ a = c[b >> 2] | 0;
+ M = c[30271] | 0;
+ if (a >>> 0 >= M >>> 0 & I >>> 0 >= M >>> 0) {
+ c[a + 12 >> 2] = h;
+ c[b >> 2] = h;
+ c[h + 8 >> 2] = a;
+ c[h + 12 >> 2] = I;
+ c[h + 24 >> 2] = 0;
+ break
+ } else
+ Ia()
+ }
+ } else {
+ M = c[30271] | 0;
+ if ((M | 0) == 0 | w >>> 0 < M >>> 0)
+ c[30271] = w;
+ c[30379] = w;
+ c[30380] = p;
+ c[30382] = 0;
+ c[30276] = c[30385];
+ c[30275] = -1;
+ b = 0;
+ do {
+ M = b << 1;
+ L = 121108 + (M << 2) | 0;
+ c[121108 + (M + 3 << 2) >> 2] = L;
+ c[121108 + (M + 2 << 2) >> 2] = L;
+ b = b + 1 | 0
+ } while ((b | 0) != 32);
+ M = w + 8 | 0;
+ M = (M & 7 | 0) == 0 ? 0 : 0 - M & 7;
+ L = p + -40 - M | 0;
+ c[30273] = w + M;
+ c[30270] = L;
+ c[w + (M + 4) >> 2] = L | 1;
+ c[w + (p + -36) >> 2] = 40;
+ c[30274] = c[30389]
+ }
+ while (0);
+ b = c[30270] | 0;
+ if (b >>> 0 > q >>> 0) {
+ L = b - q | 0;
+ c[30270] = L;
+ M = c[30273] | 0;
+ c[30273] = M + q;
+ c[M + (q + 4) >> 2] = L | 1;
+ c[M + 4 >> 2] = q | 3;
+ M = M + 8 | 0;
+ return M | 0
+ }
+ }
+ c[(uc() | 0) >> 2] = 12;
+ M = 0;
+ return M | 0
+ }
+ function nd(a) {
+ a = a | 0;
+ var b = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0;
+ if (!a)
+ return;
+ b = a + -8 | 0;
+ i = c[30271] | 0;
+ if (b >>> 0 < i >>> 0)
+ Ia();
+ d = c[a + -4 >> 2] | 0;
+ e = d & 3;
+ if ((e | 0) == 1)
+ Ia();
+ o = d & -8;
+ q = a + (o + -8) | 0;
+ do if (!(d & 1)) {
+ b = c[b >> 2] | 0;
+ if (!e)
+ return;
+ j = -8 - b | 0;
+ l = a + j | 0;
+ m = b + o | 0;
+ if (l >>> 0 < i >>> 0)
+ Ia();
+ if ((l | 0) == (c[30272] | 0)) {
+ b = a + (o + -4) | 0;
+ d = c[b >> 2] | 0;
+ if ((d & 3 | 0) != 3) {
+ u = l;
+ g = m;
+ break
+ }
+ c[30269] = m;
+ c[b >> 2] = d & -2;
+ c[a + (j + 4) >> 2] = m | 1;
+ c[q >> 2] = m;
+ return
+ }
+ f = b >>> 3;
+ if (b >>> 0 < 256) {
+ e = c[a + (j + 8) >> 2] | 0;
+ d = c[a + (j + 12) >> 2] | 0;
+ b = 121108 + (f << 1 << 2) | 0;
+ if ((e | 0) != (b | 0)) {
+ if (e >>> 0 < i >>> 0)
+ Ia();
+ if ((c[e + 12 >> 2] | 0) != (l | 0))
+ Ia()
+ }
+ if ((d | 0) == (e | 0)) {
+ c[30267] = c[30267] & ~(1 << f);
+ u = l;
+ g = m;
+ break
+ }
+ if ((d | 0) != (b | 0)) {
+ if (d >>> 0 < i >>> 0)
+ Ia();
+ b = d + 8 | 0;
+ if ((c[b >> 2] | 0) == (l | 0))
+ h = b;
+ else
+ Ia()
+ } else
+ h = d + 8 | 0;
+ c[e + 12 >> 2] = d;
+ c[h >> 2] = e;
+ u = l;
+ g = m;
+ break
+ }
+ h = c[a + (j + 24) >> 2] | 0;
+ e = c[a + (j + 12) >> 2] | 0;
+ do if ((e | 0) == (l | 0)) {
+ d = a + (j + 20) | 0;
+ b = c[d >> 2] | 0;
+ if (!b) {
+ d = a + (j + 16) | 0;
+ b = c[d >> 2] | 0;
+ if (!b) {
+ k = 0;
+ break
+ }
+ }
+ while (1) {
+ e = b + 20 | 0;
+ f = c[e >> 2] | 0;
+ if (f) {
+ b = f;
+ d = e;
+ continue
+ }
+ e = b + 16 | 0;
+ f = c[e >> 2] | 0;
+ if (!f)
+ break;
+ else {
+ b = f;
+ d = e
+ }
+ }
+ if (d >>> 0 < i >>> 0)
+ Ia();
+ else {
+ c[d >> 2] = 0;
+ k = b;
+ break
+ }
+ } else {
+ f = c[a + (j + 8) >> 2] | 0;
+ if (f >>> 0 < i >>> 0)
+ Ia();
+ b = f + 12 | 0;
+ if ((c[b >> 2] | 0) != (l | 0))
+ Ia();
+ d = e + 8 | 0;
+ if ((c[d >> 2] | 0) == (l | 0)) {
+ c[b >> 2] = e;
+ c[d >> 2] = f;
+ k = e;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ if (h) {
+ b = c[a + (j + 28) >> 2] | 0;
+ d = 121372 + (b << 2) | 0;
+ if ((l | 0) == (c[d >> 2] | 0)) {
+ c[d >> 2] = k;
+ if (!k) {
+ c[30268] = c[30268] & ~(1 << b);
+ u = l;
+ g = m;
+ break
+ }
+ } else {
+ if (h >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = h + 16 | 0;
+ if ((c[b >> 2] | 0) == (l | 0))
+ c[b >> 2] = k;
+ else
+ c[h + 20 >> 2] = k;
+ if (!k) {
+ u = l;
+ g = m;
+ break
+ }
+ }
+ d = c[30271] | 0;
+ if (k >>> 0 < d >>> 0)
+ Ia();
+ c[k + 24 >> 2] = h;
+ b = c[a + (j + 16) >> 2] | 0;
+ do if (b)
+ if (b >>> 0 < d >>> 0)
+ Ia();
+ else {
+ c[k + 16 >> 2] = b;
+ c[b + 24 >> 2] = k;
+ break
+ }
+ while (0);
+ b = c[a + (j + 20) >> 2] | 0;
+ if (b)
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[k + 20 >> 2] = b;
+ c[b + 24 >> 2] = k;
+ u = l;
+ g = m;
+ break
+ }
+ else {
+ u = l;
+ g = m
+ }
+ } else {
+ u = l;
+ g = m
+ }
+ } else {
+ u = b;
+ g = o
+ }
+ while (0);
+ if (u >>> 0 >= q >>> 0)
+ Ia();
+ b = a + (o + -4) | 0;
+ d = c[b >> 2] | 0;
+ if (!(d & 1))
+ Ia();
+ if (!(d & 2)) {
+ if ((q | 0) == (c[30273] | 0)) {
+ t = (c[30270] | 0) + g | 0;
+ c[30270] = t;
+ c[30273] = u;
+ c[u + 4 >> 2] = t | 1;
+ if ((u | 0) != (c[30272] | 0))
+ return;
+ c[30272] = 0;
+ c[30269] = 0;
+ return
+ }
+ if ((q | 0) == (c[30272] | 0)) {
+ t = (c[30269] | 0) + g | 0;
+ c[30269] = t;
+ c[30272] = u;
+ c[u + 4 >> 2] = t | 1;
+ c[u + t >> 2] = t;
+ return
+ }
+ g = (d & -8) + g | 0;
+ f = d >>> 3;
+ do if (d >>> 0 >= 256) {
+ h = c[a + (o + 16) >> 2] | 0;
+ b = c[a + (o | 4) >> 2] | 0;
+ do if ((b | 0) == (q | 0)) {
+ d = a + (o + 12) | 0;
+ b = c[d >> 2] | 0;
+ if (!b) {
+ d = a + (o + 8) | 0;
+ b = c[d >> 2] | 0;
+ if (!b) {
+ p = 0;
+ break
+ }
+ }
+ while (1) {
+ e = b + 20 | 0;
+ f = c[e >> 2] | 0;
+ if (f) {
+ b = f;
+ d = e;
+ continue
+ }
+ e = b + 16 | 0;
+ f = c[e >> 2] | 0;
+ if (!f)
+ break;
+ else {
+ b = f;
+ d = e
+ }
+ }
+ if (d >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[d >> 2] = 0;
+ p = b;
+ break
+ }
+ } else {
+ d = c[a + o >> 2] | 0;
+ if (d >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ e = d + 12 | 0;
+ if ((c[e >> 2] | 0) != (q | 0))
+ Ia();
+ f = b + 8 | 0;
+ if ((c[f >> 2] | 0) == (q | 0)) {
+ c[e >> 2] = b;
+ c[f >> 2] = d;
+ p = b;
+ break
+ } else
+ Ia()
+ }
+ while (0);
+ if (h) {
+ b = c[a + (o + 20) >> 2] | 0;
+ d = 121372 + (b << 2) | 0;
+ if ((q | 0) == (c[d >> 2] | 0)) {
+ c[d >> 2] = p;
+ if (!p) {
+ c[30268] = c[30268] & ~(1 << b);
+ break
+ }
+ } else {
+ if (h >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = h + 16 | 0;
+ if ((c[b >> 2] | 0) == (q | 0))
+ c[b >> 2] = p;
+ else
+ c[h + 20 >> 2] = p;
+ if (!p)
+ break
+ }
+ d = c[30271] | 0;
+ if (p >>> 0 < d >>> 0)
+ Ia();
+ c[p + 24 >> 2] = h;
+ b = c[a + (o + 8) >> 2] | 0;
+ do if (b)
+ if (b >>> 0 < d >>> 0)
+ Ia();
+ else {
+ c[p + 16 >> 2] = b;
+ c[b + 24 >> 2] = p;
+ break
+ }
+ while (0);
+ b = c[a + (o + 12) >> 2] | 0;
+ if (b)
+ if (b >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[p + 20 >> 2] = b;
+ c[b + 24 >> 2] = p;
+ break
+ }
+ }
+ } else {
+ e = c[a + o >> 2] | 0;
+ d = c[a + (o | 4) >> 2] | 0;
+ b = 121108 + (f << 1 << 2) | 0;
+ if ((e | 0) != (b | 0)) {
+ if (e >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ if ((c[e + 12 >> 2] | 0) != (q | 0))
+ Ia()
+ }
+ if ((d | 0) == (e | 0)) {
+ c[30267] = c[30267] & ~(1 << f);
+ break
+ }
+ if ((d | 0) != (b | 0)) {
+ if (d >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ b = d + 8 | 0;
+ if ((c[b >> 2] | 0) == (q | 0))
+ n = b;
+ else
+ Ia()
+ } else
+ n = d + 8 | 0;
+ c[e + 12 >> 2] = d;
+ c[n >> 2] = e
+ }
+ while (0);
+ c[u + 4 >> 2] = g | 1;
+ c[u + g >> 2] = g;
+ if ((u | 0) == (c[30272] | 0)) {
+ c[30269] = g;
+ return
+ }
+ } else {
+ c[b >> 2] = d & -2;
+ c[u + 4 >> 2] = g | 1;
+ c[u + g >> 2] = g
+ }
+ b = g >>> 3;
+ if (g >>> 0 < 256) {
+ d = b << 1;
+ f = 121108 + (d << 2) | 0;
+ e = c[30267] | 0;
+ b = 1 << b;
+ if (e & b) {
+ b = 121108 + (d + 2 << 2) | 0;
+ d = c[b >> 2] | 0;
+ if (d >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ r = b;
+ s = d
+ }
+ } else {
+ c[30267] = e | b;
+ r = 121108 + (d + 2 << 2) | 0;
+ s = f
+ }
+ c[r >> 2] = u;
+ c[s + 12 >> 2] = u;
+ c[u + 8 >> 2] = s;
+ c[u + 12 >> 2] = f;
+ return
+ }
+ b = g >>> 8;
+ if (b)
+ if (g >>> 0 > 16777215)
+ f = 31;
+ else {
+ r = (b + 1048320 | 0) >>> 16 & 8;
+ s = b << r;
+ q = (s + 520192 | 0) >>> 16 & 4;
+ s = s << q;
+ f = (s + 245760 | 0) >>> 16 & 2;
+ f = 14 - (q | r | f) + (s << f >>> 15) | 0;
+ f = g >>> (f + 7 | 0) & 1 | f << 1
+ }
+ else
+ f = 0;
+ b = 121372 + (f << 2) | 0;
+ c[u + 28 >> 2] = f;
+ c[u + 20 >> 2] = 0;
+ c[u + 16 >> 2] = 0;
+ d = c[30268] | 0;
+ e = 1 << f;
+ a:
+ do if (d & e) {
+ b = c[b >> 2] | 0;
+ b:
+ do if ((c[b + 4 >> 2] & -8 | 0) != (g | 0)) {
+ f = g << ((f | 0) == 31 ? 0 : 25 - (f >>> 1) | 0);
+ while (1) {
+ d = b + 16 + (f >>> 31 << 2) | 0;
+ e = c[d >> 2] | 0;
+ if (!e)
+ break;
+ if ((c[e + 4 >> 2] & -8 | 0) == (g | 0)) {
+ t = e;
+ break b
+ } else {
+ f = f << 1;
+ b = e
+ }
+ }
+ if (d >>> 0 < (c[30271] | 0) >>> 0)
+ Ia();
+ else {
+ c[d >> 2] = u;
+ c[u + 24 >> 2] = b;
+ c[u + 12 >> 2] = u;
+ c[u + 8 >> 2] = u;
+ break a
+ }
+ } else
+ t = b;
+ while (0);
+ b = t + 8 | 0;
+ d = c[b >> 2] | 0;
+ s = c[30271] | 0;
+ if (d >>> 0 >= s >>> 0 & t >>> 0 >= s >>> 0) {
+ c[d + 12 >> 2] = u;
+ c[b >> 2] = u;
+ c[u + 8 >> 2] = d;
+ c[u + 12 >> 2] = t;
+ c[u + 24 >> 2] = 0;
+ break
+ } else
+ Ia()
+ } else {
+ c[30268] = d | e;
+ c[b >> 2] = u;
+ c[u + 24 >> 2] = b;
+ c[u + 12 >> 2] = u;
+ c[u + 8 >> 2] = u
+ }
+ while (0);
+ u = (c[30275] | 0) + -1 | 0;
+ c[30275] = u;
+ if (!u)
+ b = 121524;
+ else
+ return;
+ while (1) {
+ b = c[b >> 2] | 0;
+ if (!b)
+ break;
+ else
+ b = b + 8 | 0
+ }
+ c[30275] = -1;
+ return
+ }
+ function od(a, b) {
+ a = a | 0;
+ b = b | 0;
+ c[a >> 2] = 120560;
+ pd(a + 4 | 0, b);
+ return
+ }
+ function pd(a, b) {
+ a = a | 0;
+ b = b | 0;
+ var d = 0,
+ e = 0;
+ e = cd(b) | 0;
+ d = Tb(e + 13 | 0) | 0;
+ c[d >> 2] = e;
+ c[d + 4 >> 2] = e;
+ c[d + 8 >> 2] = 0;
+ d = d + 12 | 0;
+ wd(d | 0, b | 0, e + 1 | 0) | 0;
+ c[a >> 2] = d;
+ return
+ }
+ function qd() {}
+ function rd(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;
+ return (D = d, a - c >>> 0 | 0) | 0
+ }
+ function sd(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ i = 0;
+ f = b + e | 0;
+ if ((e | 0) >= 20) {
+ d = d & 255;
+ h = b & 3;
+ i = d | d << 8 | d << 16 | d << 24;
+ g = f & ~3;
+ if (h) {
+ h = b + 4 - h | 0;
+ while ((b | 0) < (h | 0)) {
+ a[b >> 0] = d;
+ b = b + 1 | 0
+ }
+ }
+ while ((b | 0) < (g | 0)) {
+ c[b >> 2] = i;
+ b = b + 4 | 0
+ }
+ }
+ while ((b | 0) < (f | 0)) {
+ a[b >> 0] = d;
+ b = b + 1 | 0
+ }
+ return b - e | 0
+ }
+ function td(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ if ((c | 0) < 32) {
+ D = b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c;
+ return a << c
+ }
+ D = a << c - 32;
+ return 0
+ }
+ function ud(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ c = a + c >>> 0;
+ return (D = b + d + (c >>> 0 < a >>> 0 | 0) >>> 0, c | 0) | 0
+ }
+ function vd(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ if ((c | 0) < 32) {
+ D = b >>> c;
+ return a >>> c | (b & (1 << c) - 1) << 32 - c
+ }
+ D = 0;
+ return b >>> c - 32 | 0
+ }
+ function wd(b, d, e) {
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0;
+ if ((e | 0) >= 4096)
+ return va(b | 0, d | 0, e | 0) | 0;
+ f = b | 0;
+ if ((b & 3) == (d & 3)) {
+ while (b & 3) {
+ if (!e)
+ return f | 0;
+ a[b >> 0] = a[d >> 0] | 0;
+ b = b + 1 | 0;
+ d = d + 1 | 0;
+ e = e - 1 | 0
+ }
+ while ((e | 0) >= 4) {
+ c[b >> 2] = c[d >> 2];
+ b = b + 4 | 0;
+ d = d + 4 | 0;
+ e = e - 4 | 0
+ }
+ }
+ while ((e | 0) > 0) {
+ a[b >> 0] = a[d >> 0] | 0;
+ b = b + 1 | 0;
+ d = d + 1 | 0;
+ e = e - 1 | 0
+ }
+ return f | 0
+ }
+ function xd(b, c, d) {
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ var e = 0;
+ if ((c | 0) < (b | 0) & (b | 0) < (c + d | 0)) {
+ e = b;
+ c = c + d | 0;
+ b = b + d | 0;
+ while ((d | 0) > 0) {
+ b = b - 1 | 0;
+ c = c - 1 | 0;
+ d = d - 1 | 0;
+ a[b >> 0] = a[c >> 0] | 0
+ }
+ b = e
+ } else
+ wd(b, c, d) | 0;
+ return b | 0
+ }
+ function yd(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ if ((c | 0) < 32) {
+ D = b >> c;
+ return a >>> c | (b & (1 << c) - 1) << 32 - c
+ }
+ D = (b | 0) < 0 ? -1 : 0;
+ return b >> c - 32 | 0
+ }
+ function zd(b) {
+ b = b | 0;
+ var c = 0;
+ c = a[m + (b & 255) >> 0] | 0;
+ if ((c | 0) < 8)
+ return c | 0;
+ c = a[m + (b >> 8 & 255) >> 0] | 0;
+ if ((c | 0) < 8)
+ return c + 8 | 0;
+ c = a[m + (b >> 16 & 255) >> 0] | 0;
+ if ((c | 0) < 8)
+ return c + 16 | 0;
+ return (a[m + (b >>> 24) >> 0] | 0) + 24 | 0
+ }
+ function Ad(a, b) {
+ a = a | 0;
+ b = b | 0;
+ var c = 0,
+ d = 0,
+ e = 0,
+ f = 0;
+ f = a & 65535;
+ e = b & 65535;
+ c = $(e, f) | 0;
+ d = a >>> 16;
+ a = (c >>> 16) + ($(e, d) | 0) | 0;
+ e = b >>> 16;
+ b = $(e, f) | 0;
+ return (D = (a >>> 16) + ($(e, d) | 0) + (((a & 65535) + b | 0) >>> 16) | 0, a + b << 16 | c & 65535 | 0) | 0
+ }
+ function Bd(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0;
+ j = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
+ i = ((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
+ f = d >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;
+ e = ((d | 0) < 0 ? -1 : 0) >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;
+ h = rd(j ^ a, i ^ b, j, i) | 0;
+ g = D;
+ a = f ^ j;
+ b = e ^ i;
+ return rd((Gd(h, g, rd(f ^ c, e ^ d, f, e) | 0, D, 0) | 0) ^ a, D ^ b, a, b) | 0
+ }
+ function Cd(a, b, d, e) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0,
+ h = 0,
+ j = 0,
+ k = 0,
+ l = 0;
+ f = i;
+ i = i + 16 | 0;
+ j = f | 0;
+ h = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
+ g = ((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;
+ l = e >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;
+ k = ((e | 0) < 0 ? -1 : 0) >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;
+ a = rd(h ^ a, g ^ b, h, g) | 0;
+ b = D;
+ Gd(a, b, rd(l ^ d, k ^ e, l, k) | 0, D, j) | 0;
+ e = rd(c[j >> 2] ^ h, c[j + 4 >> 2] ^ g, h, g) | 0;
+ d = D;
+ i = f;
+ return (D = d, e) | 0
+ }
+ function Dd(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ var e = 0,
+ f = 0;
+ e = a;
+ f = c;
+ c = Ad(e, f) | 0;
+ a = D;
+ return (D = ($(b, f) | 0) + ($(d, e) | 0) + a | a & 0, c | 0 | 0) | 0
+ }
+ function Ed(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ return Gd(a, b, c, d, 0) | 0
+ }
+ function Fd(a, b, d, e) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ var f = 0,
+ g = 0;
+ g = i;
+ i = i + 16 | 0;
+ f = g | 0;
+ Gd(a, b, d, e, f) | 0;
+ i = g;
+ return (D = c[f + 4 >> 2] | 0, c[f >> 2] | 0) | 0
+ }
+ function Gd(a, b, d, e, f) {
+ a = a | 0;
+ b = b | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ var g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0;
+ l = a;
+ j = b;
+ k = j;
+ h = d;
+ n = e;
+ i = n;
+ if (!k) {
+ g = (f | 0) != 0;
+ if (!i) {
+ if (g) {
+ c[f >> 2] = (l >>> 0) % (h >>> 0);
+ c[f + 4 >> 2] = 0
+ }
+ n = 0;
+ f = (l >>> 0) / (h >>> 0) >>> 0;
+ return (D = n, f) | 0
+ } else {
+ if (!g) {
+ n = 0;
+ f = 0;
+ return (D = n, f) | 0
+ }
+ c[f >> 2] = a | 0;
+ c[f + 4 >> 2] = b & 0;
+ n = 0;
+ f = 0;
+ return (D = n, f) | 0
+ }
+ }
+ g = (i | 0) == 0;
+ do if (h) {
+ if (!g) {
+ g = (ba(i | 0) | 0) - (ba(k | 0) | 0) | 0;
+ if (g >>> 0 <= 31) {
+ m = g + 1 | 0;
+ i = 31 - g | 0;
+ b = g - 31 >> 31;
+ h = m;
+ a = l >>> (m >>> 0) & b | k << i;
+ b = k >>> (m >>> 0) & b;
+ g = 0;
+ i = l << i;
+ break
+ }
+ if (!f) {
+ n = 0;
+ f = 0;
+ return (D = n, f) | 0
+ }
+ c[f >> 2] = a | 0;
+ c[f + 4 >> 2] = j | b & 0;
+ n = 0;
+ f = 0;
+ return (D = n, f) | 0
+ }
+ g = h - 1 | 0;
+ if (g & h) {
+ i = (ba(h | 0) | 0) + 33 - (ba(k | 0) | 0) | 0;
+ p = 64 - i | 0;
+ m = 32 - i | 0;
+ j = m >> 31;
+ o = i - 32 | 0;
+ b = o >> 31;
+ h = i;
+ a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & b;
+ b = b & k >>> (i >>> 0);
+ g = l << p & j;
+ i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;
+ break
+ }
+ if (f) {
+ c[f >> 2] = g & l;
+ c[f + 4 >> 2] = 0
+ }
+ if ((h | 0) == 1) {
+ o = j | b & 0;
+ p = a | 0 | 0;
+ return (D = o, p) | 0
+ } else {
+ p = zd(h | 0) | 0;
+ o = k >>> (p >>> 0) | 0;
+ p = k << 32 - p | l >>> (p >>> 0) | 0;
+ return (D = o, p) | 0
+ }
+ } else {
+ if (g) {
+ if (f) {
+ c[f >> 2] = (k >>> 0) % (h >>> 0);
+ c[f + 4 >> 2] = 0
+ }
+ o = 0;
+ p = (k >>> 0) / (h >>> 0) >>> 0;
+ return (D = o, p) | 0
+ }
+ if (!l) {
+ if (f) {
+ c[f >> 2] = 0;
+ c[f + 4 >> 2] = (k >>> 0) % (i >>> 0)
+ }
+ o = 0;
+ p = (k >>> 0) / (i >>> 0) >>> 0;
+ return (D = o, p) | 0
+ }
+ g = i - 1 | 0;
+ if (!(g & i)) {
+ if (f) {
+ c[f >> 2] = a | 0;
+ c[f + 4 >> 2] = g & k | b & 0
+ }
+ o = 0;
+ p = k >>> ((zd(i | 0) | 0) >>> 0);
+ return (D = o, p) | 0
+ }
+ g = (ba(i | 0) | 0) - (ba(k | 0) | 0) | 0;
+ if (g >>> 0 <= 30) {
+ b = g + 1 | 0;
+ i = 31 - g | 0;
+ h = b;
+ a = k << i | l >>> (b >>> 0);
+ b = k >>> (b >>> 0);
+ g = 0;
+ i = l << i;
+ break
+ }
+ if (!f) {
+ o = 0;
+ p = 0;
+ return (D = o, p) | 0
+ }
+ c[f >> 2] = a | 0;
+ c[f + 4 >> 2] = j | b & 0;
+ o = 0;
+ p = 0;
+ return (D = o, p) | 0
+ }
+ while (0);
+ if (!h) {
+ k = i;
+ j = 0;
+ i = 0
+ } else {
+ m = d | 0 | 0;
+ l = n | e & 0;
+ k = ud(m | 0, l | 0, -1, -1) | 0;
+ d = D;
+ j = i;
+ i = 0;
+ do {
+ e = j;
+ j = g >>> 31 | j << 1;
+ g = i | g << 1;
+ e = a << 1 | e >>> 31 | 0;
+ n = a >>> 31 | b << 1 | 0;
+ rd(k, d, e, n) | 0;
+ p = D;
+ o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;
+ i = o & 1;
+ a = rd(e, n, o & m, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l) | 0;
+ b = D;
+ h = h - 1 | 0
+ } while ((h | 0) != 0);
+ k = j;
+ j = 0
+ }
+ h = 0;
+ if (f) {
+ c[f >> 2] = a;
+ c[f + 4 >> 2] = b
+ }
+ o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;
+ p = (g << 1 | 0 >>> 31) & -2 | i;
+ return (D = o, p) | 0
+ }
+ function Hd(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ return Ra[a & 7](b | 0, c | 0, d | 0) | 0
+ }
+ function Id(a, b, c, d, e, f) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ Sa[a & 3](b | 0, c | 0, d | 0, e | 0, f | 0)
+ }
+ function Jd(a, b) {
+ a = a | 0;
+ b = b | 0;
+ Ta[a & 15](b | 0)
+ }
+ function Kd(a, b) {
+ a = a | 0;
+ b = b | 0;
+ return Ua[a & 3](b | 0) | 0
+ }
+ function Ld(a) {
+ a = a | 0;
+ Va[a & 0]()
+ }
+ function Md(a, b, c, d, e, f, g) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ g = g | 0;
+ Wa[a & 3](b | 0, c | 0, d | 0, e | 0, f | 0, g | 0)
+ }
+ function Nd(a, b, c, d, e) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ e = e | 0;
+ Xa[a & 3](b | 0, c | 0, d | 0, e | 0)
+ }
+ function Od(a, b, c) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ ca(0);
+ return 0
+ }
+ function Pd(a, b, c, d, e) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ e = e | 0;
+ ca(1)
+ }
+ function Qd(a) {
+ a = a | 0;
+ ca(2)
+ }
+ function Rd(a) {
+ a = a | 0;
+ ca(3);
+ return 0
+ }
+ function Sd() {
+ ca(4)
+ }
+ function Td(a, b, c, d, e, f) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ e = e | 0;
+ f = f | 0;
+ ca(5)
+ }
+ function Ud(a, b, c, d) {
+ a = a | 0;
+ b = b | 0;
+ c = c | 0;
+ d = d | 0;
+ ca(6)
+ }
+
+ // EMSCRIPTEN_END_FUNCS
+ var Ra = [Od, ic, id, Uc, Tc, Vc, Sc, Od];
+ var Sa = [Pd, pc, oc, Pd];
+ var Ta = [Qd, Vb, Wb, _b, $b, bc, dc, gc, ec, fc, hc, Lb, gd, hd, Qd, Qd];
+ var Ua = [Rd, Xb, ac, Rc];
+ var Va = [Sd];
+ var Wa = [Td, rc, qc, Td];
+ var Xa = [Ud, kc, lc, Ud];
+ return {
+ _run: Ib,
+ _free: nd,
+ _i64Add: ud,
+ _memmove: xd,
+ _i64Subtract: rd,
+ _memset: sd,
+ _malloc: md,
+ _memcpy: wd,
+ _bitshift64Lshr: vd,
+ _fflush: Cc,
+ ___errno_location: uc,
+ _bitshift64Shl: td,
+ __GLOBAL__sub_I_main_cpp: Kb,
+ runPostSets: qd,
+ stackAlloc: Ya,
+ stackSave: Za,
+ stackRestore: _a,
+ establishStackSpace: $a,
+ setThrew: ab,
+ setTempRet0: db,
+ getTempRet0: eb,
+ dynCall_iiii: Hd,
+ dynCall_viiiii: Id,
+ dynCall_vi: Jd,
+ dynCall_ii: Kd,
+ dynCall_v: Ld,
+ dynCall_viiiiii: Md,
+ dynCall_viiii: Nd
+ }
+})
+
+
+
+(// EMSCRIPTEN_END_ASM
+Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var _run = Module["_run"] = asm["_run"];
+var _free = Module["_free"] = asm["_free"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _memmove = Module["_memmove"] = asm["_memmove"];
+var __GLOBAL__sub_I_main_cpp = Module["__GLOBAL__sub_I_main_cpp"] = asm["__GLOBAL__sub_I_main_cpp"];
+var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
+var _memset = Module["_memset"] = asm["_memset"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
+var _memcpy = Module["_memcpy"] = asm["_memcpy"];
+var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
+var _fflush = Module["_fflush"] = asm["_fflush"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
+var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
+var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"];
+var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"];
+var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"];
+var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"];
+var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"];
+Runtime.stackAlloc = asm["stackAlloc"];
+Runtime.stackSave = asm["stackSave"];
+Runtime.stackRestore = asm["stackRestore"];
+Runtime.establishStackSpace = asm["establishStackSpace"];
+Runtime.setTempRet0 = asm["setTempRet0"];
+Runtime.getTempRet0 = asm["getTempRet0"];
+function ExitStatus(status) {
+ this.name = "ExitStatus";
+ this.message = "Program terminated with exit(" + status + ")";
+ this.status = status
+}
+ExitStatus.prototype = new Error;
+ExitStatus.prototype.constructor = ExitStatus;
+var initialStackTop;
+var preloadStartTime = null;
+var calledMain = false;
+dependenciesFulfilled = function runCaller() {
+ if (!Module["calledRun"])
+ run();
+ if (!Module["calledRun"])
+ dependenciesFulfilled = runCaller
+};
+Module["callMain"] = Module.callMain = function callMain(args) {
+ assert(runDependencies == 0, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
+ assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called");
+ args = args || [];
+ ensureInitRuntime();
+ var argc = args.length + 1;
+ function pad() {
+ for (var i = 0; i < 4 - 1; i++) {
+ argv.push(0)
+ }
+ }
+ var argv = [allocate(intArrayFromString(Module["thisProgram"]), "i8", ALLOC_NORMAL)];
+ pad();
+ for (var i = 0; i < argc - 1; i = i + 1) {
+ argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL));
+ pad()
+ }
+ argv.push(0);
+ argv = allocate(argv, "i32", ALLOC_NORMAL);
+ try {
+ var ret = Module["_main"](argc, argv, 0);
+ exit(ret, true)
+ } catch (e) {
+ if (e instanceof ExitStatus) {
+ return
+ } else if (e == "SimulateInfiniteLoop") {
+ Module["noExitRuntime"] = true;
+ return
+ } else {
+ if (e && typeof e === "object" && e.stack)
+ Module.printErr("exception thrown: " + [e, e.stack]);
+ throw e
+ }
+ } finally {
+ calledMain = true
+ }
+};
+function run(args) {
+ args = args || Module["arguments"];
+ if (preloadStartTime === null)
+ preloadStartTime = Date.now();
+ if (runDependencies > 0) {
+ return
+ }
+ preRun();
+ if (runDependencies > 0)
+ return;
+ if (Module["calledRun"])
+ return;
+ function doRun() {
+ if (Module["calledRun"])
+ return;
+ Module["calledRun"] = true;
+ if (ABORT)
+ return;
+ ensureInitRuntime();
+ preMain();
+ if (Module["onRuntimeInitialized"])
+ Module["onRuntimeInitialized"]();
+ if (Module["_main"] && shouldRunNow)
+ Module["callMain"](args);
+ postRun()
+ }
+ if (Module["setStatus"]) {
+ Module["setStatus"]("Running...");
+ setTimeout((function() {
+ setTimeout((function() {
+ Module["setStatus"]("")
+ }), 1);
+ doRun()
+ }), 1)
+ } else {
+ doRun()
+ }
+}
+Module["run"] = Module.run = run;
+function exit(status, implicit) {
+ if (implicit && Module["noExitRuntime"]) {
+ return
+ }
+ if (Module["noExitRuntime"]) {} else {
+ ABORT = true;
+ EXITSTATUS = status;
+ STACKTOP = initialStackTop;
+ exitRuntime();
+ if (Module["onExit"])
+ Module["onExit"](status)
+ }
+ if (ENVIRONMENT_IS_NODE) {
+ process["stdout"]["once"]("drain", (function() {
+ process["exit"](status)
+ }));
+ console.log(" ");
+ setTimeout((function() {
+ process["exit"](status)
+ }), 500)
+ } else if (ENVIRONMENT_IS_SHELL && typeof quit === "function") {
+ quit(status)
+ }
+ throw new ExitStatus(status)
+}
+Module["exit"] = Module.exit = exit;
+var abortDecorators = [];
+function abort(what) {
+ if (what !== undefined) {
+ Module.print(what);
+ Module.printErr(what);
+ what = JSON.stringify(what)
+ } else {
+ what = ""
+ }
+ ABORT = true;
+ EXITSTATUS = 1;
+ var extra = "\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
+ var output = "abort(" + what + ") at " + stackTrace() + extra;
+ if (abortDecorators) {
+ abortDecorators.forEach((function(decorator) {
+ output = decorator(output, what)
+ }))
+ }
+ throw output
+}
+Module["abort"] = Module.abort = abort;
+if (Module["preInit"]) {
+ if (typeof Module["preInit"] == "function")
+ Module["preInit"] = [Module["preInit"]];
+ while (Module["preInit"].length > 0) {
+ Module["preInit"].pop()()
+ }
+}
+var shouldRunNow = true;
+if (Module["noInitialRun"]) {
+ shouldRunNow = false
+}
+run()
+