@lottiefiles/dotlottie-web 0.29.2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animation-frame-manager.ts","../src/constants.ts","../package.json","../src/core/dotlottie-player.js","../src/core/dotlottie-wasm-loader.ts","../src/event-manager.ts","../src/utils.ts","../src/dotlottie.ts","../src/worker/dotlottie.worker.js","../src/worker/worker-manager.ts","../src/worker/dotlottie.ts"],"names":["WebAnimationFrameStrategy","callback","id","NodeAnimationFrameStrategy","__publicField","_id","AnimationFrameManager","IS_BROWSER","ZIP_SIGNATURE","LOTTIE_JSON_MANDATORY_FIELDS","package_default","createDotLottiePlayerModule","_scriptDir","moduleArg","k","aa","ba","readyPromise","a","b","ca","da","t","ea","w","x","fa","ha","y","A","B","C","E","F","ja","ka","la","ma","na","oa","pa","qa","H","ra","sa","I","ta","ua","va","wa","c","d","xa","e","ya","za","J","f","l","Aa","Ba","Ca","Da","Ea","Fa","Ga","K","L","M","Ha","Ia","P","h","n","O","Ja","Q","R","Ka","La","Ma","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Xa","Wa","Ya","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","m","p","kb","S","lb","mb","T","nb","pb","ob","U","qb","rb","sb","tb","u","v","g","q","r","z","ub","vb","V","wb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Rb","Qb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","N","$b","ac","mc","D","Na","xb","ia","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","W","X","Y","Z","nc","oc","pc","qc","dotlottie_player_default","DotLottieWasmLoader","url","initialError","backupUrl","backupError","EventManager","type","listener","listeners","event","isHexColor","color","hexStringToRGBAInt","colorHex","hex","isDotLottie","fileData","fileSignature","i","isLottieJSON","json","field","isLottie","createCoreMode","mode","module","createCoreFit","fit","createCoreAlign","align","coreAlign","createCoreSegment","segment","coresegment","_DotLottie","config","error","message","src","response","data","width","height","loaded","layout","manifest","manifestJson","buffer","clampedBuffer","imageData","nextFrame","ok","frame","speed","loop","useFrameInterpolation","dpr","clientHeight","clientWidth","startFrame","endFrame","animationId","marker","markers","result","themeId","themeData","stateMachineId","started","stopped","rect","scaleX","scaleY","devicePixelRatio","listenersVector","stateMachineData","name","value","DotLottie","dotlottie_worker_default","WorkerManager","workerName","blob","workerId","transfer","worker","getCanvasSize","canvas","generateUniqueId","_DotLottieWorker","rpcResponse","offscreen","instanceId","start","end","renderConfig","backgroundColor","method","params","rpcRequest","resolve","reject","onMessage","DotLottieWorker"],"mappings":"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","sourcesContent":["/* eslint-disable max-classes-per-file */\n\ninterface AnimationFrameStrategy {\n cancelAnimationFrame(id: number): void;\n requestAnimationFrame(callback: (time: number) => void): number;\n}\n\nclass WebAnimationFrameStrategy implements AnimationFrameStrategy {\n public requestAnimationFrame(callback: (time: number) => void): number {\n return requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n cancelAnimationFrame(id);\n }\n}\n\nclass NodeAnimationFrameStrategy implements AnimationFrameStrategy {\n private _lastHandleId: number = 0;\n\n private _lastImmediate: NodeJS.Immediate | null = null;\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n if (this._lastHandleId >= Number.MAX_SAFE_INTEGER) {\n this._lastHandleId = 0;\n }\n\n this._lastHandleId += 1;\n\n this._lastImmediate = setImmediate(() => {\n callback(Date.now());\n });\n\n return this._lastHandleId;\n }\n\n public cancelAnimationFrame(_id: number): void {\n if (this._lastImmediate) {\n clearImmediate(this._lastImmediate);\n }\n }\n}\n\nexport class AnimationFrameManager {\n private readonly _strategy: AnimationFrameStrategy;\n\n public constructor() {\n this._strategy =\n typeof requestAnimationFrame === 'function' ? new WebAnimationFrameStrategy() : new NodeAnimationFrameStrategy();\n }\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n return this._strategy.requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n this._strategy.cancelAnimationFrame(id);\n }\n}\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const MS_TO_SEC_FACTOR = 1000;\nexport const DEFAULT_BG_COLOR = '#00000000';\nexport const ZIP_SIGNATURE = new Uint8Array([0x50, 0x4b, 0x03, 0x04]);\nexport const LOTTIE_JSON_MANDATORY_FIELDS = ['v', 'ip', 'op', 'layers', 'fr', 'w', 'h'];\n","{\n \"name\": \"@lottiefiles/dotlottie-web\",\n \"version\": \"0.29.2\",\n \"type\": \"module\",\n \"description\": \"Lottie and DotLottie player for the web\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/LottieFiles/dotlottie-web.git\",\n \"directory\": \"packages/web\"\n },\n \"homepage\": \"https://github.com/LottieFiles/dotlottie-web#readme\",\n \"bugs\": \"https://github.com/LottieFiles/dotlottie-web/issues\",\n \"author\": \"LottieFiles\",\n \"contributors\": [\n \"Abdelrahman Ashraf <a.theashraf@gmail.com>\"\n ],\n \"license\": \"MIT\",\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\"\n ],\n \"keywords\": [\n \"dotlottie\",\n \"lottie\",\n \"player\",\n \"animation\",\n \"web\",\n \"canvas\",\n \"javascript\",\n \"thorvg\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint --fix .\",\n \"stats:eslint\": \"cross-env TIMING=1 eslint .\",\n \"stats:ts\": \"tsc -p tsconfig.build.json --extendedDiagnostics\",\n \"test\": \"vitest run --browser.headless\",\n \"test:coverage\": \"vitest run --browser.headless --coverage\",\n \"test:watch\": \"vitest\",\n \"type-check\": \"tsc --noEmit\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.14.11\",\n \"@vitest/browser\": \"^2.0.3\",\n \"@vitest/coverage-istanbul\": \"^2.0.3\",\n \"cross-env\": \"7.0.3\",\n \"playwright\": \"^1.45.2\",\n \"tsup\": \"8.1.0\",\n \"typescript\": \"5.0.4\",\n \"vitest\": \"^2.0.3\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","var createDotLottiePlayerModule = (() => {\n var _scriptDir = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n\n return function (moduleArg = {}) {\n var k = moduleArg,\n aa,\n ba,\n readyPromise = new Promise((a, b) => {\n aa = a;\n ba = b;\n }),\n ca = Object.assign({}, k),\n da = './this.program',\n t = '';\n 'undefined' != typeof document && document.currentScript && (t = document.currentScript.src);\n _scriptDir && (t = _scriptDir);\n t.startsWith('blob:') ? (t = '') : (t = t.substr(0, t.replace(/[?#].*/, '').lastIndexOf('/') + 1));\n var ea = k.print || console.log.bind(console),\n w = k.printErr || console.error.bind(console);\n Object.assign(k, ca);\n ca = null;\n k.thisProgram && (da = k.thisProgram);\n var x;\n k.wasmBinary && (x = k.wasmBinary);\n var fa,\n ha = !1,\n y,\n A,\n B,\n C,\n E,\n F,\n ja,\n ka;\n function la() {\n var a = fa.buffer;\n k.HEAP8 = y = new Int8Array(a);\n k.HEAP16 = B = new Int16Array(a);\n k.HEAPU8 = A = new Uint8Array(a);\n k.HEAPU16 = C = new Uint16Array(a);\n k.HEAP32 = E = new Int32Array(a);\n k.HEAPU32 = F = new Uint32Array(a);\n k.HEAPF32 = ja = new Float32Array(a);\n k.HEAPF64 = ka = new Float64Array(a);\n }\n var ma = [],\n na = [],\n oa = [];\n function pa() {\n var a = k.preRun.shift();\n ma.unshift(a);\n }\n var G = 0,\n qa = null,\n H = null;\n function ra(a) {\n k.onAbort?.(a);\n a = 'Aborted(' + a + ')';\n w(a);\n ha = !0;\n a = new WebAssembly.RuntimeError(a + '. Build with -sASSERTIONS for more info.');\n ba(a);\n throw a;\n }\n var sa = (a) => a.startsWith('data:application/octet-stream;base64,'),\n I;\n I = 'DotLottiePlayer.wasm';\n if (!sa(I)) {\n var ta = I;\n I = k.locateFile ? k.locateFile(ta, t) : t + ta;\n }\n function ua(a) {\n if (a == I && x) return new Uint8Array(x);\n throw 'both async and sync fetching of the wasm failed';\n }\n function va(a) {\n return x || 'function' != typeof fetch\n ? Promise.resolve().then(() => ua(a))\n : fetch(a, { credentials: 'same-origin' })\n .then((b) => {\n if (!b.ok) throw `failed to load wasm binary file at '${a}'`;\n return b.arrayBuffer();\n })\n .catch(() => ua(a));\n }\n function wa(a, b, c) {\n return va(a)\n .then((d) => WebAssembly.instantiate(d, b))\n .then(c, (d) => {\n w(`failed to asynchronously prepare wasm: ${d}`);\n ra(d);\n });\n }\n function xa(a, b) {\n var c = I;\n return x || 'function' != typeof WebAssembly.instantiateStreaming || sa(c) || 'function' != typeof fetch\n ? wa(c, a, b)\n : fetch(c, { credentials: 'same-origin' }).then((d) =>\n WebAssembly.instantiateStreaming(d, a).then(b, function (e) {\n w(`wasm streaming compile failed: ${e}`);\n w('falling back to ArrayBuffer instantiation');\n return wa(c, a, b);\n }),\n );\n }\n var ya = (a) => {\n for (; 0 < a.length; ) a.shift()(k);\n },\n za = 'undefined' != typeof TextDecoder ? new TextDecoder('utf8') : void 0,\n J = (a, b, c) => {\n var d = b + c;\n for (c = b; a[c] && !(c >= d); ) ++c;\n if (16 < c - b && a.buffer && za) return za.decode(a.subarray(b, c));\n for (d = ''; b < c; ) {\n var e = a[b++];\n if (e & 128) {\n var f = a[b++] & 63;\n if (192 == (e & 224)) d += String.fromCharCode(((e & 31) << 6) | f);\n else {\n var l = a[b++] & 63;\n e =\n 224 == (e & 240)\n ? ((e & 15) << 12) | (f << 6) | l\n : ((e & 7) << 18) | (f << 12) | (l << 6) | (a[b++] & 63);\n 65536 > e\n ? (d += String.fromCharCode(e))\n : ((e -= 65536), (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023))));\n }\n } else d += String.fromCharCode(e);\n }\n return d;\n };\n class Aa {\n constructor(a) {\n this.ya = a - 24;\n }\n }\n var Ba = 0,\n Ca = 0,\n Da = (a) => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 127 >= d ? b++ : 2047 >= d ? (b += 2) : 55296 <= d && 57343 >= d ? ((b += 4), ++c) : (b += 3);\n }\n return b;\n },\n Ea = (a, b, c, d) => {\n if (0 < d) {\n d = c + d - 1;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var l = a.charCodeAt(++e);\n f = (65536 + ((f & 1023) << 10)) | (l & 1023);\n }\n if (127 >= f) {\n if (c >= d) break;\n b[c++] = f;\n } else {\n if (2047 >= f) {\n if (c + 1 >= d) break;\n b[c++] = 192 | (f >> 6);\n } else {\n if (65535 >= f) {\n if (c + 2 >= d) break;\n b[c++] = 224 | (f >> 12);\n } else {\n if (c + 3 >= d) break;\n b[c++] = 240 | (f >> 18);\n b[c++] = 128 | ((f >> 12) & 63);\n }\n b[c++] = 128 | ((f >> 6) & 63);\n }\n b[c++] = 128 | (f & 63);\n }\n }\n b[c] = 0;\n }\n },\n Fa = {},\n Ga = (a) => {\n for (; a.length; ) {\n var b = a.pop();\n a.pop()(b);\n }\n };\n function K(a) {\n return this.fromWireType(F[a >> 2]);\n }\n var L = {},\n M = {},\n Ha = {},\n Ia,\n P = (a, b, c) => {\n function d(h) {\n h = c(h);\n if (h.length !== a.length) throw new Ia('Mismatched type converter count');\n for (var n = 0; n < a.length; ++n) O(a[n], h[n]);\n }\n a.forEach(function (h) {\n Ha[h] = b;\n });\n var e = Array(b.length),\n f = [],\n l = 0;\n b.forEach((h, n) => {\n M.hasOwnProperty(h)\n ? (e[n] = M[h])\n : (f.push(h),\n L.hasOwnProperty(h) || (L[h] = []),\n L[h].push(() => {\n e[n] = M[h];\n ++l;\n l === f.length && d(e);\n }));\n });\n 0 === f.length && d(e);\n },\n Ja,\n Q = (a) => {\n for (var b = ''; A[a]; ) b += Ja[A[a++]];\n return b;\n },\n R;\n function Ka(a, b, c = {}) {\n var d = b.name;\n if (!a) throw new R(`type \"${d}\" must have a positive integer typeid pointer`);\n if (M.hasOwnProperty(a)) {\n if (c.ib) return;\n throw new R(`Cannot register type '${d}' twice`);\n }\n M[a] = b;\n delete Ha[a];\n L.hasOwnProperty(a) && ((b = L[a]), delete L[a], b.forEach((e) => e()));\n }\n function O(a, b, c = {}) {\n if (!('argPackAdvance' in b)) throw new TypeError('registerType registeredInstance requires argPackAdvance');\n return Ka(a, b, c);\n }\n var La = (a) => {\n throw new R(a.ma.za.xa.name + ' instance already deleted');\n },\n Ma = !1,\n Oa = () => {},\n Pa = (a, b, c) => {\n if (b === c) return a;\n if (void 0 === c.Ca) return null;\n a = Pa(a, b, c.Ca);\n return null === a ? null : c.ab(a);\n },\n Qa = {},\n Ra = [],\n Sa = () => {\n for (; Ra.length; ) {\n var a = Ra.pop();\n a.ma.Ka = !1;\n a['delete']();\n }\n },\n Ta,\n Ua = {},\n Va = (a, b) => {\n if (void 0 === b) throw new R('ptr should not be undefined');\n for (; a.Ca; ) (b = a.Na(b)), (a = a.Ca);\n return Ua[b];\n },\n Xa = (a, b) => {\n if (!b.za || !b.ya) throw new Ia('makeClassHandle requires ptr and ptrType');\n if (!!b.Da !== !!b.Aa) throw new Ia('Both smartPtrType and smartPtr must be specified');\n b.count = { value: 1 };\n return Wa(Object.create(a, { ma: { value: b, writable: !0 } }));\n },\n Wa = (a) => {\n if ('undefined' === typeof FinalizationRegistry) return (Wa = (b) => b), a;\n Ma = new FinalizationRegistry((b) => {\n b = b.ma;\n --b.count.value;\n 0 === b.count.value && (b.Aa ? b.Da.Fa(b.Aa) : b.za.xa.Fa(b.ya));\n });\n Wa = (b) => {\n var c = b.ma;\n c.Aa && Ma.register(b, { ma: c }, b);\n return b;\n };\n Oa = (b) => {\n Ma.unregister(b);\n };\n return Wa(a);\n };\n function Ya() {}\n var Za = (a, b) => Object.defineProperty(b, 'name', { value: a }),\n $a = (a, b, c) => {\n if (void 0 === a[b].Ba) {\n var d = a[b];\n a[b] = function (...e) {\n if (!a[b].Ba.hasOwnProperty(e.length))\n throw new R(\n `Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ba})!`,\n );\n return a[b].Ba[e.length].apply(this, e);\n };\n a[b].Ba = [];\n a[b].Ba[d.Oa] = d;\n }\n },\n ab = (a, b, c) => {\n if (k.hasOwnProperty(a)) {\n if (void 0 === c || (void 0 !== k[a].Ba && void 0 !== k[a].Ba[c]))\n throw new R(`Cannot register public name '${a}' twice`);\n $a(k, a, a);\n if (k.hasOwnProperty(c))\n throw new R(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);\n k[a].Ba[c] = b;\n } else (k[a] = b), void 0 !== c && (k[a].vb = c);\n },\n bb = (a) => {\n if (void 0 === a) return '_unknown';\n a = a.replace(/[^a-zA-Z0-9_]/g, '$');\n var b = a.charCodeAt(0);\n return 48 <= b && 57 >= b ? `_${a}` : a;\n };\n function cb(a, b, c, d, e, f, l, h) {\n this.name = a;\n this.constructor = b;\n this.La = c;\n this.Fa = d;\n this.Ca = e;\n this.cb = f;\n this.Na = l;\n this.ab = h;\n this.kb = [];\n }\n var db = (a, b, c) => {\n for (; b !== c; ) {\n if (!b.Na) throw new R(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);\n a = b.Na(a);\n b = b.Ca;\n }\n return a;\n };\n function eb(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n return 0;\n }\n if (!b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n return db(b.ma.ya, b.ma.za.xa, this.xa);\n }\n function gb(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n if (this.Qa) {\n var c = this.Ua();\n null !== a && a.push(this.Fa, c);\n return c;\n }\n return 0;\n }\n if (!b || !b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n if (!this.Pa && b.ma.za.Pa)\n throw new R(\n `Cannot convert argument of type ${b.ma.Da ? b.ma.Da.name : b.ma.za.name} to parameter type ${this.name}`,\n );\n c = db(b.ma.ya, b.ma.za.xa, this.xa);\n if (this.Qa) {\n if (void 0 === b.ma.Aa) throw new R('Passing raw pointer to smart pointer is illegal');\n switch (this.pb) {\n case 0:\n if (b.ma.Da === this) c = b.ma.Aa;\n else\n throw new R(\n `Cannot convert argument of type ${b.ma.Da ? b.ma.Da.name : b.ma.za.name} to parameter type ${\n this.name\n }`,\n );\n break;\n case 1:\n c = b.ma.Aa;\n break;\n case 2:\n if (b.ma.Da === this) c = b.ma.Aa;\n else {\n var d = b.clone();\n c = this.lb(\n c,\n hb(() => d['delete']()),\n );\n null !== a && a.push(this.Fa, c);\n }\n break;\n default:\n throw new R('Unsupporting sharing policy');\n }\n }\n return c;\n }\n function ib(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n return 0;\n }\n if (!b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n if (b.ma.za.Pa) throw new R(`Cannot convert argument of type ${b.ma.za.name} to parameter type ${this.name}`);\n return db(b.ma.ya, b.ma.za.xa, this.xa);\n }\n function jb(a, b, c, d, e, f, l, h, n, m, p) {\n this.name = a;\n this.xa = b;\n this.Ta = c;\n this.Pa = d;\n this.Qa = e;\n this.jb = f;\n this.pb = l;\n this.Za = h;\n this.Ua = n;\n this.lb = m;\n this.Fa = p;\n e || void 0 !== b.Ca ? (this.toWireType = gb) : ((this.toWireType = d ? eb : ib), (this.Ea = null));\n }\n var kb = (a, b, c) => {\n if (!k.hasOwnProperty(a)) throw new Ia('Replacing nonexistent public symbol');\n void 0 !== k[a].Ba && void 0 !== c ? (k[a].Ba[c] = b) : ((k[a] = b), (k[a].Oa = c));\n },\n S,\n lb = (a, b, c = []) => {\n a.includes('j') ? ((a = a.replace(/p/g, 'i')), (b = (0, k['dynCall_' + a])(b, ...c))) : (b = S.get(b)(...c));\n return b;\n },\n mb =\n (a, b) =>\n (...c) =>\n lb(a, b, c),\n T = (a, b) => {\n a = Q(a);\n var c = a.includes('j') ? mb(a, b) : S.get(b);\n if ('function' != typeof c) throw new R(`unknown function pointer with signature ${a}: ${b}`);\n return c;\n },\n nb,\n pb = (a) => {\n a = ob(a);\n var b = Q(a);\n U(a);\n return b;\n },\n qb = (a, b) => {\n function c(f) {\n e[f] || M[f] || (Ha[f] ? Ha[f].forEach(c) : (d.push(f), (e[f] = !0)));\n }\n var d = [],\n e = {};\n b.forEach(c);\n throw new nb(`${a}: ` + d.map(pb).join([', ']));\n },\n rb = (a, b) => {\n for (var c = [], d = 0; d < a; d++) c.push(F[(b + 4 * d) >> 2]);\n return c;\n };\n function sb(a) {\n for (var b = 1; b < a.length; ++b) if (null !== a[b] && void 0 === a[b].Ea) return !0;\n return !1;\n }\n function tb(a, b, c, d, e) {\n var f = b.length;\n if (2 > f) throw new R(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var l = null !== b[1] && null !== c,\n h = sb(b),\n n = 'void' !== b[0].name,\n m = f - 2,\n p = Array(m),\n u = [],\n v = [];\n return Za(a, function (...g) {\n if (g.length !== m) throw new R(`function ${a} called with ${g.length} arguments, expected ${m}`);\n v.length = 0;\n u.length = l ? 2 : 1;\n u[0] = e;\n if (l) {\n var q = b[1].toWireType(v, this);\n u[1] = q;\n }\n for (var r = 0; r < m; ++r) (p[r] = b[r + 2].toWireType(v, g[r])), u.push(p[r]);\n g = d(...u);\n if (h) Ga(v);\n else\n for (r = l ? 1 : 2; r < b.length; r++) {\n var z = 1 === r ? q : p[r - 2];\n null !== b[r].Ea && b[r].Ea(z);\n }\n q = n ? b[0].fromWireType(g) : void 0;\n return q;\n });\n }\n var ub = (a) => {\n a = a.trim();\n const b = a.indexOf('(');\n return -1 !== b ? a.substr(0, b) : a;\n },\n vb = [],\n V = [],\n wb = (a) => {\n 9 < a && 0 === --V[a + 1] && ((V[a] = void 0), vb.push(a));\n },\n yb = (a) => {\n if (!a) throw new R('Cannot use deleted val. handle = ' + a);\n return V[a];\n },\n hb = (a) => {\n switch (a) {\n case void 0:\n return 2;\n case null:\n return 4;\n case !0:\n return 6;\n case !1:\n return 8;\n default:\n const b = vb.pop() || V.length;\n V[b] = a;\n V[b + 1] = 1;\n return b;\n }\n },\n zb = {\n name: 'emscripten::val',\n fromWireType: (a) => {\n var b = yb(a);\n wb(a);\n return b;\n },\n toWireType: (a, b) => hb(b),\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea: null,\n },\n Ab = (a, b, c) => {\n switch (b) {\n case 1:\n return c\n ? function (d) {\n return this.fromWireType(y[d]);\n }\n : function (d) {\n return this.fromWireType(A[d]);\n };\n case 2:\n return c\n ? function (d) {\n return this.fromWireType(B[d >> 1]);\n }\n : function (d) {\n return this.fromWireType(C[d >> 1]);\n };\n case 4:\n return c\n ? function (d) {\n return this.fromWireType(E[d >> 2]);\n }\n : function (d) {\n return this.fromWireType(F[d >> 2]);\n };\n default:\n throw new TypeError(`invalid integer width (${b}): ${a}`);\n }\n },\n Bb = (a, b) => {\n var c = M[a];\n if (void 0 === c) throw ((a = `${b} has unknown type ${pb(a)}`), new R(a));\n return c;\n },\n fb = (a) => {\n if (null === a) return 'null';\n var b = typeof a;\n return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a;\n },\n Cb = (a, b) => {\n switch (b) {\n case 4:\n return function (c) {\n return this.fromWireType(ja[c >> 2]);\n };\n case 8:\n return function (c) {\n return this.fromWireType(ka[c >> 3]);\n };\n default:\n throw new TypeError(`invalid float width (${b}): ${a}`);\n }\n },\n Db = (a, b, c) => {\n switch (b) {\n case 1:\n return c ? (d) => y[d] : (d) => A[d];\n case 2:\n return c ? (d) => B[d >> 1] : (d) => C[d >> 1];\n case 4:\n return c ? (d) => E[d >> 2] : (d) => F[d >> 2];\n default:\n throw new TypeError(`invalid integer width (${b}): ${a}`);\n }\n },\n Eb = 'undefined' != typeof TextDecoder ? new TextDecoder('utf-16le') : void 0,\n Fb = (a, b) => {\n var c = a >> 1;\n for (var d = c + b / 2; !(c >= d) && C[c]; ) ++c;\n c <<= 1;\n if (32 < c - a && Eb) return Eb.decode(A.subarray(a, c));\n c = '';\n for (d = 0; !(d >= b / 2); ++d) {\n var e = B[(a + 2 * d) >> 1];\n if (0 == e) break;\n c += String.fromCharCode(e);\n }\n return c;\n },\n Gb = (a, b, c) => {\n c ??= 2147483647;\n if (2 > c) return 0;\n c -= 2;\n var d = b;\n c = c < 2 * a.length ? c / 2 : a.length;\n for (var e = 0; e < c; ++e) (B[b >> 1] = a.charCodeAt(e)), (b += 2);\n B[b >> 1] = 0;\n return b - d;\n },\n Hb = (a) => 2 * a.length,\n Ib = (a, b) => {\n for (var c = 0, d = ''; !(c >= b / 4); ) {\n var e = E[(a + 4 * c) >> 2];\n if (0 == e) break;\n ++c;\n 65536 <= e\n ? ((e -= 65536), (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023))))\n : (d += String.fromCharCode(e));\n }\n return d;\n },\n Jb = (a, b, c) => {\n c ??= 2147483647;\n if (4 > c) return 0;\n var d = b;\n c = d + c - 4;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var l = a.charCodeAt(++e);\n f = (65536 + ((f & 1023) << 10)) | (l & 1023);\n }\n E[b >> 2] = f;\n b += 4;\n if (b + 4 > c) break;\n }\n E[b >> 2] = 0;\n return b - d;\n },\n Kb = (a) => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 55296 <= d && 57343 >= d && ++c;\n b += 4;\n }\n return b;\n },\n Lb = [],\n Mb = (a) => {\n var b = Lb.length;\n Lb.push(a);\n return b;\n },\n Nb = (a, b) => {\n for (var c = Array(a), d = 0; d < a; ++d) c[d] = Bb(F[(b + 4 * d) >> 2], 'parameter ' + d);\n return c;\n },\n Ob = Reflect.construct,\n Pb = {},\n Rb = () => {\n if (!Qb) {\n var a = {\n USER: 'web_user',\n LOGNAME: 'web_user',\n PATH: '/',\n PWD: '/',\n HOME: '/home/web_user',\n LANG:\n (('object' == typeof navigator && navigator.languages && navigator.languages[0]) || 'C').replace(\n '-',\n '_',\n ) + '.UTF-8',\n _: da || './this.program',\n },\n b;\n for (b in Pb) void 0 === Pb[b] ? delete a[b] : (a[b] = Pb[b]);\n var c = [];\n for (b in a) c.push(`${b}=${a[b]}`);\n Qb = c;\n }\n return Qb;\n },\n Qb,\n Sb = [null, [], []],\n Tb = () => {\n if ('object' == typeof crypto && 'function' == typeof crypto.getRandomValues)\n return (a) => crypto.getRandomValues(a);\n ra('initRandomDevice');\n },\n Ub = (a) => (Ub = Tb())(a),\n Vb = (a) => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400),\n Wb = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n Xb = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n function Yb(a) {\n var b = Array(Da(a) + 1);\n Ea(a, b, 0, b.length);\n return b;\n }\n var Zb = (a, b, c, d) => {\n function e(g, q, r) {\n for (g = 'number' == typeof g ? g.toString() : g || ''; g.length < q; ) g = r[0] + g;\n return g;\n }\n function f(g, q) {\n return e(g, q, '0');\n }\n function l(g, q) {\n function r(N) {\n return 0 > N ? -1 : 0 < N ? 1 : 0;\n }\n var z;\n 0 === (z = r(g.getFullYear() - q.getFullYear())) &&\n 0 === (z = r(g.getMonth() - q.getMonth())) &&\n (z = r(g.getDate() - q.getDate()));\n return z;\n }\n function h(g) {\n switch (g.getDay()) {\n case 0:\n return new Date(g.getFullYear() - 1, 11, 29);\n case 1:\n return g;\n case 2:\n return new Date(g.getFullYear(), 0, 3);\n case 3:\n return new Date(g.getFullYear(), 0, 2);\n case 4:\n return new Date(g.getFullYear(), 0, 1);\n case 5:\n return new Date(g.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(g.getFullYear() - 1, 11, 30);\n }\n }\n function n(g) {\n var q = g.Ia;\n for (g = new Date(new Date(g.Ja + 1900, 0, 1).getTime()); 0 < q; ) {\n var r = g.getMonth(),\n z = (Vb(g.getFullYear()) ? Wb : Xb)[r];\n if (q > z - g.getDate())\n (q -= z - g.getDate() + 1),\n g.setDate(1),\n 11 > r ? g.setMonth(r + 1) : (g.setMonth(0), g.setFullYear(g.getFullYear() + 1));\n else {\n g.setDate(g.getDate() + q);\n break;\n }\n }\n r = new Date(g.getFullYear() + 1, 0, 4);\n q = h(new Date(g.getFullYear(), 0, 4));\n r = h(r);\n return 0 >= l(q, g) ? (0 >= l(r, g) ? g.getFullYear() + 1 : g.getFullYear()) : g.getFullYear() - 1;\n }\n var m = F[(d + 40) >> 2];\n d = {\n sb: E[d >> 2],\n rb: E[(d + 4) >> 2],\n Ra: E[(d + 8) >> 2],\n Va: E[(d + 12) >> 2],\n Sa: E[(d + 16) >> 2],\n Ja: E[(d + 20) >> 2],\n Ga: E[(d + 24) >> 2],\n Ia: E[(d + 28) >> 2],\n wb: E[(d + 32) >> 2],\n qb: E[(d + 36) >> 2],\n tb: m ? (m ? J(A, m) : '') : '',\n };\n c = c ? J(A, c) : '';\n m = {\n '%c': '%a %b %d %H:%M:%S %Y',\n '%D': '%m/%d/%y',\n '%F': '%Y-%m-%d',\n '%h': '%b',\n '%r': '%I:%M:%S %p',\n '%R': '%H:%M',\n '%T': '%H:%M:%S',\n '%x': '%m/%d/%y',\n '%X': '%H:%M:%S',\n '%Ec': '%c',\n '%EC': '%C',\n '%Ex': '%m/%d/%y',\n '%EX': '%H:%M:%S',\n '%Ey': '%y',\n '%EY': '%Y',\n '%Od': '%d',\n '%Oe': '%e',\n '%OH': '%H',\n '%OI': '%I',\n '%Om': '%m',\n '%OM': '%M',\n '%OS': '%S',\n '%Ou': '%u',\n '%OU': '%U',\n '%OV': '%V',\n '%Ow': '%w',\n '%OW': '%W',\n '%Oy': '%y',\n };\n for (var p in m) c = c.replace(new RegExp(p, 'g'), m[p]);\n var u = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),\n v = 'January February March April May June July August September October November December'.split(' ');\n m = {\n '%a': (g) => u[g.Ga].substring(0, 3),\n '%A': (g) => u[g.Ga],\n '%b': (g) => v[g.Sa].substring(0, 3),\n '%B': (g) => v[g.Sa],\n '%C': (g) => f(((g.Ja + 1900) / 100) | 0, 2),\n '%d': (g) => f(g.Va, 2),\n '%e': (g) => e(g.Va, 2, ' '),\n '%g': (g) => n(g).toString().substring(2),\n '%G': n,\n '%H': (g) => f(g.Ra, 2),\n '%I': (g) => {\n g = g.Ra;\n 0 == g ? (g = 12) : 12 < g && (g -= 12);\n return f(g, 2);\n },\n '%j': (g) => {\n for (var q = 0, r = 0; r <= g.Sa - 1; q += (Vb(g.Ja + 1900) ? Wb : Xb)[r++]);\n return f(g.Va + q, 3);\n },\n '%m': (g) => f(g.Sa + 1, 2),\n '%M': (g) => f(g.rb, 2),\n '%n': () => '\\n',\n '%p': (g) => (0 <= g.Ra && 12 > g.Ra ? 'AM' : 'PM'),\n '%S': (g) => f(g.sb, 2),\n '%t': () => '\\t',\n '%u': (g) => g.Ga || 7,\n '%U': (g) => f(Math.floor((g.Ia + 7 - g.Ga) / 7), 2),\n '%V': (g) => {\n var q = Math.floor((g.Ia + 7 - ((g.Ga + 6) % 7)) / 7);\n 2 >= (g.Ga + 371 - g.Ia - 2) % 7 && q++;\n if (q) 53 == q && ((r = (g.Ga + 371 - g.Ia) % 7), 4 == r || (3 == r && Vb(g.Ja)) || (q = 1));\n else {\n q = 52;\n var r = (g.Ga + 7 - g.Ia - 1) % 7;\n (4 == r || (5 == r && Vb((g.Ja % 400) - 1))) && q++;\n }\n return f(q, 2);\n },\n '%w': (g) => g.Ga,\n '%W': (g) => f(Math.floor((g.Ia + 7 - ((g.Ga + 6) % 7)) / 7), 2),\n '%y': (g) => (g.Ja + 1900).toString().substring(2),\n '%Y': (g) => g.Ja + 1900,\n '%z': (g) => {\n g = g.qb;\n var q = 0 <= g;\n g = Math.abs(g) / 60;\n return (q ? '+' : '-') + String('0000' + ((g / 60) * 100 + (g % 60))).slice(-4);\n },\n '%Z': (g) => g.tb,\n '%%': () => '%',\n };\n c = c.replace(/%%/g, '\\x00\\x00');\n for (p in m) c.includes(p) && (c = c.replace(new RegExp(p, 'g'), m[p](d)));\n c = c.replace(/\\0\\0/g, '%');\n p = Yb(c);\n if (p.length > b) return 0;\n y.set(p, a);\n return p.length - 1;\n };\n Ia = k.InternalError = class extends Error {\n constructor(a) {\n super(a);\n this.name = 'InternalError';\n }\n };\n for (var $b = Array(256), ac = 0; 256 > ac; ++ac) $b[ac] = String.fromCharCode(ac);\n Ja = $b;\n R = k.BindingError = class extends Error {\n constructor(a) {\n super(a);\n this.name = 'BindingError';\n }\n };\n Object.assign(Ya.prototype, {\n isAliasOf: function (a) {\n if (!(this instanceof Ya && a instanceof Ya)) return !1;\n var b = this.ma.za.xa,\n c = this.ma.ya;\n a.ma = a.ma;\n var d = a.ma.za.xa;\n for (a = a.ma.ya; b.Ca; ) (c = b.Na(c)), (b = b.Ca);\n for (; d.Ca; ) (a = d.Na(a)), (d = d.Ca);\n return b === d && c === a;\n },\n clone: function () {\n this.ma.ya || La(this);\n if (this.ma.Ma) return (this.ma.count.value += 1), this;\n var a = Wa,\n b = Object,\n c = b.create,\n d = Object.getPrototypeOf(this),\n e = this.ma;\n a = a(\n c.call(b, d, {\n ma: { value: { count: e.count, Ka: e.Ka, Ma: e.Ma, ya: e.ya, za: e.za, Aa: e.Aa, Da: e.Da } },\n }),\n );\n a.ma.count.value += 1;\n a.ma.Ka = !1;\n return a;\n },\n ['delete']() {\n this.ma.ya || La(this);\n if (this.ma.Ka && !this.ma.Ma) throw new R('Object already scheduled for deletion');\n Oa(this);\n var a = this.ma;\n --a.count.value;\n 0 === a.count.value && (a.Aa ? a.Da.Fa(a.Aa) : a.za.xa.Fa(a.ya));\n this.ma.Ma || ((this.ma.Aa = void 0), (this.ma.ya = void 0));\n },\n isDeleted: function () {\n return !this.ma.ya;\n },\n deleteLater: function () {\n this.ma.ya || La(this);\n if (this.ma.Ka && !this.ma.Ma) throw new R('Object already scheduled for deletion');\n Ra.push(this);\n 1 === Ra.length && Ta && Ta(Sa);\n this.ma.Ka = !0;\n return this;\n },\n });\n k.getInheritedInstanceCount = () => Object.keys(Ua).length;\n k.getLiveInheritedInstances = () => {\n var a = [],\n b;\n for (b in Ua) Ua.hasOwnProperty(b) && a.push(Ua[b]);\n return a;\n };\n k.flushPendingDeletes = Sa;\n k.setDelayFunction = (a) => {\n Ta = a;\n Ra.length && Ta && Ta(Sa);\n };\n Object.assign(jb.prototype, {\n eb(a) {\n this.Za && (a = this.Za(a));\n return a;\n },\n Xa(a) {\n this.Fa?.(a);\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n fromWireType: function (a) {\n function b() {\n return this.Qa\n ? Xa(this.xa.La, { za: this.jb, ya: c, Da: this, Aa: a })\n : Xa(this.xa.La, { za: this, ya: a });\n }\n var c = this.eb(a);\n if (!c) return this.Xa(a), null;\n var d = Va(this.xa, c);\n if (void 0 !== d) {\n if (0 === d.ma.count.value) return (d.ma.ya = c), (d.ma.Aa = a), d.clone();\n d = d.clone();\n this.Xa(a);\n return d;\n }\n d = this.xa.cb(c);\n d = Qa[d];\n if (!d) return b.call(this);\n d = this.Pa ? d.$a : d.pointerType;\n var e = Pa(c, this.xa, d.xa);\n return null === e\n ? b.call(this)\n : this.Qa\n ? Xa(d.xa.La, { za: d, ya: e, Da: this, Aa: a })\n : Xa(d.xa.La, { za: d, ya: e });\n },\n });\n nb = k.UnboundTypeError = ((a, b) => {\n var c = Za(b, function (d) {\n this.name = b;\n this.message = d;\n d = Error(d).stack;\n void 0 !== d && (this.stack = this.toString() + '\\n' + d.replace(/^Error(:[^\\n]*)?\\n/, ''));\n });\n c.prototype = Object.create(a.prototype);\n c.prototype.constructor = c;\n c.prototype.toString = function () {\n return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n };\n return c;\n })(Error, 'UnboundTypeError');\n V.push(0, 1, void 0, 1, null, 1, !0, 1, !1, 1);\n k.count_emval_handles = () => V.length / 2 - 5 - vb.length;\n var mc = {\n c: (a, b, c, d) => {\n ra(\n `Assertion failed: ${a ? J(A, a) : ''}, at: ` +\n [b ? (b ? J(A, b) : '') : 'unknown filename', c, d ? (d ? J(A, d) : '') : 'unknown function'],\n );\n },\n m: (a, b, c) => {\n var d = new Aa(a);\n F[(d.ya + 16) >> 2] = 0;\n F[(d.ya + 4) >> 2] = b;\n F[(d.ya + 8) >> 2] = c;\n Ba = a;\n Ca++;\n throw Ba;\n },\n B: function () {\n return 0;\n },\n P: () => {},\n M: () => {},\n R: function () {\n return 0;\n },\n N: () => {},\n A: function () {},\n O: () => {},\n v: (a) => {\n var b = Fa[a];\n delete Fa[a];\n var c = b.Ua,\n d = b.Fa,\n e = b.Ya,\n f = e.map((l) => l.hb).concat(e.map((l) => l.nb));\n P([a], f, (l) => {\n var h = {};\n e.forEach((n, m) => {\n var p = l[m],\n u = n.fb,\n v = n.gb,\n g = l[m + e.length],\n q = n.mb,\n r = n.ob;\n h[n.bb] = {\n read: (z) => p.fromWireType(u(v, z)),\n write: (z, N) => {\n var D = [];\n q(r, z, g.toWireType(D, N));\n Ga(D);\n },\n };\n });\n return [\n {\n name: b.name,\n fromWireType: (n) => {\n var m = {},\n p;\n for (p in h) m[p] = h[p].read(n);\n d(n);\n return m;\n },\n toWireType: (n, m) => {\n for (var p in h) if (!(p in m)) throw new TypeError(`Missing field: \"${p}\"`);\n var u = c();\n for (p in h) h[p].write(u, m[p]);\n null !== n && n.push(d, u);\n return u;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea: d,\n },\n ];\n });\n },\n I: () => {},\n Y: (a, b, c, d) => {\n b = Q(b);\n O(a, {\n name: b,\n fromWireType: function (e) {\n return !!e;\n },\n toWireType: function (e, f) {\n return f ? c : d;\n },\n argPackAdvance: 8,\n readValueFromPointer: function (e) {\n return this.fromWireType(A[e]);\n },\n Ea: null,\n });\n },\n r: (a, b, c, d, e, f, l, h, n, m, p, u, v) => {\n p = Q(p);\n f = T(e, f);\n h &&= T(l, h);\n m &&= T(n, m);\n v = T(u, v);\n var g = bb(p);\n ab(g, function () {\n qb(`Cannot construct ${p} due to unbound types`, [d]);\n });\n P([a, b, c], d ? [d] : [], (q) => {\n q = q[0];\n if (d) {\n var r = q.xa;\n var z = r.La;\n } else z = Ya.prototype;\n q = Za(p, function (...Na) {\n if (Object.getPrototypeOf(this) !== N) throw new R(\"Use 'new' to construct \" + p);\n if (void 0 === D.Ha) throw new R(p + ' has no accessible constructor');\n var xb = D.Ha[Na.length];\n if (void 0 === xb)\n throw new R(\n `Tried to invoke ctor of ${p} with invalid number of parameters (${\n Na.length\n }) - expected (${Object.keys(D.Ha).toString()}) parameters instead!`,\n );\n return xb.apply(this, Na);\n });\n var N = Object.create(z, { constructor: { value: q } });\n q.prototype = N;\n var D = new cb(p, q, N, v, r, f, h, m);\n if (D.Ca) {\n var ia;\n (ia = D.Ca).Wa ?? (ia.Wa = []);\n D.Ca.Wa.push(D);\n }\n r = new jb(p, D, !0, !1, !1);\n ia = new jb(p + '*', D, !1, !1, !1);\n z = new jb(p + ' const*', D, !1, !0, !1);\n Qa[a] = { pointerType: ia, $a: z };\n kb(g, q);\n return [r, ia, z];\n });\n },\n q: (a, b, c, d, e, f) => {\n var l = rb(b, c);\n e = T(d, e);\n P([], [a], (h) => {\n h = h[0];\n var n = `constructor ${h.name}`;\n void 0 === h.xa.Ha && (h.xa.Ha = []);\n if (void 0 !== h.xa.Ha[b - 1])\n throw new R(\n `Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${\n h.name\n }'! Overload resolution is currently only performed using the parameter count, not actual type info!`,\n );\n h.xa.Ha[b - 1] = () => {\n qb(`Cannot construct ${h.name} due to unbound types`, l);\n };\n P([], l, (m) => {\n m.splice(1, 0, null);\n h.xa.Ha[b - 1] = tb(n, m, null, e, f);\n return [];\n });\n return [];\n });\n },\n f: (a, b, c, d, e, f, l, h) => {\n var n = rb(c, d);\n b = Q(b);\n b = ub(b);\n f = T(e, f);\n P([], [a], (m) => {\n function p() {\n qb(`Cannot call ${u} due to unbound types`, n);\n }\n m = m[0];\n var u = `${m.name}.${b}`;\n b.startsWith('@@') && (b = Symbol[b.substring(2)]);\n h && m.xa.kb.push(b);\n var v = m.xa.La,\n g = v[b];\n void 0 === g || (void 0 === g.Ba && g.className !== m.name && g.Oa === c - 2)\n ? ((p.Oa = c - 2), (p.className = m.name), (v[b] = p))\n : ($a(v, b, u), (v[b].Ba[c - 2] = p));\n P([], n, (q) => {\n q = tb(u, q, m, f, l);\n void 0 === v[b].Ba ? ((q.Oa = c - 2), (v[b] = q)) : (v[b].Ba[c - 2] = q);\n return [];\n });\n return [];\n });\n },\n X: (a) => O(a, zb),\n x: (a, b, c, d) => {\n function e() {}\n b = Q(b);\n e.values = {};\n O(a, {\n name: b,\n constructor: e,\n fromWireType: function (f) {\n return this.constructor.values[f];\n },\n toWireType: (f, l) => l.value,\n argPackAdvance: 8,\n readValueFromPointer: Ab(b, c, d),\n Ea: null,\n });\n ab(b, e);\n },\n k: (a, b, c) => {\n var d = Bb(a, 'enum');\n b = Q(b);\n a = d.constructor;\n d = Object.create(d.constructor.prototype, {\n value: { value: c },\n constructor: { value: Za(`${d.name}_${b}`, function () {}) },\n });\n a.values[c] = d;\n a[b] = d;\n },\n C: (a, b, c) => {\n b = Q(b);\n O(a, {\n name: b,\n fromWireType: (d) => d,\n toWireType: (d, e) => e,\n argPackAdvance: 8,\n readValueFromPointer: Cb(b, c),\n Ea: null,\n });\n },\n E: (a, b, c, d, e, f) => {\n var l = rb(b, c);\n a = Q(a);\n a = ub(a);\n e = T(d, e);\n ab(\n a,\n function () {\n qb(`Cannot call ${a} due to unbound types`, l);\n },\n b - 1,\n );\n P([], l, (h) => {\n kb(a, tb(a, [h[0], null].concat(h.slice(1)), null, e, f), b - 1);\n return [];\n });\n },\n l: (a, b, c, d, e) => {\n b = Q(b);\n -1 === e && (e = 4294967295);\n e = (h) => h;\n if (0 === d) {\n var f = 32 - 8 * c;\n e = (h) => (h << f) >>> f;\n }\n var l = b.includes('unsigned')\n ? function (h, n) {\n return n >>> 0;\n }\n : function (h, n) {\n return n;\n };\n O(a, {\n name: b,\n fromWireType: e,\n toWireType: l,\n argPackAdvance: 8,\n readValueFromPointer: Db(b, c, 0 !== d),\n Ea: null,\n });\n },\n g: (a, b, c) => {\n function d(f) {\n return new e(y.buffer, F[(f + 4) >> 2], F[f >> 2]);\n }\n var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][\n b\n ];\n c = Q(c);\n O(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { ib: !0 });\n },\n w: (a) => {\n O(a, zb);\n },\n ca: (a, b, c, d, e, f, l, h, n, m, p, u) => {\n c = Q(c);\n f = T(e, f);\n h = T(l, h);\n m = T(n, m);\n u = T(p, u);\n P([a], [b], (v) => {\n v = v[0];\n return [new jb(c, v.xa, !1, !1, !0, v, d, f, h, m, u)];\n });\n },\n D: (a, b) => {\n b = Q(b);\n var c = 'std::string' === b;\n O(a, {\n name: b,\n fromWireType: function (d) {\n var e = F[d >> 2],\n f = d + 4;\n if (c)\n for (var l = f, h = 0; h <= e; ++h) {\n var n = f + h;\n if (h == e || 0 == A[n]) {\n l = l ? J(A, l, n - l) : '';\n if (void 0 === m) var m = l;\n else (m += String.fromCharCode(0)), (m += l);\n l = n + 1;\n }\n }\n else {\n m = Array(e);\n for (h = 0; h < e; ++h) m[h] = String.fromCharCode(A[f + h]);\n m = m.join('');\n }\n U(d);\n return m;\n },\n toWireType: function (d, e) {\n e instanceof ArrayBuffer && (e = new Uint8Array(e));\n var f = 'string' == typeof e;\n if (!(f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array))\n throw new R('Cannot pass non-string to std::string');\n var l = c && f ? Da(e) : e.length;\n var h = bc(4 + l + 1),\n n = h + 4;\n F[h >> 2] = l;\n if (c && f) Ea(e, A, n, l + 1);\n else if (f)\n for (f = 0; f < l; ++f) {\n var m = e.charCodeAt(f);\n if (255 < m) throw (U(n), new R('String has UTF-16 code units that do not fit in 8 bits'));\n A[n + f] = m;\n }\n else for (f = 0; f < l; ++f) A[n + f] = e[f];\n null !== d && d.push(U, h);\n return h;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea(d) {\n U(d);\n },\n });\n },\n u: (a, b, c) => {\n c = Q(c);\n if (2 === b) {\n var d = Fb;\n var e = Gb;\n var f = Hb;\n var l = (h) => C[h >> 1];\n } else 4 === b && ((d = Ib), (e = Jb), (f = Kb), (l = (h) => F[h >> 2]));\n O(a, {\n name: c,\n fromWireType: (h) => {\n for (var n = F[h >> 2], m, p = h + 4, u = 0; u <= n; ++u) {\n var v = h + 4 + u * b;\n if (u == n || 0 == l(v))\n (p = d(p, v - p)), void 0 === m ? (m = p) : ((m += String.fromCharCode(0)), (m += p)), (p = v + b);\n }\n U(h);\n return m;\n },\n toWireType: (h, n) => {\n if ('string' != typeof n) throw new R(`Cannot pass non-string to C++ string type ${c}`);\n var m = f(n),\n p = bc(4 + m + b);\n F[p >> 2] = m / b;\n e(n, p + 4, m + b);\n null !== h && h.push(U, p);\n return p;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea(h) {\n U(h);\n },\n });\n },\n s: (a, b, c, d, e, f) => {\n Fa[a] = { name: Q(b), Ua: T(c, d), Fa: T(e, f), Ya: [] };\n },\n j: (a, b, c, d, e, f, l, h, n, m) => {\n Fa[a].Ya.push({ bb: Q(b), hb: c, fb: T(d, e), gb: f, nb: l, mb: T(h, n), ob: m });\n },\n Z: (a, b) => {\n b = Q(b);\n O(a, { ub: !0, name: b, argPackAdvance: 0, fromWireType: () => {}, toWireType: () => {} });\n },\n J: () => {\n throw Infinity;\n },\n aa: (a, b, c, d) => {\n a = Lb[a];\n b = yb(b);\n return a(null, b, c, d);\n },\n F: wb,\n $: (a, b, c) => {\n var d = Nb(a, b),\n e = d.shift();\n a--;\n var f = Array(a);\n b = `methodCaller<(${d.map((l) => l.name).join(', ')}) => ${e.name}>`;\n return Mb(\n Za(b, (l, h, n, m) => {\n for (var p = 0, u = 0; u < a; ++u) (f[u] = d[u].readValueFromPointer(m + p)), (p += d[u].argPackAdvance);\n h = 1 === c ? Ob(h, f) : h.apply(l, f);\n l = [];\n h = e.toWireType(l, h);\n l.length && (F[n >> 2] = hb(l));\n return h;\n }),\n );\n },\n ba: (a) => {\n 9 < a && (V[a + 1] += 1);\n },\n _: (a) => {\n var b = yb(a);\n Ga(b);\n wb(a);\n },\n o: (a, b) => {\n a = Bb(a, '_emval_take_value');\n a = a.readValueFromPointer(b);\n return hb(a);\n },\n W: () => {\n ra('');\n },\n V: () => performance.now(),\n L: (a) => {\n var b = A.length;\n a >>>= 0;\n if (2147483648 < a) return !1;\n for (var c = 1; 4 >= c; c *= 2) {\n var d = b * (1 + 0.2 / c);\n d = Math.min(d, a + 100663296);\n var e = Math;\n d = Math.max(a, d);\n a: {\n e =\n (e.min.call(e, 2147483648, d + ((65536 - (d % 65536)) % 65536)) - fa.buffer.byteLength + 65535) / 65536;\n try {\n fa.grow(e);\n la();\n var f = 1;\n break a;\n } catch (l) {}\n f = void 0;\n }\n if (f) return !0;\n }\n return !1;\n },\n S: (a, b) => {\n var c = 0;\n Rb().forEach((d, e) => {\n var f = b + c;\n e = F[(a + 4 * e) >> 2] = f;\n for (f = 0; f < d.length; ++f) y[e++] = d.charCodeAt(f);\n y[e] = 0;\n c += d.length + 1;\n });\n return 0;\n },\n T: (a, b) => {\n var c = Rb();\n F[a >> 2] = c.length;\n var d = 0;\n c.forEach((e) => (d += e.length + 1));\n F[b >> 2] = d;\n return 0;\n },\n t: () => 52,\n z: () => 52,\n H: function () {\n return 70;\n },\n Q: (a, b, c, d) => {\n for (var e = 0, f = 0; f < c; f++) {\n var l = F[b >> 2],\n h = F[(b + 4) >> 2];\n b += 8;\n for (var n = 0; n < h; n++) {\n var m = A[l + n],\n p = Sb[a];\n 0 === m || 10 === m ? ((1 === a ? ea : w)(J(p, 0)), (p.length = 0)) : p.push(m);\n }\n e += h;\n }\n F[d >> 2] = e;\n return 0;\n },\n U: (a, b) => {\n Ub(A.subarray(a, a + b));\n return 0;\n },\n i: cc,\n d: dc,\n e: ec,\n p: fc,\n y: gc,\n b: hc,\n a: ic,\n h: jc,\n n: kc,\n G: lc,\n K: (a, b, c, d) => Zb(a, b, c, d),\n },\n W = (function () {\n function a(c) {\n W = c.exports;\n fa = W.da;\n la();\n S = W.ha;\n na.unshift(W.ea);\n G--;\n k.monitorRunDependencies?.(G);\n 0 == G && (null !== qa && (clearInterval(qa), (qa = null)), H && ((c = H), (H = null), c()));\n return W;\n }\n var b = { a: mc };\n G++;\n k.monitorRunDependencies?.(G);\n if (k.instantiateWasm)\n try {\n return k.instantiateWasm(b, a);\n } catch (c) {\n w(`Module.instantiateWasm callback failed with error: ${c}`), ba(c);\n }\n xa(b, function (c) {\n a(c.instance);\n }).catch(ba);\n return {};\n })(),\n bc = (a) => (bc = W.fa)(a),\n ob = (a) => (ob = W.ga)(a),\n U = (a) => (U = W.ia)(a),\n X = (a, b) => (X = W.ja)(a, b),\n Y = (a) => (Y = W.ka)(a),\n Z = () => (Z = W.la)();\n k.dynCall_iijj = (a, b, c, d, e, f) => (k.dynCall_iijj = W.na)(a, b, c, d, e, f);\n k.dynCall_vijj = (a, b, c, d, e, f) => (k.dynCall_vijj = W.oa)(a, b, c, d, e, f);\n k.dynCall_jiii = (a, b, c, d) => (k.dynCall_jiii = W.pa)(a, b, c, d);\n k.dynCall_jii = (a, b, c) => (k.dynCall_jii = W.qa)(a, b, c);\n var nc = (k.dynCall_viiij = (a, b, c, d, e, f) => (nc = k.dynCall_viiij = W.ra)(a, b, c, d, e, f));\n k.dynCall_jiji = (a, b, c, d, e) => (k.dynCall_jiji = W.sa)(a, b, c, d, e);\n k.dynCall_viijii = (a, b, c, d, e, f, l) => (k.dynCall_viijii = W.ta)(a, b, c, d, e, f, l);\n k.dynCall_iiiiij = (a, b, c, d, e, f, l) => (k.dynCall_iiiiij = W.ua)(a, b, c, d, e, f, l);\n k.dynCall_iiiiijj = (a, b, c, d, e, f, l, h, n) => (k.dynCall_iiiiijj = W.va)(a, b, c, d, e, f, l, h, n);\n k.dynCall_iiiiiijj = (a, b, c, d, e, f, l, h, n, m) => (k.dynCall_iiiiiijj = W.wa)(a, b, c, d, e, f, l, h, n, m);\n function hc(a, b) {\n var c = Z();\n try {\n S.get(a)(b);\n } catch (d) {\n Y(c);\n if (d !== d + 0) throw d;\n X(1, 0);\n }\n }\n function ic(a, b, c) {\n var d = Z();\n try {\n S.get(a)(b, c);\n } catch (e) {\n Y(d);\n if (e !== e + 0) throw e;\n X(1, 0);\n }\n }\n function ec(a, b, c, d) {\n var e = Z();\n try {\n return S.get(a)(b, c, d);\n } catch (f) {\n Y(e);\n if (f !== f + 0) throw f;\n X(1, 0);\n }\n }\n function dc(a, b, c) {\n var d = Z();\n try {\n return S.get(a)(b, c);\n } catch (e) {\n Y(d);\n if (e !== e + 0) throw e;\n X(1, 0);\n }\n }\n function cc(a, b) {\n var c = Z();\n try {\n return S.get(a)(b);\n } catch (d) {\n Y(c);\n if (d !== d + 0) throw d;\n X(1, 0);\n }\n }\n function fc(a, b, c, d, e, f) {\n var l = Z();\n try {\n return S.get(a)(b, c, d, e, f);\n } catch (h) {\n Y(l);\n if (h !== h + 0) throw h;\n X(1, 0);\n }\n }\n function kc(a, b, c, d, e) {\n var f = Z();\n try {\n S.get(a)(b, c, d, e);\n } catch (l) {\n Y(f);\n if (l !== l + 0) throw l;\n X(1, 0);\n }\n }\n function jc(a, b, c, d) {\n var e = Z();\n try {\n S.get(a)(b, c, d);\n } catch (f) {\n Y(e);\n if (f !== f + 0) throw f;\n X(1, 0);\n }\n }\n function gc(a) {\n var b = Z();\n try {\n S.get(a)();\n } catch (c) {\n Y(b);\n if (c !== c + 0) throw c;\n X(1, 0);\n }\n }\n function lc(a, b, c, d, e, f) {\n var l = Z();\n try {\n nc(a, b, c, d, e, f);\n } catch (h) {\n Y(l);\n if (h !== h + 0) throw h;\n X(1, 0);\n }\n }\n var oc;\n H = function pc() {\n oc || qc();\n oc || (H = pc);\n };\n function qc() {\n function a() {\n if (!oc && ((oc = !0), (k.calledRun = !0), !ha)) {\n ya(na);\n aa(k);\n if (k.onRuntimeInitialized) k.onRuntimeInitialized();\n if (k.postRun)\n for ('function' == typeof k.postRun && (k.postRun = [k.postRun]); k.postRun.length; ) {\n var b = k.postRun.shift();\n oa.unshift(b);\n }\n ya(oa);\n }\n }\n if (!(0 < G)) {\n if (k.preRun) for ('function' == typeof k.preRun && (k.preRun = [k.preRun]); k.preRun.length; ) pa();\n ya(ma);\n 0 < G ||\n (k.setStatus\n ? (k.setStatus('Running...'),\n setTimeout(function () {\n setTimeout(function () {\n k.setStatus('');\n }, 1);\n a();\n }, 1))\n : a());\n }\n }\n if (k.preInit)\n for ('function' == typeof k.preInit && (k.preInit = [k.preInit]); 0 < k.preInit.length; ) k.preInit.pop()();\n qc();\n\n return readyPromise;\n };\n})();\nexport default createDotLottiePlayerModule;\n","import pkg from '../../package.json';\n\nimport createDotLottiePlayerModule from './dotlottie-player';\nimport type { MainModule } from './dotlottie-player.types';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class DotLottieWasmLoader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private static _ModulePromise: Promise<MainModule> | null = null;\n\n // URL for the WASM file, constructed using package information\n private static _wasmURL = `https://cdn.jsdelivr.net/npm/${pkg.name}@${pkg.version}/dist/dotlottie-player.wasm`;\n\n private constructor() {\n throw new Error('RendererLoader is a static class and cannot be instantiated.');\n }\n\n private static async _tryLoad(url: string): Promise<MainModule> {\n const module = await createDotLottiePlayerModule({ locateFile: () => url });\n\n return module;\n }\n\n /**\n * Tries to load the WASM module from the primary URL, falling back to a backup URL if necessary.\n * Throws an error if both URLs fail to load the module.\n * @returns Promise<Module> - A promise that resolves to the loaded module.\n */\n private static async _loadWithBackup(): Promise<MainModule> {\n if (!this._ModulePromise) {\n this._ModulePromise = this._tryLoad(this._wasmURL).catch(async (initialError): Promise<MainModule> => {\n const backupUrl = `https://unpkg.com/${pkg.name}@${pkg.version}/dist/dotlottie-player.wasm`;\n\n console.warn(`Primary WASM load failed from ${this._wasmURL}. Error: ${(initialError as Error).message}`);\n console.warn(`Attempting to load WASM from backup URL: ${backupUrl}`);\n\n try {\n return await this._tryLoad(backupUrl);\n } catch (backupError) {\n console.error(`Primary WASM URL failed: ${(initialError as Error).message}`);\n console.error(`Backup WASM URL failed: ${(backupError as Error).message}`);\n throw new Error('WASM loading failed from all sources.');\n }\n });\n }\n\n return this._ModulePromise;\n }\n\n /**\n * Public method to load the WebAssembly module.\n * Utilizes a primary and backup URL for robustness.\n * @returns Promise<Module> - A promise that resolves to the loaded module.\n */\n public static async load(): Promise<MainModule> {\n return this._loadWithBackup();\n }\n\n /**\n * Sets a new URL for the WASM file and invalidates the current module promise.\n *\n * @param string - The new URL for the WASM file.\n */\n public static setWasmUrl(url: string): void {\n this._wasmURL = url;\n // Invalidate current module promise\n this._ModulePromise = null;\n }\n}\n","/**\n * Represents the different types of events that can be dispatched.\n */\nexport type EventType =\n | 'complete'\n | 'frame'\n | 'load'\n | 'loadError'\n | 'loop'\n | 'pause'\n | 'play'\n | 'stop'\n | 'destroy'\n | 'freeze'\n | 'unfreeze'\n | 'render'\n | 'ready';\n\n/**\n * Maps an event type string to its respective event interface.\n */\ntype EventByType<T> = T extends 'complete'\n ? CompleteEvent\n : T extends 'frame'\n ? FrameEvent\n : T extends 'load'\n ? LoadEvent\n : T extends 'loadError'\n ? LoadErrorEvent\n : T extends 'loop'\n ? LoopEvent\n : T extends 'pause'\n ? PauseEvent\n : T extends 'play'\n ? PlayEvent\n : T extends 'stop'\n ? StopEvent\n : T extends 'destroy'\n ? DestroyEvent\n : T extends 'freeze'\n ? FreezeEvent\n : T extends 'unfreeze'\n ? UnfreezeEvent\n : T extends 'render'\n ? RenderEvent\n : T extends 'ready'\n ? ReadyEvent\n : never;\n\n/**\n * Base interface for all events.\n */\nexport interface BaseEvent {\n type: EventType;\n}\n\nexport interface RenderEvent extends BaseEvent {\n currentFrame: number;\n type: 'render';\n}\n\nexport interface FreezeEvent extends BaseEvent {\n type: 'freeze';\n}\n\nexport interface UnfreezeEvent extends BaseEvent {\n type: 'unfreeze';\n}\n\n/*\n * Event fired when a destroy action occurs.\n */\nexport interface DestroyEvent extends BaseEvent {\n type: 'destroy';\n}\n\n/**\n * Event fired when a loop action occurs.\n */\nexport interface LoopEvent extends BaseEvent {\n loopCount: number;\n type: 'loop';\n}\n\n/**\n * Event fired during frame changes.\n */\nexport interface FrameEvent extends BaseEvent {\n currentFrame: number;\n type: 'frame';\n}\n\n/**\n * Event fired when a load action occurs.\n */\nexport interface LoadEvent extends BaseEvent {\n type: 'load';\n}\n\n/**\n * Event fired when a loading error occurs.\n */\nexport interface LoadErrorEvent extends BaseEvent {\n error: Error;\n type: 'loadError';\n}\n\n/**\n * Event fired when a completion action occurs.\n */\nexport interface CompleteEvent extends BaseEvent {\n type: 'complete';\n}\n\n/**\n * Event fired when a pause action occurs.\n */\nexport interface PauseEvent extends BaseEvent {\n type: 'pause';\n}\n\n/**\n * Event fired when a play action occurs.\n */\nexport interface PlayEvent extends BaseEvent {\n type: 'play';\n}\n\n/**\n * Event fired when a stop action occurs.\n */\nexport interface StopEvent extends BaseEvent {\n type: 'stop';\n}\n\n/**\n * Event fired when a WASM module is initialized and ready.\n */\nexport interface ReadyEvent extends BaseEvent {\n type: 'ready';\n}\n\n/**\n * Type representing all possible event types.\n */\nexport type Event =\n | LoopEvent\n | FrameEvent\n | LoadEvent\n | LoadErrorEvent\n | CompleteEvent\n | PauseEvent\n | PlayEvent\n | StopEvent\n | DestroyEvent\n | FreezeEvent\n | UnfreezeEvent\n | RenderEvent\n | ReadyEvent;\n\nexport interface EventListener<T extends EventType> {\n (event: EventByType<T>): void;\n}\n\n/**\n * Manages registration and dispatching of event listeners.\n */\nexport class EventManager {\n private readonly _eventListeners: Map<EventType, Set<EventListener<EventType>>> = new Map();\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n let listeners = this._eventListeners.get(type);\n\n if (!listeners) {\n listeners = new Set<EventListener<T>>();\n this._eventListeners.set(type, listeners);\n }\n\n listeners.add(listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n const listeners = this._eventListeners.get(type);\n\n if (!listeners) return;\n\n if (listener) {\n listeners.delete(listener);\n\n if (listeners.size === 0) {\n this._eventListeners.delete(type);\n }\n } else {\n this._eventListeners.delete(type);\n }\n }\n\n public dispatch<T extends EventType>(event: EventByType<T>): void {\n const listeners = this._eventListeners.get(event.type);\n\n listeners?.forEach((listener) => listener(event));\n }\n\n public removeAllEventListeners(): void {\n this._eventListeners.clear();\n }\n}\n","import { LOTTIE_JSON_MANDATORY_FIELDS, ZIP_SIGNATURE } from './constants';\n\nexport function isHexColor(color: string): boolean {\n return /^#([\\da-f]{6}|[\\da-f]{8})$/iu.test(color);\n}\n\nexport function hexStringToRGBAInt(colorHex: string): number {\n if (!isHexColor(colorHex)) {\n return 0;\n }\n\n let hex = colorHex.replace('#', '');\n\n // Add alpha if it's not included\n hex = hex.length === 6 ? `${hex}ff` : hex;\n\n return parseInt(hex, 16);\n}\n\nexport function isDotLottie(fileData: ArrayBuffer): boolean {\n if (fileData.byteLength < 4) {\n return false;\n }\n\n const fileSignature = new Uint8Array(fileData.slice(0, ZIP_SIGNATURE.byteLength));\n\n for (let i = 0; i < ZIP_SIGNATURE.length; i += 1) {\n if (ZIP_SIGNATURE[i] !== fileSignature[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns whether the given object looks like a valid Lottie JSON structure.\n */\nexport function isLottieJSON(json: Record<string, unknown>): boolean {\n return LOTTIE_JSON_MANDATORY_FIELDS.every((field) => Object.prototype.hasOwnProperty.call(json, field));\n}\n\nexport function isLottie(fileData: string | Record<string, unknown>): boolean {\n if (typeof fileData === 'string') {\n try {\n return isLottieJSON(JSON.parse(fileData));\n } catch (_e) {\n return false;\n }\n } else {\n return isLottieJSON(fileData);\n }\n}\n","import { AnimationFrameManager } from './animation-frame-manager';\nimport { IS_BROWSER } from './constants';\nimport type { DotLottiePlayer, MainModule, Mode as CoreMode, VectorFloat, Marker, Fit as CoreFit } from './core';\nimport { DotLottieWasmLoader } from './core';\nimport type { EventListener, EventType } from './event-manager';\nimport { EventManager } from './event-manager';\nimport type { Mode, Fit, Config, Layout, Manifest, RenderConfig, Data } from './types';\nimport { hexStringToRGBAInt, isDotLottie, isLottie } from './utils';\n\nconst createCoreMode = (mode: Mode, module: MainModule): CoreMode => {\n if (mode === 'reverse') {\n return module.Mode.Reverse;\n } else if (mode === 'bounce') {\n return module.Mode.Bounce;\n } else if (mode === 'reverse-bounce') {\n return module.Mode.ReverseBounce;\n } else {\n return module.Mode.Forward;\n }\n};\n\nconst createCoreFit = (fit: Fit, module: MainModule): CoreFit => {\n if (fit === 'contain') {\n return module.Fit.Contain;\n } else if (fit === 'cover') {\n return module.Fit.Cover;\n } else if (fit === 'fill') {\n return module.Fit.Fill;\n } else if (fit === 'fit-height') {\n return module.Fit.FitHeight;\n } else if (fit === 'fit-width') {\n return module.Fit.FitWidth;\n } else {\n return module.Fit.None;\n }\n};\n\nconst createCoreAlign = (align: [number, number], module: MainModule): VectorFloat => {\n const coreAlign = new module.VectorFloat();\n\n coreAlign.push_back(align[0]);\n coreAlign.push_back(align[1]);\n\n return coreAlign;\n};\n\nconst createCoreSegment = (segment: number[], module: MainModule): VectorFloat => {\n const coresegment = new module.VectorFloat();\n\n if (segment.length !== 2) return coresegment;\n\n coresegment.push_back(segment[0] as number);\n coresegment.push_back(segment[1] as number);\n\n return coresegment;\n};\n\nexport class DotLottie {\n private readonly _canvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null = null;\n\n private readonly _eventManager: EventManager;\n\n private _animationFrameId: number | null = null;\n\n private readonly _frameManager: AnimationFrameManager;\n\n private _dotLottieCore: DotLottiePlayer | null = null;\n\n private static _wasmModule: MainModule | null = null;\n\n private _renderConfig: RenderConfig = {};\n\n private _isFrozen: boolean = false;\n\n private _backgroundColor: string | null = null;\n\n public constructor(config: Config) {\n this._canvas = config.canvas;\n this._context = this._canvas.getContext('2d');\n\n this._eventManager = new EventManager();\n this._frameManager = new AnimationFrameManager();\n this._renderConfig = config.renderConfig ?? {};\n\n DotLottieWasmLoader.load()\n .then((module) => {\n DotLottie._wasmModule = module;\n\n this._dotLottieCore = new module.DotLottiePlayer({\n autoplay: config.autoplay ?? false,\n backgroundColor: 0,\n loopAnimation: config.loop ?? false,\n mode: createCoreMode(config.mode ?? 'forward', module),\n segment: createCoreSegment(config.segment ?? [], module),\n speed: config.speed ?? 1,\n useFrameInterpolation: config.useFrameInterpolation ?? true,\n marker: config.marker ?? '',\n layout: config.layout\n ? {\n align: createCoreAlign(config.layout.align, module),\n fit: createCoreFit(config.layout.fit, module),\n }\n : module.createDefaultLayout(),\n });\n\n this._eventManager.dispatch({ type: 'ready' });\n\n if (config.data) {\n this._loadFromData(config.data);\n } else if (config.src) {\n this._loadFromSrc(config.src);\n }\n\n if (config.backgroundColor) {\n this.setBackgroundColor(config.backgroundColor);\n }\n })\n .catch((error) => {\n this._eventManager.dispatch({\n type: 'loadError',\n error: new Error(`Failed to load wasm module: ${error}`),\n });\n });\n }\n\n private _dispatchError(message: string): void {\n console.error(message);\n this._eventManager.dispatch({ type: 'loadError', error: new Error(message) });\n }\n\n private async _fetchData(src: string): Promise<string | ArrayBuffer> {\n const response = await fetch(src);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch animation data from URL: ${src}. ${response.status}: ${response.statusText}`);\n }\n\n const data = await response.arrayBuffer();\n\n if (isDotLottie(data)) {\n return data;\n }\n\n // eslint-disable-next-line node/no-unsupported-features/node-builtins\n return new TextDecoder().decode(data);\n }\n\n private _loadFromData(data: Data): void {\n if (this._dotLottieCore === null) return;\n\n const width = this._canvas.width;\n const height = this._canvas.height;\n\n let loaded = false;\n\n if (typeof data === 'string') {\n if (!isLottie(data)) {\n this._dispatchError(\n 'Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadAnimationData(data, width, height);\n } else if (data instanceof ArrayBuffer) {\n if (!isDotLottie(data)) {\n this._dispatchError(\n 'Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadDotLottieData(data, width, height);\n } else if (typeof data === 'object') {\n if (!isLottie(data as Record<string, unknown>)) {\n this._dispatchError(\n 'Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadAnimationData(JSON.stringify(data), width, height);\n } else {\n this._dispatchError(\n `Unsupported data type for animation data. Expected: \n - string (Lottie JSON),\n - ArrayBuffer (dotLottie),\n - object (Lottie JSON). \n Received: ${typeof data}`,\n );\n\n return;\n }\n\n if (loaded) {\n this._eventManager.dispatch({ type: 'load' });\n\n if (IS_BROWSER) {\n this.resize();\n }\n\n this._eventManager.dispatch({\n type: 'frame',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n this._render();\n\n if (this._dotLottieCore.config().autoplay) {\n this._dotLottieCore.play();\n if (this._dotLottieCore.isPlaying()) {\n this._eventManager.dispatch({ type: 'play' });\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n } else {\n console.error('something went wrong, the animation was suppose to autoplay');\n }\n }\n } else {\n this._dispatchError('Failed to load animation data');\n }\n }\n\n private _loadFromSrc(src: string): void {\n this._fetchData(src)\n .then((data) => this._loadFromData(data))\n .catch((error) => this._dispatchError(`Failed to load animation data from URL: ${src}. ${error}`));\n }\n\n public get activeAnimationId(): string | undefined {\n return this._dotLottieCore?.activeAnimationId();\n }\n\n public get activeThemeId(): string | undefined {\n return this._dotLottieCore?.activeThemeId();\n }\n\n public get layout(): Layout | undefined {\n const layout = this._dotLottieCore?.config().layout;\n\n if (layout) {\n return {\n align: [layout.align.get(0) as number, layout.align.get(1) as number],\n fit: ((): Fit => {\n switch (layout.fit) {\n case DotLottie._wasmModule?.Fit.Contain:\n return 'contain';\n\n case DotLottie._wasmModule?.Fit.Cover:\n return 'cover';\n\n case DotLottie._wasmModule?.Fit.Fill:\n return 'fill';\n\n case DotLottie._wasmModule?.Fit.FitHeight:\n return 'fit-height';\n\n case DotLottie._wasmModule?.Fit.FitWidth:\n return 'fit-width';\n\n case DotLottie._wasmModule?.Fit.None:\n return 'none';\n\n default:\n return 'contain';\n }\n })(),\n };\n }\n\n return undefined;\n }\n\n public get marker(): string | undefined {\n const marker = this._dotLottieCore?.config().marker as string | undefined;\n\n return marker;\n }\n\n public get manifest(): Manifest | null {\n try {\n const manifest = this._dotLottieCore?.manifestString();\n\n if (this._dotLottieCore === null || !manifest) return null;\n\n const manifestJson = JSON.parse(manifest);\n\n if (Object.keys(manifestJson).length === 0) return null;\n\n return manifestJson as Manifest;\n } catch (_err) {\n return null;\n }\n }\n\n public get renderConfig(): RenderConfig {\n return this._renderConfig;\n }\n\n public get segment(): [number, number] | undefined {\n const segment = this._dotLottieCore?.config().segment;\n\n if (segment && segment.size() === 2) {\n return [segment.get(0) as number, segment.get(1) as number];\n }\n\n return undefined;\n }\n\n public get loop(): boolean {\n return this._dotLottieCore?.config().loopAnimation ?? false;\n }\n\n public get mode(): Mode {\n const mode = this._dotLottieCore?.config().mode;\n\n if (mode === DotLottie._wasmModule?.Mode.Reverse) {\n return 'reverse';\n } else if (mode === DotLottie._wasmModule?.Mode.Bounce) {\n return 'bounce';\n } else if (mode === DotLottie._wasmModule?.Mode.ReverseBounce) {\n return 'reverse-bounce';\n } else {\n return 'forward';\n }\n }\n\n public get isFrozen(): boolean {\n return this._isFrozen;\n }\n\n public get backgroundColor(): string {\n return this._backgroundColor ?? '';\n }\n\n public get autoplay(): boolean {\n return this._dotLottieCore?.config().autoplay ?? false;\n }\n\n public get useFrameInterpolation(): boolean {\n return this._dotLottieCore?.config().useFrameInterpolation ?? false;\n }\n\n public get speed(): number {\n return this._dotLottieCore?.config().speed ?? 0;\n }\n\n public get isReady(): boolean {\n return this._dotLottieCore !== null;\n }\n\n public get isLoaded(): boolean {\n return this._dotLottieCore?.isLoaded() ?? false;\n }\n\n public get isPlaying(): boolean {\n return this._dotLottieCore?.isPlaying() ?? false;\n }\n\n public get isPaused(): boolean {\n return this._dotLottieCore?.isPaused() ?? false;\n }\n\n public get isStopped(): boolean {\n return this._dotLottieCore?.isStopped() ?? false;\n }\n\n public get currentFrame(): number {\n return this._dotLottieCore?.currentFrame() ?? 0;\n }\n\n public get loopCount(): number {\n return this._dotLottieCore?.loopCount() ?? 0;\n }\n\n public get totalFrames(): number {\n return this._dotLottieCore?.totalFrames() ?? 0;\n }\n\n public get duration(): number {\n return this._dotLottieCore?.duration() ?? 0;\n }\n\n public get segmentDuration(): number {\n return this._dotLottieCore?.segmentDuration() ?? 0;\n }\n\n public get canvas(): HTMLCanvasElement | OffscreenCanvas {\n return this._canvas;\n }\n\n public load(config: Omit<Config, 'canvas'>): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n autoplay: config.autoplay ?? false,\n backgroundColor: 0,\n loopAnimation: config.loop ?? false,\n mode: createCoreMode(config.mode ?? 'forward', DotLottie._wasmModule),\n segment: createCoreSegment(config.segment ?? [], DotLottie._wasmModule),\n speed: config.speed ?? 1,\n useFrameInterpolation: config.useFrameInterpolation ?? true,\n marker: config.marker ?? '',\n layout: config.layout\n ? {\n align: createCoreAlign(config.layout.align, DotLottie._wasmModule),\n fit: createCoreFit(config.layout.fit, DotLottie._wasmModule),\n }\n : DotLottie._wasmModule.createDefaultLayout(),\n });\n\n if (config.data) {\n this._loadFromData(config.data);\n } else if (config.src) {\n this._loadFromSrc(config.src);\n }\n\n this.setBackgroundColor(config.backgroundColor ?? '');\n }\n\n private _render(): boolean {\n if (this._dotLottieCore === null || this._context === null) return false;\n\n const rendered = this._dotLottieCore.render();\n\n if (rendered) {\n const buffer = this._dotLottieCore.buffer() as Uint8Array;\n const clampedBuffer = new Uint8ClampedArray(buffer, 0, this._canvas.width * this._canvas.height * 4);\n\n let imageData = null;\n\n /* \n In Node.js, the ImageData constructor is not available. \n You can use createImageData function in the canvas context to create ImageData object.\n */\n if (typeof ImageData === 'undefined') {\n imageData = this._context.createImageData(this._canvas.width, this._canvas.height);\n imageData.data.set(clampedBuffer);\n } else {\n imageData = new ImageData(clampedBuffer, this._canvas.width, this._canvas.height);\n }\n\n this._context.putImageData(imageData, 0, 0);\n\n this._eventManager.dispatch({\n type: 'render',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n return true;\n }\n\n return false;\n }\n\n private _draw(): void {\n if (this._dotLottieCore === null || this._context === null || !this._dotLottieCore.isPlaying()) return;\n\n const nextFrame = this._dotLottieCore.requestFrame();\n\n const updated = this._dotLottieCore.setFrame(nextFrame);\n\n if (updated) {\n this._eventManager.dispatch({\n type: 'frame',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n const rendered = this._render();\n\n if (rendered) {\n // handle loop or complete\n if (this._dotLottieCore.isComplete()) {\n if (this._dotLottieCore.config().loopAnimation) {\n this._eventManager.dispatch({\n type: 'loop',\n loopCount: this._dotLottieCore.loopCount(),\n });\n } else {\n this._eventManager.dispatch({ type: 'complete' });\n }\n }\n }\n }\n\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n }\n\n public play(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.play();\n\n this._isFrozen = false;\n\n if (ok) {\n this._eventManager.dispatch({ type: 'play' });\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n }\n }\n\n public pause(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.pause();\n\n if (ok) {\n this._eventManager.dispatch({ type: 'pause' });\n }\n }\n\n public stop(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.stop();\n\n if (ok) {\n this._eventManager.dispatch({ type: 'frame', currentFrame: this._dotLottieCore.currentFrame() });\n\n this._render();\n\n this._eventManager.dispatch({ type: 'stop' });\n }\n }\n\n public setFrame(frame: number): void {\n if (this._dotLottieCore === null) return;\n\n if (frame < 0 || frame > this._dotLottieCore.totalFrames()) return;\n\n const ok = this._dotLottieCore.seek(frame);\n\n if (ok) {\n this._eventManager.dispatch({ type: 'frame', currentFrame: this._dotLottieCore.currentFrame() });\n\n this._render();\n }\n }\n\n public setSpeed(speed: number): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n speed,\n });\n }\n\n public setBackgroundColor(color: string): void {\n if (this._dotLottieCore === null) return;\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.style.backgroundColor = color;\n } else {\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n backgroundColor: hexStringToRGBAInt(color),\n });\n }\n\n this._backgroundColor = color;\n }\n\n public setLoop(loop: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n loopAnimation: loop,\n });\n }\n\n public setUseFrameInterpolation(useFrameInterpolation: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n useFrameInterpolation,\n });\n }\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n public destroy(): void {\n this._dotLottieCore?.delete();\n this._dotLottieCore = null;\n this._context = null;\n\n this._eventManager.dispatch({\n type: 'destroy',\n });\n\n this._eventManager.removeAllEventListeners();\n this._cleanupStateMachineListeners();\n }\n\n public freeze(): void {\n if (this._animationFrameId === null) return;\n\n this._frameManager.cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n\n this._isFrozen = true;\n\n this._eventManager.dispatch({ type: 'freeze' });\n }\n\n public unfreeze(): void {\n if (this._animationFrameId !== null) return;\n\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n\n this._isFrozen = false;\n\n this._eventManager.dispatch({ type: 'unfreeze' });\n }\n\n public resize(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n const dpr = this._renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n\n const { height: clientHeight, width: clientWidth } = this._canvas.getBoundingClientRect();\n\n this._canvas.width = clientWidth * dpr;\n this._canvas.height = clientHeight * dpr;\n }\n\n const ok = this._dotLottieCore?.resize(this._canvas.width, this._canvas.height);\n\n if (ok) {\n this._render();\n }\n }\n\n public setSegment(startFrame: number, endFrame: number): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n segment: createCoreSegment([startFrame, endFrame], DotLottie._wasmModule),\n });\n }\n\n public setMode(mode: Mode): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n mode: createCoreMode(mode, DotLottie._wasmModule),\n });\n }\n\n public setRenderConfig(config: RenderConfig): void {\n this._renderConfig = config;\n }\n\n public loadAnimation(animationId: string): void {\n if (this._dotLottieCore === null || this._dotLottieCore.activeAnimationId() === animationId) return;\n\n const loaded = this._dotLottieCore.loadAnimation(animationId, this._canvas.width, this._canvas.height);\n\n if (loaded) {\n this._eventManager.dispatch({ type: 'load' });\n this.resize();\n } else {\n this._eventManager.dispatch({\n type: 'loadError',\n error: new Error(`Failed to animation :${animationId}`),\n });\n }\n }\n\n public setMarker(marker: string): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n marker,\n });\n }\n\n public markers(): Marker[] {\n const markers = this._dotLottieCore?.markers();\n\n if (markers) {\n const result: Marker[] = [];\n\n for (let i = 0; i < markers.size(); i += 1) {\n const marker = markers.get(i) as Marker;\n\n result.push({\n name: marker.name,\n time: marker.time,\n duration: marker.duration,\n });\n }\n\n return result;\n }\n\n return [];\n }\n\n public loadTheme(themeId: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const loaded = this._dotLottieCore.loadTheme(themeId);\n\n this._render();\n\n return loaded;\n }\n\n public loadThemeData(themeData: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const loaded = this._dotLottieCore.loadThemeData(themeData);\n\n this._render();\n\n return loaded;\n }\n\n public setLayout(layout: Layout): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n layout: {\n align: createCoreAlign(layout.align, DotLottie._wasmModule),\n fit: createCoreFit(layout.fit, DotLottie._wasmModule),\n },\n });\n }\n\n public setViewport(x: number, y: number, width: number, height: number): boolean {\n if (this._dotLottieCore === null) return false;\n\n return this._dotLottieCore.setViewport(x, y, width, height);\n }\n\n public static setWasmUrl(url: string): void {\n DotLottieWasmLoader.setWasmUrl(url);\n }\n\n public loadStateMachine(stateMachineId: string): boolean {\n return this._dotLottieCore?.loadStateMachine(stateMachineId) ?? false;\n }\n\n public startStateMachine(): boolean {\n const started = this._dotLottieCore?.startStateMachine() ?? false;\n\n if (started) {\n this._setupStateMachineListeners();\n }\n\n return started;\n }\n\n public stopStateMachine(): boolean {\n const stopped = this._dotLottieCore?.stopStateMachine() ?? false;\n\n if (stopped) {\n this._cleanupStateMachineListeners();\n }\n\n return stopped;\n }\n\n private _getPointerPosition(event: PointerEvent): { x: number; y: number } {\n const rect = (this._canvas as HTMLCanvasElement).getBoundingClientRect();\n const scaleX = this._canvas.width / rect.width;\n const scaleY = this._canvas.height / rect.height;\n\n const devicePixelRatio = this._renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n const x = ((event.clientX - rect.left) * scaleX) / devicePixelRatio;\n const y = ((event.clientY - rect.top) * scaleY) / devicePixelRatio;\n\n return {\n x,\n y,\n };\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerUp: ${x} ${y}`);\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerDown: ${x} ${y}`);\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerMove: ${x} ${y}`);\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerEnter: ${x} ${y}`);\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerExit: ${x} ${y}`);\n }\n\n private _onComplete(): void {\n this.postStateMachineEvent('OnComplete');\n }\n\n /**\n * @experimental\n * @param event - The event to be posted to the state machine\n * @returns boolean - true if the event was posted successfully, false otherwise\n */\n public postStateMachineEvent(event: string): boolean {\n return this._dotLottieCore?.postEventPayload(event) ?? false;\n }\n\n public getStateMachineListeners(): string[] {\n if (!this._dotLottieCore) return [];\n\n const listenersVector = this._dotLottieCore.stateMachineFrameworkSetup();\n\n const listeners = [];\n\n for (let i = 0; i < listenersVector.size(); i += 1) {\n listeners.push(listenersVector.get(i) as string);\n }\n\n return listeners;\n }\n\n private _setupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this._dotLottieCore !== null && this.isLoaded) {\n const listeners = this.getStateMachineListeners();\n\n if (listeners.includes('PointerUp')) {\n this._canvas.addEventListener('pointerup', this._onPointerUp.bind(this));\n }\n\n if (listeners.includes('PointerDown')) {\n this._canvas.addEventListener('pointerdown', this._onPointerDown.bind(this));\n }\n\n if (listeners.includes('PointerMove')) {\n this._canvas.addEventListener('pointermove', this._onPointerMove.bind(this));\n }\n\n if (listeners.includes('PointerEnter')) {\n this._canvas.addEventListener('pointerenter', this._onPointerEnter.bind(this));\n }\n\n if (listeners.includes('PointerExit')) {\n this._canvas.addEventListener('pointerleave', this._onPointerLeave.bind(this));\n }\n\n if (listeners.includes('Complete')) {\n this.addEventListener('complete', this._onComplete.bind(this));\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.removeEventListener('pointerup', this._onPointerUp.bind(this));\n this._canvas.removeEventListener('pointerdown', this._onPointerDown.bind(this));\n this._canvas.removeEventListener('pointermove', this._onPointerMove.bind(this));\n this._canvas.removeEventListener('pointerenter', this._onPointerEnter.bind(this));\n this._canvas.removeEventListener('pointerleave', this._onPointerLeave.bind(this));\n this.removeEventListener('complete', this._onComplete.bind(this));\n }\n }\n\n public loadStateMachineData(stateMachineData: string): boolean {\n return this._dotLottieCore?.loadStateMachineData(stateMachineData) ?? false;\n }\n\n public animationSize(): { height: number; width: number } {\n const width = this._dotLottieCore?.animationSize().get(0) ?? 0;\n const height = this._dotLottieCore?.animationSize().get(1) ?? 0;\n\n return {\n width,\n height,\n };\n }\n\n public setStateMachineBooleanContext(name: string, value: boolean): boolean {\n return this._dotLottieCore?.setStateMachineBooleanContext(name, value) ?? false;\n }\n\n public setStateMachineNumericContext(name: string, value: number): boolean {\n return this._dotLottieCore?.setStateMachineNumericContext(name, value) ?? false;\n }\n\n public setStateMachineStringContext(name: string, value: string): boolean {\n return this._dotLottieCore?.setStateMachineStringContext(name, value) ?? false;\n }\n}\n","/**\n * This is a worker script for dotlottie.\n * Do not modify this file directly.\n * As it's generated by the build process.\n */\n \nvar $n=Object.defineProperty;var kn=(s,n,r)=>n in s?$n(s,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[n]=r;var I=(s,n,r)=>kn(s,typeof n!=\"symbol\"?n+\"\":n,r);var Xe=class{requestAnimationFrame(n){return requestAnimationFrame(n)}cancelAnimationFrame(n){cancelAnimationFrame(n);}},Ze=class{constructor(){I(this,\"_lastHandleId\",0);I(this,\"_lastImmediate\",null);}requestAnimationFrame(n){return this._lastHandleId>=Number.MAX_SAFE_INTEGER&&(this._lastHandleId=0),this._lastHandleId+=1,this._lastImmediate=setImmediate(()=>{n(Date.now());}),this._lastHandleId}cancelAnimationFrame(n){this._lastImmediate&&clearImmediate(this._lastImmediate);}},Ie=class{constructor(){I(this,\"_strategy\");this._strategy=typeof requestAnimationFrame==\"function\"?new Xe:new Ze;}requestAnimationFrame(n){return this._strategy.requestAnimationFrame(n)}cancelAnimationFrame(n){this._strategy.cancelAnimationFrame(n);}};var te=typeof window<\"u\"&&typeof window.document<\"u\";var xe=new Uint8Array([80,75,3,4]),jt=[\"v\",\"ip\",\"op\",\"layers\",\"fr\",\"w\",\"h\"];var fe={name:\"@lottiefiles/dotlottie-web\",version:\"0.29.2\",type:\"module\",description:\"Lottie and DotLottie player for the web\",repository:{type:\"git\",url:\"git+https://github.com/LottieFiles/dotlottie-web.git\",directory:\"packages/web\"},homepage:\"https://github.com/LottieFiles/dotlottie-web#readme\",bugs:\"https://github.com/LottieFiles/dotlottie-web/issues\",author:\"LottieFiles\",contributors:[\"Abdelrahman Ashraf <a.theashraf@gmail.com>\"],license:\"MIT\",main:\"dist/index.cjs\",module:\"dist/index.js\",types:\"dist/index.d.ts\",files:[\"dist\"],keywords:[\"dotlottie\",\"lottie\",\"player\",\"animation\",\"web\",\"canvas\",\"javascript\",\"thorvg\"],scripts:{build:\"tsup\",dev:\"tsup --watch\",lint:\"eslint --fix .\",\"stats:eslint\":\"cross-env TIMING=1 eslint .\",\"stats:ts\":\"tsc -p tsconfig.build.json --extendedDiagnostics\",test:\"vitest run --browser.headless\",\"test:coverage\":\"vitest run --browser.headless --coverage\",\"test:watch\":\"vitest\",\"type-check\":\"tsc --noEmit\"},devDependencies:{\"@types/node\":\"^20.14.11\",\"@vitest/browser\":\"^2.0.3\",\"@vitest/coverage-istanbul\":\"^2.0.3\",\"cross-env\":\"7.0.3\",playwright:\"^1.45.2\",tsup:\"8.1.0\",typescript:\"5.0.4\",vitest:\"^2.0.3\"},publishConfig:{access:\"public\"}};var On=(()=>{var s=typeof document<\"u\"?document.currentScript?.src:void 0;return function(n={}){var r=n,c,_,$=new Promise((e,t)=>{c=e,_=t;}),U=Object.assign({},r),V=\"./this.program\",j=\"\";typeof document<\"u\"&&document.currentScript&&(j=document.currentScript.src),s&&(j=s),j.startsWith(\"blob:\")?j=\"\":j=j.substr(0,j.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1);var Nt=r.print||console.log.bind(console),Z=r.printErr||console.error.bind(console);Object.assign(r,U),U=null,r.thisProgram&&(V=r.thisProgram);var ne;r.wasmBinary&&(ne=r.wasmBinary);var ve,at=!1,Y,b,Q,re,P,L,ot,it;function st(){var e=ve.buffer;r.HEAP8=Y=new Int8Array(e),r.HEAP16=Q=new Int16Array(e),r.HEAPU8=b=new Uint8Array(e),r.HEAPU16=re=new Uint16Array(e),r.HEAP32=P=new Int32Array(e),r.HEAPU32=L=new Uint32Array(e),r.HEAPF32=ot=new Float32Array(e),r.HEAPF64=it=new Float64Array(e);}var lt=[],dt=[],ct=[];function Vt(){var e=r.preRun.shift();lt.unshift(e);}var J=0,ae=null;function ye(e){throw r.onAbort?.(e),e=\"Aborted(\"+e+\")\",Z(e),at=!0,e=new WebAssembly.RuntimeError(e+\". Build with -sASSERTIONS for more info.\"),_(e),e}var ut=e=>e.startsWith(\"data:application/octet-stream;base64,\"),q;if(q=\"DotLottiePlayer.wasm\",!ut(q)){var ht=q;q=r.locateFile?r.locateFile(ht,j):j+ht;}function pt(e){if(e==q&&ne)return new Uint8Array(ne);throw \"both async and sync fetching of the wasm failed\"}function Yt(e){return ne||typeof fetch!=\"function\"?Promise.resolve().then(()=>pt(e)):fetch(e,{credentials:\"same-origin\"}).then(t=>{if(!t.ok)throw `failed to load wasm binary file at '${e}'`;return t.arrayBuffer()}).catch(()=>pt(e))}function ft(e,t,a){return Yt(e).then(o=>WebAssembly.instantiate(o,t)).then(a,o=>{Z(`failed to asynchronously prepare wasm: ${o}`),ye(o);})}function Jt(e,t){var a=q;return ne||typeof WebAssembly.instantiateStreaming!=\"function\"||ut(a)||typeof fetch!=\"function\"?ft(a,e,t):fetch(a,{credentials:\"same-origin\"}).then(o=>WebAssembly.instantiateStreaming(o,e).then(t,function(i){return Z(`wasm streaming compile failed: ${i}`),Z(\"falling back to ArrayBuffer instantiation\"),ft(a,e,t)}))}var Te=e=>{for(;0<e.length;)e.shift()(r);},mt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,G=(e,t,a)=>{var o=t+a;for(a=t;e[a]&&!(a>=o);)++a;if(16<a-t&&e.buffer&&mt)return mt.decode(e.subarray(t,a));for(o=\"\";t<a;){var i=e[t++];if(i&128){var l=e[t++]&63;if((i&224)==192)o+=String.fromCharCode((i&31)<<6|l);else {var h=e[t++]&63;i=(i&240)==224?(i&15)<<12|l<<6|h:(i&7)<<18|l<<12|h<<6|e[t++]&63,65536>i?o+=String.fromCharCode(i):(i-=65536,o+=String.fromCharCode(55296|i>>10,56320|i&1023));}}else o+=String.fromCharCode(i);}return o};class Gt{constructor(t){this.ya=t-24;}}var vt=0,yt=e=>{for(var t=0,a=0;a<e.length;++a){var o=e.charCodeAt(a);127>=o?t++:2047>=o?t+=2:55296<=o&&57343>=o?(t+=4,++a):t+=3;}return t},gt=(e,t,a,o)=>{if(0<o){o=a+o-1;for(var i=0;i<e.length;++i){var l=e.charCodeAt(i);if(55296<=l&&57343>=l){var h=e.charCodeAt(++i);l=65536+((l&1023)<<10)|h&1023;}if(127>=l){if(a>=o)break;t[a++]=l;}else {if(2047>=l){if(a+1>=o)break;t[a++]=192|l>>6;}else {if(65535>=l){if(a+2>=o)break;t[a++]=224|l>>12;}else {if(a+3>=o)break;t[a++]=240|l>>18,t[a++]=128|l>>12&63;}t[a++]=128|l>>6&63;}t[a++]=128|l&63;}}t[a]=0;}},ge={},Se=e=>{for(;e.length;){var t=e.pop();e.pop()(t);}};function oe(e){return this.fromWireType(L[e>>2])}var ee={},K={},we={},ie,H=(e,t,a)=>{function o(u){if(u=a(u),u.length!==e.length)throw new ie(\"Mismatched type converter count\");for(var f=0;f<e.length;++f)k(e[f],u[f]);}e.forEach(function(u){we[u]=t;});var i=Array(t.length),l=[],h=0;t.forEach((u,f)=>{K.hasOwnProperty(u)?i[f]=K[u]:(l.push(u),ee.hasOwnProperty(u)||(ee[u]=[]),ee[u].push(()=>{i[f]=K[u],++h,h===l.length&&o(i);}));}),l.length===0&&o(i);},wt,A=e=>{for(var t=\"\";b[e];)t+=wt[b[e++]];return t},g;function Xt(e,t,a={}){var o=t.name;if(!e)throw new g(`type \"${o}\" must have a positive integer typeid pointer`);if(K.hasOwnProperty(e)){if(a.ib)return;throw new g(`Cannot register type '${o}' twice`)}K[e]=t,delete we[e],ee.hasOwnProperty(e)&&(t=ee[e],delete ee[e],t.forEach(i=>i()));}function k(e,t,a={}){if(!(\"argPackAdvance\"in t))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");return Xt(e,t,a)}var Re=e=>{throw new g(e.ma.za.xa.name+\" instance already deleted\")},$e=!1,_t=()=>{},Et=(e,t,a)=>t===a?e:a.Ca===void 0?null:(e=Et(e,t,a.Ca),e===null?null:a.ab(e)),Ct={},se=[],ke=()=>{for(;se.length;){var e=se.pop();e.ma.Ka=!1,e.delete();}},le,de={},Zt=(e,t)=>{if(t===void 0)throw new g(\"ptr should not be undefined\");for(;e.Ca;)t=e.Na(t),e=e.Ca;return de[t]},_e=(e,t)=>{if(!t.za||!t.ya)throw new ie(\"makeClassHandle requires ptr and ptrType\");if(!!t.Da!=!!t.Aa)throw new ie(\"Both smartPtrType and smartPtr must be specified\");return t.count={value:1},ce(Object.create(e,{ma:{value:t,writable:!0}}))},ce=e=>typeof FinalizationRegistry>\"u\"?(ce=t=>t,e):($e=new FinalizationRegistry(t=>{t=t.ma,--t.count.value,t.count.value===0&&(t.Aa?t.Da.Fa(t.Aa):t.za.xa.Fa(t.ya));}),ce=t=>{var a=t.ma;return a.Aa&&$e.register(t,{ma:a},t),t},_t=t=>{$e.unregister(t);},ce(e));function Ee(){}var ue=(e,t)=>Object.defineProperty(t,\"name\",{value:e}),Mt=(e,t,a)=>{if(e[t].Ba===void 0){var o=e[t];e[t]=function(...i){if(!e[t].Ba.hasOwnProperty(i.length))throw new g(`Function '${a}' called with an invalid number of arguments (${i.length}) - expects one of (${e[t].Ba})!`);return e[t].Ba[i.length].apply(this,i)},e[t].Ba=[],e[t].Ba[o.Oa]=o;}},De=(e,t,a)=>{if(r.hasOwnProperty(e)){if(a===void 0||r[e].Ba!==void 0&&r[e].Ba[a]!==void 0)throw new g(`Cannot register public name '${e}' twice`);if(Mt(r,e,e),r.hasOwnProperty(a))throw new g(`Cannot register multiple overloads of a function with the same number of arguments (${a})!`);r[e].Ba[a]=t;}else r[e]=t,a!==void 0&&(r[e].vb=a);},Qt=e=>{if(e===void 0)return \"_unknown\";e=e.replace(/[^a-zA-Z0-9_]/g,\"$\");var t=e.charCodeAt(0);return 48<=t&&57>=t?`_${e}`:e};function qt(e,t,a,o,i,l,h,u){this.name=e,this.constructor=t,this.La=a,this.Fa=o,this.Ca=i,this.cb=l,this.Na=h,this.ab=u,this.kb=[];}var Oe=(e,t,a)=>{for(;t!==a;){if(!t.Na)throw new g(`Expected null or instance of ${a.name}, got an instance of ${t.name}`);e=t.Na(e),t=t.Ca;}return e};function en(e,t){if(t===null){if(this.Ta)throw new g(`null is not a valid ${this.name}`);return 0}if(!t.ma)throw new g(`Cannot pass \"${Ne(t)}\" as a ${this.name}`);if(!t.ma.ya)throw new g(`Cannot pass deleted object as a pointer of type ${this.name}`);return Oe(t.ma.ya,t.ma.za.xa,this.xa)}function tn(e,t){if(t===null){if(this.Ta)throw new g(`null is not a valid ${this.name}`);if(this.Qa){var a=this.Ua();return e!==null&&e.push(this.Fa,a),a}return 0}if(!t||!t.ma)throw new g(`Cannot pass \"${Ne(t)}\" as a ${this.name}`);if(!t.ma.ya)throw new g(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Pa&&t.ma.za.Pa)throw new g(`Cannot convert argument of type ${t.ma.Da?t.ma.Da.name:t.ma.za.name} to parameter type ${this.name}`);if(a=Oe(t.ma.ya,t.ma.za.xa,this.xa),this.Qa){if(t.ma.Aa===void 0)throw new g(\"Passing raw pointer to smart pointer is illegal\");switch(this.pb){case 0:if(t.ma.Da===this)a=t.ma.Aa;else throw new g(`Cannot convert argument of type ${t.ma.Da?t.ma.Da.name:t.ma.za.name} to parameter type ${this.name}`);break;case 1:a=t.ma.Aa;break;case 2:if(t.ma.Da===this)a=t.ma.Aa;else {var o=t.clone();a=this.lb(a,Me(()=>o.delete())),e!==null&&e.push(this.Fa,a);}break;default:throw new g(\"Unsupporting sharing policy\")}}return a}function nn(e,t){if(t===null){if(this.Ta)throw new g(`null is not a valid ${this.name}`);return 0}if(!t.ma)throw new g(`Cannot pass \"${Ne(t)}\" as a ${this.name}`);if(!t.ma.ya)throw new g(`Cannot pass deleted object as a pointer of type ${this.name}`);if(t.ma.za.Pa)throw new g(`Cannot convert argument of type ${t.ma.za.name} to parameter type ${this.name}`);return Oe(t.ma.ya,t.ma.za.xa,this.xa)}function he(e,t,a,o,i,l,h,u,f,p,m){this.name=e,this.xa=t,this.Ta=a,this.Pa=o,this.Qa=i,this.jb=l,this.pb=h,this.Za=u,this.Ua=f,this.lb=p,this.Fa=m,i||t.Ca!==void 0?this.toWireType=tn:(this.toWireType=o?en:nn,this.Ea=null);}var Lt=(e,t,a)=>{if(!r.hasOwnProperty(e))throw new ie(\"Replacing nonexistent public symbol\");r[e].Ba!==void 0&&a!==void 0?r[e].Ba[a]=t:(r[e]=t,r[e].Oa=a);},R,rn=(e,t,a=[])=>(e.includes(\"j\")?(e=e.replace(/p/g,\"i\"),t=(0, r[\"dynCall_\"+e])(t,...a)):t=R.get(t)(...a),t),an=(e,t)=>(...a)=>rn(e,t,a),T=(e,t)=>{e=A(e);var a=e.includes(\"j\")?an(e,t):R.get(t);if(typeof a!=\"function\")throw new g(`unknown function pointer with signature ${e}: ${t}`);return a},bt,Ft=e=>{e=kt(e);var t=A(e);return W(e),t},Ce=(e,t)=>{function a(l){i[l]||K[l]||(we[l]?we[l].forEach(a):(o.push(l),i[l]=!0));}var o=[],i={};throw t.forEach(a),new bt(`${e}: `+o.map(Ft).join([\", \"]))},ze=(e,t)=>{for(var a=[],o=0;o<e;o++)a.push(L[t+4*o>>2]);return a};function on(e){for(var t=1;t<e.length;++t)if(e[t]!==null&&e[t].Ea===void 0)return !0;return !1}function je(e,t,a,o,i){var l=t.length;if(2>l)throw new g(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var h=t[1]!==null&&a!==null,u=on(t),f=t[0].name!==\"void\",p=l-2,m=Array(p),w=[],C=[];return ue(e,function(...d){if(d.length!==p)throw new g(`function ${e} called with ${d.length} arguments, expected ${p}`);if(C.length=0,w.length=h?2:1,w[0]=i,h){var v=t[1].toWireType(C,this);w[1]=v;}for(var y=0;y<p;++y)m[y]=t[y+2].toWireType(C,d[y]),w.push(m[y]);if(d=o(...w),u)Se(C);else for(y=h?1:2;y<t.length;y++){var x=y===1?v:m[y-2];t[y].Ea!==null&&t[y].Ea(x);}return v=f?t[0].fromWireType(d):void 0,v})}var It=e=>{e=e.trim();let t=e.indexOf(\"(\");return t!==-1?e.substr(0,t):e},Be=[],B=[],We=e=>{9<e&&--B[e+1]===0&&(B[e]=void 0,Be.push(e));},Ue=e=>{if(!e)throw new g(\"Cannot use deleted val. handle = \"+e);return B[e]},Me=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=Be.pop()||B.length;return B[t]=e,B[t+1]=1,t}},xt={name:\"emscripten::val\",fromWireType:e=>{var t=Ue(e);return We(e),t},toWireType:(e,t)=>Me(t),argPackAdvance:8,readValueFromPointer:oe,Ea:null},sn=(e,t,a)=>{switch(t){case 1:return a?function(o){return this.fromWireType(Y[o])}:function(o){return this.fromWireType(b[o])};case 2:return a?function(o){return this.fromWireType(Q[o>>1])}:function(o){return this.fromWireType(re[o>>1])};case 4:return a?function(o){return this.fromWireType(P[o>>2])}:function(o){return this.fromWireType(L[o>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},He=(e,t)=>{var a=K[e];if(a===void 0)throw e=`${t} has unknown type ${Ft(e)}`,new g(e);return a},Ne=e=>{if(e===null)return \"null\";var t=typeof e;return t===\"object\"||t===\"array\"||t===\"function\"?e.toString():\"\"+e},ln=(e,t)=>{switch(t){case 4:return function(a){return this.fromWireType(ot[a>>2])};case 8:return function(a){return this.fromWireType(it[a>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},dn=(e,t,a)=>{switch(t){case 1:return a?o=>Y[o]:o=>b[o];case 2:return a?o=>Q[o>>1]:o=>re[o>>1];case 4:return a?o=>P[o>>2]:o=>L[o>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},At=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0,cn=(e,t)=>{for(var a=e>>1,o=a+t/2;!(a>=o)&&re[a];)++a;if(a<<=1,32<a-e&&At)return At.decode(b.subarray(e,a));for(a=\"\",o=0;!(o>=t/2);++o){var i=Q[e+2*o>>1];if(i==0)break;a+=String.fromCharCode(i);}return a},un=(e,t,a)=>{if(a??(a=2147483647),2>a)return 0;a-=2;var o=t;a=a<2*e.length?a/2:e.length;for(var i=0;i<a;++i)Q[t>>1]=e.charCodeAt(i),t+=2;return Q[t>>1]=0,t-o},hn=e=>2*e.length,pn=(e,t)=>{for(var a=0,o=\"\";!(a>=t/4);){var i=P[e+4*a>>2];if(i==0)break;++a,65536<=i?(i-=65536,o+=String.fromCharCode(55296|i>>10,56320|i&1023)):o+=String.fromCharCode(i);}return o},fn=(e,t,a)=>{if(a??(a=2147483647),4>a)return 0;var o=t;a=o+a-4;for(var i=0;i<e.length;++i){var l=e.charCodeAt(i);if(55296<=l&&57343>=l){var h=e.charCodeAt(++i);l=65536+((l&1023)<<10)|h&1023;}if(P[t>>2]=l,t+=4,t+4>a)break}return P[t>>2]=0,t-o},mn=e=>{for(var t=0,a=0;a<e.length;++a){var o=e.charCodeAt(a);55296<=o&&57343>=o&&++a,t+=4;}return t},Ve=[],vn=e=>{var t=Ve.length;return Ve.push(e),t},yn=(e,t)=>{for(var a=Array(e),o=0;o<e;++o)a[o]=He(L[t+4*o>>2],\"parameter \"+o);return a},gn=Reflect.construct,Ye={},Pt=()=>{if(!Je){var e={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:V||\"./this.program\"},t;for(t in Ye)Ye[t]===void 0?delete e[t]:e[t]=Ye[t];var a=[];for(t in e)a.push(`${t}=${e[t]}`);Je=a;}return Je},Je,wn=[null,[],[]],_n=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return e=>crypto.getRandomValues(e);ye(\"initRandomDevice\");},Tt=e=>(Tt=_n())(e),Le=e=>e%4===0&&(e%100!==0||e%400===0),St=[31,29,31,30,31,30,31,31,30,31,30,31],Rt=[31,28,31,30,31,30,31,31,30,31,30,31];function En(e){var t=Array(yt(e)+1);return gt(e,t,0,t.length),t}var Cn=(e,t,a,o)=>{function i(d,v,y){for(d=typeof d==\"number\"?d.toString():d||\"\";d.length<v;)d=y[0]+d;return d}function l(d,v){return i(d,v,\"0\")}function h(d,v){function y(N){return 0>N?-1:0<N?1:0}var x;return (x=y(d.getFullYear()-v.getFullYear()))===0&&(x=y(d.getMonth()-v.getMonth()))===0&&(x=y(d.getDate()-v.getDate())),x}function u(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function f(d){var v=d.Ia;for(d=new Date(new Date(d.Ja+1900,0,1).getTime());0<v;){var y=d.getMonth(),x=(Le(d.getFullYear())?St:Rt)[y];if(v>x-d.getDate())v-=x-d.getDate()+1,d.setDate(1),11>y?d.setMonth(y+1):(d.setMonth(0),d.setFullYear(d.getFullYear()+1));else {d.setDate(d.getDate()+v);break}}return y=new Date(d.getFullYear()+1,0,4),v=u(new Date(d.getFullYear(),0,4)),y=u(y),0>=h(v,d)?0>=h(y,d)?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var p=L[o+40>>2];o={sb:P[o>>2],rb:P[o+4>>2],Ra:P[o+8>>2],Va:P[o+12>>2],Sa:P[o+16>>2],Ja:P[o+20>>2],Ga:P[o+24>>2],Ia:P[o+28>>2],wb:P[o+32>>2],qb:P[o+36>>2],tb:p&&p?G(b,p):\"\"},a=a?G(b,a):\"\",p={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var m in p)a=a.replace(new RegExp(m,\"g\"),p[m]);var w=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),C=\"January February March April May June July August September October November December\".split(\" \");p={\"%a\":d=>w[d.Ga].substring(0,3),\"%A\":d=>w[d.Ga],\"%b\":d=>C[d.Sa].substring(0,3),\"%B\":d=>C[d.Sa],\"%C\":d=>l((d.Ja+1900)/100|0,2),\"%d\":d=>l(d.Va,2),\"%e\":d=>i(d.Va,2,\" \"),\"%g\":d=>f(d).toString().substring(2),\"%G\":f,\"%H\":d=>l(d.Ra,2),\"%I\":d=>(d=d.Ra,d==0?d=12:12<d&&(d-=12),l(d,2)),\"%j\":d=>{for(var v=0,y=0;y<=d.Sa-1;v+=(Le(d.Ja+1900)?St:Rt)[y++]);return l(d.Va+v,3)},\"%m\":d=>l(d.Sa+1,2),\"%M\":d=>l(d.rb,2),\"%n\":()=>`\n`,\"%p\":d=>0<=d.Ra&&12>d.Ra?\"AM\":\"PM\",\"%S\":d=>l(d.sb,2),\"%t\":()=>\"\t\",\"%u\":d=>d.Ga||7,\"%U\":d=>l(Math.floor((d.Ia+7-d.Ga)/7),2),\"%V\":d=>{var v=Math.floor((d.Ia+7-(d.Ga+6)%7)/7);if(2>=(d.Ga+371-d.Ia-2)%7&&v++,v)v==53&&(y=(d.Ga+371-d.Ia)%7,y==4||y==3&&Le(d.Ja)||(v=1));else {v=52;var y=(d.Ga+7-d.Ia-1)%7;(y==4||y==5&&Le(d.Ja%400-1))&&v++;}return l(v,2)},\"%w\":d=>d.Ga,\"%W\":d=>l(Math.floor((d.Ia+7-(d.Ga+6)%7)/7),2),\"%y\":d=>(d.Ja+1900).toString().substring(2),\"%Y\":d=>d.Ja+1900,\"%z\":d=>{d=d.qb;var v=0<=d;return d=Math.abs(d)/60,(v?\"+\":\"-\")+(\"0000\"+(d/60*100+d%60)).slice(-4)},\"%Z\":d=>d.tb,\"%%\":()=>\"%\"},a=a.replace(/%%/g,\"\\0\\0\");for(m in p)a.includes(m)&&(a=a.replace(new RegExp(m,\"g\"),p[m](o)));return a=a.replace(/\\0\\0/g,\"%\"),m=En(a),m.length>t?0:(Y.set(m,e),m.length-1)};ie=r.InternalError=class extends Error{constructor(e){super(e),this.name=\"InternalError\";}};for(var $t=Array(256),be=0;256>be;++be)$t[be]=String.fromCharCode(be);wt=$t,g=r.BindingError=class extends Error{constructor(e){super(e),this.name=\"BindingError\";}},Object.assign(Ee.prototype,{isAliasOf:function(e){if(!(this instanceof Ee&&e instanceof Ee))return !1;var t=this.ma.za.xa,a=this.ma.ya;e.ma=e.ma;var o=e.ma.za.xa;for(e=e.ma.ya;t.Ca;)a=t.Na(a),t=t.Ca;for(;o.Ca;)e=o.Na(e),o=o.Ca;return t===o&&a===e},clone:function(){if(this.ma.ya||Re(this),this.ma.Ma)return this.ma.count.value+=1,this;var e=ce,t=Object,a=t.create,o=Object.getPrototypeOf(this),i=this.ma;return e=e(a.call(t,o,{ma:{value:{count:i.count,Ka:i.Ka,Ma:i.Ma,ya:i.ya,za:i.za,Aa:i.Aa,Da:i.Da}}})),e.ma.count.value+=1,e.ma.Ka=!1,e},delete(){if(this.ma.ya||Re(this),this.ma.Ka&&!this.ma.Ma)throw new g(\"Object already scheduled for deletion\");_t(this);var e=this.ma;--e.count.value,e.count.value===0&&(e.Aa?e.Da.Fa(e.Aa):e.za.xa.Fa(e.ya)),this.ma.Ma||(this.ma.Aa=void 0,this.ma.ya=void 0);},isDeleted:function(){return !this.ma.ya},deleteLater:function(){if(this.ma.ya||Re(this),this.ma.Ka&&!this.ma.Ma)throw new g(\"Object already scheduled for deletion\");return se.push(this),se.length===1&&le&&le(ke),this.ma.Ka=!0,this}}),r.getInheritedInstanceCount=()=>Object.keys(de).length,r.getLiveInheritedInstances=()=>{var e=[],t;for(t in de)de.hasOwnProperty(t)&&e.push(de[t]);return e},r.flushPendingDeletes=ke,r.setDelayFunction=e=>{le=e,se.length&&le&&le(ke);},Object.assign(he.prototype,{eb(e){return this.Za&&(e=this.Za(e)),e},Xa(e){this.Fa?.(e);},argPackAdvance:8,readValueFromPointer:oe,fromWireType:function(e){function t(){return this.Qa?_e(this.xa.La,{za:this.jb,ya:a,Da:this,Aa:e}):_e(this.xa.La,{za:this,ya:e})}var a=this.eb(e);if(!a)return this.Xa(e),null;var o=Zt(this.xa,a);if(o!==void 0)return o.ma.count.value===0?(o.ma.ya=a,o.ma.Aa=e,o.clone()):(o=o.clone(),this.Xa(e),o);if(o=this.xa.cb(a),o=Ct[o],!o)return t.call(this);o=this.Pa?o.$a:o.pointerType;var i=Et(a,this.xa,o.xa);return i===null?t.call(this):this.Qa?_e(o.xa.La,{za:o,ya:i,Da:this,Aa:e}):_e(o.xa.La,{za:o,ya:i})}}),bt=r.UnboundTypeError=((e,t)=>{var a=ue(t,function(o){this.name=t,this.message=o,o=Error(o).stack,o!==void 0&&(this.stack=this.toString()+`\n`+o.replace(/^Error(:[^\\n]*)?\\n/,\"\"));});return a.prototype=Object.create(e.prototype),a.prototype.constructor=a,a.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},a})(Error,\"UnboundTypeError\"),B.push(0,1,void 0,1,null,1,!0,1,!1,1),r.count_emval_handles=()=>B.length/2-5-Be.length;var Mn={c:(e,t,a,o)=>{ye(`Assertion failed: ${e?G(b,e):\"\"}, at: `+[t?t?G(b,t):\"\":\"unknown filename\",a,o?o?G(b,o):\"\":\"unknown function\"]);},m:(e,t,a)=>{var o=new Gt(e);throw L[o.ya+16>>2]=0,L[o.ya+4>>2]=t,L[o.ya+8>>2]=a,vt=e,vt},B:function(){return 0},P:()=>{},M:()=>{},R:function(){return 0},N:()=>{},A:function(){},O:()=>{},v:e=>{var t=ge[e];delete ge[e];var a=t.Ua,o=t.Fa,i=t.Ya,l=i.map(h=>h.hb).concat(i.map(h=>h.nb));H([e],l,h=>{var u={};return i.forEach((f,p)=>{var m=h[p],w=f.fb,C=f.gb,d=h[p+i.length],v=f.mb,y=f.ob;u[f.bb]={read:x=>m.fromWireType(w(C,x)),write:(x,N)=>{var S=[];v(y,x,d.toWireType(S,N)),Se(S);}};}),[{name:t.name,fromWireType:f=>{var p={},m;for(m in u)p[m]=u[m].read(f);return o(f),p},toWireType:(f,p)=>{for(var m in u)if(!(m in p))throw new TypeError(`Missing field: \"${m}\"`);var w=a();for(m in u)u[m].write(w,p[m]);return f!==null&&f.push(o,w),w},argPackAdvance:8,readValueFromPointer:oe,Ea:o}]});},I:()=>{},Y:(e,t,a,o)=>{t=A(t),k(e,{name:t,fromWireType:function(i){return !!i},toWireType:function(i,l){return l?a:o},argPackAdvance:8,readValueFromPointer:function(i){return this.fromWireType(b[i])},Ea:null});},r:(e,t,a,o,i,l,h,u,f,p,m,w,C)=>{m=A(m),l=T(i,l),u&&(u=T(h,u)),p&&(p=T(f,p)),C=T(w,C);var d=Qt(m);De(d,function(){Ce(`Cannot construct ${m} due to unbound types`,[o]);}),H([e,t,a],o?[o]:[],v=>{if(v=v[0],o)var y=v.xa,x=y.La;else x=Ee.prototype;v=ue(m,function(...Ke){if(Object.getPrototypeOf(this)!==N)throw new g(\"Use 'new' to construct \"+m);if(S.Ha===void 0)throw new g(m+\" has no accessible constructor\");var zt=S.Ha[Ke.length];if(zt===void 0)throw new g(`Tried to invoke ctor of ${m} with invalid number of parameters (${Ke.length}) - expected (${Object.keys(S.Ha).toString()}) parameters instead!`);return zt.apply(this,Ke)});var N=Object.create(x,{constructor:{value:v}});v.prototype=N;var S=new qt(m,v,N,C,y,l,u,p);if(S.Ca){var pe;(pe=S.Ca).Wa??(pe.Wa=[]),S.Ca.Wa.push(S);}return y=new he(m,S,!0,!1,!1),pe=new he(m+\"*\",S,!1,!1,!1),x=new he(m+\" const*\",S,!1,!0,!1),Ct[e]={pointerType:pe,$a:x},Lt(d,v),[y,pe,x]});},q:(e,t,a,o,i,l)=>{var h=ze(t,a);i=T(o,i),H([],[e],u=>{u=u[0];var f=`constructor ${u.name}`;if(u.xa.Ha===void 0&&(u.xa.Ha=[]),u.xa.Ha[t-1]!==void 0)throw new g(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.xa.Ha[t-1]=()=>{Ce(`Cannot construct ${u.name} due to unbound types`,h);},H([],h,p=>(p.splice(1,0,null),u.xa.Ha[t-1]=je(f,p,null,i,l),[])),[]});},f:(e,t,a,o,i,l,h,u)=>{var f=ze(a,o);t=A(t),t=It(t),l=T(i,l),H([],[e],p=>{function m(){Ce(`Cannot call ${w} due to unbound types`,f);}p=p[0];var w=`${p.name}.${t}`;t.startsWith(\"@@\")&&(t=Symbol[t.substring(2)]),u&&p.xa.kb.push(t);var C=p.xa.La,d=C[t];return d===void 0||d.Ba===void 0&&d.className!==p.name&&d.Oa===a-2?(m.Oa=a-2,m.className=p.name,C[t]=m):(Mt(C,t,w),C[t].Ba[a-2]=m),H([],f,v=>(v=je(w,v,p,l,h),C[t].Ba===void 0?(v.Oa=a-2,C[t]=v):C[t].Ba[a-2]=v,[])),[]});},X:e=>k(e,xt),x:(e,t,a,o)=>{function i(){}t=A(t),i.values={},k(e,{name:t,constructor:i,fromWireType:function(l){return this.constructor.values[l]},toWireType:(l,h)=>h.value,argPackAdvance:8,readValueFromPointer:sn(t,a,o),Ea:null}),De(t,i);},k:(e,t,a)=>{var o=He(e,\"enum\");t=A(t),e=o.constructor,o=Object.create(o.constructor.prototype,{value:{value:a},constructor:{value:ue(`${o.name}_${t}`,function(){})}}),e.values[a]=o,e[t]=o;},C:(e,t,a)=>{t=A(t),k(e,{name:t,fromWireType:o=>o,toWireType:(o,i)=>i,argPackAdvance:8,readValueFromPointer:ln(t,a),Ea:null});},E:(e,t,a,o,i,l)=>{var h=ze(t,a);e=A(e),e=It(e),i=T(o,i),De(e,function(){Ce(`Cannot call ${e} due to unbound types`,h);},t-1),H([],h,u=>(Lt(e,je(e,[u[0],null].concat(u.slice(1)),null,i,l),t-1),[]));},l:(e,t,a,o,i)=>{if(t=A(t),i===-1&&(i=4294967295),i=u=>u,o===0){var l=32-8*a;i=u=>u<<l>>>l;}var h=t.includes(\"unsigned\")?function(u,f){return f>>>0}:function(u,f){return f};k(e,{name:t,fromWireType:i,toWireType:h,argPackAdvance:8,readValueFromPointer:dn(t,a,o!==0),Ea:null});},g:(e,t,a)=>{function o(l){return new i(Y.buffer,L[l+4>>2],L[l>>2])}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];a=A(a),k(e,{name:a,fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ib:!0});},w:e=>{k(e,xt);},ca:(e,t,a,o,i,l,h,u,f,p,m,w)=>{a=A(a),l=T(i,l),u=T(h,u),p=T(f,p),w=T(m,w),H([e],[t],C=>(C=C[0],[new he(a,C.xa,!1,!1,!0,C,o,l,u,p,w)]));},D:(e,t)=>{t=A(t);var a=t===\"std::string\";k(e,{name:t,fromWireType:function(o){var i=L[o>>2],l=o+4;if(a)for(var h=l,u=0;u<=i;++u){var f=l+u;if(u==i||b[f]==0){if(h=h?G(b,h,f-h):\"\",p===void 0)var p=h;else p+=\"\\0\",p+=h;h=f+1;}}else {for(p=Array(i),u=0;u<i;++u)p[u]=String.fromCharCode(b[l+u]);p=p.join(\"\");}return W(o),p},toWireType:function(o,i){i instanceof ArrayBuffer&&(i=new Uint8Array(i));var l=typeof i==\"string\";if(!(l||i instanceof Uint8Array||i instanceof Uint8ClampedArray||i instanceof Int8Array))throw new g(\"Cannot pass non-string to std::string\");var h=a&&l?yt(i):i.length,u=Ge(4+h+1),f=u+4;if(L[u>>2]=h,a&&l)gt(i,b,f,h+1);else if(l)for(l=0;l<h;++l){var p=i.charCodeAt(l);if(255<p)throw W(f),new g(\"String has UTF-16 code units that do not fit in 8 bits\");b[f+l]=p;}else for(l=0;l<h;++l)b[f+l]=i[l];return o!==null&&o.push(W,u),u},argPackAdvance:8,readValueFromPointer:oe,Ea(o){W(o);}});},u:(e,t,a)=>{if(a=A(a),t===2)var o=cn,i=un,l=hn,h=u=>re[u>>1];else t===4&&(o=pn,i=fn,l=mn,h=u=>L[u>>2]);k(e,{name:a,fromWireType:u=>{for(var f=L[u>>2],p,m=u+4,w=0;w<=f;++w){var C=u+4+w*t;(w==f||h(C)==0)&&(m=o(m,C-m),p===void 0?p=m:(p+=\"\\0\",p+=m),m=C+t);}return W(u),p},toWireType:(u,f)=>{if(typeof f!=\"string\")throw new g(`Cannot pass non-string to C++ string type ${a}`);var p=l(f),m=Ge(4+p+t);return L[m>>2]=p/t,i(f,m+4,p+t),u!==null&&u.push(W,m),m},argPackAdvance:8,readValueFromPointer:oe,Ea(u){W(u);}});},s:(e,t,a,o,i,l)=>{ge[e]={name:A(t),Ua:T(a,o),Fa:T(i,l),Ya:[]};},j:(e,t,a,o,i,l,h,u,f,p)=>{ge[e].Ya.push({bb:A(t),hb:a,fb:T(o,i),gb:l,nb:h,mb:T(u,f),ob:p});},Z:(e,t)=>{t=A(t),k(e,{ub:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}});},J:()=>{throw 1/0},aa:(e,t,a,o)=>(e=Ve[e],t=Ue(t),e(null,t,a,o)),F:We,$:(e,t,a)=>{var o=yn(e,t),i=o.shift();e--;var l=Array(e);return t=`methodCaller<(${o.map(h=>h.name).join(\", \")}) => ${i.name}>`,vn(ue(t,(h,u,f,p)=>{for(var m=0,w=0;w<e;++w)l[w]=o[w].readValueFromPointer(p+m),m+=o[w].argPackAdvance;return u=a===1?gn(u,l):u.apply(h,l),h=[],u=i.toWireType(h,u),h.length&&(L[f>>2]=Me(h)),u}))},ba:e=>{9<e&&(B[e+1]+=1);},_:e=>{var t=Ue(e);Se(t),We(e);},o:(e,t)=>(e=He(e,\"_emval_take_value\"),e=e.readValueFromPointer(t),Me(e)),W:()=>{ye(\"\");},V:()=>performance.now(),L:e=>{var t=b.length;if(e>>>=0,2147483648<e)return !1;for(var a=1;4>=a;a*=2){var o=t*(1+.2/a);o=Math.min(o,e+100663296);var i=Math;o=Math.max(e,o);e:{i=(i.min.call(i,2147483648,o+(65536-o%65536)%65536)-ve.buffer.byteLength+65535)/65536;try{ve.grow(i),st();var l=1;break e}catch{}l=void 0;}if(l)return !0}return !1},S:(e,t)=>{var a=0;return Pt().forEach((o,i)=>{var l=t+a;for(i=L[e+4*i>>2]=l,l=0;l<o.length;++l)Y[i++]=o.charCodeAt(l);Y[i]=0,a+=o.length+1;}),0},T:(e,t)=>{var a=Pt();L[e>>2]=a.length;var o=0;return a.forEach(i=>o+=i.length+1),L[t>>2]=o,0},t:()=>52,z:()=>52,H:function(){return 70},Q:(e,t,a,o)=>{for(var i=0,l=0;l<a;l++){var h=L[t>>2],u=L[t+4>>2];t+=8;for(var f=0;f<u;f++){var p=b[h+f],m=wn[e];p===0||p===10?((e===1?Nt:Z)(G(m,0)),m.length=0):m.push(p);}i+=u;}return L[o>>2]=i,0},U:(e,t)=>(Tt(b.subarray(e,e+t)),0),i:xn,d:In,e:Fn,p:An,y:Sn,b:Ln,a:bn,h:Tn,n:Pn,G:Rn,K:(e,t,a,o)=>Cn(e,t,a,o)},F=function(){function e(a){return F=a.exports,ve=F.da,st(),R=F.ha,dt.unshift(F.ea),J--,r.monitorRunDependencies?.(J),J==0&&(ae&&(a=ae,ae=null,a())),F}var t={a:Mn};if(J++,r.monitorRunDependencies?.(J),r.instantiateWasm)try{return r.instantiateWasm(t,e)}catch(a){Z(`Module.instantiateWasm callback failed with error: ${a}`),_(a);}return Jt(t,function(a){e(a.instance);}).catch(_),{}}(),Ge=e=>(Ge=F.fa)(e),kt=e=>(kt=F.ga)(e),W=e=>(W=F.ia)(e),D=(e,t)=>(D=F.ja)(e,t),O=e=>(O=F.ka)(e),z=()=>(z=F.la)();r.dynCall_iijj=(e,t,a,o,i,l)=>(r.dynCall_iijj=F.na)(e,t,a,o,i,l),r.dynCall_vijj=(e,t,a,o,i,l)=>(r.dynCall_vijj=F.oa)(e,t,a,o,i,l),r.dynCall_jiii=(e,t,a,o)=>(r.dynCall_jiii=F.pa)(e,t,a,o),r.dynCall_jii=(e,t,a)=>(r.dynCall_jii=F.qa)(e,t,a);var Dt=r.dynCall_viiij=(e,t,a,o,i,l)=>(Dt=r.dynCall_viiij=F.ra)(e,t,a,o,i,l);r.dynCall_jiji=(e,t,a,o,i)=>(r.dynCall_jiji=F.sa)(e,t,a,o,i),r.dynCall_viijii=(e,t,a,o,i,l,h)=>(r.dynCall_viijii=F.ta)(e,t,a,o,i,l,h),r.dynCall_iiiiij=(e,t,a,o,i,l,h)=>(r.dynCall_iiiiij=F.ua)(e,t,a,o,i,l,h),r.dynCall_iiiiijj=(e,t,a,o,i,l,h,u,f)=>(r.dynCall_iiiiijj=F.va)(e,t,a,o,i,l,h,u,f),r.dynCall_iiiiiijj=(e,t,a,o,i,l,h,u,f,p)=>(r.dynCall_iiiiiijj=F.wa)(e,t,a,o,i,l,h,u,f,p);function Ln(e,t){var a=z();try{R.get(e)(t);}catch(o){if(O(a),o!==o+0)throw o;D(1,0);}}function bn(e,t,a){var o=z();try{R.get(e)(t,a);}catch(i){if(O(o),i!==i+0)throw i;D(1,0);}}function Fn(e,t,a,o){var i=z();try{return R.get(e)(t,a,o)}catch(l){if(O(i),l!==l+0)throw l;D(1,0);}}function In(e,t,a){var o=z();try{return R.get(e)(t,a)}catch(i){if(O(o),i!==i+0)throw i;D(1,0);}}function xn(e,t){var a=z();try{return R.get(e)(t)}catch(o){if(O(a),o!==o+0)throw o;D(1,0);}}function An(e,t,a,o,i,l){var h=z();try{return R.get(e)(t,a,o,i,l)}catch(u){if(O(h),u!==u+0)throw u;D(1,0);}}function Pn(e,t,a,o,i){var l=z();try{R.get(e)(t,a,o,i);}catch(h){if(O(l),h!==h+0)throw h;D(1,0);}}function Tn(e,t,a,o){var i=z();try{R.get(e)(t,a,o);}catch(l){if(O(i),l!==l+0)throw l;D(1,0);}}function Sn(e){var t=z();try{R.get(e)();}catch(a){if(O(t),a!==a+0)throw a;D(1,0);}}function Rn(e,t,a,o,i,l){var h=z();try{Dt(e,t,a,o,i,l);}catch(u){if(O(h),u!==u+0)throw u;D(1,0);}}var Fe;ae=function e(){Fe||Ot(),Fe||(ae=e);};function Ot(){function e(){if(!Fe&&(Fe=!0,r.calledRun=!0,!at)){if(Te(dt),c(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;){var t=r.postRun.shift();ct.unshift(t);}Te(ct);}}if(!(0<J)){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)Vt();Te(lt),0<J||(r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\");},1),e();},1)):e());}}if(r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);0<r.preInit.length;)r.preInit.pop()();return Ot(),$}})(),Bt=On;var X=class{constructor(){throw new Error(\"RendererLoader is a static class and cannot be instantiated.\")}static async _tryLoad(n){return await Bt({locateFile:()=>n})}static async _loadWithBackup(){return this._ModulePromise||(this._ModulePromise=this._tryLoad(this._wasmURL).catch(async n=>{let r=`https://unpkg.com/${fe.name}@${fe.version}/dist/dotlottie-player.wasm`;console.warn(`Primary WASM load failed from ${this._wasmURL}. Error: ${n.message}`),console.warn(`Attempting to load WASM from backup URL: ${r}`);try{return await this._tryLoad(r)}catch(c){throw console.error(`Primary WASM URL failed: ${n.message}`),console.error(`Backup WASM URL failed: ${c.message}`),new Error(\"WASM loading failed from all sources.\")}})),this._ModulePromise}static async load(){return this._loadWithBackup()}static setWasmUrl(n){this._wasmURL=n,this._ModulePromise=null;}};I(X,\"_ModulePromise\",null),I(X,\"_wasmURL\",`https://cdn.jsdelivr.net/npm/${fe.name}@${fe.version}/dist/dotlottie-player.wasm`);var Ae=class{constructor(){I(this,\"_eventListeners\",new Map);}addEventListener(n,r){let c=this._eventListeners.get(n);c||(c=new Set,this._eventListeners.set(n,c)),c.add(r);}removeEventListener(n,r){let c=this._eventListeners.get(n);c&&(r?(c.delete(r),c.size===0&&this._eventListeners.delete(n)):this._eventListeners.delete(n));}dispatch(n){this._eventListeners.get(n.type)?.forEach(c=>c(n));}removeAllEventListeners(){this._eventListeners.clear();}};function zn(s){return /^#([\\da-f]{6}|[\\da-f]{8})$/iu.test(s)}function Ut(s){if(!zn(s))return 0;let n=s.replace(\"#\",\"\");return n=n.length===6?`${n}ff`:n,parseInt(n,16)}function Qe(s){if(s.byteLength<4)return !1;let n=new Uint8Array(s.slice(0,xe.byteLength));for(let r=0;r<xe.length;r+=1)if(xe[r]!==n[r])return !1;return !0}function Wt(s){return jt.every(n=>Object.prototype.hasOwnProperty.call(s,n))}function qe(s){if(typeof s==\"string\")try{return Wt(JSON.parse(s))}catch{return !1}else return Wt(s)}var et=(s,n)=>s===\"reverse\"?n.Mode.Reverse:s===\"bounce\"?n.Mode.Bounce:s===\"reverse-bounce\"?n.Mode.ReverseBounce:n.Mode.Forward,tt=(s,n)=>s===\"contain\"?n.Fit.Contain:s===\"cover\"?n.Fit.Cover:s===\"fill\"?n.Fit.Fill:s===\"fit-height\"?n.Fit.FitHeight:s===\"fit-width\"?n.Fit.FitWidth:n.Fit.None,nt=(s,n)=>{let r=new n.VectorFloat;return r.push_back(s[0]),r.push_back(s[1]),r},rt=(s,n)=>{let r=new n.VectorFloat;return s.length!==2||(r.push_back(s[0]),r.push_back(s[1])),r},M=class M{constructor(n){I(this,\"_canvas\");I(this,\"_context\",null);I(this,\"_eventManager\");I(this,\"_animationFrameId\",null);I(this,\"_frameManager\");I(this,\"_dotLottieCore\",null);I(this,\"_renderConfig\",{});I(this,\"_isFrozen\",!1);I(this,\"_backgroundColor\",null);this._canvas=n.canvas,this._context=this._canvas.getContext(\"2d\"),this._eventManager=new Ae,this._frameManager=new Ie,this._renderConfig=n.renderConfig??{},X.load().then(r=>{M._wasmModule=r,this._dotLottieCore=new r.DotLottiePlayer({autoplay:n.autoplay??!1,backgroundColor:0,loopAnimation:n.loop??!1,mode:et(n.mode??\"forward\",r),segment:rt(n.segment??[],r),speed:n.speed??1,useFrameInterpolation:n.useFrameInterpolation??!0,marker:n.marker??\"\",layout:n.layout?{align:nt(n.layout.align,r),fit:tt(n.layout.fit,r)}:r.createDefaultLayout()}),this._eventManager.dispatch({type:\"ready\"}),n.data?this._loadFromData(n.data):n.src&&this._loadFromSrc(n.src),n.backgroundColor&&this.setBackgroundColor(n.backgroundColor);}).catch(r=>{this._eventManager.dispatch({type:\"loadError\",error:new Error(`Failed to load wasm module: ${r}`)});});}_dispatchError(n){console.error(n),this._eventManager.dispatch({type:\"loadError\",error:new Error(n)});}async _fetchData(n){let r=await fetch(n);if(!r.ok)throw new Error(`Failed to fetch animation data from URL: ${n}. ${r.status}: ${r.statusText}`);let c=await r.arrayBuffer();return Qe(c)?c:new TextDecoder().decode(c)}_loadFromData(n){if(this._dotLottieCore===null)return;let r=this._canvas.width,c=this._canvas.height,_=!1;if(typeof n==\"string\"){if(!qe(n)){this._dispatchError(\"Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.\");return}_=this._dotLottieCore.loadAnimationData(n,r,c);}else if(n instanceof ArrayBuffer){if(!Qe(n)){this._dispatchError(\"Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.\");return}_=this._dotLottieCore.loadDotLottieData(n,r,c);}else if(typeof n==\"object\"){if(!qe(n)){this._dispatchError(\"Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.\");return}_=this._dotLottieCore.loadAnimationData(JSON.stringify(n),r,c);}else {this._dispatchError(`Unsupported data type for animation data. Expected: \n - string (Lottie JSON),\n - ArrayBuffer (dotLottie),\n - object (Lottie JSON). \n Received: ${typeof n}`);return}_?(this._eventManager.dispatch({type:\"load\"}),te&&this.resize(),this._eventManager.dispatch({type:\"frame\",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._dotLottieCore.config().autoplay&&(this._dotLottieCore.play(),this._dotLottieCore.isPlaying()?(this._eventManager.dispatch({type:\"play\"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this))):console.error(\"something went wrong, the animation was suppose to autoplay\"))):this._dispatchError(\"Failed to load animation data\");}_loadFromSrc(n){this._fetchData(n).then(r=>this._loadFromData(r)).catch(r=>this._dispatchError(`Failed to load animation data from URL: ${n}. ${r}`));}get activeAnimationId(){return this._dotLottieCore?.activeAnimationId()}get activeThemeId(){return this._dotLottieCore?.activeThemeId()}get layout(){let n=this._dotLottieCore?.config().layout;if(n)return {align:[n.align.get(0),n.align.get(1)],fit:(()=>{switch(n.fit){case M._wasmModule?.Fit.Contain:return \"contain\";case M._wasmModule?.Fit.Cover:return \"cover\";case M._wasmModule?.Fit.Fill:return \"fill\";case M._wasmModule?.Fit.FitHeight:return \"fit-height\";case M._wasmModule?.Fit.FitWidth:return \"fit-width\";case M._wasmModule?.Fit.None:return \"none\";default:return \"contain\"}})()}}get marker(){return this._dotLottieCore?.config().marker}get manifest(){try{let n=this._dotLottieCore?.manifestString();if(this._dotLottieCore===null||!n)return null;let r=JSON.parse(n);return Object.keys(r).length===0?null:r}catch{return null}}get renderConfig(){return this._renderConfig}get segment(){let n=this._dotLottieCore?.config().segment;if(n&&n.size()===2)return [n.get(0),n.get(1)]}get loop(){return this._dotLottieCore?.config().loopAnimation??!1}get mode(){let n=this._dotLottieCore?.config().mode;return n===M._wasmModule?.Mode.Reverse?\"reverse\":n===M._wasmModule?.Mode.Bounce?\"bounce\":n===M._wasmModule?.Mode.ReverseBounce?\"reverse-bounce\":\"forward\"}get isFrozen(){return this._isFrozen}get backgroundColor(){return this._backgroundColor??\"\"}get autoplay(){return this._dotLottieCore?.config().autoplay??!1}get useFrameInterpolation(){return this._dotLottieCore?.config().useFrameInterpolation??!1}get speed(){return this._dotLottieCore?.config().speed??0}get isReady(){return this._dotLottieCore!==null}get isLoaded(){return this._dotLottieCore?.isLoaded()??!1}get isPlaying(){return this._dotLottieCore?.isPlaying()??!1}get isPaused(){return this._dotLottieCore?.isPaused()??!1}get isStopped(){return this._dotLottieCore?.isStopped()??!1}get currentFrame(){return this._dotLottieCore?.currentFrame()??0}get loopCount(){return this._dotLottieCore?.loopCount()??0}get totalFrames(){return this._dotLottieCore?.totalFrames()??0}get duration(){return this._dotLottieCore?.duration()??0}get segmentDuration(){return this._dotLottieCore?.segmentDuration()??0}get canvas(){return this._canvas}load(n){this._dotLottieCore===null||M._wasmModule===null||(this._dotLottieCore.setConfig({autoplay:n.autoplay??!1,backgroundColor:0,loopAnimation:n.loop??!1,mode:et(n.mode??\"forward\",M._wasmModule),segment:rt(n.segment??[],M._wasmModule),speed:n.speed??1,useFrameInterpolation:n.useFrameInterpolation??!0,marker:n.marker??\"\",layout:n.layout?{align:nt(n.layout.align,M._wasmModule),fit:tt(n.layout.fit,M._wasmModule)}:M._wasmModule.createDefaultLayout()}),n.data?this._loadFromData(n.data):n.src&&this._loadFromSrc(n.src),this.setBackgroundColor(n.backgroundColor??\"\"));}_render(){if(this._dotLottieCore===null||this._context===null)return !1;if(this._dotLottieCore.render()){let r=this._dotLottieCore.buffer(),c=new Uint8ClampedArray(r,0,this._canvas.width*this._canvas.height*4),_=null;return typeof ImageData>\"u\"?(_=this._context.createImageData(this._canvas.width,this._canvas.height),_.data.set(c)):_=new ImageData(c,this._canvas.width,this._canvas.height),this._context.putImageData(_,0,0),this._eventManager.dispatch({type:\"render\",currentFrame:this._dotLottieCore.currentFrame()}),!0}return !1}_draw(){if(this._dotLottieCore===null||this._context===null||!this._dotLottieCore.isPlaying())return;let n=this._dotLottieCore.requestFrame();this._dotLottieCore.setFrame(n)&&(this._eventManager.dispatch({type:\"frame\",currentFrame:this._dotLottieCore.currentFrame()}),this._render()&&this._dotLottieCore.isComplete()&&(this._dotLottieCore.config().loopAnimation?this._eventManager.dispatch({type:\"loop\",loopCount:this._dotLottieCore.loopCount()}):this._eventManager.dispatch({type:\"complete\"}))),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this));}play(){if(this._dotLottieCore===null)return;let n=this._dotLottieCore.play();this._isFrozen=!1,n&&(this._eventManager.dispatch({type:\"play\"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)));}pause(){if(this._dotLottieCore===null)return;this._dotLottieCore.pause()&&this._eventManager.dispatch({type:\"pause\"});}stop(){if(this._dotLottieCore===null)return;this._dotLottieCore.stop()&&(this._eventManager.dispatch({type:\"frame\",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._eventManager.dispatch({type:\"stop\"}));}setFrame(n){if(this._dotLottieCore===null||n<0||n>this._dotLottieCore.totalFrames())return;this._dotLottieCore.seek(n)&&(this._eventManager.dispatch({type:\"frame\",currentFrame:this._dotLottieCore.currentFrame()}),this._render());}setSpeed(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),speed:n});}setBackgroundColor(n){this._dotLottieCore!==null&&(te&&this._canvas instanceof HTMLCanvasElement?this._canvas.style.backgroundColor=n:this._dotLottieCore.setConfig({...this._dotLottieCore.config(),backgroundColor:Ut(n)}),this._backgroundColor=n);}setLoop(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),loopAnimation:n});}setUseFrameInterpolation(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),useFrameInterpolation:n});}addEventListener(n,r){this._eventManager.addEventListener(n,r);}removeEventListener(n,r){this._eventManager.removeEventListener(n,r);}destroy(){this._dotLottieCore?.delete(),this._dotLottieCore=null,this._context=null,this._eventManager.dispatch({type:\"destroy\"}),this._eventManager.removeAllEventListeners(),this._cleanupStateMachineListeners();}freeze(){this._animationFrameId!==null&&(this._frameManager.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null,this._isFrozen=!0,this._eventManager.dispatch({type:\"freeze\"}));}unfreeze(){this._animationFrameId===null&&(this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)),this._isFrozen=!1,this._eventManager.dispatch({type:\"unfreeze\"}));}resize(){if(te&&this._canvas instanceof HTMLCanvasElement){let r=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,{height:c,width:_}=this._canvas.getBoundingClientRect();this._canvas.width=_*r,this._canvas.height=c*r;}this._dotLottieCore?.resize(this._canvas.width,this._canvas.height)&&this._render();}setSegment(n,r){this._dotLottieCore===null||M._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),segment:rt([n,r],M._wasmModule)});}setMode(n){this._dotLottieCore===null||M._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),mode:et(n,M._wasmModule)});}setRenderConfig(n){this._renderConfig=n;}loadAnimation(n){if(this._dotLottieCore===null||this._dotLottieCore.activeAnimationId()===n)return;this._dotLottieCore.loadAnimation(n,this._canvas.width,this._canvas.height)?(this._eventManager.dispatch({type:\"load\"}),this.resize()):this._eventManager.dispatch({type:\"loadError\",error:new Error(`Failed to animation :${n}`)});}setMarker(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),marker:n});}markers(){let n=this._dotLottieCore?.markers();if(n){let r=[];for(let c=0;c<n.size();c+=1){let _=n.get(c);r.push({name:_.name,time:_.time,duration:_.duration});}return r}return []}loadTheme(n){if(this._dotLottieCore===null)return !1;let r=this._dotLottieCore.loadTheme(n);return this._render(),r}loadThemeData(n){if(this._dotLottieCore===null)return !1;let r=this._dotLottieCore.loadThemeData(n);return this._render(),r}setLayout(n){this._dotLottieCore===null||M._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),layout:{align:nt(n.align,M._wasmModule),fit:tt(n.fit,M._wasmModule)}});}setViewport(n,r,c,_){return this._dotLottieCore===null?!1:this._dotLottieCore.setViewport(n,r,c,_)}static setWasmUrl(n){X.setWasmUrl(n);}loadStateMachine(n){return this._dotLottieCore?.loadStateMachine(n)??!1}startStateMachine(){let n=this._dotLottieCore?.startStateMachine()??!1;return n&&this._setupStateMachineListeners(),n}stopStateMachine(){let n=this._dotLottieCore?.stopStateMachine()??!1;return n&&this._cleanupStateMachineListeners(),n}_getPointerPosition(n){let r=this._canvas.getBoundingClientRect(),c=this._canvas.width/r.width,_=this._canvas.height/r.height,$=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,U=(n.clientX-r.left)*c/$,V=(n.clientY-r.top)*_/$;return {x:U,y:V}}_onPointerUp(n){let{x:r,y:c}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerUp: ${r} ${c}`);}_onPointerDown(n){let{x:r,y:c}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerDown: ${r} ${c}`);}_onPointerMove(n){let{x:r,y:c}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerMove: ${r} ${c}`);}_onPointerEnter(n){let{x:r,y:c}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerEnter: ${r} ${c}`);}_onPointerLeave(n){let{x:r,y:c}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerExit: ${r} ${c}`);}_onComplete(){this.postStateMachineEvent(\"OnComplete\");}postStateMachineEvent(n){return this._dotLottieCore?.postEventPayload(n)??!1}getStateMachineListeners(){if(!this._dotLottieCore)return [];let n=this._dotLottieCore.stateMachineFrameworkSetup(),r=[];for(let c=0;c<n.size();c+=1)r.push(n.get(c));return r}_setupStateMachineListeners(){if(te&&this._canvas instanceof HTMLCanvasElement&&this._dotLottieCore!==null&&this.isLoaded){let n=this.getStateMachineListeners();n.includes(\"PointerUp\")&&this._canvas.addEventListener(\"pointerup\",this._onPointerUp.bind(this)),n.includes(\"PointerDown\")&&this._canvas.addEventListener(\"pointerdown\",this._onPointerDown.bind(this)),n.includes(\"PointerMove\")&&this._canvas.addEventListener(\"pointermove\",this._onPointerMove.bind(this)),n.includes(\"PointerEnter\")&&this._canvas.addEventListener(\"pointerenter\",this._onPointerEnter.bind(this)),n.includes(\"PointerExit\")&&this._canvas.addEventListener(\"pointerleave\",this._onPointerLeave.bind(this)),n.includes(\"Complete\")&&this.addEventListener(\"complete\",this._onComplete.bind(this));}}_cleanupStateMachineListeners(){te&&this._canvas instanceof HTMLCanvasElement&&(this._canvas.removeEventListener(\"pointerup\",this._onPointerUp.bind(this)),this._canvas.removeEventListener(\"pointerdown\",this._onPointerDown.bind(this)),this._canvas.removeEventListener(\"pointermove\",this._onPointerMove.bind(this)),this._canvas.removeEventListener(\"pointerenter\",this._onPointerEnter.bind(this)),this._canvas.removeEventListener(\"pointerleave\",this._onPointerLeave.bind(this)),this.removeEventListener(\"complete\",this._onComplete.bind(this)));}loadStateMachineData(n){return this._dotLottieCore?.loadStateMachineData(n)??!1}animationSize(){let n=this._dotLottieCore?.animationSize().get(0)??0,r=this._dotLottieCore?.animationSize().get(1)??0;return {width:n,height:r}}setStateMachineBooleanContext(n,r){return this._dotLottieCore?.setStateMachineBooleanContext(n,r)??!1}setStateMachineNumericContext(n,r){return this._dotLottieCore?.setStateMachineNumericContext(n,r)??!1}setStateMachineStringContext(n,r){return this._dotLottieCore?.setStateMachineStringContext(n,r)??!1}};I(M,\"_wasmModule\",null);var me=M;var E=new Map,jn={ready:s=>n=>{let r={id:\"\",method:\"onReady\",result:{instanceId:s,event:n}};self.postMessage(r);},complete:s=>n=>{let r={id:\"\",method:\"onComplete\",result:{instanceId:s,event:n}};self.postMessage(r);},load:s=>n=>{let c={id:\"\",method:\"onLoad\",result:{instanceId:s,event:n}};self.postMessage(c);},loadError:s=>n=>{let c={id:\"\",method:\"onLoadError\",result:{instanceId:s,event:n}};self.postMessage(c);},loop:s=>n=>{let c={id:\"\",method:\"onLoop\",result:{instanceId:s,event:n}};self.postMessage(c);},play:s=>n=>{let c={id:\"\",method:\"onPlay\",result:{instanceId:s,event:n}};self.postMessage(c);},pause:s=>n=>{let c={id:\"\",method:\"onPause\",result:{instanceId:s,event:n}};self.postMessage(c);},stop:s=>n=>{let c={id:\"\",method:\"onStop\",result:{instanceId:s,event:n}};self.postMessage(c);},frame:s=>n=>{let c={id:\"\",method:\"onFrame\",result:{instanceId:s,event:n}};self.postMessage(c);},render:s=>n=>{let c={id:\"\",method:\"onRender\",result:{instanceId:s,event:n}};self.postMessage(c);},freeze:s=>n=>{let c={id:\"\",method:\"onFreeze\",result:{instanceId:s,event:n}};self.postMessage(c);},unfreeze:s=>n=>{let c={id:\"\",method:\"onUnfreeze\",result:{instanceId:s,event:n}};self.postMessage(c);},destroy:s=>n=>{let c={id:\"\",method:\"onDestroy\",result:{instanceId:s,event:n}};self.postMessage(c);}},Ht={getDotLottieInstanceState(s){let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return {state:{isLoaded:r.isLoaded,isPaused:r.isPaused,isPlaying:r.isPlaying,isStopped:r.isStopped,isFrozen:r.isFrozen,loop:r.loop,mode:r.mode,speed:r.speed,currentFrame:r.currentFrame,totalFrames:r.totalFrames,duration:r.duration,useFrameInterpolation:r.useFrameInterpolation,renderConfig:r.renderConfig,marker:r.marker,backgroundColor:r.backgroundColor,markers:r.markers(),activeAnimationId:r.activeAnimationId,activeThemeId:r.activeThemeId,autoplay:r.autoplay,segment:r.segment,layout:r.layout,segmentDuration:r.segmentDuration,isReady:r.isReady,manifest:r.manifest}}},setLayout(s){let n=s.params.instanceId,r=s.params.layout,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.setLayout(r),{success:!0}},getStateMachineListeners(s){let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return r.getStateMachineListeners()},postStateMachineEvent(s){let n=s.params.instanceId,r=s.params.event,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.postStateMachineEvent(r)},startStateMachine(s){let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return r.startStateMachine()},stopStateMachine(s){let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return r.stopStateMachine()},loadStateMachine(s){let n=s.params.instanceId,r=s.params.stateMachineId,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.loadStateMachine(r)},loadStateMachineData(s){let n=s.params.instanceId,r=s.params.stateMachineData,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.loadStateMachineData(r)},create:s=>{let n=s.params.instanceId,r=s.params.config,c=s.params.width,_=s.params.height;if(E.has(n))throw new Error(`Instance with id ${n} already exists.`);let $=new me(r);return $.canvas.height=_,$.canvas.width=c,E.set(n,$),[\"complete\",\"frame\",\"load\",\"loadError\",\"loop\",\"pause\",\"play\",\"stop\",\"destroy\",\"freeze\",\"unfreeze\",\"render\",\"ready\"].forEach(V=>{$.addEventListener(V,jn[V](n));}),{instanceId:n}},destroy:s=>{let n=s.params.instanceId,r=E.get(n);r&&(r.destroy(),E.delete(n));},freeze:s=>{let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);r.freeze();},load:s=>{let n=s.params.instanceId,r=s.params.config,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.load(r);},loadAnimation:s=>{let n=s.params.instanceId,r=s.params.animationId,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.loadAnimation(r);},loadTheme:s=>{let n=s.params.instanceId,r=s.params.themeId,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.loadTheme(r)},loadThemeData:s=>{let n=s.params.instanceId,r=s.params.themeData,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.loadThemeData(r)},pause:s=>{let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return r.pause()},play:s=>{let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);return r.play()},resize:s=>{let n=s.params.instanceId,r=s.params.width,c=s.params.height,_=E.get(n);if(!_)throw new Error(`Instance with id ${n} does not exist.`);return _.canvas.height=c,_.canvas.width=r,_.resize(),{success:!0}},setBackgroundColor:s=>{let n=s.params.instanceId,r=s.params.backgroundColor,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setBackgroundColor(r);},setFrame:s=>{let n=s.params.instanceId,r=s.params.frame,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setFrame(r);},setMode:s=>{let n=s.params.instanceId,r=s.params.mode,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setMode(r);},setRenderConfig:s=>{let n=s.params.instanceId,r=s.params.renderConfig,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setRenderConfig(r);},setSegment:s=>{let n=s.params.instanceId,r=s.params.segment,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setSegment(r[0],r[1]);},setSpeed:s=>{let n=s.params.instanceId,r=s.params.speed,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setSpeed(r);},setUseFrameInterpolation:s=>{let n=s.params.instanceId,r=s.params.useFrameInterpolation,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);c.setUseFrameInterpolation(r);},setWasmUrl:s=>{me.setWasmUrl(s.params.url);},stop:s=>{let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);r.stop();},unfreeze:s=>{let n=s.params.instanceId,r=E.get(n);if(!r)throw new Error(`Instance with id ${n} does not exist.`);r.unfreeze();},setViewport(s){let n=s.params.instanceId,r=s.params.x,c=s.params.y,_=s.params.width,$=s.params.height,U=E.get(n);if(!U)throw new Error(`Instance with id ${n} does not exist.`);return U.setViewport(r,c,_,$)},setMarker(s){let n=s.params.instanceId,r=s.params.marker,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.setMarker(r),{success:!0}},setLoop(s){let n=s.params.instanceId,r=s.params.loop,c=E.get(n);if(!c)throw new Error(`Instance with id ${n} does not exist.`);return c.setLoop(r),{success:!0}}};function Bn(s){let n=s.method;if(typeof Ht[n]==\"function\")return Ht[n](s);throw new Error(`Method ${n} is not implemented in commands.`)}self.onmessage=s=>{try{let n=Bn(s.data),r={id:s.data.id,method:s.data.method,result:n};self.postMessage(r);}catch(n){let r={id:s.data.id,method:s.data.method,error:n.message};self.postMessage(r);}};var Wn=\"\",fr=Wn;\n\nexport { fr as default };\n","// This file would be inlined as a string, checkout the tsup config in the root of the project\nimport workerString from './dotlottie.worker.js';\nimport type { MethodParamsMap, RpcRequest } from './types.js';\n\nexport class WorkerManager {\n private readonly _workers: Map<string, Worker> = new Map();\n\n private readonly _animationWorkerMap: Map<string, string> = new Map();\n\n private _createWorker(workerName: string): Worker {\n const blob = new Blob([workerString], { type: 'application/javascript' });\n\n // eslint-disable-next-line node/no-unsupported-features/node-builtins\n return new Worker(URL.createObjectURL(blob), { type: 'module', name: workerName });\n }\n\n public getWorker(workerId: string): Worker {\n if (!this._workers.has(workerId)) {\n this._workers.set(workerId, this._createWorker(workerId));\n }\n\n return this._workers.get(workerId) as Worker;\n }\n\n public assignAnimationToWorker(animationId: string, workerId: string): void {\n this._animationWorkerMap.set(animationId, workerId);\n }\n\n public unassignAnimationFromWorker(animationId: string): void {\n this._animationWorkerMap.delete(animationId);\n }\n\n public sendMessage(workerId: string, message: RpcRequest<keyof MethodParamsMap>, transfer?: Transferable[]): void {\n this.getWorker(workerId).postMessage(message, transfer || []);\n }\n\n public terminateWorker(workerId: string): void {\n const worker = this._workers.get(workerId);\n\n if (worker) {\n worker.terminate();\n this._workers.delete(workerId);\n }\n }\n}\n","import { IS_BROWSER } from '../constants';\nimport type { Marker } from '../core';\nimport type { EventType, EventListener, FrameEvent } from '../event-manager';\nimport { EventManager } from '../event-manager';\nimport type { Config, Layout, Manifest, Mode, RenderConfig } from '../types';\n\nimport type { MethodParamsMap, MethodResultMap, RpcRequest, RpcResponse } from './types';\nimport { WorkerManager } from './worker-manager';\n\nfunction getCanvasSize(canvas: HTMLCanvasElement | OffscreenCanvas): { height: number; width: number } {\n if (canvas instanceof OffscreenCanvas) {\n return { width: canvas.width, height: canvas.height };\n }\n\n const { height, width } = canvas.getBoundingClientRect();\n\n return { width: width * window.devicePixelRatio, height: height * window.devicePixelRatio };\n}\n\nfunction generateUniqueId(): string {\n return Date.now().toString(36) + Math.random().toString(36).substr(2, 9);\n}\n\nexport interface DotLottieInstanceState {\n activeAnimationId: string | undefined;\n activeThemeId: string | undefined;\n autoplay: boolean;\n backgroundColor: string;\n currentFrame: number;\n duration: number;\n isFrozen: boolean;\n isLoaded: boolean;\n isPaused: boolean;\n isPlaying: boolean;\n isReady: boolean;\n isStopped: boolean;\n layout: Layout | undefined;\n loop: boolean;\n manifest: Manifest | null;\n marker: string | undefined;\n markers: Marker[];\n mode: Mode;\n renderConfig: RenderConfig;\n segment: [number, number] | undefined;\n segmentDuration: number;\n speed: number;\n totalFrames: number;\n useFrameInterpolation: boolean;\n}\n\nexport class DotLottieWorker {\n private static readonly _workerManager = new WorkerManager();\n\n private readonly _eventManager = new EventManager();\n\n private readonly _id: string;\n\n private readonly _worker: Worker;\n\n private readonly _canvas: HTMLCanvasElement;\n\n private _dotLottieInstanceState: DotLottieInstanceState = {\n markers: [],\n autoplay: false,\n backgroundColor: '',\n currentFrame: 0,\n duration: 0,\n loop: false,\n mode: 'forward',\n segment: [0, 0],\n segmentDuration: 0,\n speed: 1,\n totalFrames: 0,\n isLoaded: false,\n isPlaying: false,\n isPaused: false,\n isStopped: true,\n isFrozen: false,\n useFrameInterpolation: false,\n renderConfig: {\n devicePixelRatio: window.devicePixelRatio,\n },\n activeAnimationId: '',\n activeThemeId: '',\n layout: undefined,\n marker: undefined,\n isReady: false,\n manifest: null,\n };\n\n private static _wasmUrl: string = '';\n\n private _created: boolean = false;\n\n public constructor(config: Config & { workerId?: string }) {\n this._canvas = config.canvas;\n\n this._id = `dotlottie-${generateUniqueId()}`;\n const workerId = config.workerId || 'defaultWorker';\n\n // creates or gets the worker\n this._worker = DotLottieWorker._workerManager.getWorker(workerId);\n\n DotLottieWorker._workerManager.assignAnimationToWorker(this._id, workerId);\n\n if (DotLottieWorker._wasmUrl) {\n this._sendMessage('setWasmUrl', { url: DotLottieWorker._wasmUrl });\n }\n\n this._create(config);\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._worker.addEventListener('message', this._handleWorkerEvent.bind(this));\n }\n\n private async _handleWorkerEvent(event: MessageEvent): Promise<void> {\n const rpcResponse: RpcResponse<\n | 'onComplete'\n | 'onLoad'\n | 'onDestroy'\n | 'onUnfreeze'\n | 'onFrame'\n | 'onRender'\n | 'onFreeze'\n | 'onPause'\n | 'onPlay'\n | 'onStop'\n | 'onLoadError'\n | 'onReady'\n > = event.data;\n\n if (!rpcResponse.id) {\n if (rpcResponse.method === 'onLoad' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onComplete' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onDestroy' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onUnfreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._dotLottieInstanceState.isFrozen = false;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFrame' && rpcResponse.result.instanceId === this._id) {\n this._dotLottieInstanceState.currentFrame = (rpcResponse.result.event as FrameEvent).currentFrame;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onRender' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPause' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPlay' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStop' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onLoadError' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onReady' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n }\n }\n\n private async _create(config: Config): Promise<void> {\n let offscreen: OffscreenCanvas;\n\n if (this._canvas instanceof HTMLCanvasElement) {\n offscreen = this._canvas.transferControlToOffscreen();\n } else {\n offscreen = this._canvas;\n }\n\n const { instanceId } = await this._sendMessage(\n 'create',\n {\n instanceId: this._id,\n config: {\n ...config,\n // @ts-ignore\n canvas: offscreen,\n },\n ...getCanvasSize(this._canvas),\n },\n [offscreen],\n );\n\n if (instanceId !== this._id) {\n throw new Error('Instance ID mismatch');\n }\n\n this._created = true;\n\n await this._updateDotLottieInstanceState();\n }\n\n public get isLoaded(): boolean {\n return this._dotLottieInstanceState.isLoaded;\n }\n\n public get isPlaying(): boolean {\n return this._dotLottieInstanceState.isPlaying;\n }\n\n public get isPaused(): boolean {\n return this._dotLottieInstanceState.isPaused;\n }\n\n public get isStopped(): boolean {\n return this._dotLottieInstanceState.isStopped;\n }\n\n public get currentFrame(): number {\n return this._dotLottieInstanceState.currentFrame;\n }\n\n public get isFrozen(): boolean {\n return this._dotLottieInstanceState.isFrozen;\n }\n\n public get segmentDuration(): number {\n return this._dotLottieInstanceState.segmentDuration;\n }\n\n public get totalFrames(): number {\n return this._dotLottieInstanceState.totalFrames;\n }\n\n public get segment(): [number, number] | undefined {\n return this._dotLottieInstanceState.segment;\n }\n\n public get speed(): number {\n return this._dotLottieInstanceState.speed;\n }\n\n public get duration(): number {\n return this._dotLottieInstanceState.duration;\n }\n\n public get isReady(): boolean {\n return this._dotLottieInstanceState.isReady;\n }\n\n public get mode(): Mode {\n return this._dotLottieInstanceState.mode;\n }\n\n public get canvas(): HTMLCanvasElement | null {\n return this._canvas;\n }\n\n public get autoplay(): boolean {\n return this._dotLottieInstanceState.autoplay;\n }\n\n public get backgroundColor(): string {\n return this._dotLottieInstanceState.backgroundColor;\n }\n\n public get loop(): boolean {\n return this._dotLottieInstanceState.loop;\n }\n\n public get useFrameInterpolation(): boolean {\n return this._dotLottieInstanceState.useFrameInterpolation;\n }\n\n public get renderConfig(): RenderConfig {\n return this._dotLottieInstanceState.renderConfig;\n }\n\n public get manifest(): Manifest | null {\n return this._dotLottieInstanceState.manifest;\n }\n\n public get activeAnimationId(): string | undefined {\n return this._dotLottieInstanceState.activeAnimationId;\n }\n\n public get marker(): string | undefined {\n return this._dotLottieInstanceState.marker;\n }\n\n public get activeThemeId(): string | undefined {\n return this._dotLottieInstanceState.activeThemeId;\n }\n\n public get layout(): Layout | undefined {\n return this._dotLottieInstanceState.layout;\n }\n\n public async play(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('play', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async pause(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('pause', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async stop(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('stop', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setSpeed(speed: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSpeed', { instanceId: this._id, speed });\n await this._updateDotLottieInstanceState();\n }\n\n public async setMode(mode: Mode): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMode', { instanceId: this._id, mode });\n await this._updateDotLottieInstanceState();\n }\n\n public async setFrame(frame: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setFrame', { frame, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setSegment(start: number, end: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSegment', { instanceId: this._id, segment: [start, end] });\n await this._updateDotLottieInstanceState();\n }\n\n public async setRenderConfig(renderConfig: RenderConfig): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setRenderConfig', { instanceId: this._id, renderConfig });\n await this._updateDotLottieInstanceState();\n }\n\n public async setUseFrameInterpolation(useFrameInterpolation: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setUseFrameInterpolation', { instanceId: this._id, useFrameInterpolation });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadTheme(themeId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = this._sendMessage('loadTheme', { instanceId: this._id, themeId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async load(config: Omit<Config, 'canvas'>): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('load', { config, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLoop(loop: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLoop', { instanceId: this._id, loop });\n await this._updateDotLottieInstanceState();\n }\n\n public async resize(): Promise<void> {\n if (!this._created) return;\n\n const { height, width } = getCanvasSize(this._canvas);\n\n this._canvas.width = width;\n this._canvas.height = height;\n\n await this._sendMessage('resize', { height, instanceId: this._id, width });\n await this._updateDotLottieInstanceState();\n }\n\n public async destroy(): Promise<void> {\n if (!this._created) return;\n\n this._created = false;\n\n await this._sendMessage('destroy', { instanceId: this._id });\n\n this._cleanupStateMachineListeners();\n\n DotLottieWorker._workerManager.unassignAnimationFromWorker(this._id);\n this._eventManager.removeAllEventListeners();\n }\n\n public async freeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('freeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async unfreeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('unfreeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setBackgroundColor(backgroundColor: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setBackgroundColor', { instanceId: this._id, backgroundColor });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadAnimation(animationId: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('loadAnimation', { animationId, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLayout(layout: Layout): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLayout', { instanceId: this._id, layout });\n await this._updateDotLottieInstanceState();\n }\n\n private async _updateDotLottieInstanceState(): Promise<void> {\n if (!this._created) return;\n\n const result = await this._sendMessage('getDotLottieInstanceState', { instanceId: this._id });\n\n this._dotLottieInstanceState = result.state;\n }\n\n public markers(): Marker[] {\n return this._dotLottieInstanceState.markers;\n }\n\n public async setMarker(marker: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMarker', { instanceId: this._id, marker });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadThemeData(themeData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const loaded = await this._sendMessage('loadThemeData', { instanceId: this._id, themeData });\n\n await this._updateDotLottieInstanceState();\n\n return loaded;\n }\n\n public async setViewport(x: number, y: number, width: number, height: number): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setViewport', { x, y, width, height, instanceId: this._id });\n }\n\n private async _sendMessage<T extends keyof MethodParamsMap>(\n method: T,\n params: MethodParamsMap[T],\n transfer?: Transferable[],\n ): Promise<MethodResultMap[T]> {\n const rpcRequest: RpcRequest<T> = {\n id: `dotlottie-request-${generateUniqueId()}`,\n method,\n params,\n };\n\n this._worker.postMessage(rpcRequest, transfer || []);\n\n return new Promise((resolve, reject) => {\n const onMessage = (event: MessageEvent): void => {\n const rpcResponse: RpcResponse<T> = event.data;\n\n // Check if the response corresponds to the request\n if (rpcResponse.id === rpcRequest.id) {\n this._worker.removeEventListener('message', onMessage);\n\n if (rpcResponse.error) {\n reject(new Error(`Failed to execute method ${method}: ${rpcResponse.error}`));\n } else {\n resolve(rpcResponse.result);\n }\n }\n };\n\n this._worker.addEventListener('message', onMessage);\n });\n }\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n public static setWasmUrl(url: string): void {\n DotLottieWorker._wasmUrl = url;\n }\n\n public async loadStateMachine(stateMachineId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('loadStateMachine', { instanceId: this._id, stateMachineId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async loadStateMachineData(stateMachineData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('loadStateMachineData', { instanceId: this._id, stateMachineData });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async startStateMachine(): Promise<boolean> {\n if (!this._created) return false;\n\n this._setupStateMachineListeners();\n\n const result = await this._sendMessage('startStateMachine', { instanceId: this._id });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async stopStateMachine(): Promise<boolean> {\n if (!this._created) return false;\n\n this._cleanupStateMachineListeners();\n\n return this._sendMessage('stopStateMachine', { instanceId: this._id });\n }\n\n public async postStateMachineEvent(event: string): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('postStateMachineEvent', { event, instanceId: this._id });\n }\n\n public async getStateMachineListeners(): Promise<string[]> {\n if (!this._created) return [];\n\n return this._sendMessage('getStateMachineListeners', { instanceId: this._id });\n }\n\n private _getPointerPosition(event: PointerEvent): { x: number; y: number } {\n const rect = (this._canvas as HTMLCanvasElement).getBoundingClientRect();\n const scaleX = this._canvas.width / rect.width;\n const scaleY = this._canvas.height / rect.height;\n\n const devicePixelRatio = this._dotLottieInstanceState.renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n const x = ((event.clientX - rect.left) * scaleX) / devicePixelRatio;\n const y = ((event.clientY - rect.top) * scaleY) / devicePixelRatio;\n\n return {\n x,\n y,\n };\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerUp: ${x} ${y}`);\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerDown: ${x} ${y}`);\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerMove: ${x} ${y}`);\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerEnter: ${x} ${y}`);\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerExit: ${x} ${y}`);\n }\n\n private _onComplete(): void {\n this.postStateMachineEvent('OnComplete');\n }\n\n private async _setupStateMachineListeners(): Promise<void> {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this.isLoaded) {\n const listeners = await this._sendMessage('getStateMachineListeners', { instanceId: this._id });\n\n if (listeners.includes('PointerUp')) {\n this._canvas.addEventListener('pointerup', this._onPointerUp.bind(this));\n }\n\n if (listeners.includes('PointerDown')) {\n this._canvas.addEventListener('pointerdown', this._onPointerDown.bind(this));\n }\n\n if (listeners.includes('PointerMove')) {\n this._canvas.addEventListener('pointermove', this._onPointerMove.bind(this));\n }\n\n if (listeners.includes('PointerEnter')) {\n this._canvas.addEventListener('pointerenter', this._onPointerEnter.bind(this));\n }\n\n if (listeners.includes('PointerExit')) {\n this._canvas.addEventListener('pointerleave', this._onPointerLeave.bind(this));\n }\n\n if (listeners.includes('Complete')) {\n this.addEventListener('complete', this._onComplete.bind(this));\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.removeEventListener('pointerup', this._onPointerUp.bind(this));\n this._canvas.removeEventListener('pointerdown', this._onPointerDown.bind(this));\n this._canvas.removeEventListener('pointermove', this._onPointerMove.bind(this));\n this._canvas.removeEventListener('pointerenter', this._onPointerEnter.bind(this));\n this._canvas.removeEventListener('pointerleave', this._onPointerLeave.bind(this));\n this.removeEventListener('complete', this._onComplete.bind(this));\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/animation-frame-manager.ts","../src/constants.ts","../src/core/dotlottie-player.js","../src/core/dotlottie-wasm-loader.ts","../src/event-manager.ts","../src/utils.ts","../src/dotlottie.ts","inline-worker:/home/runner/work/dotlottie-web/dotlottie-web/packages/web/src/worker/dotlottie.worker","../src/worker/worker-manager.ts","../src/worker/dotlottie.ts"],"names":["WebAnimationFrameStrategy","callback","id","NodeAnimationFrameStrategy","__publicField","_id","AnimationFrameManager","IS_BROWSER","ZIP_SIGNATURE","LOTTIE_JSON_MANDATORY_FIELDS","PACKAGE_VERSION","PACKAGE_NAME","createDotLottiePlayerModule","_scriptDir","moduleArg","k","aa","ba","readyPromise","a","b","ca","da","t","ea","w","x","fa","ha","y","A","B","C","E","F","ja","ka","la","ma","na","oa","pa","G","H","ra","sa","I","ta","ua","va","wa","c","d","xa","e","ya","za","J","f","Aa","Ba","Da","Ea","Fa","Ga","K","L","M","Ha","Ia","P","h","n","O","Ja","Q","R","Ka","La","Ma","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Xa","Wa","Ya","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","m","p","kb","S","lb","mb","T","nb","pb","ob","U","qb","rb","sb","tb","v","g","q","r","z","ub","vb","V","wb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Rb","Qb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","N","$b","ac","mc","Ca","D","Na","xb","ia","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","W","X","Y","Z","nc","oc","pc","qc","dotlottie_player_default","DotLottieWasmLoader","url","initialError","backupUrl","backupError","EventManager","type","listener","listeners","event","isHexColor","color","hexStringToRGBAInt","colorHex","hex","isDotLottie","fileData","fileSignature","isLottieJSON","json","field","isLottie","createCoreMode","mode","module","createCoreFit","fit","createCoreAlign","align","coreAlign","createCoreSegment","segment","coresegment","_DotLottie","config","error","message","src","response","data","width","height","loaded","layout","manifest","manifestJson","buffer","clampedBuffer","imageData","nextFrame","frame","speed","loop","useFrameInterpolation","dpr","clientHeight","clientWidth","startFrame","endFrame","animationId","marker","markers","result","i","themeId","themeData","stateMachineId","started","stopped","rect","scaleX","scaleY","devicePixelRatio","rt","listenersVector","stateMachineData","name","value","DotLottie","InlinedWorker","WorkerManager","workerId","transfer","worker","getCanvasSize","canvas","generateUniqueId","_DotLottieWorker","rpcResponse","offscreen","instanceId","start","end","renderConfig","backgroundColor","method","params","rpcRequest","resolve","reject","onMessage","DotLottieWorker"],"mappings":"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","file":"index.cjs","sourcesContent":["/* eslint-disable max-classes-per-file */\n\ninterface AnimationFrameStrategy {\n cancelAnimationFrame(id: number): void;\n requestAnimationFrame(callback: (time: number) => void): number;\n}\n\nclass WebAnimationFrameStrategy implements AnimationFrameStrategy {\n public requestAnimationFrame(callback: (time: number) => void): number {\n return requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n cancelAnimationFrame(id);\n }\n}\n\nclass NodeAnimationFrameStrategy implements AnimationFrameStrategy {\n private _lastHandleId: number = 0;\n\n private _lastImmediate: NodeJS.Immediate | null = null;\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n if (this._lastHandleId >= Number.MAX_SAFE_INTEGER) {\n this._lastHandleId = 0;\n }\n\n this._lastHandleId += 1;\n\n this._lastImmediate = setImmediate(() => {\n callback(Date.now());\n });\n\n return this._lastHandleId;\n }\n\n public cancelAnimationFrame(_id: number): void {\n if (this._lastImmediate) {\n clearImmediate(this._lastImmediate);\n }\n }\n}\n\nexport class AnimationFrameManager {\n private readonly _strategy: AnimationFrameStrategy;\n\n public constructor() {\n this._strategy =\n typeof requestAnimationFrame === 'function' ? new WebAnimationFrameStrategy() : new NodeAnimationFrameStrategy();\n }\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n return this._strategy.requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n this._strategy.cancelAnimationFrame(id);\n }\n}\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const MS_TO_SEC_FACTOR = 1000;\nexport const DEFAULT_BG_COLOR = '#00000000';\nexport const ZIP_SIGNATURE = new Uint8Array([0x50, 0x4b, 0x03, 0x04]);\nexport const LOTTIE_JSON_MANDATORY_FIELDS = ['v', 'ip', 'op', 'layers', 'fr', 'w', 'h'];\n\n// These values are replace during the build process with the package version and name\nexport const PACKAGE_VERSION = '0.30.0';\nexport const PACKAGE_NAME = '@lottiefiles/dotlottie-web';\n","var createDotLottiePlayerModule = (() => {\n var _scriptDir = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n\n return function (moduleArg = {}) {\n var k = moduleArg,\n aa,\n ba,\n readyPromise = new Promise((a, b) => {\n aa = a;\n ba = b;\n }),\n ca = Object.assign({}, k),\n da = './this.program',\n t = '';\n 'undefined' != typeof document && document.currentScript && (t = document.currentScript.src);\n _scriptDir && (t = _scriptDir);\n t.startsWith('blob:') ? (t = '') : (t = t.substr(0, t.replace(/[?#].*/, '').lastIndexOf('/') + 1));\n var ea = k.print || console.log.bind(console),\n w = k.printErr || console.error.bind(console);\n Object.assign(k, ca);\n ca = null;\n k.thisProgram && (da = k.thisProgram);\n var x;\n k.wasmBinary && (x = k.wasmBinary);\n var fa,\n ha = !1,\n y,\n A,\n B,\n C,\n E,\n F,\n ja,\n ka;\n function la() {\n var a = fa.buffer;\n k.HEAP8 = y = new Int8Array(a);\n k.HEAP16 = B = new Int16Array(a);\n k.HEAPU8 = A = new Uint8Array(a);\n k.HEAPU16 = C = new Uint16Array(a);\n k.HEAP32 = E = new Int32Array(a);\n k.HEAPU32 = F = new Uint32Array(a);\n k.HEAPF32 = ja = new Float32Array(a);\n k.HEAPF64 = ka = new Float64Array(a);\n }\n var ma = [],\n na = [],\n oa = [];\n function pa() {\n var a = k.preRun.shift();\n ma.unshift(a);\n }\n var G = 0,\n qa = null,\n H = null;\n function ra(a) {\n k.onAbort?.(a);\n a = 'Aborted(' + a + ')';\n w(a);\n ha = !0;\n a = new WebAssembly.RuntimeError(a + '. Build with -sASSERTIONS for more info.');\n ba(a);\n throw a;\n }\n var sa = (a) => a.startsWith('data:application/octet-stream;base64,'),\n I;\n I = 'DotLottiePlayer.wasm';\n if (!sa(I)) {\n var ta = I;\n I = k.locateFile ? k.locateFile(ta, t) : t + ta;\n }\n function ua(a) {\n if (a == I && x) return new Uint8Array(x);\n throw 'both async and sync fetching of the wasm failed';\n }\n function va(a) {\n return x || 'function' != typeof fetch\n ? Promise.resolve().then(() => ua(a))\n : fetch(a, { credentials: 'same-origin' })\n .then((b) => {\n if (!b.ok) throw `failed to load wasm binary file at '${a}'`;\n return b.arrayBuffer();\n })\n .catch(() => ua(a));\n }\n function wa(a, b, c) {\n return va(a)\n .then((d) => WebAssembly.instantiate(d, b))\n .then(c, (d) => {\n w(`failed to asynchronously prepare wasm: ${d}`);\n ra(d);\n });\n }\n function xa(a, b) {\n var c = I;\n return x || 'function' != typeof WebAssembly.instantiateStreaming || sa(c) || 'function' != typeof fetch\n ? wa(c, a, b)\n : fetch(c, { credentials: 'same-origin' }).then((d) =>\n WebAssembly.instantiateStreaming(d, a).then(b, function (e) {\n w(`wasm streaming compile failed: ${e}`);\n w('falling back to ArrayBuffer instantiation');\n return wa(c, a, b);\n }),\n );\n }\n var ya = (a) => {\n for (; 0 < a.length; ) a.shift()(k);\n },\n za = 'undefined' != typeof TextDecoder ? new TextDecoder('utf8') : void 0,\n J = (a, b, c) => {\n var d = b + c;\n for (c = b; a[c] && !(c >= d); ) ++c;\n if (16 < c - b && a.buffer && za) return za.decode(a.subarray(b, c));\n for (d = ''; b < c; ) {\n var e = a[b++];\n if (e & 128) {\n var f = a[b++] & 63;\n if (192 == (e & 224)) d += String.fromCharCode(((e & 31) << 6) | f);\n else {\n var l = a[b++] & 63;\n e =\n 224 == (e & 240)\n ? ((e & 15) << 12) | (f << 6) | l\n : ((e & 7) << 18) | (f << 12) | (l << 6) | (a[b++] & 63);\n 65536 > e\n ? (d += String.fromCharCode(e))\n : ((e -= 65536), (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023))));\n }\n } else d += String.fromCharCode(e);\n }\n return d;\n };\n class Aa {\n constructor(a) {\n this.ya = a - 24;\n }\n }\n var Ba = 0,\n Ca = 0,\n Da = (a) => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 127 >= d ? b++ : 2047 >= d ? (b += 2) : 55296 <= d && 57343 >= d ? ((b += 4), ++c) : (b += 3);\n }\n return b;\n },\n Ea = (a, b, c, d) => {\n if (0 < d) {\n d = c + d - 1;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var l = a.charCodeAt(++e);\n f = (65536 + ((f & 1023) << 10)) | (l & 1023);\n }\n if (127 >= f) {\n if (c >= d) break;\n b[c++] = f;\n } else {\n if (2047 >= f) {\n if (c + 1 >= d) break;\n b[c++] = 192 | (f >> 6);\n } else {\n if (65535 >= f) {\n if (c + 2 >= d) break;\n b[c++] = 224 | (f >> 12);\n } else {\n if (c + 3 >= d) break;\n b[c++] = 240 | (f >> 18);\n b[c++] = 128 | ((f >> 12) & 63);\n }\n b[c++] = 128 | ((f >> 6) & 63);\n }\n b[c++] = 128 | (f & 63);\n }\n }\n b[c] = 0;\n }\n },\n Fa = {},\n Ga = (a) => {\n for (; a.length; ) {\n var b = a.pop();\n a.pop()(b);\n }\n };\n function K(a) {\n return this.fromWireType(F[a >> 2]);\n }\n var L = {},\n M = {},\n Ha = {},\n Ia,\n P = (a, b, c) => {\n function d(h) {\n h = c(h);\n if (h.length !== a.length) throw new Ia('Mismatched type converter count');\n for (var n = 0; n < a.length; ++n) O(a[n], h[n]);\n }\n a.forEach(function (h) {\n Ha[h] = b;\n });\n var e = Array(b.length),\n f = [],\n l = 0;\n b.forEach((h, n) => {\n M.hasOwnProperty(h)\n ? (e[n] = M[h])\n : (f.push(h),\n L.hasOwnProperty(h) || (L[h] = []),\n L[h].push(() => {\n e[n] = M[h];\n ++l;\n l === f.length && d(e);\n }));\n });\n 0 === f.length && d(e);\n },\n Ja,\n Q = (a) => {\n for (var b = ''; A[a]; ) b += Ja[A[a++]];\n return b;\n },\n R;\n function Ka(a, b, c = {}) {\n var d = b.name;\n if (!a) throw new R(`type \"${d}\" must have a positive integer typeid pointer`);\n if (M.hasOwnProperty(a)) {\n if (c.ib) return;\n throw new R(`Cannot register type '${d}' twice`);\n }\n M[a] = b;\n delete Ha[a];\n L.hasOwnProperty(a) && ((b = L[a]), delete L[a], b.forEach((e) => e()));\n }\n function O(a, b, c = {}) {\n if (!('argPackAdvance' in b)) throw new TypeError('registerType registeredInstance requires argPackAdvance');\n return Ka(a, b, c);\n }\n var La = (a) => {\n throw new R(a.ma.za.xa.name + ' instance already deleted');\n },\n Ma = !1,\n Oa = () => {},\n Pa = (a, b, c) => {\n if (b === c) return a;\n if (void 0 === c.Ca) return null;\n a = Pa(a, b, c.Ca);\n return null === a ? null : c.ab(a);\n },\n Qa = {},\n Ra = [],\n Sa = () => {\n for (; Ra.length; ) {\n var a = Ra.pop();\n a.ma.Ka = !1;\n a['delete']();\n }\n },\n Ta,\n Ua = {},\n Va = (a, b) => {\n if (void 0 === b) throw new R('ptr should not be undefined');\n for (; a.Ca; ) (b = a.Na(b)), (a = a.Ca);\n return Ua[b];\n },\n Xa = (a, b) => {\n if (!b.za || !b.ya) throw new Ia('makeClassHandle requires ptr and ptrType');\n if (!!b.Da !== !!b.Aa) throw new Ia('Both smartPtrType and smartPtr must be specified');\n b.count = { value: 1 };\n return Wa(Object.create(a, { ma: { value: b, writable: !0 } }));\n },\n Wa = (a) => {\n if ('undefined' === typeof FinalizationRegistry) return (Wa = (b) => b), a;\n Ma = new FinalizationRegistry((b) => {\n b = b.ma;\n --b.count.value;\n 0 === b.count.value && (b.Aa ? b.Da.Fa(b.Aa) : b.za.xa.Fa(b.ya));\n });\n Wa = (b) => {\n var c = b.ma;\n c.Aa && Ma.register(b, { ma: c }, b);\n return b;\n };\n Oa = (b) => {\n Ma.unregister(b);\n };\n return Wa(a);\n };\n function Ya() {}\n var Za = (a, b) => Object.defineProperty(b, 'name', { value: a }),\n $a = (a, b, c) => {\n if (void 0 === a[b].Ba) {\n var d = a[b];\n a[b] = function (...e) {\n if (!a[b].Ba.hasOwnProperty(e.length))\n throw new R(\n `Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ba})!`,\n );\n return a[b].Ba[e.length].apply(this, e);\n };\n a[b].Ba = [];\n a[b].Ba[d.Oa] = d;\n }\n },\n ab = (a, b, c) => {\n if (k.hasOwnProperty(a)) {\n if (void 0 === c || (void 0 !== k[a].Ba && void 0 !== k[a].Ba[c]))\n throw new R(`Cannot register public name '${a}' twice`);\n $a(k, a, a);\n if (k.hasOwnProperty(c))\n throw new R(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);\n k[a].Ba[c] = b;\n } else (k[a] = b), void 0 !== c && (k[a].vb = c);\n },\n bb = (a) => {\n if (void 0 === a) return '_unknown';\n a = a.replace(/[^a-zA-Z0-9_]/g, '$');\n var b = a.charCodeAt(0);\n return 48 <= b && 57 >= b ? `_${a}` : a;\n };\n function cb(a, b, c, d, e, f, l, h) {\n this.name = a;\n this.constructor = b;\n this.La = c;\n this.Fa = d;\n this.Ca = e;\n this.cb = f;\n this.Na = l;\n this.ab = h;\n this.kb = [];\n }\n var db = (a, b, c) => {\n for (; b !== c; ) {\n if (!b.Na) throw new R(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);\n a = b.Na(a);\n b = b.Ca;\n }\n return a;\n };\n function eb(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n return 0;\n }\n if (!b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n return db(b.ma.ya, b.ma.za.xa, this.xa);\n }\n function gb(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n if (this.Qa) {\n var c = this.Ua();\n null !== a && a.push(this.Fa, c);\n return c;\n }\n return 0;\n }\n if (!b || !b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n if (!this.Pa && b.ma.za.Pa)\n throw new R(\n `Cannot convert argument of type ${b.ma.Da ? b.ma.Da.name : b.ma.za.name} to parameter type ${this.name}`,\n );\n c = db(b.ma.ya, b.ma.za.xa, this.xa);\n if (this.Qa) {\n if (void 0 === b.ma.Aa) throw new R('Passing raw pointer to smart pointer is illegal');\n switch (this.pb) {\n case 0:\n if (b.ma.Da === this) c = b.ma.Aa;\n else\n throw new R(\n `Cannot convert argument of type ${b.ma.Da ? b.ma.Da.name : b.ma.za.name} to parameter type ${\n this.name\n }`,\n );\n break;\n case 1:\n c = b.ma.Aa;\n break;\n case 2:\n if (b.ma.Da === this) c = b.ma.Aa;\n else {\n var d = b.clone();\n c = this.lb(\n c,\n hb(() => d['delete']()),\n );\n null !== a && a.push(this.Fa, c);\n }\n break;\n default:\n throw new R('Unsupporting sharing policy');\n }\n }\n return c;\n }\n function ib(a, b) {\n if (null === b) {\n if (this.Ta) throw new R(`null is not a valid ${this.name}`);\n return 0;\n }\n if (!b.ma) throw new R(`Cannot pass \"${fb(b)}\" as a ${this.name}`);\n if (!b.ma.ya) throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);\n if (b.ma.za.Pa) throw new R(`Cannot convert argument of type ${b.ma.za.name} to parameter type ${this.name}`);\n return db(b.ma.ya, b.ma.za.xa, this.xa);\n }\n function jb(a, b, c, d, e, f, l, h, n, m, p) {\n this.name = a;\n this.xa = b;\n this.Ta = c;\n this.Pa = d;\n this.Qa = e;\n this.jb = f;\n this.pb = l;\n this.Za = h;\n this.Ua = n;\n this.lb = m;\n this.Fa = p;\n e || void 0 !== b.Ca ? (this.toWireType = gb) : ((this.toWireType = d ? eb : ib), (this.Ea = null));\n }\n var kb = (a, b, c) => {\n if (!k.hasOwnProperty(a)) throw new Ia('Replacing nonexistent public symbol');\n void 0 !== k[a].Ba && void 0 !== c ? (k[a].Ba[c] = b) : ((k[a] = b), (k[a].Oa = c));\n },\n S,\n lb = (a, b, c = []) => {\n a.includes('j') ? ((a = a.replace(/p/g, 'i')), (b = (0, k['dynCall_' + a])(b, ...c))) : (b = S.get(b)(...c));\n return b;\n },\n mb =\n (a, b) =>\n (...c) =>\n lb(a, b, c),\n T = (a, b) => {\n a = Q(a);\n var c = a.includes('j') ? mb(a, b) : S.get(b);\n if ('function' != typeof c) throw new R(`unknown function pointer with signature ${a}: ${b}`);\n return c;\n },\n nb,\n pb = (a) => {\n a = ob(a);\n var b = Q(a);\n U(a);\n return b;\n },\n qb = (a, b) => {\n function c(f) {\n e[f] || M[f] || (Ha[f] ? Ha[f].forEach(c) : (d.push(f), (e[f] = !0)));\n }\n var d = [],\n e = {};\n b.forEach(c);\n throw new nb(`${a}: ` + d.map(pb).join([', ']));\n },\n rb = (a, b) => {\n for (var c = [], d = 0; d < a; d++) c.push(F[(b + 4 * d) >> 2]);\n return c;\n };\n function sb(a) {\n for (var b = 1; b < a.length; ++b) if (null !== a[b] && void 0 === a[b].Ea) return !0;\n return !1;\n }\n function tb(a, b, c, d, e) {\n var f = b.length;\n if (2 > f) throw new R(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var l = null !== b[1] && null !== c,\n h = sb(b),\n n = 'void' !== b[0].name,\n m = f - 2,\n p = Array(m),\n u = [],\n v = [];\n return Za(a, function (...g) {\n if (g.length !== m) throw new R(`function ${a} called with ${g.length} arguments, expected ${m}`);\n v.length = 0;\n u.length = l ? 2 : 1;\n u[0] = e;\n if (l) {\n var q = b[1].toWireType(v, this);\n u[1] = q;\n }\n for (var r = 0; r < m; ++r) (p[r] = b[r + 2].toWireType(v, g[r])), u.push(p[r]);\n g = d(...u);\n if (h) Ga(v);\n else\n for (r = l ? 1 : 2; r < b.length; r++) {\n var z = 1 === r ? q : p[r - 2];\n null !== b[r].Ea && b[r].Ea(z);\n }\n q = n ? b[0].fromWireType(g) : void 0;\n return q;\n });\n }\n var ub = (a) => {\n a = a.trim();\n const b = a.indexOf('(');\n return -1 !== b ? a.substr(0, b) : a;\n },\n vb = [],\n V = [],\n wb = (a) => {\n 9 < a && 0 === --V[a + 1] && ((V[a] = void 0), vb.push(a));\n },\n yb = (a) => {\n if (!a) throw new R('Cannot use deleted val. handle = ' + a);\n return V[a];\n },\n hb = (a) => {\n switch (a) {\n case void 0:\n return 2;\n case null:\n return 4;\n case !0:\n return 6;\n case !1:\n return 8;\n default:\n const b = vb.pop() || V.length;\n V[b] = a;\n V[b + 1] = 1;\n return b;\n }\n },\n zb = {\n name: 'emscripten::val',\n fromWireType: (a) => {\n var b = yb(a);\n wb(a);\n return b;\n },\n toWireType: (a, b) => hb(b),\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea: null,\n },\n Ab = (a, b, c) => {\n switch (b) {\n case 1:\n return c\n ? function (d) {\n return this.fromWireType(y[d]);\n }\n : function (d) {\n return this.fromWireType(A[d]);\n };\n case 2:\n return c\n ? function (d) {\n return this.fromWireType(B[d >> 1]);\n }\n : function (d) {\n return this.fromWireType(C[d >> 1]);\n };\n case 4:\n return c\n ? function (d) {\n return this.fromWireType(E[d >> 2]);\n }\n : function (d) {\n return this.fromWireType(F[d >> 2]);\n };\n default:\n throw new TypeError(`invalid integer width (${b}): ${a}`);\n }\n },\n Bb = (a, b) => {\n var c = M[a];\n if (void 0 === c) throw ((a = `${b} has unknown type ${pb(a)}`), new R(a));\n return c;\n },\n fb = (a) => {\n if (null === a) return 'null';\n var b = typeof a;\n return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a;\n },\n Cb = (a, b) => {\n switch (b) {\n case 4:\n return function (c) {\n return this.fromWireType(ja[c >> 2]);\n };\n case 8:\n return function (c) {\n return this.fromWireType(ka[c >> 3]);\n };\n default:\n throw new TypeError(`invalid float width (${b}): ${a}`);\n }\n },\n Db = (a, b, c) => {\n switch (b) {\n case 1:\n return c ? (d) => y[d] : (d) => A[d];\n case 2:\n return c ? (d) => B[d >> 1] : (d) => C[d >> 1];\n case 4:\n return c ? (d) => E[d >> 2] : (d) => F[d >> 2];\n default:\n throw new TypeError(`invalid integer width (${b}): ${a}`);\n }\n },\n Eb = 'undefined' != typeof TextDecoder ? new TextDecoder('utf-16le') : void 0,\n Fb = (a, b) => {\n var c = a >> 1;\n for (var d = c + b / 2; !(c >= d) && C[c]; ) ++c;\n c <<= 1;\n if (32 < c - a && Eb) return Eb.decode(A.subarray(a, c));\n c = '';\n for (d = 0; !(d >= b / 2); ++d) {\n var e = B[(a + 2 * d) >> 1];\n if (0 == e) break;\n c += String.fromCharCode(e);\n }\n return c;\n },\n Gb = (a, b, c) => {\n c ??= 2147483647;\n if (2 > c) return 0;\n c -= 2;\n var d = b;\n c = c < 2 * a.length ? c / 2 : a.length;\n for (var e = 0; e < c; ++e) (B[b >> 1] = a.charCodeAt(e)), (b += 2);\n B[b >> 1] = 0;\n return b - d;\n },\n Hb = (a) => 2 * a.length,\n Ib = (a, b) => {\n for (var c = 0, d = ''; !(c >= b / 4); ) {\n var e = E[(a + 4 * c) >> 2];\n if (0 == e) break;\n ++c;\n 65536 <= e\n ? ((e -= 65536), (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023))))\n : (d += String.fromCharCode(e));\n }\n return d;\n },\n Jb = (a, b, c) => {\n c ??= 2147483647;\n if (4 > c) return 0;\n var d = b;\n c = d + c - 4;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var l = a.charCodeAt(++e);\n f = (65536 + ((f & 1023) << 10)) | (l & 1023);\n }\n E[b >> 2] = f;\n b += 4;\n if (b + 4 > c) break;\n }\n E[b >> 2] = 0;\n return b - d;\n },\n Kb = (a) => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 55296 <= d && 57343 >= d && ++c;\n b += 4;\n }\n return b;\n },\n Lb = [],\n Mb = (a) => {\n var b = Lb.length;\n Lb.push(a);\n return b;\n },\n Nb = (a, b) => {\n for (var c = Array(a), d = 0; d < a; ++d) c[d] = Bb(F[(b + 4 * d) >> 2], 'parameter ' + d);\n return c;\n },\n Ob = Reflect.construct,\n Pb = {},\n Rb = () => {\n if (!Qb) {\n var a = {\n USER: 'web_user',\n LOGNAME: 'web_user',\n PATH: '/',\n PWD: '/',\n HOME: '/home/web_user',\n LANG:\n (('object' == typeof navigator && navigator.languages && navigator.languages[0]) || 'C').replace(\n '-',\n '_',\n ) + '.UTF-8',\n _: da || './this.program',\n },\n b;\n for (b in Pb) void 0 === Pb[b] ? delete a[b] : (a[b] = Pb[b]);\n var c = [];\n for (b in a) c.push(`${b}=${a[b]}`);\n Qb = c;\n }\n return Qb;\n },\n Qb,\n Sb = [null, [], []],\n Tb = () => {\n if ('object' == typeof crypto && 'function' == typeof crypto.getRandomValues)\n return (a) => crypto.getRandomValues(a);\n ra('initRandomDevice');\n },\n Ub = (a) => (Ub = Tb())(a),\n Vb = (a) => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400),\n Wb = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n Xb = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n function Yb(a) {\n var b = Array(Da(a) + 1);\n Ea(a, b, 0, b.length);\n return b;\n }\n var Zb = (a, b, c, d) => {\n function e(g, q, r) {\n for (g = 'number' == typeof g ? g.toString() : g || ''; g.length < q; ) g = r[0] + g;\n return g;\n }\n function f(g, q) {\n return e(g, q, '0');\n }\n function l(g, q) {\n function r(N) {\n return 0 > N ? -1 : 0 < N ? 1 : 0;\n }\n var z;\n 0 === (z = r(g.getFullYear() - q.getFullYear())) &&\n 0 === (z = r(g.getMonth() - q.getMonth())) &&\n (z = r(g.getDate() - q.getDate()));\n return z;\n }\n function h(g) {\n switch (g.getDay()) {\n case 0:\n return new Date(g.getFullYear() - 1, 11, 29);\n case 1:\n return g;\n case 2:\n return new Date(g.getFullYear(), 0, 3);\n case 3:\n return new Date(g.getFullYear(), 0, 2);\n case 4:\n return new Date(g.getFullYear(), 0, 1);\n case 5:\n return new Date(g.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(g.getFullYear() - 1, 11, 30);\n }\n }\n function n(g) {\n var q = g.Ia;\n for (g = new Date(new Date(g.Ja + 1900, 0, 1).getTime()); 0 < q; ) {\n var r = g.getMonth(),\n z = (Vb(g.getFullYear()) ? Wb : Xb)[r];\n if (q > z - g.getDate())\n (q -= z - g.getDate() + 1),\n g.setDate(1),\n 11 > r ? g.setMonth(r + 1) : (g.setMonth(0), g.setFullYear(g.getFullYear() + 1));\n else {\n g.setDate(g.getDate() + q);\n break;\n }\n }\n r = new Date(g.getFullYear() + 1, 0, 4);\n q = h(new Date(g.getFullYear(), 0, 4));\n r = h(r);\n return 0 >= l(q, g) ? (0 >= l(r, g) ? g.getFullYear() + 1 : g.getFullYear()) : g.getFullYear() - 1;\n }\n var m = F[(d + 40) >> 2];\n d = {\n sb: E[d >> 2],\n rb: E[(d + 4) >> 2],\n Ra: E[(d + 8) >> 2],\n Va: E[(d + 12) >> 2],\n Sa: E[(d + 16) >> 2],\n Ja: E[(d + 20) >> 2],\n Ga: E[(d + 24) >> 2],\n Ia: E[(d + 28) >> 2],\n wb: E[(d + 32) >> 2],\n qb: E[(d + 36) >> 2],\n tb: m ? (m ? J(A, m) : '') : '',\n };\n c = c ? J(A, c) : '';\n m = {\n '%c': '%a %b %d %H:%M:%S %Y',\n '%D': '%m/%d/%y',\n '%F': '%Y-%m-%d',\n '%h': '%b',\n '%r': '%I:%M:%S %p',\n '%R': '%H:%M',\n '%T': '%H:%M:%S',\n '%x': '%m/%d/%y',\n '%X': '%H:%M:%S',\n '%Ec': '%c',\n '%EC': '%C',\n '%Ex': '%m/%d/%y',\n '%EX': '%H:%M:%S',\n '%Ey': '%y',\n '%EY': '%Y',\n '%Od': '%d',\n '%Oe': '%e',\n '%OH': '%H',\n '%OI': '%I',\n '%Om': '%m',\n '%OM': '%M',\n '%OS': '%S',\n '%Ou': '%u',\n '%OU': '%U',\n '%OV': '%V',\n '%Ow': '%w',\n '%OW': '%W',\n '%Oy': '%y',\n };\n for (var p in m) c = c.replace(new RegExp(p, 'g'), m[p]);\n var u = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),\n v = 'January February March April May June July August September October November December'.split(' ');\n m = {\n '%a': (g) => u[g.Ga].substring(0, 3),\n '%A': (g) => u[g.Ga],\n '%b': (g) => v[g.Sa].substring(0, 3),\n '%B': (g) => v[g.Sa],\n '%C': (g) => f(((g.Ja + 1900) / 100) | 0, 2),\n '%d': (g) => f(g.Va, 2),\n '%e': (g) => e(g.Va, 2, ' '),\n '%g': (g) => n(g).toString().substring(2),\n '%G': n,\n '%H': (g) => f(g.Ra, 2),\n '%I': (g) => {\n g = g.Ra;\n 0 == g ? (g = 12) : 12 < g && (g -= 12);\n return f(g, 2);\n },\n '%j': (g) => {\n for (var q = 0, r = 0; r <= g.Sa - 1; q += (Vb(g.Ja + 1900) ? Wb : Xb)[r++]);\n return f(g.Va + q, 3);\n },\n '%m': (g) => f(g.Sa + 1, 2),\n '%M': (g) => f(g.rb, 2),\n '%n': () => '\\n',\n '%p': (g) => (0 <= g.Ra && 12 > g.Ra ? 'AM' : 'PM'),\n '%S': (g) => f(g.sb, 2),\n '%t': () => '\\t',\n '%u': (g) => g.Ga || 7,\n '%U': (g) => f(Math.floor((g.Ia + 7 - g.Ga) / 7), 2),\n '%V': (g) => {\n var q = Math.floor((g.Ia + 7 - ((g.Ga + 6) % 7)) / 7);\n 2 >= (g.Ga + 371 - g.Ia - 2) % 7 && q++;\n if (q) 53 == q && ((r = (g.Ga + 371 - g.Ia) % 7), 4 == r || (3 == r && Vb(g.Ja)) || (q = 1));\n else {\n q = 52;\n var r = (g.Ga + 7 - g.Ia - 1) % 7;\n (4 == r || (5 == r && Vb((g.Ja % 400) - 1))) && q++;\n }\n return f(q, 2);\n },\n '%w': (g) => g.Ga,\n '%W': (g) => f(Math.floor((g.Ia + 7 - ((g.Ga + 6) % 7)) / 7), 2),\n '%y': (g) => (g.Ja + 1900).toString().substring(2),\n '%Y': (g) => g.Ja + 1900,\n '%z': (g) => {\n g = g.qb;\n var q = 0 <= g;\n g = Math.abs(g) / 60;\n return (q ? '+' : '-') + String('0000' + ((g / 60) * 100 + (g % 60))).slice(-4);\n },\n '%Z': (g) => g.tb,\n '%%': () => '%',\n };\n c = c.replace(/%%/g, '\\x00\\x00');\n for (p in m) c.includes(p) && (c = c.replace(new RegExp(p, 'g'), m[p](d)));\n c = c.replace(/\\0\\0/g, '%');\n p = Yb(c);\n if (p.length > b) return 0;\n y.set(p, a);\n return p.length - 1;\n };\n Ia = k.InternalError = class extends Error {\n constructor(a) {\n super(a);\n this.name = 'InternalError';\n }\n };\n for (var $b = Array(256), ac = 0; 256 > ac; ++ac) $b[ac] = String.fromCharCode(ac);\n Ja = $b;\n R = k.BindingError = class extends Error {\n constructor(a) {\n super(a);\n this.name = 'BindingError';\n }\n };\n Object.assign(Ya.prototype, {\n isAliasOf: function (a) {\n if (!(this instanceof Ya && a instanceof Ya)) return !1;\n var b = this.ma.za.xa,\n c = this.ma.ya;\n a.ma = a.ma;\n var d = a.ma.za.xa;\n for (a = a.ma.ya; b.Ca; ) (c = b.Na(c)), (b = b.Ca);\n for (; d.Ca; ) (a = d.Na(a)), (d = d.Ca);\n return b === d && c === a;\n },\n clone: function () {\n this.ma.ya || La(this);\n if (this.ma.Ma) return (this.ma.count.value += 1), this;\n var a = Wa,\n b = Object,\n c = b.create,\n d = Object.getPrototypeOf(this),\n e = this.ma;\n a = a(\n c.call(b, d, {\n ma: { value: { count: e.count, Ka: e.Ka, Ma: e.Ma, ya: e.ya, za: e.za, Aa: e.Aa, Da: e.Da } },\n }),\n );\n a.ma.count.value += 1;\n a.ma.Ka = !1;\n return a;\n },\n ['delete']() {\n this.ma.ya || La(this);\n if (this.ma.Ka && !this.ma.Ma) throw new R('Object already scheduled for deletion');\n Oa(this);\n var a = this.ma;\n --a.count.value;\n 0 === a.count.value && (a.Aa ? a.Da.Fa(a.Aa) : a.za.xa.Fa(a.ya));\n this.ma.Ma || ((this.ma.Aa = void 0), (this.ma.ya = void 0));\n },\n isDeleted: function () {\n return !this.ma.ya;\n },\n deleteLater: function () {\n this.ma.ya || La(this);\n if (this.ma.Ka && !this.ma.Ma) throw new R('Object already scheduled for deletion');\n Ra.push(this);\n 1 === Ra.length && Ta && Ta(Sa);\n this.ma.Ka = !0;\n return this;\n },\n });\n k.getInheritedInstanceCount = () => Object.keys(Ua).length;\n k.getLiveInheritedInstances = () => {\n var a = [],\n b;\n for (b in Ua) Ua.hasOwnProperty(b) && a.push(Ua[b]);\n return a;\n };\n k.flushPendingDeletes = Sa;\n k.setDelayFunction = (a) => {\n Ta = a;\n Ra.length && Ta && Ta(Sa);\n };\n Object.assign(jb.prototype, {\n eb(a) {\n this.Za && (a = this.Za(a));\n return a;\n },\n Xa(a) {\n this.Fa?.(a);\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n fromWireType: function (a) {\n function b() {\n return this.Qa\n ? Xa(this.xa.La, { za: this.jb, ya: c, Da: this, Aa: a })\n : Xa(this.xa.La, { za: this, ya: a });\n }\n var c = this.eb(a);\n if (!c) return this.Xa(a), null;\n var d = Va(this.xa, c);\n if (void 0 !== d) {\n if (0 === d.ma.count.value) return (d.ma.ya = c), (d.ma.Aa = a), d.clone();\n d = d.clone();\n this.Xa(a);\n return d;\n }\n d = this.xa.cb(c);\n d = Qa[d];\n if (!d) return b.call(this);\n d = this.Pa ? d.$a : d.pointerType;\n var e = Pa(c, this.xa, d.xa);\n return null === e\n ? b.call(this)\n : this.Qa\n ? Xa(d.xa.La, { za: d, ya: e, Da: this, Aa: a })\n : Xa(d.xa.La, { za: d, ya: e });\n },\n });\n nb = k.UnboundTypeError = ((a, b) => {\n var c = Za(b, function (d) {\n this.name = b;\n this.message = d;\n d = Error(d).stack;\n void 0 !== d && (this.stack = this.toString() + '\\n' + d.replace(/^Error(:[^\\n]*)?\\n/, ''));\n });\n c.prototype = Object.create(a.prototype);\n c.prototype.constructor = c;\n c.prototype.toString = function () {\n return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n };\n return c;\n })(Error, 'UnboundTypeError');\n V.push(0, 1, void 0, 1, null, 1, !0, 1, !1, 1);\n k.count_emval_handles = () => V.length / 2 - 5 - vb.length;\n var mc = {\n c: (a, b, c, d) => {\n ra(\n `Assertion failed: ${a ? J(A, a) : ''}, at: ` +\n [b ? (b ? J(A, b) : '') : 'unknown filename', c, d ? (d ? J(A, d) : '') : 'unknown function'],\n );\n },\n m: (a, b, c) => {\n var d = new Aa(a);\n F[(d.ya + 16) >> 2] = 0;\n F[(d.ya + 4) >> 2] = b;\n F[(d.ya + 8) >> 2] = c;\n Ba = a;\n Ca++;\n throw Ba;\n },\n C: function () {\n return 0;\n },\n Q: () => {},\n N: () => {},\n R: function () {\n return 0;\n },\n O: () => {},\n B: function () {},\n P: () => {},\n v: (a) => {\n var b = Fa[a];\n delete Fa[a];\n var c = b.Ua,\n d = b.Fa,\n e = b.Ya,\n f = e.map((l) => l.hb).concat(e.map((l) => l.nb));\n P([a], f, (l) => {\n var h = {};\n e.forEach((n, m) => {\n var p = l[m],\n u = n.fb,\n v = n.gb,\n g = l[m + e.length],\n q = n.mb,\n r = n.ob;\n h[n.bb] = {\n read: (z) => p.fromWireType(u(v, z)),\n write: (z, N) => {\n var D = [];\n q(r, z, g.toWireType(D, N));\n Ga(D);\n },\n };\n });\n return [\n {\n name: b.name,\n fromWireType: (n) => {\n var m = {},\n p;\n for (p in h) m[p] = h[p].read(n);\n d(n);\n return m;\n },\n toWireType: (n, m) => {\n for (var p in h) if (!(p in m)) throw new TypeError(`Missing field: \"${p}\"`);\n var u = c();\n for (p in h) h[p].write(u, m[p]);\n null !== n && n.push(d, u);\n return u;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea: d,\n },\n ];\n });\n },\n J: () => {},\n Y: (a, b, c, d) => {\n b = Q(b);\n O(a, {\n name: b,\n fromWireType: function (e) {\n return !!e;\n },\n toWireType: function (e, f) {\n return f ? c : d;\n },\n argPackAdvance: 8,\n readValueFromPointer: function (e) {\n return this.fromWireType(A[e]);\n },\n Ea: null,\n });\n },\n r: (a, b, c, d, e, f, l, h, n, m, p, u, v) => {\n p = Q(p);\n f = T(e, f);\n h &&= T(l, h);\n m &&= T(n, m);\n v = T(u, v);\n var g = bb(p);\n ab(g, function () {\n qb(`Cannot construct ${p} due to unbound types`, [d]);\n });\n P([a, b, c], d ? [d] : [], (q) => {\n q = q[0];\n if (d) {\n var r = q.xa;\n var z = r.La;\n } else z = Ya.prototype;\n q = Za(p, function (...Na) {\n if (Object.getPrototypeOf(this) !== N) throw new R(\"Use 'new' to construct \" + p);\n if (void 0 === D.Ha) throw new R(p + ' has no accessible constructor');\n var xb = D.Ha[Na.length];\n if (void 0 === xb)\n throw new R(\n `Tried to invoke ctor of ${p} with invalid number of parameters (${\n Na.length\n }) - expected (${Object.keys(D.Ha).toString()}) parameters instead!`,\n );\n return xb.apply(this, Na);\n });\n var N = Object.create(z, { constructor: { value: q } });\n q.prototype = N;\n var D = new cb(p, q, N, v, r, f, h, m);\n if (D.Ca) {\n var ia;\n (ia = D.Ca).Wa ?? (ia.Wa = []);\n D.Ca.Wa.push(D);\n }\n r = new jb(p, D, !0, !1, !1);\n ia = new jb(p + '*', D, !1, !1, !1);\n z = new jb(p + ' const*', D, !1, !0, !1);\n Qa[a] = { pointerType: ia, $a: z };\n kb(g, q);\n return [r, ia, z];\n });\n },\n q: (a, b, c, d, e, f) => {\n var l = rb(b, c);\n e = T(d, e);\n P([], [a], (h) => {\n h = h[0];\n var n = `constructor ${h.name}`;\n void 0 === h.xa.Ha && (h.xa.Ha = []);\n if (void 0 !== h.xa.Ha[b - 1])\n throw new R(\n `Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${\n h.name\n }'! Overload resolution is currently only performed using the parameter count, not actual type info!`,\n );\n h.xa.Ha[b - 1] = () => {\n qb(`Cannot construct ${h.name} due to unbound types`, l);\n };\n P([], l, (m) => {\n m.splice(1, 0, null);\n h.xa.Ha[b - 1] = tb(n, m, null, e, f);\n return [];\n });\n return [];\n });\n },\n f: (a, b, c, d, e, f, l, h) => {\n var n = rb(c, d);\n b = Q(b);\n b = ub(b);\n f = T(e, f);\n P([], [a], (m) => {\n function p() {\n qb(`Cannot call ${u} due to unbound types`, n);\n }\n m = m[0];\n var u = `${m.name}.${b}`;\n b.startsWith('@@') && (b = Symbol[b.substring(2)]);\n h && m.xa.kb.push(b);\n var v = m.xa.La,\n g = v[b];\n void 0 === g || (void 0 === g.Ba && g.className !== m.name && g.Oa === c - 2)\n ? ((p.Oa = c - 2), (p.className = m.name), (v[b] = p))\n : ($a(v, b, u), (v[b].Ba[c - 2] = p));\n P([], n, (q) => {\n q = tb(u, q, m, f, l);\n void 0 === v[b].Ba ? ((q.Oa = c - 2), (v[b] = q)) : (v[b].Ba[c - 2] = q);\n return [];\n });\n return [];\n });\n },\n X: (a) => O(a, zb),\n x: (a, b, c, d) => {\n function e() {}\n b = Q(b);\n e.values = {};\n O(a, {\n name: b,\n constructor: e,\n fromWireType: function (f) {\n return this.constructor.values[f];\n },\n toWireType: (f, l) => l.value,\n argPackAdvance: 8,\n readValueFromPointer: Ab(b, c, d),\n Ea: null,\n });\n ab(b, e);\n },\n k: (a, b, c) => {\n var d = Bb(a, 'enum');\n b = Q(b);\n a = d.constructor;\n d = Object.create(d.constructor.prototype, {\n value: { value: c },\n constructor: { value: Za(`${d.name}_${b}`, function () {}) },\n });\n a.values[c] = d;\n a[b] = d;\n },\n D: (a, b, c) => {\n b = Q(b);\n O(a, {\n name: b,\n fromWireType: (d) => d,\n toWireType: (d, e) => e,\n argPackAdvance: 8,\n readValueFromPointer: Cb(b, c),\n Ea: null,\n });\n },\n F: (a, b, c, d, e, f) => {\n var l = rb(b, c);\n a = Q(a);\n a = ub(a);\n e = T(d, e);\n ab(\n a,\n function () {\n qb(`Cannot call ${a} due to unbound types`, l);\n },\n b - 1,\n );\n P([], l, (h) => {\n kb(a, tb(a, [h[0], null].concat(h.slice(1)), null, e, f), b - 1);\n return [];\n });\n },\n l: (a, b, c, d, e) => {\n b = Q(b);\n -1 === e && (e = 4294967295);\n e = (h) => h;\n if (0 === d) {\n var f = 32 - 8 * c;\n e = (h) => (h << f) >>> f;\n }\n var l = b.includes('unsigned')\n ? function (h, n) {\n return n >>> 0;\n }\n : function (h, n) {\n return n;\n };\n O(a, {\n name: b,\n fromWireType: e,\n toWireType: l,\n argPackAdvance: 8,\n readValueFromPointer: Db(b, c, 0 !== d),\n Ea: null,\n });\n },\n g: (a, b, c) => {\n function d(f) {\n return new e(y.buffer, F[(f + 4) >> 2], F[f >> 2]);\n }\n var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][\n b\n ];\n c = Q(c);\n O(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { ib: !0 });\n },\n w: (a) => {\n O(a, zb);\n },\n ca: (a, b, c, d, e, f, l, h, n, m, p, u) => {\n c = Q(c);\n f = T(e, f);\n h = T(l, h);\n m = T(n, m);\n u = T(p, u);\n P([a], [b], (v) => {\n v = v[0];\n return [new jb(c, v.xa, !1, !1, !0, v, d, f, h, m, u)];\n });\n },\n E: (a, b) => {\n b = Q(b);\n var c = 'std::string' === b;\n O(a, {\n name: b,\n fromWireType: function (d) {\n var e = F[d >> 2],\n f = d + 4;\n if (c)\n for (var l = f, h = 0; h <= e; ++h) {\n var n = f + h;\n if (h == e || 0 == A[n]) {\n l = l ? J(A, l, n - l) : '';\n if (void 0 === m) var m = l;\n else (m += String.fromCharCode(0)), (m += l);\n l = n + 1;\n }\n }\n else {\n m = Array(e);\n for (h = 0; h < e; ++h) m[h] = String.fromCharCode(A[f + h]);\n m = m.join('');\n }\n U(d);\n return m;\n },\n toWireType: function (d, e) {\n e instanceof ArrayBuffer && (e = new Uint8Array(e));\n var f = 'string' == typeof e;\n if (!(f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array))\n throw new R('Cannot pass non-string to std::string');\n var l = c && f ? Da(e) : e.length;\n var h = bc(4 + l + 1),\n n = h + 4;\n F[h >> 2] = l;\n if (c && f) Ea(e, A, n, l + 1);\n else if (f)\n for (f = 0; f < l; ++f) {\n var m = e.charCodeAt(f);\n if (255 < m) throw (U(n), new R('String has UTF-16 code units that do not fit in 8 bits'));\n A[n + f] = m;\n }\n else for (f = 0; f < l; ++f) A[n + f] = e[f];\n null !== d && d.push(U, h);\n return h;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea(d) {\n U(d);\n },\n });\n },\n u: (a, b, c) => {\n c = Q(c);\n if (2 === b) {\n var d = Fb;\n var e = Gb;\n var f = Hb;\n var l = (h) => C[h >> 1];\n } else 4 === b && ((d = Ib), (e = Jb), (f = Kb), (l = (h) => F[h >> 2]));\n O(a, {\n name: c,\n fromWireType: (h) => {\n for (var n = F[h >> 2], m, p = h + 4, u = 0; u <= n; ++u) {\n var v = h + 4 + u * b;\n if (u == n || 0 == l(v))\n (p = d(p, v - p)), void 0 === m ? (m = p) : ((m += String.fromCharCode(0)), (m += p)), (p = v + b);\n }\n U(h);\n return m;\n },\n toWireType: (h, n) => {\n if ('string' != typeof n) throw new R(`Cannot pass non-string to C++ string type ${c}`);\n var m = f(n),\n p = bc(4 + m + b);\n F[p >> 2] = m / b;\n e(n, p + 4, m + b);\n null !== h && h.push(U, p);\n return p;\n },\n argPackAdvance: 8,\n readValueFromPointer: K,\n Ea(h) {\n U(h);\n },\n });\n },\n s: (a, b, c, d, e, f) => {\n Fa[a] = { name: Q(b), Ua: T(c, d), Fa: T(e, f), Ya: [] };\n },\n j: (a, b, c, d, e, f, l, h, n, m) => {\n Fa[a].Ya.push({ bb: Q(b), hb: c, fb: T(d, e), gb: f, nb: l, mb: T(h, n), ob: m });\n },\n Z: (a, b) => {\n b = Q(b);\n O(a, { ub: !0, name: b, argPackAdvance: 0, fromWireType: () => {}, toWireType: () => {} });\n },\n K: () => {\n throw Infinity;\n },\n aa: (a, b, c, d) => {\n a = Lb[a];\n b = yb(b);\n return a(null, b, c, d);\n },\n G: wb,\n $: (a, b, c) => {\n var d = Nb(a, b),\n e = d.shift();\n a--;\n var f = Array(a);\n b = `methodCaller<(${d.map((l) => l.name).join(', ')}) => ${e.name}>`;\n return Mb(\n Za(b, (l, h, n, m) => {\n for (var p = 0, u = 0; u < a; ++u) (f[u] = d[u].readValueFromPointer(m + p)), (p += d[u].argPackAdvance);\n h = 1 === c ? Ob(h, f) : h.apply(l, f);\n l = [];\n h = e.toWireType(l, h);\n l.length && (F[n >> 2] = hb(l));\n return h;\n }),\n );\n },\n ba: (a) => {\n 9 < a && (V[a + 1] += 1);\n },\n _: (a) => {\n var b = yb(a);\n Ga(b);\n wb(a);\n },\n o: (a, b) => {\n a = Bb(a, '_emval_take_value');\n a = a.readValueFromPointer(b);\n return hb(a);\n },\n W: () => {\n ra('');\n },\n V: () => performance.now(),\n M: (a) => {\n var b = A.length;\n a >>>= 0;\n if (2147483648 < a) return !1;\n for (var c = 1; 4 >= c; c *= 2) {\n var d = b * (1 + 0.2 / c);\n d = Math.min(d, a + 100663296);\n var e = Math;\n d = Math.max(a, d);\n a: {\n e =\n (e.min.call(e, 2147483648, d + ((65536 - (d % 65536)) % 65536)) - fa.buffer.byteLength + 65535) / 65536;\n try {\n fa.grow(e);\n la();\n var f = 1;\n break a;\n } catch (l) {}\n f = void 0;\n }\n if (f) return !0;\n }\n return !1;\n },\n S: (a, b) => {\n var c = 0;\n Rb().forEach((d, e) => {\n var f = b + c;\n e = F[(a + 4 * e) >> 2] = f;\n for (f = 0; f < d.length; ++f) y[e++] = d.charCodeAt(f);\n y[e] = 0;\n c += d.length + 1;\n });\n return 0;\n },\n T: (a, b) => {\n var c = Rb();\n F[a >> 2] = c.length;\n var d = 0;\n c.forEach((e) => (d += e.length + 1));\n F[b >> 2] = d;\n return 0;\n },\n t: () => 52,\n A: () => 52,\n I: function () {\n return 70;\n },\n z: (a, b, c, d) => {\n for (var e = 0, f = 0; f < c; f++) {\n var l = F[b >> 2],\n h = F[(b + 4) >> 2];\n b += 8;\n for (var n = 0; n < h; n++) {\n var m = A[l + n],\n p = Sb[a];\n 0 === m || 10 === m ? ((1 === a ? ea : w)(J(p, 0)), (p.length = 0)) : p.push(m);\n }\n e += h;\n }\n F[d >> 2] = e;\n return 0;\n },\n U: (a, b) => {\n Ub(A.subarray(a, a + b));\n return 0;\n },\n i: cc,\n d: dc,\n e: ec,\n p: fc,\n y: gc,\n b: hc,\n a: ic,\n h: jc,\n n: kc,\n H: lc,\n L: (a, b, c, d) => Zb(a, b, c, d),\n },\n W = (function () {\n function a(c) {\n W = c.exports;\n fa = W.da;\n la();\n S = W.ha;\n na.unshift(W.ea);\n G--;\n k.monitorRunDependencies?.(G);\n 0 == G && (null !== qa && (clearInterval(qa), (qa = null)), H && ((c = H), (H = null), c()));\n return W;\n }\n var b = { a: mc };\n G++;\n k.monitorRunDependencies?.(G);\n if (k.instantiateWasm)\n try {\n return k.instantiateWasm(b, a);\n } catch (c) {\n w(`Module.instantiateWasm callback failed with error: ${c}`), ba(c);\n }\n xa(b, function (c) {\n a(c.instance);\n }).catch(ba);\n return {};\n })(),\n bc = (a) => (bc = W.fa)(a),\n ob = (a) => (ob = W.ga)(a),\n U = (a) => (U = W.ia)(a),\n X = (a, b) => (X = W.ja)(a, b),\n Y = (a) => (Y = W.ka)(a),\n Z = () => (Z = W.la)();\n k.dynCall_iijj = (a, b, c, d, e, f) => (k.dynCall_iijj = W.na)(a, b, c, d, e, f);\n k.dynCall_vijj = (a, b, c, d, e, f) => (k.dynCall_vijj = W.oa)(a, b, c, d, e, f);\n k.dynCall_jiii = (a, b, c, d) => (k.dynCall_jiii = W.pa)(a, b, c, d);\n k.dynCall_jii = (a, b, c) => (k.dynCall_jii = W.qa)(a, b, c);\n var nc = (k.dynCall_viiij = (a, b, c, d, e, f) => (nc = k.dynCall_viiij = W.ra)(a, b, c, d, e, f));\n k.dynCall_jiji = (a, b, c, d, e) => (k.dynCall_jiji = W.sa)(a, b, c, d, e);\n k.dynCall_viijii = (a, b, c, d, e, f, l) => (k.dynCall_viijii = W.ta)(a, b, c, d, e, f, l);\n k.dynCall_iiiiij = (a, b, c, d, e, f, l) => (k.dynCall_iiiiij = W.ua)(a, b, c, d, e, f, l);\n k.dynCall_iiiiijj = (a, b, c, d, e, f, l, h, n) => (k.dynCall_iiiiijj = W.va)(a, b, c, d, e, f, l, h, n);\n k.dynCall_iiiiiijj = (a, b, c, d, e, f, l, h, n, m) => (k.dynCall_iiiiiijj = W.wa)(a, b, c, d, e, f, l, h, n, m);\n function hc(a, b) {\n var c = Z();\n try {\n S.get(a)(b);\n } catch (d) {\n Y(c);\n if (d !== d + 0) throw d;\n X(1, 0);\n }\n }\n function ic(a, b, c) {\n var d = Z();\n try {\n S.get(a)(b, c);\n } catch (e) {\n Y(d);\n if (e !== e + 0) throw e;\n X(1, 0);\n }\n }\n function ec(a, b, c, d) {\n var e = Z();\n try {\n return S.get(a)(b, c, d);\n } catch (f) {\n Y(e);\n if (f !== f + 0) throw f;\n X(1, 0);\n }\n }\n function dc(a, b, c) {\n var d = Z();\n try {\n return S.get(a)(b, c);\n } catch (e) {\n Y(d);\n if (e !== e + 0) throw e;\n X(1, 0);\n }\n }\n function cc(a, b) {\n var c = Z();\n try {\n return S.get(a)(b);\n } catch (d) {\n Y(c);\n if (d !== d + 0) throw d;\n X(1, 0);\n }\n }\n function fc(a, b, c, d, e, f) {\n var l = Z();\n try {\n return S.get(a)(b, c, d, e, f);\n } catch (h) {\n Y(l);\n if (h !== h + 0) throw h;\n X(1, 0);\n }\n }\n function kc(a, b, c, d, e) {\n var f = Z();\n try {\n S.get(a)(b, c, d, e);\n } catch (l) {\n Y(f);\n if (l !== l + 0) throw l;\n X(1, 0);\n }\n }\n function jc(a, b, c, d) {\n var e = Z();\n try {\n S.get(a)(b, c, d);\n } catch (f) {\n Y(e);\n if (f !== f + 0) throw f;\n X(1, 0);\n }\n }\n function gc(a) {\n var b = Z();\n try {\n S.get(a)();\n } catch (c) {\n Y(b);\n if (c !== c + 0) throw c;\n X(1, 0);\n }\n }\n function lc(a, b, c, d, e, f) {\n var l = Z();\n try {\n nc(a, b, c, d, e, f);\n } catch (h) {\n Y(l);\n if (h !== h + 0) throw h;\n X(1, 0);\n }\n }\n var oc;\n H = function pc() {\n oc || qc();\n oc || (H = pc);\n };\n function qc() {\n function a() {\n if (!oc && ((oc = !0), (k.calledRun = !0), !ha)) {\n ya(na);\n aa(k);\n if (k.onRuntimeInitialized) k.onRuntimeInitialized();\n if (k.postRun)\n for ('function' == typeof k.postRun && (k.postRun = [k.postRun]); k.postRun.length; ) {\n var b = k.postRun.shift();\n oa.unshift(b);\n }\n ya(oa);\n }\n }\n if (!(0 < G)) {\n if (k.preRun) for ('function' == typeof k.preRun && (k.preRun = [k.preRun]); k.preRun.length; ) pa();\n ya(ma);\n 0 < G ||\n (k.setStatus\n ? (k.setStatus('Running...'),\n setTimeout(function () {\n setTimeout(function () {\n k.setStatus('');\n }, 1);\n a();\n }, 1))\n : a());\n }\n }\n if (k.preInit)\n for ('function' == typeof k.preInit && (k.preInit = [k.preInit]); 0 < k.preInit.length; ) k.preInit.pop()();\n qc();\n\n return readyPromise;\n };\n})();\nexport default createDotLottiePlayerModule;\n","import { PACKAGE_NAME, PACKAGE_VERSION } from '../constants';\n\nimport createDotLottiePlayerModule from './dotlottie-player';\nimport type { MainModule } from './dotlottie-player.types';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class DotLottieWasmLoader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private static _ModulePromise: Promise<MainModule> | null = null;\n\n // URL for the WASM file, constructed using package information\n private static _wasmURL = `https://cdn.jsdelivr.net/npm/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/dotlottie-player.wasm`;\n\n private constructor() {\n throw new Error('RendererLoader is a static class and cannot be instantiated.');\n }\n\n private static async _tryLoad(url: string): Promise<MainModule> {\n const module = await createDotLottiePlayerModule({ locateFile: () => url });\n\n return module;\n }\n\n /**\n * Tries to load the WASM module from the primary URL, falling back to a backup URL if necessary.\n * Throws an error if both URLs fail to load the module.\n * @returns Promise<Module> - A promise that resolves to the loaded module.\n */\n private static async _loadWithBackup(): Promise<MainModule> {\n if (!this._ModulePromise) {\n this._ModulePromise = this._tryLoad(this._wasmURL).catch(async (initialError): Promise<MainModule> => {\n const backupUrl = `https://unpkg.com/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/dotlottie-player.wasm`;\n\n console.warn(`Primary WASM load failed from ${this._wasmURL}. Error: ${(initialError as Error).message}`);\n console.warn(`Attempting to load WASM from backup URL: ${backupUrl}`);\n\n try {\n return await this._tryLoad(backupUrl);\n } catch (backupError) {\n console.error(`Primary WASM URL failed: ${(initialError as Error).message}`);\n console.error(`Backup WASM URL failed: ${(backupError as Error).message}`);\n throw new Error('WASM loading failed from all sources.');\n }\n });\n }\n\n return this._ModulePromise;\n }\n\n /**\n * Public method to load the WebAssembly module.\n * Utilizes a primary and backup URL for robustness.\n * @returns Promise<Module> - A promise that resolves to the loaded module.\n */\n public static async load(): Promise<MainModule> {\n return this._loadWithBackup();\n }\n\n /**\n * Sets a new URL for the WASM file and invalidates the current module promise.\n *\n * @param string - The new URL for the WASM file.\n */\n public static setWasmUrl(url: string): void {\n this._wasmURL = url;\n // Invalidate current module promise\n this._ModulePromise = null;\n }\n}\n","/**\n * Represents the different types of events that can be dispatched.\n */\nexport type EventType =\n | 'complete'\n | 'frame'\n | 'load'\n | 'loadError'\n | 'loop'\n | 'pause'\n | 'play'\n | 'stop'\n | 'destroy'\n | 'freeze'\n | 'unfreeze'\n | 'render'\n | 'ready';\n\n/**\n * Maps an event type string to its respective event interface.\n */\ntype EventByType<T> = T extends 'complete'\n ? CompleteEvent\n : T extends 'frame'\n ? FrameEvent\n : T extends 'load'\n ? LoadEvent\n : T extends 'loadError'\n ? LoadErrorEvent\n : T extends 'loop'\n ? LoopEvent\n : T extends 'pause'\n ? PauseEvent\n : T extends 'play'\n ? PlayEvent\n : T extends 'stop'\n ? StopEvent\n : T extends 'destroy'\n ? DestroyEvent\n : T extends 'freeze'\n ? FreezeEvent\n : T extends 'unfreeze'\n ? UnfreezeEvent\n : T extends 'render'\n ? RenderEvent\n : T extends 'ready'\n ? ReadyEvent\n : never;\n\n/**\n * Base interface for all events.\n */\nexport interface BaseEvent {\n type: EventType;\n}\n\nexport interface RenderEvent extends BaseEvent {\n currentFrame: number;\n type: 'render';\n}\n\nexport interface FreezeEvent extends BaseEvent {\n type: 'freeze';\n}\n\nexport interface UnfreezeEvent extends BaseEvent {\n type: 'unfreeze';\n}\n\n/*\n * Event fired when a destroy action occurs.\n */\nexport interface DestroyEvent extends BaseEvent {\n type: 'destroy';\n}\n\n/**\n * Event fired when a loop action occurs.\n */\nexport interface LoopEvent extends BaseEvent {\n loopCount: number;\n type: 'loop';\n}\n\n/**\n * Event fired during frame changes.\n */\nexport interface FrameEvent extends BaseEvent {\n currentFrame: number;\n type: 'frame';\n}\n\n/**\n * Event fired when a load action occurs.\n */\nexport interface LoadEvent extends BaseEvent {\n type: 'load';\n}\n\n/**\n * Event fired when a loading error occurs.\n */\nexport interface LoadErrorEvent extends BaseEvent {\n error: Error;\n type: 'loadError';\n}\n\n/**\n * Event fired when a completion action occurs.\n */\nexport interface CompleteEvent extends BaseEvent {\n type: 'complete';\n}\n\n/**\n * Event fired when a pause action occurs.\n */\nexport interface PauseEvent extends BaseEvent {\n type: 'pause';\n}\n\n/**\n * Event fired when a play action occurs.\n */\nexport interface PlayEvent extends BaseEvent {\n type: 'play';\n}\n\n/**\n * Event fired when a stop action occurs.\n */\nexport interface StopEvent extends BaseEvent {\n type: 'stop';\n}\n\n/**\n * Event fired when a WASM module is initialized and ready.\n */\nexport interface ReadyEvent extends BaseEvent {\n type: 'ready';\n}\n\n/**\n * Type representing all possible event types.\n */\nexport type Event =\n | LoopEvent\n | FrameEvent\n | LoadEvent\n | LoadErrorEvent\n | CompleteEvent\n | PauseEvent\n | PlayEvent\n | StopEvent\n | DestroyEvent\n | FreezeEvent\n | UnfreezeEvent\n | RenderEvent\n | ReadyEvent;\n\nexport interface EventListener<T extends EventType> {\n (event: EventByType<T>): void;\n}\n\n/**\n * Manages registration and dispatching of event listeners.\n */\nexport class EventManager {\n private readonly _eventListeners: Map<EventType, Set<EventListener<EventType>>> = new Map();\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n let listeners = this._eventListeners.get(type);\n\n if (!listeners) {\n listeners = new Set<EventListener<T>>();\n this._eventListeners.set(type, listeners);\n }\n\n listeners.add(listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n const listeners = this._eventListeners.get(type);\n\n if (!listeners) return;\n\n if (listener) {\n listeners.delete(listener);\n\n if (listeners.size === 0) {\n this._eventListeners.delete(type);\n }\n } else {\n this._eventListeners.delete(type);\n }\n }\n\n public dispatch<T extends EventType>(event: EventByType<T>): void {\n const listeners = this._eventListeners.get(event.type);\n\n listeners?.forEach((listener) => listener(event));\n }\n\n public removeAllEventListeners(): void {\n this._eventListeners.clear();\n }\n}\n","import { LOTTIE_JSON_MANDATORY_FIELDS, ZIP_SIGNATURE } from './constants';\n\nexport function isHexColor(color: string): boolean {\n return /^#([\\da-f]{6}|[\\da-f]{8})$/iu.test(color);\n}\n\nexport function hexStringToRGBAInt(colorHex: string): number {\n if (!isHexColor(colorHex)) {\n return 0;\n }\n\n let hex = colorHex.replace('#', '');\n\n // Add alpha if it's not included\n hex = hex.length === 6 ? `${hex}ff` : hex;\n\n return parseInt(hex, 16);\n}\n\nexport function isDotLottie(fileData: ArrayBuffer): boolean {\n if (fileData.byteLength < 4) {\n return false;\n }\n\n const fileSignature = new Uint8Array(fileData.slice(0, ZIP_SIGNATURE.byteLength));\n\n for (let i = 0; i < ZIP_SIGNATURE.length; i += 1) {\n if (ZIP_SIGNATURE[i] !== fileSignature[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns whether the given object looks like a valid Lottie JSON structure.\n */\nexport function isLottieJSON(json: Record<string, unknown>): boolean {\n return LOTTIE_JSON_MANDATORY_FIELDS.every((field) => Object.prototype.hasOwnProperty.call(json, field));\n}\n\nexport function isLottie(fileData: string | Record<string, unknown>): boolean {\n if (typeof fileData === 'string') {\n try {\n return isLottieJSON(JSON.parse(fileData));\n } catch (_e) {\n return false;\n }\n } else {\n return isLottieJSON(fileData);\n }\n}\n","import { AnimationFrameManager } from './animation-frame-manager';\nimport { IS_BROWSER } from './constants';\nimport type { DotLottiePlayer, MainModule, Mode as CoreMode, VectorFloat, Marker, Fit as CoreFit } from './core';\nimport { DotLottieWasmLoader } from './core';\nimport type { EventListener, EventType } from './event-manager';\nimport { EventManager } from './event-manager';\nimport type { Mode, Fit, Config, Layout, Manifest, RenderConfig, Data } from './types';\nimport { hexStringToRGBAInt, isDotLottie, isLottie } from './utils';\n\nconst createCoreMode = (mode: Mode, module: MainModule): CoreMode => {\n if (mode === 'reverse') {\n return module.Mode.Reverse;\n } else if (mode === 'bounce') {\n return module.Mode.Bounce;\n } else if (mode === 'reverse-bounce') {\n return module.Mode.ReverseBounce;\n } else {\n return module.Mode.Forward;\n }\n};\n\nconst createCoreFit = (fit: Fit, module: MainModule): CoreFit => {\n if (fit === 'contain') {\n return module.Fit.Contain;\n } else if (fit === 'cover') {\n return module.Fit.Cover;\n } else if (fit === 'fill') {\n return module.Fit.Fill;\n } else if (fit === 'fit-height') {\n return module.Fit.FitHeight;\n } else if (fit === 'fit-width') {\n return module.Fit.FitWidth;\n } else {\n return module.Fit.None;\n }\n};\n\nconst createCoreAlign = (align: [number, number], module: MainModule): VectorFloat => {\n const coreAlign = new module.VectorFloat();\n\n coreAlign.push_back(align[0]);\n coreAlign.push_back(align[1]);\n\n return coreAlign;\n};\n\nconst createCoreSegment = (segment: number[], module: MainModule): VectorFloat => {\n const coresegment = new module.VectorFloat();\n\n if (segment.length !== 2) return coresegment;\n\n coresegment.push_back(segment[0] as number);\n coresegment.push_back(segment[1] as number);\n\n return coresegment;\n};\n\nexport class DotLottie {\n private readonly _canvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null = null;\n\n private readonly _eventManager: EventManager;\n\n private _animationFrameId: number | null = null;\n\n private readonly _frameManager: AnimationFrameManager;\n\n private _dotLottieCore: DotLottiePlayer | null = null;\n\n private static _wasmModule: MainModule | null = null;\n\n private _renderConfig: RenderConfig = {};\n\n private _isFrozen: boolean = false;\n\n private _backgroundColor: string | null = null;\n\n public constructor(config: Config) {\n this._canvas = config.canvas;\n this._context = this._canvas.getContext('2d');\n\n this._eventManager = new EventManager();\n this._frameManager = new AnimationFrameManager();\n this._renderConfig = config.renderConfig ?? {};\n\n DotLottieWasmLoader.load()\n .then((module) => {\n DotLottie._wasmModule = module;\n\n this._dotLottieCore = new module.DotLottiePlayer({\n autoplay: config.autoplay ?? false,\n backgroundColor: 0,\n loopAnimation: config.loop ?? false,\n mode: createCoreMode(config.mode ?? 'forward', module),\n segment: createCoreSegment(config.segment ?? [], module),\n speed: config.speed ?? 1,\n useFrameInterpolation: config.useFrameInterpolation ?? true,\n marker: config.marker ?? '',\n layout: config.layout\n ? {\n align: createCoreAlign(config.layout.align, module),\n fit: createCoreFit(config.layout.fit, module),\n }\n : module.createDefaultLayout(),\n });\n\n this._eventManager.dispatch({ type: 'ready' });\n\n if (config.data) {\n this._loadFromData(config.data);\n } else if (config.src) {\n this._loadFromSrc(config.src);\n }\n\n if (config.backgroundColor) {\n this.setBackgroundColor(config.backgroundColor);\n }\n })\n .catch((error) => {\n this._eventManager.dispatch({\n type: 'loadError',\n error: new Error(`Failed to load wasm module: ${error}`),\n });\n });\n }\n\n private _dispatchError(message: string): void {\n console.error(message);\n this._eventManager.dispatch({ type: 'loadError', error: new Error(message) });\n }\n\n private async _fetchData(src: string): Promise<string | ArrayBuffer> {\n const response = await fetch(src);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch animation data from URL: ${src}. ${response.status}: ${response.statusText}`);\n }\n\n const data = await response.arrayBuffer();\n\n if (isDotLottie(data)) {\n return data;\n }\n\n // eslint-disable-next-line node/no-unsupported-features/node-builtins\n return new TextDecoder().decode(data);\n }\n\n private _loadFromData(data: Data): void {\n if (this._dotLottieCore === null) return;\n\n const width = this._canvas.width;\n const height = this._canvas.height;\n\n let loaded = false;\n\n if (typeof data === 'string') {\n if (!isLottie(data)) {\n this._dispatchError(\n 'Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadAnimationData(data, width, height);\n } else if (data instanceof ArrayBuffer) {\n if (!isDotLottie(data)) {\n this._dispatchError(\n 'Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadDotLottieData(data, width, height);\n } else if (typeof data === 'object') {\n if (!isLottie(data as Record<string, unknown>)) {\n this._dispatchError(\n 'Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.loadAnimationData(JSON.stringify(data), width, height);\n } else {\n this._dispatchError(\n `Unsupported data type for animation data. Expected: \n - string (Lottie JSON),\n - ArrayBuffer (dotLottie),\n - object (Lottie JSON). \n Received: ${typeof data}`,\n );\n\n return;\n }\n\n if (loaded) {\n this._eventManager.dispatch({ type: 'load' });\n\n if (IS_BROWSER) {\n this.resize();\n }\n\n this._eventManager.dispatch({\n type: 'frame',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n this._render();\n\n if (this._dotLottieCore.config().autoplay) {\n this._dotLottieCore.play();\n if (this._dotLottieCore.isPlaying()) {\n this._eventManager.dispatch({ type: 'play' });\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n } else {\n console.error('something went wrong, the animation was suppose to autoplay');\n }\n }\n } else {\n this._dispatchError('Failed to load animation data');\n }\n }\n\n private _loadFromSrc(src: string): void {\n this._fetchData(src)\n .then((data) => this._loadFromData(data))\n .catch((error) => this._dispatchError(`Failed to load animation data from URL: ${src}. ${error}`));\n }\n\n public get activeAnimationId(): string | undefined {\n return this._dotLottieCore?.activeAnimationId();\n }\n\n public get activeThemeId(): string | undefined {\n return this._dotLottieCore?.activeThemeId();\n }\n\n public get layout(): Layout | undefined {\n const layout = this._dotLottieCore?.config().layout;\n\n if (layout) {\n return {\n align: [layout.align.get(0) as number, layout.align.get(1) as number],\n fit: ((): Fit => {\n switch (layout.fit) {\n case DotLottie._wasmModule?.Fit.Contain:\n return 'contain';\n\n case DotLottie._wasmModule?.Fit.Cover:\n return 'cover';\n\n case DotLottie._wasmModule?.Fit.Fill:\n return 'fill';\n\n case DotLottie._wasmModule?.Fit.FitHeight:\n return 'fit-height';\n\n case DotLottie._wasmModule?.Fit.FitWidth:\n return 'fit-width';\n\n case DotLottie._wasmModule?.Fit.None:\n return 'none';\n\n default:\n return 'contain';\n }\n })(),\n };\n }\n\n return undefined;\n }\n\n public get marker(): string | undefined {\n const marker = this._dotLottieCore?.config().marker as string | undefined;\n\n return marker;\n }\n\n public get manifest(): Manifest | null {\n try {\n const manifest = this._dotLottieCore?.manifestString();\n\n if (this._dotLottieCore === null || !manifest) return null;\n\n const manifestJson = JSON.parse(manifest);\n\n if (Object.keys(manifestJson).length === 0) return null;\n\n return manifestJson as Manifest;\n } catch (_err) {\n return null;\n }\n }\n\n public get renderConfig(): RenderConfig {\n return this._renderConfig;\n }\n\n public get segment(): [number, number] | undefined {\n const segment = this._dotLottieCore?.config().segment;\n\n if (segment && segment.size() === 2) {\n return [segment.get(0) as number, segment.get(1) as number];\n }\n\n return undefined;\n }\n\n public get loop(): boolean {\n return this._dotLottieCore?.config().loopAnimation ?? false;\n }\n\n public get mode(): Mode {\n const mode = this._dotLottieCore?.config().mode;\n\n if (mode === DotLottie._wasmModule?.Mode.Reverse) {\n return 'reverse';\n } else if (mode === DotLottie._wasmModule?.Mode.Bounce) {\n return 'bounce';\n } else if (mode === DotLottie._wasmModule?.Mode.ReverseBounce) {\n return 'reverse-bounce';\n } else {\n return 'forward';\n }\n }\n\n public get isFrozen(): boolean {\n return this._isFrozen;\n }\n\n public get backgroundColor(): string {\n return this._backgroundColor ?? '';\n }\n\n public get autoplay(): boolean {\n return this._dotLottieCore?.config().autoplay ?? false;\n }\n\n public get useFrameInterpolation(): boolean {\n return this._dotLottieCore?.config().useFrameInterpolation ?? false;\n }\n\n public get speed(): number {\n return this._dotLottieCore?.config().speed ?? 0;\n }\n\n public get isReady(): boolean {\n return this._dotLottieCore !== null;\n }\n\n public get isLoaded(): boolean {\n return this._dotLottieCore?.isLoaded() ?? false;\n }\n\n public get isPlaying(): boolean {\n return this._dotLottieCore?.isPlaying() ?? false;\n }\n\n public get isPaused(): boolean {\n return this._dotLottieCore?.isPaused() ?? false;\n }\n\n public get isStopped(): boolean {\n return this._dotLottieCore?.isStopped() ?? false;\n }\n\n public get currentFrame(): number {\n return this._dotLottieCore?.currentFrame() ?? 0;\n }\n\n public get loopCount(): number {\n return this._dotLottieCore?.loopCount() ?? 0;\n }\n\n public get totalFrames(): number {\n return this._dotLottieCore?.totalFrames() ?? 0;\n }\n\n public get duration(): number {\n return this._dotLottieCore?.duration() ?? 0;\n }\n\n public get segmentDuration(): number {\n return this._dotLottieCore?.segmentDuration() ?? 0;\n }\n\n public get canvas(): HTMLCanvasElement | OffscreenCanvas {\n return this._canvas;\n }\n\n public load(config: Omit<Config, 'canvas'>): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n autoplay: config.autoplay ?? false,\n backgroundColor: 0,\n loopAnimation: config.loop ?? false,\n mode: createCoreMode(config.mode ?? 'forward', DotLottie._wasmModule),\n segment: createCoreSegment(config.segment ?? [], DotLottie._wasmModule),\n speed: config.speed ?? 1,\n useFrameInterpolation: config.useFrameInterpolation ?? true,\n marker: config.marker ?? '',\n layout: config.layout\n ? {\n align: createCoreAlign(config.layout.align, DotLottie._wasmModule),\n fit: createCoreFit(config.layout.fit, DotLottie._wasmModule),\n }\n : DotLottie._wasmModule.createDefaultLayout(),\n });\n\n if (config.data) {\n this._loadFromData(config.data);\n } else if (config.src) {\n this._loadFromSrc(config.src);\n }\n\n this.setBackgroundColor(config.backgroundColor ?? '');\n }\n\n private _render(): boolean {\n if (this._dotLottieCore === null || this._context === null) return false;\n\n const rendered = this._dotLottieCore.render();\n\n if (rendered) {\n const buffer = this._dotLottieCore.buffer() as Uint8Array;\n const clampedBuffer = new Uint8ClampedArray(buffer, 0, this._canvas.width * this._canvas.height * 4);\n\n let imageData = null;\n\n /* \n In Node.js, the ImageData constructor is not available. \n You can use createImageData function in the canvas context to create ImageData object.\n */\n if (typeof ImageData === 'undefined') {\n imageData = this._context.createImageData(this._canvas.width, this._canvas.height);\n imageData.data.set(clampedBuffer);\n } else {\n imageData = new ImageData(clampedBuffer, this._canvas.width, this._canvas.height);\n }\n\n this._context.putImageData(imageData, 0, 0);\n\n this._eventManager.dispatch({\n type: 'render',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n return true;\n }\n\n return false;\n }\n\n private _draw(): void {\n if (this._dotLottieCore === null || this._context === null || !this._dotLottieCore.isPlaying()) return;\n\n const nextFrame = this._dotLottieCore.requestFrame();\n\n const updated = this._dotLottieCore.setFrame(nextFrame);\n\n if (updated) {\n this._eventManager.dispatch({\n type: 'frame',\n currentFrame: this._dotLottieCore.currentFrame(),\n });\n\n const rendered = this._render();\n\n if (rendered) {\n // handle loop or complete\n if (this._dotLottieCore.isComplete()) {\n if (this._dotLottieCore.config().loopAnimation) {\n this._eventManager.dispatch({\n type: 'loop',\n loopCount: this._dotLottieCore.loopCount(),\n });\n } else {\n this._eventManager.dispatch({ type: 'complete' });\n }\n }\n }\n }\n\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n }\n\n public play(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.play();\n\n if (ok || this._dotLottieCore.isPlaying()) {\n this._isFrozen = false;\n this._eventManager.dispatch({ type: 'play' });\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n }\n }\n\n public pause(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.pause();\n\n if (ok || this._dotLottieCore.isPaused()) {\n this._eventManager.dispatch({ type: 'pause' });\n }\n }\n\n public stop(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.stop();\n\n if (ok) {\n this._eventManager.dispatch({ type: 'frame', currentFrame: this._dotLottieCore.currentFrame() });\n\n this._render();\n\n this._eventManager.dispatch({ type: 'stop' });\n }\n }\n\n public setFrame(frame: number): void {\n if (this._dotLottieCore === null) return;\n\n if (frame < 0 || frame > this._dotLottieCore.totalFrames()) return;\n\n const ok = this._dotLottieCore.seek(frame);\n\n if (ok) {\n this._eventManager.dispatch({ type: 'frame', currentFrame: this._dotLottieCore.currentFrame() });\n\n this._render();\n }\n }\n\n public setSpeed(speed: number): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n speed,\n });\n }\n\n public setBackgroundColor(color: string): void {\n if (this._dotLottieCore === null) return;\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.style.backgroundColor = color;\n } else {\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n backgroundColor: hexStringToRGBAInt(color),\n });\n }\n\n this._backgroundColor = color;\n }\n\n public setLoop(loop: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n loopAnimation: loop,\n });\n }\n\n public setUseFrameInterpolation(useFrameInterpolation: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n useFrameInterpolation,\n });\n }\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n public destroy(): void {\n this._dotLottieCore?.delete();\n this._dotLottieCore = null;\n this._context = null;\n\n this._eventManager.dispatch({\n type: 'destroy',\n });\n\n this._eventManager.removeAllEventListeners();\n this._cleanupStateMachineListeners();\n }\n\n public freeze(): void {\n if (this._animationFrameId === null) return;\n\n this._frameManager.cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n\n this._isFrozen = true;\n\n this._eventManager.dispatch({ type: 'freeze' });\n }\n\n public unfreeze(): void {\n if (this._animationFrameId !== null) return;\n\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._draw.bind(this));\n\n this._isFrozen = false;\n\n this._eventManager.dispatch({ type: 'unfreeze' });\n }\n\n public resize(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n const dpr = this._renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n\n const { height: clientHeight, width: clientWidth } = this._canvas.getBoundingClientRect();\n\n this._canvas.width = clientWidth * dpr;\n this._canvas.height = clientHeight * dpr;\n }\n\n const ok = this._dotLottieCore?.resize(this._canvas.width, this._canvas.height);\n\n if (ok) {\n this._render();\n }\n }\n\n public setSegment(startFrame: number, endFrame: number): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n segment: createCoreSegment([startFrame, endFrame], DotLottie._wasmModule),\n });\n }\n\n public setMode(mode: Mode): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n mode: createCoreMode(mode, DotLottie._wasmModule),\n });\n }\n\n public setRenderConfig(config: RenderConfig): void {\n this._renderConfig = config;\n }\n\n public loadAnimation(animationId: string): void {\n if (this._dotLottieCore === null || this._dotLottieCore.activeAnimationId() === animationId) return;\n\n const loaded = this._dotLottieCore.loadAnimation(animationId, this._canvas.width, this._canvas.height);\n\n if (loaded) {\n this._eventManager.dispatch({ type: 'load' });\n this.resize();\n } else {\n this._eventManager.dispatch({\n type: 'loadError',\n error: new Error(`Failed to animation :${animationId}`),\n });\n }\n }\n\n public setMarker(marker: string): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n marker,\n });\n }\n\n public markers(): Marker[] {\n const markers = this._dotLottieCore?.markers();\n\n if (markers) {\n const result: Marker[] = [];\n\n for (let i = 0; i < markers.size(); i += 1) {\n const marker = markers.get(i) as Marker;\n\n result.push({\n name: marker.name,\n time: marker.time,\n duration: marker.duration,\n });\n }\n\n return result;\n }\n\n return [];\n }\n\n public loadTheme(themeId: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const loaded = this._dotLottieCore.loadTheme(themeId);\n\n this._render();\n\n return loaded;\n }\n\n public loadThemeData(themeData: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const loaded = this._dotLottieCore.loadThemeData(themeData);\n\n this._render();\n\n return loaded;\n }\n\n public setLayout(layout: Layout): void {\n if (this._dotLottieCore === null || DotLottie._wasmModule === null) return;\n\n this._dotLottieCore.setConfig({\n ...this._dotLottieCore.config(),\n layout: {\n align: createCoreAlign(layout.align, DotLottie._wasmModule),\n fit: createCoreFit(layout.fit, DotLottie._wasmModule),\n },\n });\n }\n\n public setViewport(x: number, y: number, width: number, height: number): boolean {\n if (this._dotLottieCore === null) return false;\n\n return this._dotLottieCore.setViewport(x, y, width, height);\n }\n\n public static setWasmUrl(url: string): void {\n DotLottieWasmLoader.setWasmUrl(url);\n }\n\n public loadStateMachine(stateMachineId: string): boolean {\n return this._dotLottieCore?.loadStateMachine(stateMachineId) ?? false;\n }\n\n public startStateMachine(): boolean {\n const started = this._dotLottieCore?.startStateMachine() ?? false;\n\n if (started) {\n this._setupStateMachineListeners();\n }\n\n return started;\n }\n\n public stopStateMachine(): boolean {\n const stopped = this._dotLottieCore?.stopStateMachine() ?? false;\n\n if (stopped) {\n this._cleanupStateMachineListeners();\n }\n\n return stopped;\n }\n\n private _getPointerPosition(event: PointerEvent): { x: number; y: number } {\n const rect = (this._canvas as HTMLCanvasElement).getBoundingClientRect();\n const scaleX = this._canvas.width / rect.width;\n const scaleY = this._canvas.height / rect.height;\n\n const devicePixelRatio = this._renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n const x = ((event.clientX - rect.left) * scaleX) / devicePixelRatio;\n const y = ((event.clientY - rect.top) * scaleY) / devicePixelRatio;\n\n return {\n x,\n y,\n };\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerUp: ${x} ${y}`);\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerDown: ${x} ${y}`);\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerMove: ${x} ${y}`);\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerEnter: ${x} ${y}`);\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerExit: ${x} ${y}`);\n }\n\n private _onComplete(): void {\n this.postStateMachineEvent('OnComplete');\n }\n\n /**\n * @experimental\n * @param event - The event to be posted to the state machine\n * @returns boolean - true if the event was posted successfully, false otherwise\n */\n public postStateMachineEvent(event: string): number {\n const rt = this._dotLottieCore?.postEventPayload(event) ?? 1;\n\n if (rt === 2) {\n this.play();\n } else if (rt === 3) {\n this.pause();\n } else if (rt === 4) {\n this._render();\n }\n\n return rt;\n }\n\n public getStateMachineListeners(): string[] {\n if (!this._dotLottieCore) return [];\n\n const listenersVector = this._dotLottieCore.stateMachineFrameworkSetup();\n\n const listeners = [];\n\n for (let i = 0; i < listenersVector.size(); i += 1) {\n listeners.push(listenersVector.get(i) as string);\n }\n\n return listeners;\n }\n\n private _setupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this._dotLottieCore !== null && this.isLoaded) {\n const listeners = this.getStateMachineListeners();\n\n if (listeners.includes('PointerUp')) {\n this._canvas.addEventListener('pointerup', this._onPointerUp.bind(this));\n }\n\n if (listeners.includes('PointerDown')) {\n this._canvas.addEventListener('pointerdown', this._onPointerDown.bind(this));\n }\n\n if (listeners.includes('PointerMove')) {\n this._canvas.addEventListener('pointermove', this._onPointerMove.bind(this));\n }\n\n if (listeners.includes('PointerEnter')) {\n this._canvas.addEventListener('pointerenter', this._onPointerEnter.bind(this));\n }\n\n if (listeners.includes('PointerExit')) {\n this._canvas.addEventListener('pointerleave', this._onPointerLeave.bind(this));\n }\n\n if (listeners.includes('Complete')) {\n this.addEventListener('complete', this._onComplete.bind(this));\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.removeEventListener('pointerup', this._onPointerUp.bind(this));\n this._canvas.removeEventListener('pointerdown', this._onPointerDown.bind(this));\n this._canvas.removeEventListener('pointermove', this._onPointerMove.bind(this));\n this._canvas.removeEventListener('pointerenter', this._onPointerEnter.bind(this));\n this._canvas.removeEventListener('pointerleave', this._onPointerLeave.bind(this));\n this.removeEventListener('complete', this._onComplete.bind(this));\n }\n }\n\n public loadStateMachineData(stateMachineData: string): boolean {\n return this._dotLottieCore?.loadStateMachineData(stateMachineData) ?? false;\n }\n\n public animationSize(): { height: number; width: number } {\n const width = this._dotLottieCore?.animationSize().get(0) ?? 0;\n const height = this._dotLottieCore?.animationSize().get(1) ?? 0;\n\n return {\n width,\n height,\n };\n }\n\n public setStateMachineBooleanContext(name: string, value: boolean): boolean {\n return this._dotLottieCore?.setStateMachineBooleanContext(name, value) ?? false;\n }\n\n public setStateMachineNumericContext(name: string, value: number): boolean {\n return this._dotLottieCore?.setStateMachineNumericContext(name, value) ?? false;\n }\n\n public setStateMachineStringContext(name: string, value: string): boolean {\n return this._dotLottieCore?.setStateMachineStringContext(name, value) ?? false;\n }\n}\n","\n export default class InlinedWorker extends Worker {\n constructor() {\n super('data:application/javascript;base64,InVzZSBzdHJpY3QiOwooKCkgPT4gewogIHZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CiAgdmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlOwogIHZhciBfX3B1YmxpY0ZpZWxkID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4gX19kZWZOb3JtYWxQcm9wKG9iaiwgdHlwZW9mIGtleSAhPT0gInN5bWJvbCIgPyBrZXkgKyAiIiA6IGtleSwgdmFsdWUpOwoKICAvLyBzcmMvYW5pbWF0aW9uLWZyYW1lLW1hbmFnZXIudHMKICB2YXIgV2ViQW5pbWF0aW9uRnJhbWVTdHJhdGVneSA9IGNsYXNzIHsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjaykgewogICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTsKICAgIH0KICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKSB7CiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgIH0KICB9OwogIHZhciBOb2RlQW5pbWF0aW9uRnJhbWVTdHJhdGVneSA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfbGFzdEhhbmRsZUlkIiwgMCk7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9sYXN0SW1tZWRpYXRlIiwgbnVsbCk7CiAgICB9CiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHsKICAgICAgaWYgKHRoaXMuX2xhc3RIYW5kbGVJZCA+PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgewogICAgICAgIHRoaXMuX2xhc3RIYW5kbGVJZCA9IDA7CiAgICAgIH0KICAgICAgdGhpcy5fbGFzdEhhbmRsZUlkICs9IDE7CiAgICAgIHRoaXMuX2xhc3RJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGUoKCkgPT4gewogICAgICAgIGNhbGxiYWNrKERhdGUubm93KCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHRoaXMuX2xhc3RIYW5kbGVJZDsKICAgIH0KICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKF9pZCkgewogICAgICBpZiAodGhpcy5fbGFzdEltbWVkaWF0ZSkgewogICAgICAgIGNsZWFySW1tZWRpYXRlKHRoaXMuX2xhc3RJbW1lZGlhdGUpOwogICAgICB9CiAgICB9CiAgfTsKICB2YXIgQW5pbWF0aW9uRnJhbWVNYW5hZ2VyID0gY2xhc3MgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9zdHJhdGVneSIpOwogICAgICB0aGlzLl9zdHJhdGVneSA9IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICJmdW5jdGlvbiIgPyBuZXcgV2ViQW5pbWF0aW9uRnJhbWVTdHJhdGVneSgpIDogbmV3IE5vZGVBbmltYXRpb25GcmFtZVN0cmF0ZWd5KCk7CiAgICB9CiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7CiAgICB9CiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShpZCkgewogICAgICB0aGlzLl9zdHJhdGVneS5jYW5jZWxBbmltYXRpb25GcmFtZShpZCk7CiAgICB9CiAgfTsKCiAgLy8gc3JjL2NvbnN0YW50cy50cwogIHZhciBJU19CUk9XU0VSID0gdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAhPT0gInVuZGVmaW5lZCI7CiAgdmFyIFpJUF9TSUdOQVRVUkUgPSBuZXcgVWludDhBcnJheShbODAsIDc1LCAzLCA0XSk7CiAgdmFyIExPVFRJRV9KU09OX01BTkRBVE9SWV9GSUVMRFMgPSBbInYiLCAiaXAiLCAib3AiLCAibGF5ZXJzIiwgImZyIiwgInciLCAiaCJdOwogIHZhciBQQUNLQUdFX1ZFUlNJT04gPSAiMC4zMC4wIjsKICB2YXIgUEFDS0FHRV9OQU1FID0gIkBsb3R0aWVmaWxlcy9kb3Rsb3R0aWUtd2ViIjsKCiAgLy8gc3JjL2NvcmUvZG90bG90dGllLXBsYXllci5qcwogIHZhciBjcmVhdGVEb3RMb3R0aWVQbGF5ZXJNb2R1bGUgPSAoKCkgPT4gewogICAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT0gInVuZGVmaW5lZCIgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmMgOiB2b2lkIDA7CiAgICByZXR1cm4gZnVuY3Rpb24obW9kdWxlQXJnID0ge30pIHsKICAgICAgdmFyIGsgPSBtb2R1bGVBcmcsIGFhLCBiYSwgcmVhZHlQcm9taXNlID0gbmV3IFByb21pc2UoKGEsIGIpID0+IHsKICAgICAgICBhYSA9IGE7CiAgICAgICAgYmEgPSBiOwogICAgICB9KSwgY2EgPSBPYmplY3QuYXNzaWduKHt9LCBrKSwgZGEgPSAiLi90aGlzLnByb2dyYW0iLCB0ID0gIiI7CiAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmICh0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpOwogICAgICBfc2NyaXB0RGlyICYmICh0ID0gX3NjcmlwdERpcik7CiAgICAgIHQuc3RhcnRzV2l0aCgiYmxvYjoiKSA/IHQgPSAiIiA6IHQgPSB0LnN1YnN0cigwLCB0LnJlcGxhY2UoL1s/I10uKi8sICIiKS5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIHZhciBlYSA9IGsucHJpbnQgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwgdyA9IGsucHJpbnRFcnIgfHwgY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpOwogICAgICBPYmplY3QuYXNzaWduKGssIGNhKTsKICAgICAgY2EgPSBudWxsOwogICAgICBrLnRoaXNQcm9ncmFtICYmIChkYSA9IGsudGhpc1Byb2dyYW0pOwogICAgICB2YXIgeDsKICAgICAgay53YXNtQmluYXJ5ICYmICh4ID0gay53YXNtQmluYXJ5KTsKICAgICAgdmFyIGZhLCBoYSA9IGZhbHNlLCB5LCBBLCBCLCBDLCBFLCBGLCBqYSwga2E7CiAgICAgIGZ1bmN0aW9uIGxhKCkgewogICAgICAgIHZhciBhID0gZmEuYnVmZmVyOwogICAgICAgIGsuSEVBUDggPSB5ID0gbmV3IEludDhBcnJheShhKTsKICAgICAgICBrLkhFQVAxNiA9IEIgPSBuZXcgSW50MTZBcnJheShhKTsKICAgICAgICBrLkhFQVBVOCA9IEEgPSBuZXcgVWludDhBcnJheShhKTsKICAgICAgICBrLkhFQVBVMTYgPSBDID0gbmV3IFVpbnQxNkFycmF5KGEpOwogICAgICAgIGsuSEVBUDMyID0gRSA9IG5ldyBJbnQzMkFycmF5KGEpOwogICAgICAgIGsuSEVBUFUzMiA9IEYgPSBuZXcgVWludDMyQXJyYXkoYSk7CiAgICAgICAgay5IRUFQRjMyID0gamEgPSBuZXcgRmxvYXQzMkFycmF5KGEpOwogICAgICAgIGsuSEVBUEY2NCA9IGthID0gbmV3IEZsb2F0NjRBcnJheShhKTsKICAgICAgfQogICAgICB2YXIgbWEgPSBbXSwgbmEgPSBbXSwgb2EgPSBbXTsKICAgICAgZnVuY3Rpb24gcGEoKSB7CiAgICAgICAgdmFyIGEgPSBrLnByZVJ1bi5zaGlmdCgpOwogICAgICAgIG1hLnVuc2hpZnQoYSk7CiAgICAgIH0KICAgICAgdmFyIEcgPSAwLCBxYSA9IG51bGwsIEggPSBudWxsOwogICAgICBmdW5jdGlvbiByYShhKSB7CiAgICAgICAgay5vbkFib3J0Py4oYSk7CiAgICAgICAgYSA9ICJBYm9ydGVkKCIgKyBhICsgIikiOwogICAgICAgIHcoYSk7CiAgICAgICAgaGEgPSB0cnVlOwogICAgICAgIGEgPSBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGEgKyAiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIpOwogICAgICAgIGJhKGEpOwogICAgICAgIHRocm93IGE7CiAgICAgIH0KICAgICAgdmFyIHNhID0gKGEpID0+IGEuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpLCBJOwogICAgICBJID0gIkRvdExvdHRpZVBsYXllci53YXNtIjsKICAgICAgaWYgKCFzYShJKSkgewogICAgICAgIHZhciB0YSA9IEk7CiAgICAgICAgSSA9IGsubG9jYXRlRmlsZSA/IGsubG9jYXRlRmlsZSh0YSwgdCkgOiB0ICsgdGE7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gdWEoYSkgewogICAgICAgIGlmIChhID09IEkgJiYgeCkgcmV0dXJuIG5ldyBVaW50OEFycmF5KHgpOwogICAgICAgIHRocm93ICJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gdmEoYSkgewogICAgICAgIHJldHVybiB4IHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGZldGNoID8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB1YShhKSkgOiBmZXRjaChhLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oKGIpID0+IHsKICAgICAgICAgIGlmICghYi5vaykgdGhyb3cgYGZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyR7YX0nYDsKICAgICAgICAgIHJldHVybiBiLmFycmF5QnVmZmVyKCk7CiAgICAgICAgfSkuY2F0Y2goKCkgPT4gdWEoYSkpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHdhKGEsIGIsIGMpIHsKICAgICAgICByZXR1cm4gdmEoYSkudGhlbigoZCkgPT4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCwgYikpLnRoZW4oYywgKGQpID0+IHsKICAgICAgICAgIHcoYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7ZH1gKTsKICAgICAgICAgIHJhKGQpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHhhKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IEk7CiAgICAgICAgcmV0dXJuIHggfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgfHwgc2EoYykgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZmV0Y2ggPyB3YShjLCBhLCBiKSA6IGZldGNoKGMsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSkudGhlbigKICAgICAgICAgIChkKSA9PiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhkLCBhKS50aGVuKGIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdyhgd2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICR7ZX1gKTsKICAgICAgICAgICAgdygiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKTsKICAgICAgICAgICAgcmV0dXJuIHdhKGMsIGEsIGIpOwogICAgICAgICAgfSkKICAgICAgICApOwogICAgICB9CiAgICAgIHZhciB5YSA9IChhKSA9PiB7CiAgICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSBhLnNoaWZ0KCkoayk7CiAgICAgIH0sIHphID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGY4IikgOiB2b2lkIDAsIEogPSAoYSwgYiwgYykgPT4gewogICAgICAgIHZhciBkID0gYiArIGM7CiAgICAgICAgZm9yIChjID0gYjsgYVtjXSAmJiAhKGMgPj0gZCk7ICkgKytjOwogICAgICAgIGlmICgxNiA8IGMgLSBiICYmIGEuYnVmZmVyICYmIHphKSByZXR1cm4gemEuZGVjb2RlKGEuc3ViYXJyYXkoYiwgYykpOwogICAgICAgIGZvciAoZCA9ICIiOyBiIDwgYzsgKSB7CiAgICAgICAgICB2YXIgZSA9IGFbYisrXTsKICAgICAgICAgIGlmIChlICYgMTI4KSB7CiAgICAgICAgICAgIHZhciBmID0gYVtiKytdICYgNjM7CiAgICAgICAgICAgIGlmICgxOTIgPT0gKGUgJiAyMjQpKSBkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGUgJiAzMSkgPDwgNiB8IGYpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB2YXIgbCA9IGFbYisrXSAmIDYzOwogICAgICAgICAgICAgIGUgPSAyMjQgPT0gKGUgJiAyNDApID8gKGUgJiAxNSkgPDwgMTIgfCBmIDw8IDYgfCBsIDogKGUgJiA3KSA8PCAxOCB8IGYgPDwgMTIgfCBsIDw8IDYgfCBhW2IrK10gJiA2MzsKICAgICAgICAgICAgICA2NTUzNiA+IGUgPyBkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZSkgOiAoZSAtPSA2NTUzNiwgZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2IHwgZSA+PiAxMCwgNTYzMjAgfCBlICYgMTAyMykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZDsKICAgICAgfTsKICAgICAgY2xhc3MgQWEgewogICAgICAgIGNvbnN0cnVjdG9yKGEpIHsKICAgICAgICAgIHRoaXMueWEgPSBhIC0gMjQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBCYSA9IDAsIENhID0gMCwgRGEgPSAoYSkgPT4gewogICAgICAgIGZvciAodmFyIGIgPSAwLCBjID0gMDsgYyA8IGEubGVuZ3RoOyArK2MpIHsKICAgICAgICAgIHZhciBkID0gYS5jaGFyQ29kZUF0KGMpOwogICAgICAgICAgMTI3ID49IGQgPyBiKysgOiAyMDQ3ID49IGQgPyBiICs9IDIgOiA1NTI5NiA8PSBkICYmIDU3MzQzID49IGQgPyAoYiArPSA0LCArK2MpIDogYiArPSAzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYjsKICAgICAgfSwgRWEgPSAoYSwgYiwgYywgZCkgPT4gewogICAgICAgIGlmICgwIDwgZCkgewogICAgICAgICAgZCA9IGMgKyBkIC0gMTsKICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYS5sZW5ndGg7ICsrZSkgewogICAgICAgICAgICB2YXIgZiA9IGEuY2hhckNvZGVBdChlKTsKICAgICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICAgIHZhciBsID0gYS5jaGFyQ29kZUF0KCsrZSk7CiAgICAgICAgICAgICAgZiA9IDY1NTM2ICsgKChmICYgMTAyMykgPDwgMTApIHwgbCAmIDEwMjM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEyNyA+PSBmKSB7CiAgICAgICAgICAgICAgaWYgKGMgPj0gZCkgYnJlYWs7CiAgICAgICAgICAgICAgYltjKytdID0gZjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBpZiAoMjA0NyA+PSBmKSB7CiAgICAgICAgICAgICAgICBpZiAoYyArIDEgPj0gZCkgYnJlYWs7CiAgICAgICAgICAgICAgICBiW2MrK10gPSAxOTIgfCBmID4+IDY7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICg2NTUzNSA+PSBmKSB7CiAgICAgICAgICAgICAgICAgIGlmIChjICsgMiA+PSBkKSBicmVhazsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMjI0IHwgZiA+PiAxMjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGlmIChjICsgMyA+PSBkKSBicmVhazsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMjQwIHwgZiA+PiAxODsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMTI4IHwgZiA+PiAxMiAmIDYzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYltjKytdID0gMTI4IHwgZiA+PiA2ICYgNjM7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJbYysrXSA9IDEyOCB8IGYgJiA2MzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYltjXSA9IDA7CiAgICAgICAgfQogICAgICB9LCBGYSA9IHt9LCBHYSA9IChhKSA9PiB7CiAgICAgICAgZm9yICg7IGEubGVuZ3RoOyApIHsKICAgICAgICAgIHZhciBiID0gYS5wb3AoKTsKICAgICAgICAgIGEucG9wKCkoYik7CiAgICAgICAgfQogICAgICB9OwogICAgICBmdW5jdGlvbiBLKGEpIHsKICAgICAgICByZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoRlthID4+IDJdKTsKICAgICAgfQogICAgICB2YXIgTCA9IHt9LCBNID0ge30sIEhhID0ge30sIElhLCBQID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBmdW5jdGlvbiBkKGgpIHsKICAgICAgICAgIGggPSBjKGgpOwogICAgICAgICAgaWYgKGgubGVuZ3RoICE9PSBhLmxlbmd0aCkgdGhyb3cgbmV3IElhKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7CiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGEubGVuZ3RoOyArK24pIE8oYVtuXSwgaFtuXSk7CiAgICAgICAgfQogICAgICAgIGEuZm9yRWFjaChmdW5jdGlvbihoKSB7CiAgICAgICAgICBIYVtoXSA9IGI7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGUgPSBBcnJheShiLmxlbmd0aCksIGYgPSBbXSwgbCA9IDA7CiAgICAgICAgYi5mb3JFYWNoKChoLCBuKSA9PiB7CiAgICAgICAgICBNLmhhc093blByb3BlcnR5KGgpID8gZVtuXSA9IE1baF0gOiAoZi5wdXNoKGgpLCBMLmhhc093blByb3BlcnR5KGgpIHx8IChMW2hdID0gW10pLCBMW2hdLnB1c2goKCkgPT4gewogICAgICAgICAgICBlW25dID0gTVtoXTsKICAgICAgICAgICAgKytsOwogICAgICAgICAgICBsID09PSBmLmxlbmd0aCAmJiBkKGUpOwogICAgICAgICAgfSkpOwogICAgICAgIH0pOwogICAgICAgIDAgPT09IGYubGVuZ3RoICYmIGQoZSk7CiAgICAgIH0sIEphLCBRID0gKGEpID0+IHsKICAgICAgICBmb3IgKHZhciBiID0gIiI7IEFbYV07ICkgYiArPSBKYVtBW2ErK11dOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBSOwogICAgICBmdW5jdGlvbiBLYShhLCBiLCBjID0ge30pIHsKICAgICAgICB2YXIgZCA9IGIubmFtZTsKICAgICAgICBpZiAoIWEpIHRocm93IG5ldyBSKGB0eXBlICIke2R9IiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyYCk7CiAgICAgICAgaWYgKE0uaGFzT3duUHJvcGVydHkoYSkpIHsKICAgICAgICAgIGlmIChjLmliKSByZXR1cm47CiAgICAgICAgICB0aHJvdyBuZXcgUihgQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyR7ZH0nIHR3aWNlYCk7CiAgICAgICAgfQogICAgICAgIE1bYV0gPSBiOwogICAgICAgIGRlbGV0ZSBIYVthXTsKICAgICAgICBMLmhhc093blByb3BlcnR5KGEpICYmIChiID0gTFthXSwgZGVsZXRlIExbYV0sIGIuZm9yRWFjaCgoZSkgPT4gZSgpKSk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gTyhhLCBiLCBjID0ge30pIHsKICAgICAgICBpZiAoISgiYXJnUGFja0FkdmFuY2UiIGluIGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWdpc3RlclR5cGUgcmVnaXN0ZXJlZEluc3RhbmNlIHJlcXVpcmVzIGFyZ1BhY2tBZHZhbmNlIik7CiAgICAgICAgcmV0dXJuIEthKGEsIGIsIGMpOwogICAgICB9CiAgICAgIHZhciBMYSA9IChhKSA9PiB7CiAgICAgICAgdGhyb3cgbmV3IFIoYS5tYS56YS54YS5uYW1lICsgIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKTsKICAgICAgfSwgTWEgPSBmYWxzZSwgT2EgPSAoKSA9PiB7CiAgICAgIH0sIFBhID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAoYiA9PT0gYykgcmV0dXJuIGE7CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gYy5DYSkgcmV0dXJuIG51bGw7CiAgICAgICAgYSA9IFBhKGEsIGIsIGMuQ2EpOwogICAgICAgIHJldHVybiBudWxsID09PSBhID8gbnVsbCA6IGMuYWIoYSk7CiAgICAgIH0sIFFhID0ge30sIFJhID0gW10sIFNhID0gKCkgPT4gewogICAgICAgIGZvciAoOyBSYS5sZW5ndGg7ICkgewogICAgICAgICAgdmFyIGEgPSBSYS5wb3AoKTsKICAgICAgICAgIGEubWEuS2EgPSBmYWxzZTsKICAgICAgICAgIGFbImRlbGV0ZSJdKCk7CiAgICAgICAgfQogICAgICB9LCBUYSwgVWEgPSB7fSwgVmEgPSAoYSwgYikgPT4gewogICAgICAgIGlmICh2b2lkIDAgPT09IGIpIHRocm93IG5ldyBSKCJwdHIgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKTsKICAgICAgICBmb3IgKDsgYS5DYTsgKSBiID0gYS5OYShiKSwgYSA9IGEuQ2E7CiAgICAgICAgcmV0dXJuIFVhW2JdOwogICAgICB9LCBYYSA9IChhLCBiKSA9PiB7CiAgICAgICAgaWYgKCFiLnphIHx8ICFiLnlhKSB0aHJvdyBuZXcgSWEoIm1ha2VDbGFzc0hhbmRsZSByZXF1aXJlcyBwdHIgYW5kIHB0clR5cGUiKTsKICAgICAgICBpZiAoISFiLkRhICE9PSAhIWIuQWEpIHRocm93IG5ldyBJYSgiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIik7CiAgICAgICAgYi5jb3VudCA9IHsgdmFsdWU6IDEgfTsKICAgICAgICByZXR1cm4gV2EoT2JqZWN0LmNyZWF0ZShhLCB7IG1hOiB7IHZhbHVlOiBiLCB3cml0YWJsZTogdHJ1ZSB9IH0pKTsKICAgICAgfSwgV2EgPSAoYSkgPT4gewogICAgICAgIGlmICgidW5kZWZpbmVkIiA9PT0gdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5KSByZXR1cm4gV2EgPSAoYikgPT4gYiwgYTsKICAgICAgICBNYSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoYikgPT4gewogICAgICAgICAgYiA9IGIubWE7CiAgICAgICAgICAtLWIuY291bnQudmFsdWU7CiAgICAgICAgICAwID09PSBiLmNvdW50LnZhbHVlICYmIChiLkFhID8gYi5EYS5GYShiLkFhKSA6IGIuemEueGEuRmEoYi55YSkpOwogICAgICAgIH0pOwogICAgICAgIFdhID0gKGIpID0+IHsKICAgICAgICAgIHZhciBjID0gYi5tYTsKICAgICAgICAgIGMuQWEgJiYgTWEucmVnaXN0ZXIoYiwgeyBtYTogYyB9LCBiKTsKICAgICAgICAgIHJldHVybiBiOwogICAgICAgIH07CiAgICAgICAgT2EgPSAoYikgPT4gewogICAgICAgICAgTWEudW5yZWdpc3RlcihiKTsKICAgICAgICB9OwogICAgICAgIHJldHVybiBXYShhKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gWWEoKSB7CiAgICAgIH0KICAgICAgdmFyIFphID0gKGEsIGIpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCAibmFtZSIsIHsgdmFsdWU6IGEgfSksICRhID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAodm9pZCAwID09PSBhW2JdLkJhKSB7CiAgICAgICAgICB2YXIgZCA9IGFbYl07CiAgICAgICAgICBhW2JdID0gZnVuY3Rpb24oLi4uZSkgewogICAgICAgICAgICBpZiAoIWFbYl0uQmEuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgpKQogICAgICAgICAgICAgIHRocm93IG5ldyBSKAogICAgICAgICAgICAgICAgYEZ1bmN0aW9uICcke2N9JyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgKCR7ZS5sZW5ndGh9KSAtIGV4cGVjdHMgb25lIG9mICgke2FbYl0uQmF9KSFgCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGFbYl0uQmFbZS5sZW5ndGhdLmFwcGx5KHRoaXMsIGUpOwogICAgICAgICAgfTsKICAgICAgICAgIGFbYl0uQmEgPSBbXTsKICAgICAgICAgIGFbYl0uQmFbZC5PYV0gPSBkOwogICAgICAgIH0KICAgICAgfSwgYWIgPSAoYSwgYiwgYykgPT4gewogICAgICAgIGlmIChrLmhhc093blByb3BlcnR5KGEpKSB7CiAgICAgICAgICBpZiAodm9pZCAwID09PSBjIHx8IHZvaWQgMCAhPT0ga1thXS5CYSAmJiB2b2lkIDAgIT09IGtbYV0uQmFbY10pCiAgICAgICAgICAgIHRocm93IG5ldyBSKGBDYW5ub3QgcmVnaXN0ZXIgcHVibGljIG5hbWUgJyR7YX0nIHR3aWNlYCk7CiAgICAgICAgICAkYShrLCBhLCBhKTsKICAgICAgICAgIGlmIChrLmhhc093blByb3BlcnR5KGMpKQogICAgICAgICAgICB0aHJvdyBuZXcgUihgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIG92ZXJsb2FkcyBvZiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHtjfSkhYCk7CiAgICAgICAgICBrW2FdLkJhW2NdID0gYjsKICAgICAgICB9IGVsc2Uga1thXSA9IGIsIHZvaWQgMCAhPT0gYyAmJiAoa1thXS52YiA9IGMpOwogICAgICB9LCBiYiA9IChhKSA9PiB7CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gYSkgcmV0dXJuICJfdW5rbm93biI7CiAgICAgICAgYSA9IGEucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCAiJCIpOwogICAgICAgIHZhciBiID0gYS5jaGFyQ29kZUF0KDApOwogICAgICAgIHJldHVybiA0OCA8PSBiICYmIDU3ID49IGIgPyBgXyR7YX1gIDogYTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gY2IoYSwgYiwgYywgZCwgZSwgZiwgbCwgaCkgewogICAgICAgIHRoaXMubmFtZSA9IGE7CiAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGI7CiAgICAgICAgdGhpcy5MYSA9IGM7CiAgICAgICAgdGhpcy5GYSA9IGQ7CiAgICAgICAgdGhpcy5DYSA9IGU7CiAgICAgICAgdGhpcy5jYiA9IGY7CiAgICAgICAgdGhpcy5OYSA9IGw7CiAgICAgICAgdGhpcy5hYiA9IGg7CiAgICAgICAgdGhpcy5rYiA9IFtdOwogICAgICB9CiAgICAgIHZhciBkYiA9IChhLCBiLCBjKSA9PiB7CiAgICAgICAgZm9yICg7IGIgIT09IGM7ICkgewogICAgICAgICAgaWYgKCFiLk5hKSB0aHJvdyBuZXcgUihgRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAke2MubmFtZX0sIGdvdCBhbiBpbnN0YW5jZSBvZiAke2IubmFtZX1gKTsKICAgICAgICAgIGEgPSBiLk5hKGEpOwogICAgICAgICAgYiA9IGIuQ2E7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhOwogICAgICB9OwogICAgICBmdW5jdGlvbiBlYihhLCBiKSB7CiAgICAgICAgaWYgKG51bGwgPT09IGIpIHsKICAgICAgICAgIGlmICh0aGlzLlRhKSB0aHJvdyBuZXcgUihgbnVsbCBpcyBub3QgYSB2YWxpZCAke3RoaXMubmFtZX1gKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWIubWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyAiJHtmYihiKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCFiLm1hLnlhKSB0aHJvdyBuZXcgUihgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgcmV0dXJuIGRiKGIubWEueWEsIGIubWEuemEueGEsIHRoaXMueGEpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGdiKGEsIGIpIHsKICAgICAgICBpZiAobnVsbCA9PT0gYikgewogICAgICAgICAgaWYgKHRoaXMuVGEpIHRocm93IG5ldyBSKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApOwogICAgICAgICAgaWYgKHRoaXMuUWEpIHsKICAgICAgICAgICAgdmFyIGMgPSB0aGlzLlVhKCk7CiAgICAgICAgICAgIG51bGwgIT09IGEgJiYgYS5wdXNoKHRoaXMuRmEsIGMpOwogICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWIgfHwgIWIubWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyAiJHtmYihiKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCFiLm1hLnlhKSB0aHJvdyBuZXcgUihgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCF0aGlzLlBhICYmIGIubWEuemEuUGEpCiAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLkRhID8gYi5tYS5EYS5uYW1lIDogYi5tYS56YS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gCiAgICAgICAgICApOwogICAgICAgIGMgPSBkYihiLm1hLnlhLCBiLm1hLnphLnhhLCB0aGlzLnhhKTsKICAgICAgICBpZiAodGhpcy5RYSkgewogICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYi5tYS5BYSkgdGhyb3cgbmV3IFIoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIik7CiAgICAgICAgICBzd2l0Y2ggKHRoaXMucGIpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmIChiLm1hLkRhID09PSB0aGlzKSBjID0gYi5tYS5BYTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgICAgYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLkRhID8gYi5tYS5EYS5uYW1lIDogYi5tYS56YS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgYyA9IGIubWEuQWE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpZiAoYi5tYS5EYSA9PT0gdGhpcykgYyA9IGIubWEuQWE7CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGIuY2xvbmUoKTsKICAgICAgICAgICAgICAgIGMgPSB0aGlzLmxiKAogICAgICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgICAgICBoYigoKSA9PiBkWyJkZWxldGUiXSgpKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG51bGwgIT09IGEgJiYgYS5wdXNoKHRoaXMuRmEsIGMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB0aHJvdyBuZXcgUigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iik7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGliKGEsIGIpIHsKICAgICAgICBpZiAobnVsbCA9PT0gYikgewogICAgICAgICAgaWYgKHRoaXMuVGEpIHRocm93IG5ldyBSKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGlmICghYi5tYSkgdGhyb3cgbmV3IFIoYENhbm5vdCBwYXNzICIke2ZiKGIpfSIgYXMgYSAke3RoaXMubmFtZX1gKTsKICAgICAgICBpZiAoIWIubWEueWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKTsKICAgICAgICBpZiAoYi5tYS56YS5QYSkgdGhyb3cgbmV3IFIoYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLnphLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApOwogICAgICAgIHJldHVybiBkYihiLm1hLnlhLCBiLm1hLnphLnhhLCB0aGlzLnhhKTsKICAgICAgfQogICAgICBmdW5jdGlvbiBqYihhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuLCBtLCBwKSB7CiAgICAgICAgdGhpcy5uYW1lID0gYTsKICAgICAgICB0aGlzLnhhID0gYjsKICAgICAgICB0aGlzLlRhID0gYzsKICAgICAgICB0aGlzLlBhID0gZDsKICAgICAgICB0aGlzLlFhID0gZTsKICAgICAgICB0aGlzLmpiID0gZjsKICAgICAgICB0aGlzLnBiID0gbDsKICAgICAgICB0aGlzLlphID0gaDsKICAgICAgICB0aGlzLlVhID0gbjsKICAgICAgICB0aGlzLmxiID0gbTsKICAgICAgICB0aGlzLkZhID0gcDsKICAgICAgICBlIHx8IHZvaWQgMCAhPT0gYi5DYSA/IHRoaXMudG9XaXJlVHlwZSA9IGdiIDogKHRoaXMudG9XaXJlVHlwZSA9IGQgPyBlYiA6IGliLCB0aGlzLkVhID0gbnVsbCk7CiAgICAgIH0KICAgICAgdmFyIGtiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAoIWsuaGFzT3duUHJvcGVydHkoYSkpIHRocm93IG5ldyBJYSgiUmVwbGFjaW5nIG5vbmV4aXN0ZW50IHB1YmxpYyBzeW1ib2wiKTsKICAgICAgICB2b2lkIDAgIT09IGtbYV0uQmEgJiYgdm9pZCAwICE9PSBjID8ga1thXS5CYVtjXSA9IGIgOiAoa1thXSA9IGIsIGtbYV0uT2EgPSBjKTsKICAgICAgfSwgUywgbGIgPSAoYSwgYiwgYyA9IFtdKSA9PiB7CiAgICAgICAgYS5pbmNsdWRlcygiaiIpID8gKGEgPSBhLnJlcGxhY2UoL3AvZywgImkiKSwgYiA9ICgwLCBrWyJkeW5DYWxsXyIgKyBhXSkoYiwgLi4uYykpIDogYiA9IFMuZ2V0KGIpKC4uLmMpOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBtYiA9IChhLCBiKSA9PiAoLi4uYykgPT4gbGIoYSwgYiwgYyksIFQgPSAoYSwgYikgPT4gewogICAgICAgIGEgPSBRKGEpOwogICAgICAgIHZhciBjID0gYS5pbmNsdWRlcygiaiIpID8gbWIoYSwgYikgOiBTLmdldChiKTsKICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgYykgdGhyb3cgbmV3IFIoYHVua25vd24gZnVuY3Rpb24gcG9pbnRlciB3aXRoIHNpZ25hdHVyZSAke2F9OiAke2J9YCk7CiAgICAgICAgcmV0dXJuIGM7CiAgICAgIH0sIG5iLCBwYiA9IChhKSA9PiB7CiAgICAgICAgYSA9IG9iKGEpOwogICAgICAgIHZhciBiID0gUShhKTsKICAgICAgICBVKGEpOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBxYiA9IChhLCBiKSA9PiB7CiAgICAgICAgZnVuY3Rpb24gYyhmKSB7CiAgICAgICAgICBlW2ZdIHx8IE1bZl0gfHwgKEhhW2ZdID8gSGFbZl0uZm9yRWFjaChjKSA6IChkLnB1c2goZiksIGVbZl0gPSB0cnVlKSk7CiAgICAgICAgfQogICAgICAgIHZhciBkID0gW10sIGUgPSB7fTsKICAgICAgICBiLmZvckVhY2goYyk7CiAgICAgICAgdGhyb3cgbmV3IG5iKGAke2F9OiBgICsgZC5tYXAocGIpLmpvaW4oWyIsICJdKSk7CiAgICAgIH0sIHJiID0gKGEsIGIpID0+IHsKICAgICAgICBmb3IgKHZhciBjID0gW10sIGQgPSAwOyBkIDwgYTsgZCsrKSBjLnB1c2goRltiICsgNCAqIGQgPj4gMl0pOwogICAgICAgIHJldHVybiBjOwogICAgICB9OwogICAgICBmdW5jdGlvbiBzYihhKSB7CiAgICAgICAgZm9yICh2YXIgYiA9IDE7IGIgPCBhLmxlbmd0aDsgKytiKSBpZiAobnVsbCAhPT0gYVtiXSAmJiB2b2lkIDAgPT09IGFbYl0uRWEpIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICBmdW5jdGlvbiB0YihhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgdmFyIGYgPSBiLmxlbmd0aDsKICAgICAgICBpZiAoMiA+IGYpIHRocm93IG5ldyBSKCJhcmdUeXBlcyBhcnJheSBzaXplIG1pc21hdGNoISBNdXN0IGF0IGxlYXN0IGdldCByZXR1cm4gdmFsdWUgYW5kICd0aGlzJyB0eXBlcyEiKTsKICAgICAgICB2YXIgbCA9IG51bGwgIT09IGJbMV0gJiYgbnVsbCAhPT0gYywgaCA9IHNiKGIpLCBuID0gInZvaWQiICE9PSBiWzBdLm5hbWUsIG0gPSBmIC0gMiwgcCA9IEFycmF5KG0pLCB1ID0gW10sIHYgPSBbXTsKICAgICAgICByZXR1cm4gWmEoYSwgZnVuY3Rpb24oLi4uZykgewogICAgICAgICAgaWYgKGcubGVuZ3RoICE9PSBtKSB0aHJvdyBuZXcgUihgZnVuY3Rpb24gJHthfSBjYWxsZWQgd2l0aCAke2cubGVuZ3RofSBhcmd1bWVudHMsIGV4cGVjdGVkICR7bX1gKTsKICAgICAgICAgIHYubGVuZ3RoID0gMDsKICAgICAgICAgIHUubGVuZ3RoID0gbCA/IDIgOiAxOwogICAgICAgICAgdVswXSA9IGU7CiAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICB2YXIgcSA9IGJbMV0udG9XaXJlVHlwZSh2LCB0aGlzKTsKICAgICAgICAgICAgdVsxXSA9IHE7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IG07ICsrcikgcFtyXSA9IGJbciArIDJdLnRvV2lyZVR5cGUodiwgZ1tyXSksIHUucHVzaChwW3JdKTsKICAgICAgICAgIGcgPSBkKC4uLnUpOwogICAgICAgICAgaWYgKGgpIEdhKHYpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHIgPSBsID8gMSA6IDI7IHIgPCBiLmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgdmFyIHogPSAxID09PSByID8gcSA6IHBbciAtIDJdOwogICAgICAgICAgICAgIG51bGwgIT09IGJbcl0uRWEgJiYgYltyXS5FYSh6KTsKICAgICAgICAgICAgfQogICAgICAgICAgcSA9IG4gPyBiWzBdLmZyb21XaXJlVHlwZShnKSA6IHZvaWQgMDsKICAgICAgICAgIHJldHVybiBxOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHZhciB1YiA9IChhKSA9PiB7CiAgICAgICAgYSA9IGEudHJpbSgpOwogICAgICAgIGNvbnN0IGIgPSBhLmluZGV4T2YoIigiKTsKICAgICAgICByZXR1cm4gLTEgIT09IGIgPyBhLnN1YnN0cigwLCBiKSA6IGE7CiAgICAgIH0sIHZiID0gW10sIFYgPSBbXSwgd2IgPSAoYSkgPT4gewogICAgICAgIDkgPCBhICYmIDAgPT09IC0tVlthICsgMV0gJiYgKFZbYV0gPSB2b2lkIDAsIHZiLnB1c2goYSkpOwogICAgICB9LCB5YiA9IChhKSA9PiB7CiAgICAgICAgaWYgKCFhKSB0aHJvdyBuZXcgUigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIiArIGEpOwogICAgICAgIHJldHVybiBWW2FdOwogICAgICB9LCBoYiA9IChhKSA9PiB7CiAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICBjYXNlIHZvaWQgMDoKICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICBjYXNlIG51bGw6CiAgICAgICAgICAgIHJldHVybiA0OwogICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICByZXR1cm4gNjsKICAgICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgIHJldHVybiA4OwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgY29uc3QgYiA9IHZiLnBvcCgpIHx8IFYubGVuZ3RoOwogICAgICAgICAgICBWW2JdID0gYTsKICAgICAgICAgICAgVltiICsgMV0gPSAxOwogICAgICAgICAgICByZXR1cm4gYjsKICAgICAgICB9CiAgICAgIH0sIHpiID0gewogICAgICAgIG5hbWU6ICJlbXNjcmlwdGVuOjp2YWwiLAogICAgICAgIGZyb21XaXJlVHlwZTogKGEpID0+IHsKICAgICAgICAgIHZhciBiID0geWIoYSk7CiAgICAgICAgICB3YihhKTsKICAgICAgICAgIHJldHVybiBiOwogICAgICAgIH0sCiAgICAgICAgdG9XaXJlVHlwZTogKGEsIGIpID0+IGhiKGIpLAogICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBLLAogICAgICAgIEVhOiBudWxsCiAgICAgIH0sIEFiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBzd2l0Y2ggKGIpIHsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgcmV0dXJuIGMgPyBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHlbZF0pOwogICAgICAgICAgICB9IDogZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShBW2RdKTsKICAgICAgICAgICAgfTsKICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgcmV0dXJuIGMgPyBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKEJbZCA+PiAxXSk7CiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKENbZCA+PiAxXSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHJldHVybiBjID8gZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShFW2QgPj4gMl0pOwogICAgICAgICAgICB9IDogZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShGW2QgPj4gMl0pOwogICAgICAgICAgICB9OwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBpbnRlZ2VyIHdpZHRoICgke2J9KTogJHthfWApOwogICAgICAgIH0KICAgICAgfSwgQmIgPSAoYSwgYikgPT4gewogICAgICAgIHZhciBjID0gTVthXTsKICAgICAgICBpZiAodm9pZCAwID09PSBjKSB0aHJvdyBhID0gYCR7Yn0gaGFzIHVua25vd24gdHlwZSAke3BiKGEpfWAsIG5ldyBSKGEpOwogICAgICAgIHJldHVybiBjOwogICAgICB9LCBmYiA9IChhKSA9PiB7CiAgICAgICAgaWYgKG51bGwgPT09IGEpIHJldHVybiAibnVsbCI7CiAgICAgICAgdmFyIGIgPSB0eXBlb2YgYTsKICAgICAgICByZXR1cm4gIm9iamVjdCIgPT09IGIgfHwgImFycmF5IiA9PT0gYiB8fCAiZnVuY3Rpb24iID09PSBiID8gYS50b1N0cmluZygpIDogIiIgKyBhOwogICAgICB9LCBDYiA9IChhLCBiKSA9PiB7CiAgICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKGphW2MgPj4gMl0pOwogICAgICAgICAgICB9OwogICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oYykgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShrYVtjID4+IDNdKTsKICAgICAgICAgICAgfTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgZmxvYXQgd2lkdGggKCR7Yn0pOiAke2F9YCk7CiAgICAgICAgfQogICAgICB9LCBEYiA9IChhLCBiLCBjKSA9PiB7CiAgICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiBjID8gKGQpID0+IHlbZF0gOiAoZCkgPT4gQVtkXTsKICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgcmV0dXJuIGMgPyAoZCkgPT4gQltkID4+IDFdIDogKGQpID0+IENbZCA+PiAxXTsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuIGMgPyAoZCkgPT4gRVtkID4+IDJdIDogKGQpID0+IEZbZCA+PiAyXTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgaW50ZWdlciB3aWR0aCAoJHtifSk6ICR7YX1gKTsKICAgICAgICB9CiAgICAgIH0sIEViID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpIDogdm9pZCAwLCBGYiA9IChhLCBiKSA9PiB7CiAgICAgICAgdmFyIGMgPSBhID4+IDE7CiAgICAgICAgZm9yICh2YXIgZCA9IGMgKyBiIC8gMjsgIShjID49IGQpICYmIENbY107ICkgKytjOwogICAgICAgIGMgPDw9IDE7CiAgICAgICAgaWYgKDMyIDwgYyAtIGEgJiYgRWIpIHJldHVybiBFYi5kZWNvZGUoQS5zdWJhcnJheShhLCBjKSk7CiAgICAgICAgYyA9ICIiOwogICAgICAgIGZvciAoZCA9IDA7ICEoZCA+PSBiIC8gMik7ICsrZCkgewogICAgICAgICAgdmFyIGUgPSBCW2EgKyAyICogZCA+PiAxXTsKICAgICAgICAgIGlmICgwID09IGUpIGJyZWFrOwogICAgICAgICAgYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYzsKICAgICAgfSwgR2IgPSAoYSwgYiwgYykgPT4gewogICAgICAgIGMgPz8gKGMgPSAyMTQ3NDgzNjQ3KTsKICAgICAgICBpZiAoMiA+IGMpIHJldHVybiAwOwogICAgICAgIGMgLT0gMjsKICAgICAgICB2YXIgZCA9IGI7CiAgICAgICAgYyA9IGMgPCAyICogYS5sZW5ndGggPyBjIC8gMiA6IGEubGVuZ3RoOwogICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYzsgKytlKSBCW2IgPj4gMV0gPSBhLmNoYXJDb2RlQXQoZSksIGIgKz0gMjsKICAgICAgICBCW2IgPj4gMV0gPSAwOwogICAgICAgIHJldHVybiBiIC0gZDsKICAgICAgfSwgSGIgPSAoYSkgPT4gMiAqIGEubGVuZ3RoLCBJYiA9IChhLCBiKSA9PiB7CiAgICAgICAgZm9yICh2YXIgYyA9IDAsIGQgPSAiIjsgIShjID49IGIgLyA0KTsgKSB7CiAgICAgICAgICB2YXIgZSA9IEVbYSArIDQgKiBjID4+IDJdOwogICAgICAgICAgaWYgKDAgPT0gZSkgYnJlYWs7CiAgICAgICAgICArK2M7CiAgICAgICAgICA2NTUzNiA8PSBlID8gKGUgLT0gNjU1MzYsIGQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IGUgPj4gMTAsIDU2MzIwIHwgZSAmIDEwMjMpKSA6IGQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGQ7CiAgICAgIH0sIEpiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBjID8/IChjID0gMjE0NzQ4MzY0Nyk7CiAgICAgICAgaWYgKDQgPiBjKSByZXR1cm4gMDsKICAgICAgICB2YXIgZCA9IGI7CiAgICAgICAgYyA9IGQgKyBjIC0gNDsKICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IGEubGVuZ3RoOyArK2UpIHsKICAgICAgICAgIHZhciBmID0gYS5jaGFyQ29kZUF0KGUpOwogICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICB2YXIgbCA9IGEuY2hhckNvZGVBdCgrK2UpOwogICAgICAgICAgICBmID0gNjU1MzYgKyAoKGYgJiAxMDIzKSA8PCAxMCkgfCBsICYgMTAyMzsKICAgICAgICAgIH0KICAgICAgICAgIEVbYiA+PiAyXSA9IGY7CiAgICAgICAgICBiICs9IDQ7CiAgICAgICAgICBpZiAoYiArIDQgPiBjKSBicmVhazsKICAgICAgICB9CiAgICAgICAgRVtiID4+IDJdID0gMDsKICAgICAgICByZXR1cm4gYiAtIGQ7CiAgICAgIH0sIEtiID0gKGEpID0+IHsKICAgICAgICBmb3IgKHZhciBiID0gMCwgYyA9IDA7IGMgPCBhLmxlbmd0aDsgKytjKSB7CiAgICAgICAgICB2YXIgZCA9IGEuY2hhckNvZGVBdChjKTsKICAgICAgICAgIDU1Mjk2IDw9IGQgJiYgNTczNDMgPj0gZCAmJiArK2M7CiAgICAgICAgICBiICs9IDQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBiOwogICAgICB9LCBMYiA9IFtdLCBNYiA9IChhKSA9PiB7CiAgICAgICAgdmFyIGIgPSBMYi5sZW5ndGg7CiAgICAgICAgTGIucHVzaChhKTsKICAgICAgICByZXR1cm4gYjsKICAgICAgfSwgTmIgPSAoYSwgYikgPT4gewogICAgICAgIGZvciAodmFyIGMgPSBBcnJheShhKSwgZCA9IDA7IGQgPCBhOyArK2QpIGNbZF0gPSBCYihGW2IgKyA0ICogZCA+PiAyXSwgInBhcmFtZXRlciAiICsgZCk7CiAgICAgICAgcmV0dXJuIGM7CiAgICAgIH0sIE9iID0gUmVmbGVjdC5jb25zdHJ1Y3QsIFBiID0ge30sIFJiID0gKCkgPT4gewogICAgICAgIGlmICghUWIpIHsKICAgICAgICAgIHZhciBhID0gewogICAgICAgICAgICBVU0VSOiAid2ViX3VzZXIiLAogICAgICAgICAgICBMT0dOQU1FOiAid2ViX3VzZXIiLAogICAgICAgICAgICBQQVRIOiAiLyIsCiAgICAgICAgICAgIFBXRDogIi8iLAogICAgICAgICAgICBIT01FOiAiL2hvbWUvd2ViX3VzZXIiLAogICAgICAgICAgICBMQU5HOiAoIm9iamVjdCIgPT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzICYmIG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gfHwgIkMiKS5yZXBsYWNlKAogICAgICAgICAgICAgICItIiwKICAgICAgICAgICAgICAiXyIKICAgICAgICAgICAgKSArICIuVVRGLTgiLAogICAgICAgICAgICBfOiBkYSB8fCAiLi90aGlzLnByb2dyYW0iCiAgICAgICAgICB9LCBiOwogICAgICAgICAgZm9yIChiIGluIFBiKSB2b2lkIDAgPT09IFBiW2JdID8gZGVsZXRlIGFbYl0gOiBhW2JdID0gUGJbYl07CiAgICAgICAgICB2YXIgYyA9IFtdOwogICAgICAgICAgZm9yIChiIGluIGEpIGMucHVzaChgJHtifT0ke2FbYl19YCk7CiAgICAgICAgICBRYiA9IGM7CiAgICAgICAgfQogICAgICAgIHJldHVybiBRYjsKICAgICAgfSwgUWIsIFNiID0gW251bGwsIFtdLCBbXV0sIFRiID0gKCkgPT4gewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgY3J5cHRvICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpCiAgICAgICAgICByZXR1cm4gKGEpID0+IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7CiAgICAgICAgcmEoImluaXRSYW5kb21EZXZpY2UiKTsKICAgICAgfSwgVWIgPSAoYSkgPT4gKFViID0gVGIoKSkoYSksIFZiID0gKGEpID0+IDAgPT09IGEgJSA0ICYmICgwICE9PSBhICUgMTAwIHx8IDAgPT09IGEgJSA0MDApLCBXYiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXSwgWGIgPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07CiAgICAgIGZ1bmN0aW9uIFliKGEpIHsKICAgICAgICB2YXIgYiA9IEFycmF5KERhKGEpICsgMSk7CiAgICAgICAgRWEoYSwgYiwgMCwgYi5sZW5ndGgpOwogICAgICAgIHJldHVybiBiOwogICAgICB9CiAgICAgIHZhciBaYiA9IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgZnVuY3Rpb24gZShnLCBxLCByKSB7CiAgICAgICAgICBmb3IgKGcgPSAibnVtYmVyIiA9PSB0eXBlb2YgZyA/IGcudG9TdHJpbmcoKSA6IGcgfHwgIiI7IGcubGVuZ3RoIDwgcTsgKSBnID0gclswXSArIGc7CiAgICAgICAgICByZXR1cm4gZzsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZihnLCBxKSB7CiAgICAgICAgICByZXR1cm4gZShnLCBxLCAiMCIpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBsKGcsIHEpIHsKICAgICAgICAgIGZ1bmN0aW9uIHIoTikgewogICAgICAgICAgICByZXR1cm4gMCA+IE4gPyAtMSA6IDAgPCBOID8gMSA6IDA7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgejsKICAgICAgICAgIDAgPT09ICh6ID0gcihnLmdldEZ1bGxZZWFyKCkgLSBxLmdldEZ1bGxZZWFyKCkpKSAmJiAwID09PSAoeiA9IHIoZy5nZXRNb250aCgpIC0gcS5nZXRNb250aCgpKSkgJiYgKHogPSByKGcuZ2V0RGF0ZSgpIC0gcS5nZXREYXRlKCkpKTsKICAgICAgICAgIHJldHVybiB6OwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBoKGcpIHsKICAgICAgICAgIHN3aXRjaCAoZy5nZXREYXkoKSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAyOSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICByZXR1cm4gZzsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSwgMCwgMik7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZy5nZXRGdWxsWWVhcigpLCAwLCAxKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAzMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIG4oZykgewogICAgICAgICAgdmFyIHEgPSBnLklhOwogICAgICAgICAgZm9yIChnID0gbmV3IERhdGUobmV3IERhdGUoZy5KYSArIDE5MDAsIDAsIDEpLmdldFRpbWUoKSk7IDAgPCBxOyApIHsKICAgICAgICAgICAgdmFyIHIgPSBnLmdldE1vbnRoKCksIHogPSAoVmIoZy5nZXRGdWxsWWVhcigpKSA/IFdiIDogWGIpW3JdOwogICAgICAgICAgICBpZiAocSA+IHogLSBnLmdldERhdGUoKSkKICAgICAgICAgICAgICBxIC09IHogLSBnLmdldERhdGUoKSArIDEsIGcuc2V0RGF0ZSgxKSwgMTEgPiByID8gZy5zZXRNb250aChyICsgMSkgOiAoZy5zZXRNb250aCgwKSwgZy5zZXRGdWxsWWVhcihnLmdldEZ1bGxZZWFyKCkgKyAxKSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGcuc2V0RGF0ZShnLmdldERhdGUoKSArIHEpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByID0gbmV3IERhdGUoZy5nZXRGdWxsWWVhcigpICsgMSwgMCwgNCk7CiAgICAgICAgICBxID0gaChuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksIDAsIDQpKTsKICAgICAgICAgIHIgPSBoKHIpOwogICAgICAgICAgcmV0dXJuIDAgPj0gbChxLCBnKSA/IDAgPj0gbChyLCBnKSA/IGcuZ2V0RnVsbFllYXIoKSArIDEgOiBnLmdldEZ1bGxZZWFyKCkgOiBnLmdldEZ1bGxZZWFyKCkgLSAxOwogICAgICAgIH0KICAgICAgICB2YXIgbSA9IEZbZCArIDQwID4+IDJdOwogICAgICAgIGQgPSB7CiAgICAgICAgICBzYjogRVtkID4+IDJdLAogICAgICAgICAgcmI6IEVbZCArIDQgPj4gMl0sCiAgICAgICAgICBSYTogRVtkICsgOCA+PiAyXSwKICAgICAgICAgIFZhOiBFW2QgKyAxMiA+PiAyXSwKICAgICAgICAgIFNhOiBFW2QgKyAxNiA+PiAyXSwKICAgICAgICAgIEphOiBFW2QgKyAyMCA+PiAyXSwKICAgICAgICAgIEdhOiBFW2QgKyAyNCA+PiAyXSwKICAgICAgICAgIElhOiBFW2QgKyAyOCA+PiAyXSwKICAgICAgICAgIHdiOiBFW2QgKyAzMiA+PiAyXSwKICAgICAgICAgIHFiOiBFW2QgKyAzNiA+PiAyXSwKICAgICAgICAgIHRiOiBtID8gbSA/IEooQSwgbSkgOiAiIiA6ICIiCiAgICAgICAgfTsKICAgICAgICBjID0gYyA/IEooQSwgYykgOiAiIjsKICAgICAgICBtID0gewogICAgICAgICAgIiVjIjogIiVhICViICVkICVIOiVNOiVTICVZIiwKICAgICAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICAgICAiJUYiOiAiJVktJW0tJWQiLAogICAgICAgICAgIiVoIjogIiViIiwKICAgICAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICAgICAiJVIiOiAiJUg6JU0iLAogICAgICAgICAgIiVUIjogIiVIOiVNOiVTIiwKICAgICAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICAgICAiJVgiOiAiJUg6JU06JVMiLAogICAgICAgICAgIiVFYyI6ICIlYyIsCiAgICAgICAgICAiJUVDIjogIiVDIiwKICAgICAgICAgICIlRXgiOiAiJW0vJWQvJXkiLAogICAgICAgICAgIiVFWCI6ICIlSDolTTolUyIsCiAgICAgICAgICAiJUV5IjogIiV5IiwKICAgICAgICAgICIlRVkiOiAiJVkiLAogICAgICAgICAgIiVPZCI6ICIlZCIsCiAgICAgICAgICAiJU9lIjogIiVlIiwKICAgICAgICAgICIlT0giOiAiJUgiLAogICAgICAgICAgIiVPSSI6ICIlSSIsCiAgICAgICAgICAiJU9tIjogIiVtIiwKICAgICAgICAgICIlT00iOiAiJU0iLAogICAgICAgICAgIiVPUyI6ICIlUyIsCiAgICAgICAgICAiJU91IjogIiV1IiwKICAgICAgICAgICIlT1UiOiAiJVUiLAogICAgICAgICAgIiVPViI6ICIlViIsCiAgICAgICAgICAiJU93IjogIiV3IiwKICAgICAgICAgICIlT1ciOiAiJVciLAogICAgICAgICAgIiVPeSI6ICIleSIKICAgICAgICB9OwogICAgICAgIGZvciAodmFyIHAgaW4gbSkgYyA9IGMucmVwbGFjZShuZXcgUmVnRXhwKHAsICJnIiksIG1bcF0pOwogICAgICAgIHZhciB1ID0gIlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLCB2ID0gIkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7CiAgICAgICAgbSA9IHsKICAgICAgICAgICIlYSI6IChnKSA9PiB1W2cuR2FdLnN1YnN0cmluZygwLCAzKSwKICAgICAgICAgICIlQSI6IChnKSA9PiB1W2cuR2FdLAogICAgICAgICAgIiViIjogKGcpID0+IHZbZy5TYV0uc3Vic3RyaW5nKDAsIDMpLAogICAgICAgICAgIiVCIjogKGcpID0+IHZbZy5TYV0sCiAgICAgICAgICAiJUMiOiAoZykgPT4gZigoZy5KYSArIDE5MDApIC8gMTAwIHwgMCwgMiksCiAgICAgICAgICAiJWQiOiAoZykgPT4gZihnLlZhLCAyKSwKICAgICAgICAgICIlZSI6IChnKSA9PiBlKGcuVmEsIDIsICIgIiksCiAgICAgICAgICAiJWciOiAoZykgPT4gbihnKS50b1N0cmluZygpLnN1YnN0cmluZygyKSwKICAgICAgICAgICIlRyI6IG4sCiAgICAgICAgICAiJUgiOiAoZykgPT4gZihnLlJhLCAyKSwKICAgICAgICAgICIlSSI6IChnKSA9PiB7CiAgICAgICAgICAgIGcgPSBnLlJhOwogICAgICAgICAgICAwID09IGcgPyBnID0gMTIgOiAxMiA8IGcgJiYgKGcgLT0gMTIpOwogICAgICAgICAgICByZXR1cm4gZihnLCAyKTsKICAgICAgICAgIH0sCiAgICAgICAgICAiJWoiOiAoZykgPT4gewogICAgICAgICAgICBmb3IgKHZhciBxID0gMCwgciA9IDA7IHIgPD0gZy5TYSAtIDE7IHEgKz0gKFZiKGcuSmEgKyAxOTAwKSA/IFdiIDogWGIpW3IrK10pIDsKICAgICAgICAgICAgcmV0dXJuIGYoZy5WYSArIHEsIDMpOwogICAgICAgICAgfSwKICAgICAgICAgICIlbSI6IChnKSA9PiBmKGcuU2EgKyAxLCAyKSwKICAgICAgICAgICIlTSI6IChnKSA9PiBmKGcucmIsIDIpLAogICAgICAgICAgIiVuIjogKCkgPT4gIlxuIiwKICAgICAgICAgICIlcCI6IChnKSA9PiAwIDw9IGcuUmEgJiYgMTIgPiBnLlJhID8gIkFNIiA6ICJQTSIsCiAgICAgICAgICAiJVMiOiAoZykgPT4gZihnLnNiLCAyKSwKICAgICAgICAgICIldCI6ICgpID0+ICIJIiwKICAgICAgICAgICIldSI6IChnKSA9PiBnLkdhIHx8IDcsCiAgICAgICAgICAiJVUiOiAoZykgPT4gZihNYXRoLmZsb29yKChnLklhICsgNyAtIGcuR2EpIC8gNyksIDIpLAogICAgICAgICAgIiVWIjogKGcpID0+IHsKICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmZsb29yKChnLklhICsgNyAtIChnLkdhICsgNikgJSA3KSAvIDcpOwogICAgICAgICAgICAyID49IChnLkdhICsgMzcxIC0gZy5JYSAtIDIpICUgNyAmJiBxKys7CiAgICAgICAgICAgIGlmIChxKSA1MyA9PSBxICYmIChyID0gKGcuR2EgKyAzNzEgLSBnLklhKSAlIDcsIDQgPT0gciB8fCAzID09IHIgJiYgVmIoZy5KYSkgfHwgKHEgPSAxKSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHEgPSA1MjsKICAgICAgICAgICAgICB2YXIgciA9IChnLkdhICsgNyAtIGcuSWEgLSAxKSAlIDc7CiAgICAgICAgICAgICAgKDQgPT0gciB8fCA1ID09IHIgJiYgVmIoZy5KYSAlIDQwMCAtIDEpKSAmJiBxKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGYocSwgMik7CiAgICAgICAgICB9LAogICAgICAgICAgIiV3IjogKGcpID0+IGcuR2EsCiAgICAgICAgICAiJVciOiAoZykgPT4gZihNYXRoLmZsb29yKChnLklhICsgNyAtIChnLkdhICsgNikgJSA3KSAvIDcpLCAyKSwKICAgICAgICAgICIleSI6IChnKSA9PiAoZy5KYSArIDE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLAogICAgICAgICAgIiVZIjogKGcpID0+IGcuSmEgKyAxOTAwLAogICAgICAgICAgIiV6IjogKGcpID0+IHsKICAgICAgICAgICAgZyA9IGcucWI7CiAgICAgICAgICAgIHZhciBxID0gMCA8PSBnOwogICAgICAgICAgICBnID0gTWF0aC5hYnMoZykgLyA2MDsKICAgICAgICAgICAgcmV0dXJuIChxID8gIisiIDogIi0iKSArIFN0cmluZygiMDAwMCIgKyAoZyAvIDYwICogMTAwICsgZyAlIDYwKSkuc2xpY2UoLTQpOwogICAgICAgICAgfSwKICAgICAgICAgICIlWiI6IChnKSA9PiBnLnRiLAogICAgICAgICAgIiUlIjogKCkgPT4gIiUiCiAgICAgICAgfTsKICAgICAgICBjID0gYy5yZXBsYWNlKC8lJS9nLCAiXDBcMCIpOwogICAgICAgIGZvciAocCBpbiBtKSBjLmluY2x1ZGVzKHApICYmIChjID0gYy5yZXBsYWNlKG5ldyBSZWdFeHAocCwgImciKSwgbVtwXShkKSkpOwogICAgICAgIGMgPSBjLnJlcGxhY2UoL1wwXDAvZywgIiUiKTsKICAgICAgICBwID0gWWIoYyk7CiAgICAgICAgaWYgKHAubGVuZ3RoID4gYikgcmV0dXJuIDA7CiAgICAgICAgeS5zZXQocCwgYSk7CiAgICAgICAgcmV0dXJuIHAubGVuZ3RoIC0gMTsKICAgICAgfTsKICAgICAgSWEgPSBrLkludGVybmFsRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHsKICAgICAgICBjb25zdHJ1Y3RvcihhKSB7CiAgICAgICAgICBzdXBlcihhKTsKICAgICAgICAgIHRoaXMubmFtZSA9ICJJbnRlcm5hbEVycm9yIjsKICAgICAgICB9CiAgICAgIH07CiAgICAgIGZvciAodmFyICRiID0gQXJyYXkoMjU2KSwgYWMgPSAwOyAyNTYgPiBhYzsgKythYykgJGJbYWNdID0gU3RyaW5nLmZyb21DaGFyQ29kZShhYyk7CiAgICAgIEphID0gJGI7CiAgICAgIFIgPSBrLkJpbmRpbmdFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3IgewogICAgICAgIGNvbnN0cnVjdG9yKGEpIHsKICAgICAgICAgIHN1cGVyKGEpOwogICAgICAgICAgdGhpcy5uYW1lID0gIkJpbmRpbmdFcnJvciI7CiAgICAgICAgfQogICAgICB9OwogICAgICBPYmplY3QuYXNzaWduKFlhLnByb3RvdHlwZSwgewogICAgICAgIGlzQWxpYXNPZjogZnVuY3Rpb24oYSkgewogICAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFlhICYmIGEgaW5zdGFuY2VvZiBZYSkpIHJldHVybiBmYWxzZTsKICAgICAgICAgIHZhciBiID0gdGhpcy5tYS56YS54YSwgYyA9IHRoaXMubWEueWE7CiAgICAgICAgICBhLm1hID0gYS5tYTsKICAgICAgICAgIHZhciBkID0gYS5tYS56YS54YTsKICAgICAgICAgIGZvciAoYSA9IGEubWEueWE7IGIuQ2E7ICkgYyA9IGIuTmEoYyksIGIgPSBiLkNhOwogICAgICAgICAgZm9yICg7IGQuQ2E7ICkgYSA9IGQuTmEoYSksIGQgPSBkLkNhOwogICAgICAgICAgcmV0dXJuIGIgPT09IGQgJiYgYyA9PT0gYTsKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbigpIHsKICAgICAgICAgIHRoaXMubWEueWEgfHwgTGEodGhpcyk7CiAgICAgICAgICBpZiAodGhpcy5tYS5NYSkgcmV0dXJuIHRoaXMubWEuY291bnQudmFsdWUgKz0gMSwgdGhpczsKICAgICAgICAgIHZhciBhID0gV2EsIGIgPSBPYmplY3QsIGMgPSBiLmNyZWF0ZSwgZCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgZSA9IHRoaXMubWE7CiAgICAgICAgICBhID0gYSgKICAgICAgICAgICAgYy5jYWxsKGIsIGQsIHsKICAgICAgICAgICAgICBtYTogeyB2YWx1ZTogeyBjb3VudDogZS5jb3VudCwgS2E6IGUuS2EsIE1hOiBlLk1hLCB5YTogZS55YSwgemE6IGUuemEsIEFhOiBlLkFhLCBEYTogZS5EYSB9IH0KICAgICAgICAgICAgfSkKICAgICAgICAgICk7CiAgICAgICAgICBhLm1hLmNvdW50LnZhbHVlICs9IDE7CiAgICAgICAgICBhLm1hLkthID0gZmFsc2U7CiAgICAgICAgICByZXR1cm4gYTsKICAgICAgICB9LAogICAgICAgIFsiZGVsZXRlIl0oKSB7CiAgICAgICAgICB0aGlzLm1hLnlhIHx8IExhKHRoaXMpOwogICAgICAgICAgaWYgKHRoaXMubWEuS2EgJiYgIXRoaXMubWEuTWEpIHRocm93IG5ldyBSKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIik7CiAgICAgICAgICBPYSh0aGlzKTsKICAgICAgICAgIHZhciBhID0gdGhpcy5tYTsKICAgICAgICAgIC0tYS5jb3VudC52YWx1ZTsKICAgICAgICAgIDAgPT09IGEuY291bnQudmFsdWUgJiYgKGEuQWEgPyBhLkRhLkZhKGEuQWEpIDogYS56YS54YS5GYShhLnlhKSk7CiAgICAgICAgICB0aGlzLm1hLk1hIHx8ICh0aGlzLm1hLkFhID0gdm9pZCAwLCB0aGlzLm1hLnlhID0gdm9pZCAwKTsKICAgICAgICB9LAogICAgICAgIGlzRGVsZXRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gIXRoaXMubWEueWE7CiAgICAgICAgfSwKICAgICAgICBkZWxldGVMYXRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICB0aGlzLm1hLnlhIHx8IExhKHRoaXMpOwogICAgICAgICAgaWYgKHRoaXMubWEuS2EgJiYgIXRoaXMubWEuTWEpIHRocm93IG5ldyBSKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIik7CiAgICAgICAgICBSYS5wdXNoKHRoaXMpOwogICAgICAgICAgMSA9PT0gUmEubGVuZ3RoICYmIFRhICYmIFRhKFNhKTsKICAgICAgICAgIHRoaXMubWEuS2EgPSB0cnVlOwogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgay5nZXRJbmhlcml0ZWRJbnN0YW5jZUNvdW50ID0gKCkgPT4gT2JqZWN0LmtleXMoVWEpLmxlbmd0aDsKICAgICAgay5nZXRMaXZlSW5oZXJpdGVkSW5zdGFuY2VzID0gKCkgPT4gewogICAgICAgIHZhciBhID0gW10sIGI7CiAgICAgICAgZm9yIChiIGluIFVhKSBVYS5oYXNPd25Qcm9wZXJ0eShiKSAmJiBhLnB1c2goVWFbYl0pOwogICAgICAgIHJldHVybiBhOwogICAgICB9OwogICAgICBrLmZsdXNoUGVuZGluZ0RlbGV0ZXMgPSBTYTsKICAgICAgay5zZXREZWxheUZ1bmN0aW9uID0gKGEpID0+IHsKICAgICAgICBUYSA9IGE7CiAgICAgICAgUmEubGVuZ3RoICYmIFRhICYmIFRhKFNhKTsKICAgICAgfTsKICAgICAgT2JqZWN0LmFzc2lnbihqYi5wcm90b3R5cGUsIHsKICAgICAgICBlYihhKSB7CiAgICAgICAgICB0aGlzLlphICYmIChhID0gdGhpcy5aYShhKSk7CiAgICAgICAgICByZXR1cm4gYTsKICAgICAgICB9LAogICAgICAgIFhhKGEpIHsKICAgICAgICAgIHRoaXMuRmE/LihhKTsKICAgICAgICB9LAogICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBLLAogICAgICAgIGZyb21XaXJlVHlwZTogZnVuY3Rpb24oYSkgewogICAgICAgICAgZnVuY3Rpb24gYigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuUWEgPyBYYSh0aGlzLnhhLkxhLCB7IHphOiB0aGlzLmpiLCB5YTogYywgRGE6IHRoaXMsIEFhOiBhIH0pIDogWGEodGhpcy54YS5MYSwgeyB6YTogdGhpcywgeWE6IGEgfSk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgYyA9IHRoaXMuZWIoYSk7CiAgICAgICAgICBpZiAoIWMpIHJldHVybiB0aGlzLlhhKGEpLCBudWxsOwogICAgICAgICAgdmFyIGQgPSBWYSh0aGlzLnhhLCBjKTsKICAgICAgICAgIGlmICh2b2lkIDAgIT09IGQpIHsKICAgICAgICAgICAgaWYgKDAgPT09IGQubWEuY291bnQudmFsdWUpIHJldHVybiBkLm1hLnlhID0gYywgZC5tYS5BYSA9IGEsIGQuY2xvbmUoKTsKICAgICAgICAgICAgZCA9IGQuY2xvbmUoKTsKICAgICAgICAgICAgdGhpcy5YYShhKTsKICAgICAgICAgICAgcmV0dXJuIGQ7CiAgICAgICAgICB9CiAgICAgICAgICBkID0gdGhpcy54YS5jYihjKTsKICAgICAgICAgIGQgPSBRYVtkXTsKICAgICAgICAgIGlmICghZCkgcmV0dXJuIGIuY2FsbCh0aGlzKTsKICAgICAgICAgIGQgPSB0aGlzLlBhID8gZC4kYSA6IGQucG9pbnRlclR5cGU7CiAgICAgICAgICB2YXIgZSA9IFBhKGMsIHRoaXMueGEsIGQueGEpOwogICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgPyBiLmNhbGwodGhpcykgOiB0aGlzLlFhID8gWGEoZC54YS5MYSwgeyB6YTogZCwgeWE6IGUsIERhOiB0aGlzLCBBYTogYSB9KSA6IFhhKGQueGEuTGEsIHsgemE6IGQsIHlhOiBlIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG5iID0gay5VbmJvdW5kVHlwZUVycm9yID0gKChhLCBiKSA9PiB7CiAgICAgICAgdmFyIGMgPSBaYShiLCBmdW5jdGlvbihkKSB7CiAgICAgICAgICB0aGlzLm5hbWUgPSBiOwogICAgICAgICAgdGhpcy5tZXNzYWdlID0gZDsKICAgICAgICAgIGQgPSBFcnJvcihkKS5zdGFjazsKICAgICAgICAgIHZvaWQgMCAhPT0gZCAmJiAodGhpcy5zdGFjayA9IHRoaXMudG9TdHJpbmcoKSArICJcbiIgKyBkLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sICIiKSk7CiAgICAgICAgfSk7CiAgICAgICAgYy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKTsKICAgICAgICBjLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGM7CiAgICAgICAgYy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHRoaXMubWVzc2FnZSA/IHRoaXMubmFtZSA6IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gYzsKICAgICAgfSkoRXJyb3IsICJVbmJvdW5kVHlwZUVycm9yIik7CiAgICAgIFYucHVzaCgwLCAxLCB2b2lkIDAsIDEsIG51bGwsIDEsIHRydWUsIDEsIGZhbHNlLCAxKTsKICAgICAgay5jb3VudF9lbXZhbF9oYW5kbGVzID0gKCkgPT4gVi5sZW5ndGggLyAyIC0gNSAtIHZiLmxlbmd0aDsKICAgICAgdmFyIG1jID0gewogICAgICAgIGM6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICByYSgKICAgICAgICAgICAgYEFzc2VydGlvbiBmYWlsZWQ6ICR7YSA/IEooQSwgYSkgOiAiIn0sIGF0OiBgICsgW2IgPyBiID8gSihBLCBiKSA6ICIiIDogInVua25vd24gZmlsZW5hbWUiLCBjLCBkID8gZCA/IEooQSwgZCkgOiAiIiA6ICJ1bmtub3duIGZ1bmN0aW9uIl0KICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBtOiAoYSwgYiwgYykgPT4gewogICAgICAgICAgdmFyIGQgPSBuZXcgQWEoYSk7CiAgICAgICAgICBGW2QueWEgKyAxNiA+PiAyXSA9IDA7CiAgICAgICAgICBGW2QueWEgKyA0ID4+IDJdID0gYjsKICAgICAgICAgIEZbZC55YSArIDggPj4gMl0gPSBjOwogICAgICAgICAgQmEgPSBhOwogICAgICAgICAgQ2ErKzsKICAgICAgICAgIHRocm93IEJhOwogICAgICAgIH0sCiAgICAgICAgQzogZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIFE6ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIE46ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIFI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICBPOiAoKSA9PiB7CiAgICAgICAgfSwKICAgICAgICBCOiBmdW5jdGlvbigpIHsKICAgICAgICB9LAogICAgICAgIFA6ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIHY6IChhKSA9PiB7CiAgICAgICAgICB2YXIgYiA9IEZhW2FdOwogICAgICAgICAgZGVsZXRlIEZhW2FdOwogICAgICAgICAgdmFyIGMgPSBiLlVhLCBkID0gYi5GYSwgZSA9IGIuWWEsIGYgPSBlLm1hcCgobCkgPT4gbC5oYikuY29uY2F0KGUubWFwKChsKSA9PiBsLm5iKSk7CiAgICAgICAgICBQKFthXSwgZiwgKGwpID0+IHsKICAgICAgICAgICAgdmFyIGggPSB7fTsKICAgICAgICAgICAgZS5mb3JFYWNoKChuLCBtKSA9PiB7CiAgICAgICAgICAgICAgdmFyIHAgPSBsW21dLCB1ID0gbi5mYiwgdiA9IG4uZ2IsIGcgPSBsW20gKyBlLmxlbmd0aF0sIHEgPSBuLm1iLCByID0gbi5vYjsKICAgICAgICAgICAgICBoW24uYmJdID0gewogICAgICAgICAgICAgICAgcmVhZDogKHopID0+IHAuZnJvbVdpcmVUeXBlKHUodiwgeikpLAogICAgICAgICAgICAgICAgd3JpdGU6ICh6LCBOKSA9PiB7CiAgICAgICAgICAgICAgICAgIHZhciBEID0gW107CiAgICAgICAgICAgICAgICAgIHEociwgeiwgZy50b1dpcmVUeXBlKEQsIE4pKTsKICAgICAgICAgICAgICAgICAgR2EoRCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogYi5uYW1lLAogICAgICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiAobikgPT4gewogICAgICAgICAgICAgICAgICB2YXIgbSA9IHt9LCBwOwogICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gaCkgbVtwXSA9IGhbcF0ucmVhZChuKTsKICAgICAgICAgICAgICAgICAgZChuKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9XaXJlVHlwZTogKG4sIG0pID0+IHsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBoKSBpZiAoIShwIGluIG0pKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nIGZpZWxkOiAiJHtwfSJgKTsKICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjKCk7CiAgICAgICAgICAgICAgICAgIGZvciAocCBpbiBoKSBoW3BdLndyaXRlKHUsIG1bcF0pOwogICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIG4ucHVzaChkLCB1KTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXJnUGFja0FkdmFuY2U6IDgsCiAgICAgICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogSywKICAgICAgICAgICAgICAgIEVhOiBkCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBKOiAoKSA9PiB7CiAgICAgICAgfSwKICAgICAgICBZOiAoYSwgYiwgYywgZCkgPT4gewogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBPKGEsIHsKICAgICAgICAgICAgbmFtZTogYiwKICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgcmV0dXJuICEhZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9XaXJlVHlwZTogZnVuY3Rpb24oZSwgZikgewogICAgICAgICAgICAgIHJldHVybiBmID8gYyA6IGQ7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShBW2VdKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRWE6IG51bGwKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgcjogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0sIHAsIHUsIHYpID0+IHsKICAgICAgICAgIHAgPSBRKHApOwogICAgICAgICAgZiA9IFQoZSwgZik7CiAgICAgICAgICBoICYmIChoID0gVChsLCBoKSk7CiAgICAgICAgICBtICYmIChtID0gVChuLCBtKSk7CiAgICAgICAgICB2ID0gVCh1LCB2KTsKICAgICAgICAgIHZhciBnID0gYmIocCk7CiAgICAgICAgICBhYihnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcWIoYENhbm5vdCBjb25zdHJ1Y3QgJHtwfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIFtkXSk7CiAgICAgICAgICB9KTsKICAgICAgICAgIFAoW2EsIGIsIGNdLCBkID8gW2RdIDogW10sIChxKSA9PiB7CiAgICAgICAgICAgIHEgPSBxWzBdOwogICAgICAgICAgICBpZiAoZCkgewogICAgICAgICAgICAgIHZhciByID0gcS54YTsKICAgICAgICAgICAgICB2YXIgeiA9IHIuTGE7CiAgICAgICAgICAgIH0gZWxzZSB6ID0gWWEucHJvdG90eXBlOwogICAgICAgICAgICBxID0gWmEocCwgZnVuY3Rpb24oLi4uTmEpIHsKICAgICAgICAgICAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpICE9PSBOKSB0aHJvdyBuZXcgUigiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiICsgcCk7CiAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gRC5IYSkgdGhyb3cgbmV3IFIocCArICIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKTsKICAgICAgICAgICAgICB2YXIgeGIgPSBELkhhW05hLmxlbmd0aF07CiAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0geGIpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgICAgYFRyaWVkIHRvIGludm9rZSBjdG9yIG9mICR7cH0gd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgke05hLmxlbmd0aH0pIC0gZXhwZWN0ZWQgKCR7T2JqZWN0LmtleXMoRC5IYSkudG9TdHJpbmcoKX0pIHBhcmFtZXRlcnMgaW5zdGVhZCFgCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHJldHVybiB4Yi5hcHBseSh0aGlzLCBOYSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgTiA9IE9iamVjdC5jcmVhdGUoeiwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogcSB9IH0pOwogICAgICAgICAgICBxLnByb3RvdHlwZSA9IE47CiAgICAgICAgICAgIHZhciBEID0gbmV3IGNiKHAsIHEsIE4sIHYsIHIsIGYsIGgsIG0pOwogICAgICAgICAgICBpZiAoRC5DYSkgewogICAgICAgICAgICAgIHZhciBpYTsKICAgICAgICAgICAgICAoaWEgPSBELkNhKS5XYSA/PyAoaWEuV2EgPSBbXSk7CiAgICAgICAgICAgICAgRC5DYS5XYS5wdXNoKEQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIgPSBuZXcgamIocCwgRCwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgaWEgPSBuZXcgamIocCArICIqIiwgRCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgIHogPSBuZXcgamIocCArICIgY29uc3QqIiwgRCwgZmFsc2UsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgUWFbYV0gPSB7IHBvaW50ZXJUeXBlOiBpYSwgJGE6IHogfTsKICAgICAgICAgICAga2IoZywgcSk7CiAgICAgICAgICAgIHJldHVybiBbciwgaWEsIHpdOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBxOiAoYSwgYiwgYywgZCwgZSwgZikgPT4gewogICAgICAgICAgdmFyIGwgPSByYihiLCBjKTsKICAgICAgICAgIGUgPSBUKGQsIGUpOwogICAgICAgICAgUChbXSwgW2FdLCAoaCkgPT4gewogICAgICAgICAgICBoID0gaFswXTsKICAgICAgICAgICAgdmFyIG4gPSBgY29uc3RydWN0b3IgJHtoLm5hbWV9YDsKICAgICAgICAgICAgdm9pZCAwID09PSBoLnhhLkhhICYmIChoLnhhLkhhID0gW10pOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBoLnhhLkhhW2IgLSAxXSkKICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgIGBDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgke2IgLSAxfSkgZm9yIGNsYXNzICcke2gubmFtZX0nISBPdmVybG9hZCByZXNvbHV0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHBlcmZvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVyIGNvdW50LCBub3QgYWN0dWFsIHR5cGUgaW5mbyFgCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgaC54YS5IYVtiIC0gMV0gPSAoKSA9PiB7CiAgICAgICAgICAgICAgcWIoYENhbm5vdCBjb25zdHJ1Y3QgJHtoLm5hbWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCwgbCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIFAoW10sIGwsIChtKSA9PiB7CiAgICAgICAgICAgICAgbS5zcGxpY2UoMSwgMCwgbnVsbCk7CiAgICAgICAgICAgICAgaC54YS5IYVtiIC0gMV0gPSB0YihuLCBtLCBudWxsLCBlLCBmKTsKICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGY6IChhLCBiLCBjLCBkLCBlLCBmLCBsLCBoKSA9PiB7CiAgICAgICAgICB2YXIgbiA9IHJiKGMsIGQpOwogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBiID0gdWIoYik7CiAgICAgICAgICBmID0gVChlLCBmKTsKICAgICAgICAgIFAoW10sIFthXSwgKG0pID0+IHsKICAgICAgICAgICAgZnVuY3Rpb24gcCgpIHsKICAgICAgICAgICAgICBxYihgQ2Fubm90IGNhbGwgJHt1fSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIG4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG0gPSBtWzBdOwogICAgICAgICAgICB2YXIgdSA9IGAke20ubmFtZX0uJHtifWA7CiAgICAgICAgICAgIGIuc3RhcnRzV2l0aCgiQEAiKSAmJiAoYiA9IFN5bWJvbFtiLnN1YnN0cmluZygyKV0pOwogICAgICAgICAgICBoICYmIG0ueGEua2IucHVzaChiKTsKICAgICAgICAgICAgdmFyIHYgPSBtLnhhLkxhLCBnID0gdltiXTsKICAgICAgICAgICAgdm9pZCAwID09PSBnIHx8IHZvaWQgMCA9PT0gZy5CYSAmJiBnLmNsYXNzTmFtZSAhPT0gbS5uYW1lICYmIGcuT2EgPT09IGMgLSAyID8gKHAuT2EgPSBjIC0gMiwgcC5jbGFzc05hbWUgPSBtLm5hbWUsIHZbYl0gPSBwKSA6ICgkYSh2LCBiLCB1KSwgdltiXS5CYVtjIC0gMl0gPSBwKTsKICAgICAgICAgICAgUChbXSwgbiwgKHEpID0+IHsKICAgICAgICAgICAgICBxID0gdGIodSwgcSwgbSwgZiwgbCk7CiAgICAgICAgICAgICAgdm9pZCAwID09PSB2W2JdLkJhID8gKHEuT2EgPSBjIC0gMiwgdltiXSA9IHEpIDogdltiXS5CYVtjIC0gMl0gPSBxOwogICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgWDogKGEpID0+IE8oYSwgemIpLAogICAgICAgIHg6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBmdW5jdGlvbiBlKCkgewogICAgICAgICAgfQogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBlLnZhbHVlcyA9IHt9OwogICAgICAgICAgTyhhLCB7CiAgICAgICAgICAgIG5hbWU6IGIsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiBlLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGZ1bmN0aW9uKGYpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci52YWx1ZXNbZl07CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IChmLCBsKSA9PiBsLnZhbHVlLAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IEFiKGIsIGMsIGQpLAogICAgICAgICAgICBFYTogbnVsbAogICAgICAgICAgfSk7CiAgICAgICAgICBhYihiLCBlKTsKICAgICAgICB9LAogICAgICAgIGs6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICB2YXIgZCA9IEJiKGEsICJlbnVtIik7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIGEgPSBkLmNvbnN0cnVjdG9yOwogICAgICAgICAgZCA9IE9iamVjdC5jcmVhdGUoZC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHsKICAgICAgICAgICAgdmFsdWU6IHsgdmFsdWU6IGMgfSwKICAgICAgICAgICAgY29uc3RydWN0b3I6IHsgdmFsdWU6IFphKGAke2QubmFtZX1fJHtifWAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB9KSB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGEudmFsdWVzW2NdID0gZDsKICAgICAgICAgIGFbYl0gPSBkOwogICAgICAgIH0sCiAgICAgICAgRDogKGEsIGIsIGMpID0+IHsKICAgICAgICAgIGIgPSBRKGIpOwogICAgICAgICAgTyhhLCB7CiAgICAgICAgICAgIG5hbWU6IGIsCiAgICAgICAgICAgIGZyb21XaXJlVHlwZTogKGQpID0+IGQsCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IChkLCBlKSA9PiBlLAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IENiKGIsIGMpLAogICAgICAgICAgICBFYTogbnVsbAogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBGOiAoYSwgYiwgYywgZCwgZSwgZikgPT4gewogICAgICAgICAgdmFyIGwgPSByYihiLCBjKTsKICAgICAgICAgIGEgPSBRKGEpOwogICAgICAgICAgYSA9IHViKGEpOwogICAgICAgICAgZSA9IFQoZCwgZSk7CiAgICAgICAgICBhYigKICAgICAgICAgICAgYSwKICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgcWIoYENhbm5vdCBjYWxsICR7YX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLCBsKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYiAtIDEKICAgICAgICAgICk7CiAgICAgICAgICBQKFtdLCBsLCAoaCkgPT4gewogICAgICAgICAgICBrYihhLCB0YihhLCBbaFswXSwgbnVsbF0uY29uY2F0KGguc2xpY2UoMSkpLCBudWxsLCBlLCBmKSwgYiAtIDEpOwogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGw6IChhLCBiLCBjLCBkLCBlKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIC0xID09PSBlICYmIChlID0gNDI5NDk2NzI5NSk7CiAgICAgICAgICBlID0gKGgpID0+IGg7CiAgICAgICAgICBpZiAoMCA9PT0gZCkgewogICAgICAgICAgICB2YXIgZiA9IDMyIC0gOCAqIGM7CiAgICAgICAgICAgIGUgPSAoaCkgPT4gaCA8PCBmID4+PiBmOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGwgPSBiLmluY2x1ZGVzKCJ1bnNpZ25lZCIpID8gZnVuY3Rpb24oaCwgbikgewogICAgICAgICAgICByZXR1cm4gbiA+Pj4gMDsKICAgICAgICAgIH0gOiBmdW5jdGlvbihoLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgfTsKICAgICAgICAgIE8oYSwgewogICAgICAgICAgICBuYW1lOiBiLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGUsCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IGwsCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogRGIoYiwgYywgMCAhPT0gZCksCiAgICAgICAgICAgIEVhOiBudWxsCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGc6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICBmdW5jdGlvbiBkKGYpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHkuYnVmZmVyLCBGW2YgKyA0ID4+IDJdLCBGW2YgPj4gMl0pOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGUgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSwgSW50MzJBcnJheSwgVWludDMyQXJyYXksIEZsb2F0MzJBcnJheSwgRmxvYXQ2NEFycmF5XVtiXTsKICAgICAgICAgIGMgPSBRKGMpOwogICAgICAgICAgTyhhLCB7IG5hbWU6IGMsIGZyb21XaXJlVHlwZTogZCwgYXJnUGFja0FkdmFuY2U6IDgsIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBkIH0sIHsgaWI6IHRydWUgfSk7CiAgICAgICAgfSwKICAgICAgICB3OiAoYSkgPT4gewogICAgICAgICAgTyhhLCB6Yik7CiAgICAgICAgfSwKICAgICAgICBjYTogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0sIHAsIHUpID0+IHsKICAgICAgICAgIGMgPSBRKGMpOwogICAgICAgICAgZiA9IFQoZSwgZik7CiAgICAgICAgICBoID0gVChsLCBoKTsKICAgICAgICAgIG0gPSBUKG4sIG0pOwogICAgICAgICAgdSA9IFQocCwgdSk7CiAgICAgICAgICBQKFthXSwgW2JdLCAodikgPT4gewogICAgICAgICAgICB2ID0gdlswXTsKICAgICAgICAgICAgcmV0dXJuIFtuZXcgamIoYywgdi54YSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB2LCBkLCBmLCBoLCBtLCB1KV07CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIEU6IChhLCBiKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIHZhciBjID0gInN0ZDo6c3RyaW5nIiA9PT0gYjsKICAgICAgICAgIE8oYSwgewogICAgICAgICAgICBuYW1lOiBiLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICB2YXIgZSA9IEZbZCA+PiAyXSwgZiA9IGQgKyA0OwogICAgICAgICAgICAgIGlmIChjKQogICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IGYsIGggPSAwOyBoIDw9IGU7ICsraCkgewogICAgICAgICAgICAgICAgICB2YXIgbiA9IGYgKyBoOwogICAgICAgICAgICAgICAgICBpZiAoaCA9PSBlIHx8IDAgPT0gQVtuXSkgewogICAgICAgICAgICAgICAgICAgIGwgPSBsID8gSihBLCBsLCBuIC0gbCkgOiAiIjsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBtKSB2YXIgbSA9IGw7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBtICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksIG0gKz0gbDsKICAgICAgICAgICAgICAgICAgICBsID0gbiArIDE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG0gPSBBcnJheShlKTsKICAgICAgICAgICAgICAgIGZvciAoaCA9IDA7IGggPCBlOyArK2gpIG1baF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKEFbZiArIGhdKTsKICAgICAgICAgICAgICAgIG0gPSBtLmpvaW4oIiIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBVKGQpOwogICAgICAgICAgICAgIHJldHVybiBtOwogICAgICAgICAgICB9LAogICAgICAgICAgICB0b1dpcmVUeXBlOiBmdW5jdGlvbihkLCBlKSB7CiAgICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyICYmIChlID0gbmV3IFVpbnQ4QXJyYXkoZSkpOwogICAgICAgICAgICAgIHZhciBmID0gInN0cmluZyIgPT0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgaWYgKCEoZiB8fCBlIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkgfHwgZSBpbnN0YW5jZW9mIEludDhBcnJheSkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpOwogICAgICAgICAgICAgIHZhciBsID0gYyAmJiBmID8gRGEoZSkgOiBlLmxlbmd0aDsKICAgICAgICAgICAgICB2YXIgaCA9IGJjKDQgKyBsICsgMSksIG4gPSBoICsgNDsKICAgICAgICAgICAgICBGW2ggPj4gMl0gPSBsOwogICAgICAgICAgICAgIGlmIChjICYmIGYpIEVhKGUsIEEsIG4sIGwgKyAxKTsKICAgICAgICAgICAgICBlbHNlIGlmIChmKQogICAgICAgICAgICAgICAgZm9yIChmID0gMDsgZiA8IGw7ICsrZikgewogICAgICAgICAgICAgICAgICB2YXIgbSA9IGUuY2hhckNvZGVBdChmKTsKICAgICAgICAgICAgICAgICAgaWYgKDI1NSA8IG0pIHRocm93IFUobiksIG5ldyBSKCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHMiKTsKICAgICAgICAgICAgICAgICAgQVtuICsgZl0gPSBtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgZm9yIChmID0gMDsgZiA8IGw7ICsrZikgQVtuICsgZl0gPSBlW2ZdOwogICAgICAgICAgICAgIG51bGwgIT09IGQgJiYgZC5wdXNoKFUsIGgpOwogICAgICAgICAgICAgIHJldHVybiBoOwogICAgICAgICAgICB9LAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IEssCiAgICAgICAgICAgIEVhKGQpIHsKICAgICAgICAgICAgICBVKGQpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHU6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICBjID0gUShjKTsKICAgICAgICAgIGlmICgyID09PSBiKSB7CiAgICAgICAgICAgIHZhciBkID0gRmI7CiAgICAgICAgICAgIHZhciBlID0gR2I7CiAgICAgICAgICAgIHZhciBmID0gSGI7CiAgICAgICAgICAgIHZhciBsID0gKGgpID0+IENbaCA+PiAxXTsKICAgICAgICAgIH0gZWxzZSA0ID09PSBiICYmIChkID0gSWIsIGUgPSBKYiwgZiA9IEtiLCBsID0gKGgpID0+IEZbaCA+PiAyXSk7CiAgICAgICAgICBPKGEsIHsKICAgICAgICAgICAgbmFtZTogYywKICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiAoaCkgPT4gewogICAgICAgICAgICAgIGZvciAodmFyIG4gPSBGW2ggPj4gMl0sIG0sIHAgPSBoICsgNCwgdSA9IDA7IHUgPD0gbjsgKyt1KSB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IGggKyA0ICsgdSAqIGI7CiAgICAgICAgICAgICAgICBpZiAodSA9PSBuIHx8IDAgPT0gbCh2KSkKICAgICAgICAgICAgICAgICAgcCA9IGQocCwgdiAtIHApLCB2b2lkIDAgPT09IG0gPyBtID0gcCA6IChtICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksIG0gKz0gcCksIHAgPSB2ICsgYjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgVShoKTsKICAgICAgICAgICAgICByZXR1cm4gbTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9XaXJlVHlwZTogKGgsIG4pID0+IHsKICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIG4pIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAke2N9YCk7CiAgICAgICAgICAgICAgdmFyIG0gPSBmKG4pLCBwID0gYmMoNCArIG0gKyBiKTsKICAgICAgICAgICAgICBGW3AgPj4gMl0gPSBtIC8gYjsKICAgICAgICAgICAgICBlKG4sIHAgKyA0LCBtICsgYik7CiAgICAgICAgICAgICAgbnVsbCAhPT0gaCAmJiBoLnB1c2goVSwgcCk7CiAgICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogSywKICAgICAgICAgICAgRWEoaCkgewogICAgICAgICAgICAgIFUoaCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgczogKGEsIGIsIGMsIGQsIGUsIGYpID0+IHsKICAgICAgICAgIEZhW2FdID0geyBuYW1lOiBRKGIpLCBVYTogVChjLCBkKSwgRmE6IFQoZSwgZiksIFlhOiBbXSB9OwogICAgICAgIH0sCiAgICAgICAgajogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0pID0+IHsKICAgICAgICAgIEZhW2FdLllhLnB1c2goeyBiYjogUShiKSwgaGI6IGMsIGZiOiBUKGQsIGUpLCBnYjogZiwgbmI6IGwsIG1iOiBUKGgsIG4pLCBvYjogbSB9KTsKICAgICAgICB9LAogICAgICAgIFo6IChhLCBiKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIE8oYSwgeyB1YjogdHJ1ZSwgbmFtZTogYiwgYXJnUGFja0FkdmFuY2U6IDAsIGZyb21XaXJlVHlwZTogKCkgPT4gewogICAgICAgICAgfSwgdG9XaXJlVHlwZTogKCkgPT4gewogICAgICAgICAgfSB9KTsKICAgICAgICB9LAogICAgICAgIEs6ICgpID0+IHsKICAgICAgICAgIHRocm93IEluZmluaXR5OwogICAgICAgIH0sCiAgICAgICAgYWE6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBhID0gTGJbYV07CiAgICAgICAgICBiID0geWIoYik7CiAgICAgICAgICByZXR1cm4gYShudWxsLCBiLCBjLCBkKTsKICAgICAgICB9LAogICAgICAgIEc6IHdiLAogICAgICAgICQ6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICB2YXIgZCA9IE5iKGEsIGIpLCBlID0gZC5zaGlmdCgpOwogICAgICAgICAgYS0tOwogICAgICAgICAgdmFyIGYgPSBBcnJheShhKTsKICAgICAgICAgIGIgPSBgbWV0aG9kQ2FsbGVyPCgke2QubWFwKChsKSA9PiBsLm5hbWUpLmpvaW4oIiwgIil9KSA9PiAke2UubmFtZX0+YDsKICAgICAgICAgIHJldHVybiBNYigKICAgICAgICAgICAgWmEoYiwgKGwsIGgsIG4sIG0pID0+IHsKICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMCwgdSA9IDA7IHUgPCBhOyArK3UpIGZbdV0gPSBkW3VdLnJlYWRWYWx1ZUZyb21Qb2ludGVyKG0gKyBwKSwgcCArPSBkW3VdLmFyZ1BhY2tBZHZhbmNlOwogICAgICAgICAgICAgIGggPSAxID09PSBjID8gT2IoaCwgZikgOiBoLmFwcGx5KGwsIGYpOwogICAgICAgICAgICAgIGwgPSBbXTsKICAgICAgICAgICAgICBoID0gZS50b1dpcmVUeXBlKGwsIGgpOwogICAgICAgICAgICAgIGwubGVuZ3RoICYmIChGW24gPj4gMl0gPSBoYihsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGg7CiAgICAgICAgICAgIH0pCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICAgYmE6IChhKSA9PiB7CiAgICAgICAgICA5IDwgYSAmJiAoVlthICsgMV0gKz0gMSk7CiAgICAgICAgfSwKICAgICAgICBfOiAoYSkgPT4gewogICAgICAgICAgdmFyIGIgPSB5YihhKTsKICAgICAgICAgIEdhKGIpOwogICAgICAgICAgd2IoYSk7CiAgICAgICAgfSwKICAgICAgICBvOiAoYSwgYikgPT4gewogICAgICAgICAgYSA9IEJiKGEsICJfZW12YWxfdGFrZV92YWx1ZSIpOwogICAgICAgICAgYSA9IGEucmVhZFZhbHVlRnJvbVBvaW50ZXIoYik7CiAgICAgICAgICByZXR1cm4gaGIoYSk7CiAgICAgICAgfSwKICAgICAgICBXOiAoKSA9PiB7CiAgICAgICAgICByYSgiIik7CiAgICAgICAgfSwKICAgICAgICBWOiAoKSA9PiBwZXJmb3JtYW5jZS5ub3coKSwKICAgICAgICBNOiAoYSkgPT4gewogICAgICAgICAgdmFyIGIgPSBBLmxlbmd0aDsKICAgICAgICAgIGEgPj4+PSAwOwogICAgICAgICAgaWYgKDIxNDc0ODM2NDggPCBhKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBjID0gMTsgNCA+PSBjOyBjICo9IDIpIHsKICAgICAgICAgICAgdmFyIGQgPSBiICogKDEgKyAwLjIgLyBjKTsKICAgICAgICAgICAgZCA9IE1hdGgubWluKGQsIGEgKyAxMDA2NjMyOTYpOwogICAgICAgICAgICB2YXIgZSA9IE1hdGg7CiAgICAgICAgICAgIGQgPSBNYXRoLm1heChhLCBkKTsKICAgICAgICAgICAgYTogewogICAgICAgICAgICAgIGUgPSAoZS5taW4uY2FsbChlLCAyMTQ3NDgzNjQ4LCBkICsgKDY1NTM2IC0gZCAlIDY1NTM2KSAlIDY1NTM2KSAtIGZhLmJ1ZmZlci5ieXRlTGVuZ3RoICsgNjU1MzUpIC8gNjU1MzY7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGZhLmdyb3coZSk7CiAgICAgICAgICAgICAgICBsYSgpOwogICAgICAgICAgICAgICAgdmFyIGYgPSAxOwogICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGYgPSB2b2lkIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGYpIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0sCiAgICAgICAgUzogKGEsIGIpID0+IHsKICAgICAgICAgIHZhciBjID0gMDsKICAgICAgICAgIFJiKCkuZm9yRWFjaCgoZCwgZSkgPT4gewogICAgICAgICAgICB2YXIgZiA9IGIgKyBjOwogICAgICAgICAgICBlID0gRlthICsgNCAqIGUgPj4gMl0gPSBmOwogICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgZC5sZW5ndGg7ICsrZikgeVtlKytdID0gZC5jaGFyQ29kZUF0KGYpOwogICAgICAgICAgICB5W2VdID0gMDsKICAgICAgICAgICAgYyArPSBkLmxlbmd0aCArIDE7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0sCiAgICAgICAgVDogKGEsIGIpID0+IHsKICAgICAgICAgIHZhciBjID0gUmIoKTsKICAgICAgICAgIEZbYSA+PiAyXSA9IGMubGVuZ3RoOwogICAgICAgICAgdmFyIGQgPSAwOwogICAgICAgICAgYy5mb3JFYWNoKChlKSA9PiBkICs9IGUubGVuZ3RoICsgMSk7CiAgICAgICAgICBGW2IgPj4gMl0gPSBkOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICB0OiAoKSA9PiA1MiwKICAgICAgICBBOiAoKSA9PiA1MiwKICAgICAgICBJOiBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiA3MDsKICAgICAgICB9LAogICAgICAgIHo6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBmb3IgKHZhciBlID0gMCwgZiA9IDA7IGYgPCBjOyBmKyspIHsKICAgICAgICAgICAgdmFyIGwgPSBGW2IgPj4gMl0sIGggPSBGW2IgKyA0ID4+IDJdOwogICAgICAgICAgICBiICs9IDg7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgaDsgbisrKSB7CiAgICAgICAgICAgICAgdmFyIG0gPSBBW2wgKyBuXSwgcCA9IFNiW2FdOwogICAgICAgICAgICAgIDAgPT09IG0gfHwgMTAgPT09IG0gPyAoKDEgPT09IGEgPyBlYSA6IHcpKEoocCwgMCkpLCBwLmxlbmd0aCA9IDApIDogcC5wdXNoKG0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgKz0gaDsKICAgICAgICAgIH0KICAgICAgICAgIEZbZCA+PiAyXSA9IGU7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIFU6IChhLCBiKSA9PiB7CiAgICAgICAgICBVYihBLnN1YmFycmF5KGEsIGEgKyBiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGk6IGNjLAogICAgICAgIGQ6IGRjLAogICAgICAgIGU6IGVjLAogICAgICAgIHA6IGZjLAogICAgICAgIHk6IGdjLAogICAgICAgIGI6IGhjLAogICAgICAgIGE6IGljLAogICAgICAgIGg6IGpjLAogICAgICAgIG46IGtjLAogICAgICAgIEg6IGxjLAogICAgICAgIEw6IChhLCBiLCBjLCBkKSA9PiBaYihhLCBiLCBjLCBkKQogICAgICB9LCBXID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gYShjKSB7CiAgICAgICAgICBXID0gYy5leHBvcnRzOwogICAgICAgICAgZmEgPSBXLmRhOwogICAgICAgICAgbGEoKTsKICAgICAgICAgIFMgPSBXLmhhOwogICAgICAgICAgbmEudW5zaGlmdChXLmVhKTsKICAgICAgICAgIEctLTsKICAgICAgICAgIGsubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKEcpOwogICAgICAgICAgMCA9PSBHICYmIChudWxsICE9PSBxYSAmJiAoY2xlYXJJbnRlcnZhbChxYSksIHFhID0gbnVsbCksIEggJiYgKGMgPSBILCBIID0gbnVsbCwgYygpKSk7CiAgICAgICAgICByZXR1cm4gVzsKICAgICAgICB9CiAgICAgICAgdmFyIGIgPSB7IGE6IG1jIH07CiAgICAgICAgRysrOwogICAgICAgIGsubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKEcpOwogICAgICAgIGlmIChrLmluc3RhbnRpYXRlV2FzbSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBrLmluc3RhbnRpYXRlV2FzbShiLCBhKTsKICAgICAgICAgIH0gY2F0Y2ggKGMpIHsKICAgICAgICAgICAgdyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtjfWApLCBiYShjKTsKICAgICAgICAgIH0KICAgICAgICB4YShiLCBmdW5jdGlvbihjKSB7CiAgICAgICAgICBhKGMuaW5zdGFuY2UpOwogICAgICAgIH0pLmNhdGNoKGJhKTsKICAgICAgICByZXR1cm4ge307CiAgICAgIH0oKSwgYmMgPSAoYSkgPT4gKGJjID0gVy5mYSkoYSksIG9iID0gKGEpID0+IChvYiA9IFcuZ2EpKGEpLCBVID0gKGEpID0+IChVID0gVy5pYSkoYSksIFggPSAoYSwgYikgPT4gKFggPSBXLmphKShhLCBiKSwgWSA9IChhKSA9PiAoWSA9IFcua2EpKGEpLCBaID0gKCkgPT4gKFogPSBXLmxhKSgpOwogICAgICBrLmR5bkNhbGxfaWlqaiA9IChhLCBiLCBjLCBkLCBlLCBmKSA9PiAoay5keW5DYWxsX2lpamogPSBXLm5hKShhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgay5keW5DYWxsX3ZpamogPSAoYSwgYiwgYywgZCwgZSwgZikgPT4gKGsuZHluQ2FsbF92aWpqID0gVy5vYSkoYSwgYiwgYywgZCwgZSwgZik7CiAgICAgIGsuZHluQ2FsbF9qaWlpID0gKGEsIGIsIGMsIGQpID0+IChrLmR5bkNhbGxfamlpaSA9IFcucGEpKGEsIGIsIGMsIGQpOwogICAgICBrLmR5bkNhbGxfamlpID0gKGEsIGIsIGMpID0+IChrLmR5bkNhbGxfamlpID0gVy5xYSkoYSwgYiwgYyk7CiAgICAgIHZhciBuYyA9IGsuZHluQ2FsbF92aWlpaiA9IChhLCBiLCBjLCBkLCBlLCBmKSA9PiAobmMgPSBrLmR5bkNhbGxfdmlpaWogPSBXLnJhKShhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgay5keW5DYWxsX2ppamkgPSAoYSwgYiwgYywgZCwgZSkgPT4gKGsuZHluQ2FsbF9qaWppID0gVy5zYSkoYSwgYiwgYywgZCwgZSk7CiAgICAgIGsuZHluQ2FsbF92aWlqaWkgPSAoYSwgYiwgYywgZCwgZSwgZiwgbCkgPT4gKGsuZHluQ2FsbF92aWlqaWkgPSBXLnRhKShhLCBiLCBjLCBkLCBlLCBmLCBsKTsKICAgICAgay5keW5DYWxsX2lpaWlpaiA9IChhLCBiLCBjLCBkLCBlLCBmLCBsKSA9PiAoay5keW5DYWxsX2lpaWlpaiA9IFcudWEpKGEsIGIsIGMsIGQsIGUsIGYsIGwpOwogICAgICBrLmR5bkNhbGxfaWlpaWlqaiA9IChhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuKSA9PiAoay5keW5DYWxsX2lpaWlpamogPSBXLnZhKShhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuKTsKICAgICAgay5keW5DYWxsX2lpaWlpaWpqID0gKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0pID0+IChrLmR5bkNhbGxfaWlpaWlpamogPSBXLndhKShhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuLCBtKTsKICAgICAgZnVuY3Rpb24gaGMoYSwgYikgewogICAgICAgIHZhciBjID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBTLmdldChhKShiKTsKICAgICAgICB9IGNhdGNoIChkKSB7CiAgICAgICAgICBZKGMpOwogICAgICAgICAgaWYgKGQgIT09IGQgKyAwKSB0aHJvdyBkOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gaWMoYSwgYiwgYykgewogICAgICAgIHZhciBkID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBTLmdldChhKShiLCBjKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBZKGQpOwogICAgICAgICAgaWYgKGUgIT09IGUgKyAwKSB0aHJvdyBlOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZWMoYSwgYiwgYywgZCkgewogICAgICAgIHZhciBlID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICByZXR1cm4gUy5nZXQoYSkoYiwgYywgZCk7CiAgICAgICAgfSBjYXRjaCAoZikgewogICAgICAgICAgWShlKTsKICAgICAgICAgIGlmIChmICE9PSBmICsgMCkgdGhyb3cgZjsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGRjKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZCA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgcmV0dXJuIFMuZ2V0KGEpKGIsIGMpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIFkoZCk7CiAgICAgICAgICBpZiAoZSAhPT0gZSArIDApIHRocm93IGU7CiAgICAgICAgICBYKDEsIDApOwogICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBjYyhhLCBiKSB7CiAgICAgICAgdmFyIGMgPSBaKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJldHVybiBTLmdldChhKShiKTsKICAgICAgICB9IGNhdGNoIChkKSB7CiAgICAgICAgICBZKGMpOwogICAgICAgICAgaWYgKGQgIT09IGQgKyAwKSB0aHJvdyBkOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZmMoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIHZhciBsID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICByZXR1cm4gUy5nZXQoYSkoYiwgYywgZCwgZSwgZik7CiAgICAgICAgfSBjYXRjaCAoaCkgewogICAgICAgICAgWShsKTsKICAgICAgICAgIGlmIChoICE9PSBoICsgMCkgdGhyb3cgaDsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGtjKGEsIGIsIGMsIGQsIGUpIHsKICAgICAgICB2YXIgZiA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoYiwgYywgZCwgZSk7CiAgICAgICAgfSBjYXRjaCAobCkgewogICAgICAgICAgWShmKTsKICAgICAgICAgIGlmIChsICE9PSBsICsgMCkgdGhyb3cgbDsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGpjKGEsIGIsIGMsIGQpIHsKICAgICAgICB2YXIgZSA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoYiwgYywgZCk7CiAgICAgICAgfSBjYXRjaCAoZikgewogICAgICAgICAgWShlKTsKICAgICAgICAgIGlmIChmICE9PSBmICsgMCkgdGhyb3cgZjsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGdjKGEpIHsKICAgICAgICB2YXIgYiA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoKTsKICAgICAgICB9IGNhdGNoIChjKSB7CiAgICAgICAgICBZKGIpOwogICAgICAgICAgaWYgKGMgIT09IGMgKyAwKSB0aHJvdyBjOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gbGMoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIHZhciBsID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBuYyhhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgICB9IGNhdGNoIChoKSB7CiAgICAgICAgICBZKGwpOwogICAgICAgICAgaWYgKGggIT09IGggKyAwKSB0aHJvdyBoOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdmFyIG9jOwogICAgICBIID0gZnVuY3Rpb24gcGMoKSB7CiAgICAgICAgb2MgfHwgcWMoKTsKICAgICAgICBvYyB8fCAoSCA9IHBjKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gcWMoKSB7CiAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgIGlmICghb2MgJiYgKG9jID0gdHJ1ZSwgay5jYWxsZWRSdW4gPSB0cnVlLCAhaGEpKSB7CiAgICAgICAgICAgIHlhKG5hKTsKICAgICAgICAgICAgYWEoayk7CiAgICAgICAgICAgIGlmIChrLm9uUnVudGltZUluaXRpYWxpemVkKSBrLm9uUnVudGltZUluaXRpYWxpemVkKCk7CiAgICAgICAgICAgIGlmIChrLnBvc3RSdW4pCiAgICAgICAgICAgICAgZm9yICgiZnVuY3Rpb24iID09IHR5cGVvZiBrLnBvc3RSdW4gJiYgKGsucG9zdFJ1biA9IFtrLnBvc3RSdW5dKTsgay5wb3N0UnVuLmxlbmd0aDsgKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGsucG9zdFJ1bi5zaGlmdCgpOwogICAgICAgICAgICAgICAgb2EudW5zaGlmdChiKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHlhKG9hKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEoMCA8IEcpKSB7CiAgICAgICAgICBpZiAoay5wcmVSdW4pIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2Ygay5wcmVSdW4gJiYgKGsucHJlUnVuID0gW2sucHJlUnVuXSk7IGsucHJlUnVuLmxlbmd0aDsgKSBwYSgpOwogICAgICAgICAgeWEobWEpOwogICAgICAgICAgMCA8IEcgfHwgKGsuc2V0U3RhdHVzID8gKGsuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgay5zZXRTdGF0dXMoIiIpOwogICAgICAgICAgICB9LCAxKTsKICAgICAgICAgICAgYSgpOwogICAgICAgICAgfSwgMSkpIDogYSgpKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKGsucHJlSW5pdCkKICAgICAgICBmb3IgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGsucHJlSW5pdCAmJiAoay5wcmVJbml0ID0gW2sucHJlSW5pdF0pOyAwIDwgay5wcmVJbml0Lmxlbmd0aDsgKSBrLnByZUluaXQucG9wKCkoKTsKICAgICAgcWMoKTsKICAgICAgcmV0dXJuIHJlYWR5UHJvbWlzZTsKICAgIH07CiAgfSkoKTsKICB2YXIgZG90bG90dGllX3BsYXllcl9kZWZhdWx0ID0gY3JlYXRlRG90TG90dGllUGxheWVyTW9kdWxlOwoKICAvLyBzcmMvY29yZS9kb3Rsb3R0aWUtd2FzbS1sb2FkZXIudHMKICB2YXIgRG90TG90dGllV2FzbUxvYWRlciA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlJlbmRlcmVyTG9hZGVyIGlzIGEgc3RhdGljIGNsYXNzIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiIpOwogICAgfQogICAgc3RhdGljIGFzeW5jIF90cnlMb2FkKHVybCkgewogICAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCBkb3Rsb3R0aWVfcGxheWVyX2RlZmF1bHQoeyBsb2NhdGVGaWxlOiAoKSA9PiB1cmwgfSk7CiAgICAgIHJldHVybiBtb2R1bGU7CiAgICB9CiAgICAvKioKICAgICAqIFRyaWVzIHRvIGxvYWQgdGhlIFdBU00gbW9kdWxlIGZyb20gdGhlIHByaW1hcnkgVVJMLCBmYWxsaW5nIGJhY2sgdG8gYSBiYWNrdXAgVVJMIGlmIG5lY2Vzc2FyeS4KICAgICAqIFRocm93cyBhbiBlcnJvciBpZiBib3RoIFVSTHMgZmFpbCB0byBsb2FkIHRoZSBtb2R1bGUuCiAgICAgKiBAcmV0dXJucyBQcm9taXNlPE1vZHVsZT4gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIG1vZHVsZS4KICAgICAqLwogICAgc3RhdGljIGFzeW5jIF9sb2FkV2l0aEJhY2t1cCgpIHsKICAgICAgaWYgKCF0aGlzLl9Nb2R1bGVQcm9taXNlKSB7CiAgICAgICAgdGhpcy5fTW9kdWxlUHJvbWlzZSA9IHRoaXMuX3RyeUxvYWQodGhpcy5fd2FzbVVSTCkuY2F0Y2goYXN5bmMgKGluaXRpYWxFcnJvcikgPT4gewogICAgICAgICAgY29uc3QgYmFja3VwVXJsID0gYGh0dHBzOi8vdW5wa2cuY29tLyR7UEFDS0FHRV9OQU1FfUAke1BBQ0tBR0VfVkVSU0lPTn0vZGlzdC9kb3Rsb3R0aWUtcGxheWVyLndhc21gOwogICAgICAgICAgY29uc29sZS53YXJuKGBQcmltYXJ5IFdBU00gbG9hZCBmYWlsZWQgZnJvbSAke3RoaXMuX3dhc21VUkx9LiBFcnJvcjogJHtpbml0aWFsRXJyb3IubWVzc2FnZX1gKTsKICAgICAgICAgIGNvbnNvbGUud2FybihgQXR0ZW1wdGluZyB0byBsb2FkIFdBU00gZnJvbSBiYWNrdXAgVVJMOiAke2JhY2t1cFVybH1gKTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl90cnlMb2FkKGJhY2t1cFVybCk7CiAgICAgICAgICB9IGNhdGNoIChiYWNrdXBFcnJvcikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcmltYXJ5IFdBU00gVVJMIGZhaWxlZDogJHtpbml0aWFsRXJyb3IubWVzc2FnZX1gKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQmFja3VwIFdBU00gVVJMIGZhaWxlZDogJHtiYWNrdXBFcnJvci5tZXNzYWdlfWApOwogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIldBU00gbG9hZGluZyBmYWlsZWQgZnJvbSBhbGwgc291cmNlcy4iKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5fTW9kdWxlUHJvbWlzZTsKICAgIH0KICAgIC8qKgogICAgICogUHVibGljIG1ldGhvZCB0byBsb2FkIHRoZSBXZWJBc3NlbWJseSBtb2R1bGUuCiAgICAgKiBVdGlsaXplcyBhIHByaW1hcnkgYW5kIGJhY2t1cCBVUkwgZm9yIHJvYnVzdG5lc3MuCiAgICAgKiBAcmV0dXJucyBQcm9taXNlPE1vZHVsZT4gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIG1vZHVsZS4KICAgICAqLwogICAgc3RhdGljIGFzeW5jIGxvYWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9sb2FkV2l0aEJhY2t1cCgpOwogICAgfQogICAgLyoqCiAgICAgKiBTZXRzIGEgbmV3IFVSTCBmb3IgdGhlIFdBU00gZmlsZSBhbmQgaW52YWxpZGF0ZXMgdGhlIGN1cnJlbnQgbW9kdWxlIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAtICBUaGUgbmV3IFVSTCBmb3IgdGhlIFdBU00gZmlsZS4KICAgICAqLwogICAgc3RhdGljIHNldFdhc21VcmwodXJsKSB7CiAgICAgIHRoaXMuX3dhc21VUkwgPSB1cmw7CiAgICAgIHRoaXMuX01vZHVsZVByb21pc2UgPSBudWxsOwogICAgfQogIH07CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbgogIF9fcHVibGljRmllbGQoRG90TG90dGllV2FzbUxvYWRlciwgIl9Nb2R1bGVQcm9taXNlIiwgbnVsbCk7CiAgLy8gVVJMIGZvciB0aGUgV0FTTSBmaWxlLCBjb25zdHJ1Y3RlZCB1c2luZyBwYWNrYWdlIGluZm9ybWF0aW9uCiAgX19wdWJsaWNGaWVsZChEb3RMb3R0aWVXYXNtTG9hZGVyLCAiX3dhc21VUkwiLCBgaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS8ke1BBQ0tBR0VfTkFNRX1AJHtQQUNLQUdFX1ZFUlNJT059L2Rpc3QvZG90bG90dGllLXBsYXllci53YXNtYCk7CgogIC8vIHNyYy9ldmVudC1tYW5hZ2VyLnRzCiAgdmFyIEV2ZW50TWFuYWdlciA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfZXZlbnRMaXN0ZW5lcnMiLCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKTsKICAgIH0KICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHsKICAgICAgbGV0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50TGlzdGVuZXJzLmdldCh0eXBlKTsKICAgICAgaWYgKCFsaXN0ZW5lcnMpIHsKICAgICAgICBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpOwogICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLnNldCh0eXBlLCBsaXN0ZW5lcnMpOwogICAgICB9CiAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpOwogICAgfQogICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikgewogICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudExpc3RlbmVycy5nZXQodHlwZSk7CiAgICAgIGlmICghbGlzdGVuZXJzKSByZXR1cm47CiAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpOwogICAgICAgIGlmIChsaXN0ZW5lcnMuc2l6ZSA9PT0gMCkgewogICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZGVsZXRlKHR5cGUpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5kZWxldGUodHlwZSk7CiAgICAgIH0KICAgIH0KICAgIGRpc3BhdGNoKGV2ZW50KSB7CiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50TGlzdGVuZXJzLmdldChldmVudC50eXBlKTsKICAgICAgbGlzdGVuZXJzPy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoZXZlbnQpKTsKICAgIH0KICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgewogICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5jbGVhcigpOwogICAgfQogIH07CgogIC8vIHNyYy91dGlscy50cwogIGZ1bmN0aW9uIGlzSGV4Q29sb3IoY29sb3IpIHsKICAgIHJldHVybiAvXiMoW1xkYS1mXXs2fXxbXGRhLWZdezh9KSQvaXUudGVzdChjb2xvcik7CiAgfQogIGZ1bmN0aW9uIGhleFN0cmluZ1RvUkdCQUludChjb2xvckhleCkgewogICAgaWYgKCFpc0hleENvbG9yKGNvbG9ySGV4KSkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGxldCBoZXggPSBjb2xvckhleC5yZXBsYWNlKCIjIiwgIiIpOwogICAgaGV4ID0gaGV4Lmxlbmd0aCA9PT0gNiA/IGAke2hleH1mZmAgOiBoZXg7CiAgICByZXR1cm4gcGFyc2VJbnQoaGV4LCAxNik7CiAgfQogIGZ1bmN0aW9uIGlzRG90TG90dGllKGZpbGVEYXRhKSB7CiAgICBpZiAoZmlsZURhdGEuYnl0ZUxlbmd0aCA8IDQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgY29uc3QgZmlsZVNpZ25hdHVyZSA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLnNsaWNlKDAsIFpJUF9TSUdOQVRVUkUuYnl0ZUxlbmd0aCkpOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBaSVBfU0lHTkFUVVJFLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgIGlmIChaSVBfU0lHTkFUVVJFW2ldICE9PSBmaWxlU2lnbmF0dXJlW2ldKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgZnVuY3Rpb24gaXNMb3R0aWVKU09OKGpzb24pIHsKICAgIHJldHVybiBMT1RUSUVfSlNPTl9NQU5EQVRPUllfRklFTERTLmV2ZXJ5KChmaWVsZCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGpzb24sIGZpZWxkKSk7CiAgfQogIGZ1bmN0aW9uIGlzTG90dGllKGZpbGVEYXRhKSB7CiAgICBpZiAodHlwZW9mIGZpbGVEYXRhID09PSAic3RyaW5nIikgewogICAgICB0cnkgewogICAgICAgIHJldHVybiBpc0xvdHRpZUpTT04oSlNPTi5wYXJzZShmaWxlRGF0YSkpOwogICAgICB9IGNhdGNoIChfZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGlzTG90dGllSlNPTihmaWxlRGF0YSk7CiAgICB9CiAgfQoKICAvLyBzcmMvZG90bG90dGllLnRzCiAgdmFyIGNyZWF0ZUNvcmVNb2RlID0gKG1vZGUsIG1vZHVsZSkgPT4gewogICAgaWYgKG1vZGUgPT09ICJyZXZlcnNlIikgewogICAgICByZXR1cm4gbW9kdWxlLk1vZGUuUmV2ZXJzZTsKICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gImJvdW5jZSIpIHsKICAgICAgcmV0dXJuIG1vZHVsZS5Nb2RlLkJvdW5jZTsKICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gInJldmVyc2UtYm91bmNlIikgewogICAgICByZXR1cm4gbW9kdWxlLk1vZGUuUmV2ZXJzZUJvdW5jZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBtb2R1bGUuTW9kZS5Gb3J3YXJkOwogICAgfQogIH07CiAgdmFyIGNyZWF0ZUNvcmVGaXQgPSAoZml0LCBtb2R1bGUpID0+IHsKICAgIGlmIChmaXQgPT09ICJjb250YWluIikgewogICAgICByZXR1cm4gbW9kdWxlLkZpdC5Db250YWluOwogICAgfSBlbHNlIGlmIChmaXQgPT09ICJjb3ZlciIpIHsKICAgICAgcmV0dXJuIG1vZHVsZS5GaXQuQ292ZXI7CiAgICB9IGVsc2UgaWYgKGZpdCA9PT0gImZpbGwiKSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0LkZpbGw7CiAgICB9IGVsc2UgaWYgKGZpdCA9PT0gImZpdC1oZWlnaHQiKSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0LkZpdEhlaWdodDsKICAgIH0gZWxzZSBpZiAoZml0ID09PSAiZml0LXdpZHRoIikgewogICAgICByZXR1cm4gbW9kdWxlLkZpdC5GaXRXaWR0aDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0Lk5vbmU7CiAgICB9CiAgfTsKICB2YXIgY3JlYXRlQ29yZUFsaWduID0gKGFsaWduLCBtb2R1bGUpID0+IHsKICAgIGNvbnN0IGNvcmVBbGlnbiA9IG5ldyBtb2R1bGUuVmVjdG9yRmxvYXQoKTsKICAgIGNvcmVBbGlnbi5wdXNoX2JhY2soYWxpZ25bMF0pOwogICAgY29yZUFsaWduLnB1c2hfYmFjayhhbGlnblsxXSk7CiAgICByZXR1cm4gY29yZUFsaWduOwogIH07CiAgdmFyIGNyZWF0ZUNvcmVTZWdtZW50ID0gKHNlZ21lbnQsIG1vZHVsZSkgPT4gewogICAgY29uc3QgY29yZXNlZ21lbnQgPSBuZXcgbW9kdWxlLlZlY3RvckZsb2F0KCk7CiAgICBpZiAoc2VnbWVudC5sZW5ndGggIT09IDIpIHJldHVybiBjb3Jlc2VnbWVudDsKICAgIGNvcmVzZWdtZW50LnB1c2hfYmFjayhzZWdtZW50WzBdKTsKICAgIGNvcmVzZWdtZW50LnB1c2hfYmFjayhzZWdtZW50WzFdKTsKICAgIHJldHVybiBjb3Jlc2VnbWVudDsKICB9OwogIHZhciBfRG90TG90dGllID0gY2xhc3MgX0RvdExvdHRpZSB7CiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2NhbnZhcyIpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfY29udGV4dCIsIG51bGwpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfZXZlbnRNYW5hZ2VyIik7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9hbmltYXRpb25GcmFtZUlkIiwgbnVsbCk7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9mcmFtZU1hbmFnZXIiKTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2RvdExvdHRpZUNvcmUiLCBudWxsKTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX3JlbmRlckNvbmZpZyIsIHt9KTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2lzRnJvemVuIiwgZmFsc2UpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfYmFja2dyb3VuZENvbG9yIiwgbnVsbCk7CiAgICAgIHRoaXMuX2NhbnZhcyA9IGNvbmZpZy5jYW52YXM7CiAgICAgIHRoaXMuX2NvbnRleHQgPSB0aGlzLl9jYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyID0gbmV3IEV2ZW50TWFuYWdlcigpOwogICAgICB0aGlzLl9mcmFtZU1hbmFnZXIgPSBuZXcgQW5pbWF0aW9uRnJhbWVNYW5hZ2VyKCk7CiAgICAgIHRoaXMuX3JlbmRlckNvbmZpZyA9IGNvbmZpZy5yZW5kZXJDb25maWcgPz8ge307CiAgICAgIERvdExvdHRpZVdhc21Mb2FkZXIubG9hZCgpLnRoZW4oKG1vZHVsZSkgPT4gewogICAgICAgIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUgPSBtb2R1bGU7CiAgICAgICAgdGhpcy5fZG90TG90dGllQ29yZSA9IG5ldyBtb2R1bGUuRG90TG90dGllUGxheWVyKHsKICAgICAgICAgIGF1dG9wbGF5OiBjb25maWcuYXV0b3BsYXkgPz8gZmFsc2UsCiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IDAsCiAgICAgICAgICBsb29wQW5pbWF0aW9uOiBjb25maWcubG9vcCA/PyBmYWxzZSwKICAgICAgICAgIG1vZGU6IGNyZWF0ZUNvcmVNb2RlKGNvbmZpZy5tb2RlID8/ICJmb3J3YXJkIiwgbW9kdWxlKSwKICAgICAgICAgIHNlZ21lbnQ6IGNyZWF0ZUNvcmVTZWdtZW50KGNvbmZpZy5zZWdtZW50ID8/IFtdLCBtb2R1bGUpLAogICAgICAgICAgc3BlZWQ6IGNvbmZpZy5zcGVlZCA/PyAxLAogICAgICAgICAgdXNlRnJhbWVJbnRlcnBvbGF0aW9uOiBjb25maWcudXNlRnJhbWVJbnRlcnBvbGF0aW9uID8/IHRydWUsCiAgICAgICAgICBtYXJrZXI6IGNvbmZpZy5tYXJrZXIgPz8gIiIsCiAgICAgICAgICBsYXlvdXQ6IGNvbmZpZy5sYXlvdXQgPyB7CiAgICAgICAgICAgIGFsaWduOiBjcmVhdGVDb3JlQWxpZ24oY29uZmlnLmxheW91dC5hbGlnbiwgbW9kdWxlKSwKICAgICAgICAgICAgZml0OiBjcmVhdGVDb3JlRml0KGNvbmZpZy5sYXlvdXQuZml0LCBtb2R1bGUpCiAgICAgICAgICB9IDogbW9kdWxlLmNyZWF0ZURlZmF1bHRMYXlvdXQoKQogICAgICAgIH0pOwogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJyZWFkeSIgfSk7CiAgICAgICAgaWYgKGNvbmZpZy5kYXRhKSB7CiAgICAgICAgICB0aGlzLl9sb2FkRnJvbURhdGEoY29uZmlnLmRhdGEpOwogICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnNyYykgewogICAgICAgICAgdGhpcy5fbG9hZEZyb21TcmMoY29uZmlnLnNyYyk7CiAgICAgICAgfQogICAgICAgIGlmIChjb25maWcuYmFja2dyb3VuZENvbG9yKSB7CiAgICAgICAgICB0aGlzLnNldEJhY2tncm91bmRDb2xvcihjb25maWcuYmFja2dyb3VuZENvbG9yKTsKICAgICAgICB9CiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgICB0eXBlOiAibG9hZEVycm9yIiwKICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHdhc20gbW9kdWxlOiAke2Vycm9yfWApCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogICAgX2Rpc3BhdGNoRXJyb3IobWVzc2FnZSkgewogICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpOwogICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAibG9hZEVycm9yIiwgZXJyb3I6IG5ldyBFcnJvcihtZXNzYWdlKSB9KTsKICAgIH0KICAgIGFzeW5jIF9mZXRjaERhdGEoc3JjKSB7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goc3JjKTsKICAgICAgaWYgKCFyZXNwb25zZS5vaykgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGFuaW1hdGlvbiBkYXRhIGZyb20gVVJMOiAke3NyY30uICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApOwogICAgICB9CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpOwogICAgICBpZiAoaXNEb3RMb3R0aWUoZGF0YSkpIHsKICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgfQogICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGEpOwogICAgfQogICAgX2xvYWRGcm9tRGF0YShkYXRhKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5fY2FudmFzLndpZHRoOwogICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLl9jYW52YXMuaGVpZ2h0OwogICAgICBsZXQgbG9hZGVkID0gZmFsc2U7CiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIpIHsKICAgICAgICBpZiAoIWlzTG90dGllKGRhdGEpKSB7CiAgICAgICAgICB0aGlzLl9kaXNwYXRjaEVycm9yKAogICAgICAgICAgICAiSW52YWxpZCBMb3R0aWUgSlNPTiBzdHJpbmc6IFRoZSBwcm92aWRlZCBzdHJpbmcgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgTG90dGllIEpTT04gZm9ybWF0LiIKICAgICAgICAgICk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGxvYWRlZCA9IHRoaXMuX2RvdExvdHRpZUNvcmUubG9hZEFuaW1hdGlvbkRhdGEoZGF0YSwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7CiAgICAgICAgaWYgKCFpc0RvdExvdHRpZShkYXRhKSkgewogICAgICAgICAgdGhpcy5fZGlzcGF0Y2hFcnJvcigKICAgICAgICAgICAgIkludmFsaWQgZG90TG90dGllIEFycmF5QnVmZmVyOiBUaGUgcHJvdmlkZWQgQXJyYXlCdWZmZXIgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgZG90TG90dGllIGZvcm1hdC4iCiAgICAgICAgICApOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsb2FkZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLmxvYWREb3RMb3R0aWVEYXRhKGRhdGEsIHdpZHRoLCBoZWlnaHQpOwogICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAib2JqZWN0IikgewogICAgICAgIGlmICghaXNMb3R0aWUoZGF0YSkpIHsKICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoRXJyb3IoCiAgICAgICAgICAgICJJbnZhbGlkIExvdHRpZSBKU09OIG9iamVjdDogVGhlIHByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBMb3R0aWUgSlNPTiBmb3JtYXQuIgogICAgICAgICAgKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbG9hZGVkID0gdGhpcy5fZG90TG90dGllQ29yZS5sb2FkQW5pbWF0aW9uRGF0YShKU09OLnN0cmluZ2lmeShkYXRhKSwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZGlzcGF0Y2hFcnJvcigKICAgICAgICAgIGBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgZm9yIGFuaW1hdGlvbiBkYXRhLiBFeHBlY3RlZDogCiAgICAgICAgICAtIHN0cmluZyAoTG90dGllIEpTT04pLAogICAgICAgICAgLSBBcnJheUJ1ZmZlciAoZG90TG90dGllKSwKICAgICAgICAgIC0gb2JqZWN0IChMb3R0aWUgSlNPTikuIAogICAgICAgICAgUmVjZWl2ZWQ6ICR7dHlwZW9mIGRhdGF9YAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChsb2FkZWQpIHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAibG9hZCIgfSk7CiAgICAgICAgaWYgKElTX0JST1dTRVIpIHsKICAgICAgICAgIHRoaXMucmVzaXplKCk7CiAgICAgICAgfQogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgICB0eXBlOiAiZnJhbWUiLAogICAgICAgICAgY3VycmVudEZyYW1lOiB0aGlzLl9kb3RMb3R0aWVDb3JlLmN1cnJlbnRGcmFtZSgpCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCkuYXV0b3BsYXkpIHsKICAgICAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUucGxheSgpOwogICAgICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUuaXNQbGF5aW5nKCkpIHsKICAgICAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogInBsYXkiIH0pOwogICAgICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkID0gdGhpcy5fZnJhbWVNYW5hZ2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9kcmF3LmJpbmQodGhpcykpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigic29tZXRoaW5nIHdlbnQgd3JvbmcsIHRoZSBhbmltYXRpb24gd2FzIHN1cHBvc2UgdG8gYXV0b3BsYXkiKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZGlzcGF0Y2hFcnJvcigiRmFpbGVkIHRvIGxvYWQgYW5pbWF0aW9uIGRhdGEiKTsKICAgICAgfQogICAgfQogICAgX2xvYWRGcm9tU3JjKHNyYykgewogICAgICB0aGlzLl9mZXRjaERhdGEoc3JjKS50aGVuKChkYXRhKSA9PiB0aGlzLl9sb2FkRnJvbURhdGEoZGF0YSkpLmNhdGNoKChlcnJvcikgPT4gdGhpcy5fZGlzcGF0Y2hFcnJvcihgRmFpbGVkIHRvIGxvYWQgYW5pbWF0aW9uIGRhdGEgZnJvbSBVUkw6ICR7c3JjfS4gJHtlcnJvcn1gKSk7CiAgICB9CiAgICBnZXQgYWN0aXZlQW5pbWF0aW9uSWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5hY3RpdmVBbmltYXRpb25JZCgpOwogICAgfQogICAgZ2V0IGFjdGl2ZVRoZW1lSWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5hY3RpdmVUaGVtZUlkKCk7CiAgICB9CiAgICBnZXQgbGF5b3V0KCkgewogICAgICBjb25zdCBsYXlvdXQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5sYXlvdXQ7CiAgICAgIGlmIChsYXlvdXQpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgYWxpZ246IFtsYXlvdXQuYWxpZ24uZ2V0KDApLCBsYXlvdXQuYWxpZ24uZ2V0KDEpXSwKICAgICAgICAgIGZpdDogKCgpID0+IHsKICAgICAgICAgICAgc3dpdGNoIChsYXlvdXQuZml0KSB7CiAgICAgICAgICAgICAgY2FzZSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5GaXQuQ29udGFpbjoKICAgICAgICAgICAgICAgIHJldHVybiAiY29udGFpbiI7CiAgICAgICAgICAgICAgY2FzZSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5GaXQuQ292ZXI6CiAgICAgICAgICAgICAgICByZXR1cm4gImNvdmVyIjsKICAgICAgICAgICAgICBjYXNlIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/LkZpdC5GaWxsOgogICAgICAgICAgICAgICAgcmV0dXJuICJmaWxsIjsKICAgICAgICAgICAgICBjYXNlIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/LkZpdC5GaXRIZWlnaHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gImZpdC1oZWlnaHQiOwogICAgICAgICAgICAgIGNhc2UgX0RvdExvdHRpZS5fd2FzbU1vZHVsZT8uRml0LkZpdFdpZHRoOgogICAgICAgICAgICAgICAgcmV0dXJuICJmaXQtd2lkdGgiOwogICAgICAgICAgICAgIGNhc2UgX0RvdExvdHRpZS5fd2FzbU1vZHVsZT8uRml0Lk5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gIm5vbmUiOwogICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gImNvbnRhaW4iOwogICAgICAgICAgICB9CiAgICAgICAgICB9KSgpCiAgICAgICAgfTsKICAgICAgfQogICAgICByZXR1cm4gdm9pZCAwOwogICAgfQogICAgZ2V0IG1hcmtlcigpIHsKICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5fZG90TG90dGllQ29yZT8uY29uZmlnKCkubWFya2VyOwogICAgICByZXR1cm4gbWFya2VyOwogICAgfQogICAgZ2V0IG1hbmlmZXN0KCkgewogICAgICB0cnkgewogICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gdGhpcy5fZG90TG90dGllQ29yZT8ubWFuaWZlc3RTdHJpbmcoKTsKICAgICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCAhbWFuaWZlc3QpIHJldHVybiBudWxsOwogICAgICAgIGNvbnN0IG1hbmlmZXN0SnNvbiA9IEpTT04ucGFyc2UobWFuaWZlc3QpOwogICAgICAgIGlmIChPYmplY3Qua2V5cyhtYW5pZmVzdEpzb24pLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7CiAgICAgICAgcmV0dXJuIG1hbmlmZXN0SnNvbjsKICAgICAgfSBjYXRjaCAoX2VycikgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CiAgICBnZXQgcmVuZGVyQ29uZmlnKCkgewogICAgICByZXR1cm4gdGhpcy5fcmVuZGVyQ29uZmlnOwogICAgfQogICAgZ2V0IHNlZ21lbnQoKSB7CiAgICAgIGNvbnN0IHNlZ21lbnQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5zZWdtZW50OwogICAgICBpZiAoc2VnbWVudCAmJiBzZWdtZW50LnNpemUoKSA9PT0gMikgewogICAgICAgIHJldHVybiBbc2VnbWVudC5nZXQoMCksIHNlZ21lbnQuZ2V0KDEpXTsKICAgICAgfQogICAgICByZXR1cm4gdm9pZCAwOwogICAgfQogICAgZ2V0IGxvb3AoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5sb29wQW5pbWF0aW9uID8/IGZhbHNlOwogICAgfQogICAgZ2V0IG1vZGUoKSB7CiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5tb2RlOwogICAgICBpZiAobW9kZSA9PT0gX0RvdExvdHRpZS5fd2FzbU1vZHVsZT8uTW9kZS5SZXZlcnNlKSB7CiAgICAgICAgcmV0dXJuICJyZXZlcnNlIjsKICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5Nb2RlLkJvdW5jZSkgewogICAgICAgIHJldHVybiAiYm91bmNlIjsKICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5Nb2RlLlJldmVyc2VCb3VuY2UpIHsKICAgICAgICByZXR1cm4gInJldmVyc2UtYm91bmNlIjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gImZvcndhcmQiOwogICAgICB9CiAgICB9CiAgICBnZXQgaXNGcm96ZW4oKSB7CiAgICAgIHJldHVybiB0aGlzLl9pc0Zyb3plbjsKICAgIH0KICAgIGdldCBiYWNrZ3JvdW5kQ29sb3IoKSB7CiAgICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPz8gIiI7CiAgICB9CiAgICBnZXQgYXV0b3BsYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5hdXRvcGxheSA/PyBmYWxzZTsKICAgIH0KICAgIGdldCB1c2VGcmFtZUludGVycG9sYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS51c2VGcmFtZUludGVycG9sYXRpb24gPz8gZmFsc2U7CiAgICB9CiAgICBnZXQgc3BlZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5zcGVlZCA/PyAwOwogICAgfQogICAgZ2V0IGlzUmVhZHkoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlICE9PSBudWxsOwogICAgfQogICAgZ2V0IGlzTG9hZGVkKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uaXNMb2FkZWQoKSA/PyBmYWxzZTsKICAgIH0KICAgIGdldCBpc1BsYXlpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5pc1BsYXlpbmcoKSA/PyBmYWxzZTsKICAgIH0KICAgIGdldCBpc1BhdXNlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmlzUGF1c2VkKCkgPz8gZmFsc2U7CiAgICB9CiAgICBnZXQgaXNTdG9wcGVkKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uaXNTdG9wcGVkKCkgPz8gZmFsc2U7CiAgICB9CiAgICBnZXQgY3VycmVudEZyYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uY3VycmVudEZyYW1lKCkgPz8gMDsKICAgIH0KICAgIGdldCBsb29wQ291bnQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5sb29wQ291bnQoKSA/PyAwOwogICAgfQogICAgZ2V0IHRvdGFsRnJhbWVzKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8udG90YWxGcmFtZXMoKSA/PyAwOwogICAgfQogICAgZ2V0IGR1cmF0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uZHVyYXRpb24oKSA/PyAwOwogICAgfQogICAgZ2V0IHNlZ21lbnREdXJhdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LnNlZ21lbnREdXJhdGlvbigpID8/IDA7CiAgICB9CiAgICBnZXQgY2FudmFzKCkgewogICAgICByZXR1cm4gdGhpcy5fY2FudmFzOwogICAgfQogICAgbG9hZChjb25maWcpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwgfHwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgYXV0b3BsYXk6IGNvbmZpZy5hdXRvcGxheSA/PyBmYWxzZSwKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IDAsCiAgICAgICAgbG9vcEFuaW1hdGlvbjogY29uZmlnLmxvb3AgPz8gZmFsc2UsCiAgICAgICAgbW9kZTogY3JlYXRlQ29yZU1vZGUoY29uZmlnLm1vZGUgPz8gImZvcndhcmQiLCBfRG90TG90dGllLl93YXNtTW9kdWxlKSwKICAgICAgICBzZWdtZW50OiBjcmVhdGVDb3JlU2VnbWVudChjb25maWcuc2VnbWVudCA/PyBbXSwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSksCiAgICAgICAgc3BlZWQ6IGNvbmZpZy5zcGVlZCA/PyAxLAogICAgICAgIHVzZUZyYW1lSW50ZXJwb2xhdGlvbjogY29uZmlnLnVzZUZyYW1lSW50ZXJwb2xhdGlvbiA/PyB0cnVlLAogICAgICAgIG1hcmtlcjogY29uZmlnLm1hcmtlciA/PyAiIiwKICAgICAgICBsYXlvdXQ6IGNvbmZpZy5sYXlvdXQgPyB7CiAgICAgICAgICBhbGlnbjogY3JlYXRlQ29yZUFsaWduKGNvbmZpZy5sYXlvdXQuYWxpZ24sIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpLAogICAgICAgICAgZml0OiBjcmVhdGVDb3JlRml0KGNvbmZpZy5sYXlvdXQuZml0LCBfRG90TG90dGllLl93YXNtTW9kdWxlKQogICAgICAgIH0gOiBfRG90TG90dGllLl93YXNtTW9kdWxlLmNyZWF0ZURlZmF1bHRMYXlvdXQoKQogICAgICB9KTsKICAgICAgaWYgKGNvbmZpZy5kYXRhKSB7CiAgICAgICAgdGhpcy5fbG9hZEZyb21EYXRhKGNvbmZpZy5kYXRhKTsKICAgICAgfSBlbHNlIGlmIChjb25maWcuc3JjKSB7CiAgICAgICAgdGhpcy5fbG9hZEZyb21TcmMoY29uZmlnLnNyYyk7CiAgICAgIH0KICAgICAgdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3IoY29uZmlnLmJhY2tncm91bmRDb2xvciA/PyAiIik7CiAgICB9CiAgICBfcmVuZGVyKCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCB0aGlzLl9jb250ZXh0ID09PSBudWxsKSByZXR1cm4gZmFsc2U7CiAgICAgIGNvbnN0IHJlbmRlcmVkID0gdGhpcy5fZG90TG90dGllQ29yZS5yZW5kZXIoKTsKICAgICAgaWYgKHJlbmRlcmVkKSB7CiAgICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5fZG90TG90dGllQ29yZS5idWZmZXIoKTsKICAgICAgICBjb25zdCBjbGFtcGVkQnVmZmVyID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGJ1ZmZlciwgMCwgdGhpcy5fY2FudmFzLndpZHRoICogdGhpcy5fY2FudmFzLmhlaWdodCAqIDQpOwogICAgICAgIGxldCBpbWFnZURhdGEgPSBudWxsOwogICAgICAgIGlmICh0eXBlb2YgSW1hZ2VEYXRhID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgaW1hZ2VEYXRhID0gdGhpcy5fY29udGV4dC5jcmVhdGVJbWFnZURhdGEodGhpcy5fY2FudmFzLndpZHRoLCB0aGlzLl9jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgIGltYWdlRGF0YS5kYXRhLnNldChjbGFtcGVkQnVmZmVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShjbGFtcGVkQnVmZmVyLCB0aGlzLl9jYW52YXMud2lkdGgsIHRoaXMuX2NhbnZhcy5oZWlnaHQpOwogICAgICAgIH0KICAgICAgICB0aGlzLl9jb250ZXh0LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApOwogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgICB0eXBlOiAicmVuZGVyIiwKICAgICAgICAgIGN1cnJlbnRGcmFtZTogdGhpcy5fZG90TG90dGllQ29yZS5jdXJyZW50RnJhbWUoKQogICAgICAgIH0pOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIF9kcmF3KCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCB0aGlzLl9jb250ZXh0ID09PSBudWxsIHx8ICF0aGlzLl9kb3RMb3R0aWVDb3JlLmlzUGxheWluZygpKSByZXR1cm47CiAgICAgIGNvbnN0IG5leHRGcmFtZSA9IHRoaXMuX2RvdExvdHRpZUNvcmUucmVxdWVzdEZyYW1lKCk7CiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldEZyYW1lKG5leHRGcmFtZSk7CiAgICAgIGlmICh1cGRhdGVkKSB7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsKICAgICAgICAgIHR5cGU6ICJmcmFtZSIsCiAgICAgICAgICBjdXJyZW50RnJhbWU6IHRoaXMuX2RvdExvdHRpZUNvcmUuY3VycmVudEZyYW1lKCkKICAgICAgICB9KTsKICAgICAgICBjb25zdCByZW5kZXJlZCA9IHRoaXMuX3JlbmRlcigpOwogICAgICAgIGlmIChyZW5kZXJlZCkgewogICAgICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUuaXNDb21wbGV0ZSgpKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLmxvb3BBbmltYXRpb24pIHsKICAgICAgICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goewogICAgICAgICAgICAgICAgdHlwZTogImxvb3AiLAogICAgICAgICAgICAgICAgbG9vcENvdW50OiB0aGlzLl9kb3RMb3R0aWVDb3JlLmxvb3BDb3VudCgpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogImNvbXBsZXRlIiB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkID0gdGhpcy5fZnJhbWVNYW5hZ2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9kcmF3LmJpbmQodGhpcykpOwogICAgfQogICAgcGxheSgpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybjsKICAgICAgY29uc3Qgb2sgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnBsYXkoKTsKICAgICAgaWYgKG9rIHx8IHRoaXMuX2RvdExvdHRpZUNvcmUuaXNQbGF5aW5nKCkpIHsKICAgICAgICB0aGlzLl9pc0Zyb3plbiA9IGZhbHNlOwogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJwbGF5IiB9KTsKICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkID0gdGhpcy5fZnJhbWVNYW5hZ2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9kcmF3LmJpbmQodGhpcykpOwogICAgICB9CiAgICB9CiAgICBwYXVzZSgpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybjsKICAgICAgY29uc3Qgb2sgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnBhdXNlKCk7CiAgICAgIGlmIChvayB8fCB0aGlzLl9kb3RMb3R0aWVDb3JlLmlzUGF1c2VkKCkpIHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAicGF1c2UiIH0pOwogICAgICB9CiAgICB9CiAgICBzdG9wKCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICBjb25zdCBvayA9IHRoaXMuX2RvdExvdHRpZUNvcmUuc3RvcCgpOwogICAgICBpZiAob2spIHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAiZnJhbWUiLCBjdXJyZW50RnJhbWU6IHRoaXMuX2RvdExvdHRpZUNvcmUuY3VycmVudEZyYW1lKCkgfSk7CiAgICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogInN0b3AiIH0pOwogICAgICB9CiAgICB9CiAgICBzZXRGcmFtZShmcmFtZSkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICBpZiAoZnJhbWUgPCAwIHx8IGZyYW1lID4gdGhpcy5fZG90TG90dGllQ29yZS50b3RhbEZyYW1lcygpKSByZXR1cm47CiAgICAgIGNvbnN0IG9rID0gdGhpcy5fZG90TG90dGllQ29yZS5zZWVrKGZyYW1lKTsKICAgICAgaWYgKG9rKSB7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogImZyYW1lIiwgY3VycmVudEZyYW1lOiB0aGlzLl9kb3RMb3R0aWVDb3JlLmN1cnJlbnRGcmFtZSgpIH0pOwogICAgICAgIHRoaXMuX3JlbmRlcigpOwogICAgICB9CiAgICB9CiAgICBzZXRTcGVlZChzcGVlZCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICBzcGVlZAogICAgICB9KTsKICAgIH0KICAgIHNldEJhY2tncm91bmRDb2xvcihjb2xvcikgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICBpZiAoSVNfQlJPV1NFUiAmJiB0aGlzLl9jYW52YXMgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCkgewogICAgICAgIHRoaXMuX2NhbnZhcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgICAuLi50aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLAogICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZXhTdHJpbmdUb1JHQkFJbnQoY29sb3IpCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdGhpcy5fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICB9CiAgICBzZXRMb29wKGxvb3ApIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybjsKICAgICAgdGhpcy5fZG90TG90dGllQ29yZS5zZXRDb25maWcoewogICAgICAgIC4uLnRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCksCiAgICAgICAgbG9vcEFuaW1hdGlvbjogbG9vcAogICAgICB9KTsKICAgIH0KICAgIHNldFVzZUZyYW1lSW50ZXJwb2xhdGlvbih1c2VGcmFtZUludGVycG9sYXRpb24pIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybjsKICAgICAgdGhpcy5fZG90TG90dGllQ29yZS5zZXRDb25maWcoewogICAgICAgIC4uLnRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCksCiAgICAgICAgdXNlRnJhbWVJbnRlcnBvbGF0aW9uCiAgICAgIH0pOwogICAgfQogICAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikgewogICAgICB0aGlzLl9ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcik7CiAgICB9CiAgICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTsKICAgIH0KICAgIGRlc3Ryb3koKSB7CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmU/LmRlbGV0ZSgpOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlID0gbnVsbDsKICAgICAgdGhpcy5fY29udGV4dCA9IG51bGw7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgdHlwZTogImRlc3Ryb3kiCiAgICAgIH0pOwogICAgICB0aGlzLl9ldmVudE1hbmFnZXIucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAgdGhpcy5fY2xlYW51cFN0YXRlTWFjaGluZUxpc3RlbmVycygpOwogICAgfQogICAgZnJlZXplKCkgewogICAgICBpZiAodGhpcy5fYW5pbWF0aW9uRnJhbWVJZCA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9mcmFtZU1hbmFnZXIuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWVJZCk7CiAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgPSBudWxsOwogICAgICB0aGlzLl9pc0Zyb3plbiA9IHRydWU7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJmcmVlemUiIH0pOwogICAgfQogICAgdW5mcmVlemUoKSB7CiAgICAgIGlmICh0aGlzLl9hbmltYXRpb25GcmFtZUlkICE9PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgPSB0aGlzLl9mcmFtZU1hbmFnZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2RyYXcuYmluZCh0aGlzKSk7CiAgICAgIHRoaXMuX2lzRnJvemVuID0gZmFsc2U7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJ1bmZyZWV6ZSIgfSk7CiAgICB9CiAgICByZXNpemUoKSB7CiAgICAgIGlmIChJU19CUk9XU0VSICYmIHRoaXMuX2NhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KSB7CiAgICAgICAgY29uc3QgZHByID0gdGhpcy5fcmVuZGVyQ29uZmlnLmRldmljZVBpeGVsUmF0aW8gfHwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTsKICAgICAgICBjb25zdCB7IGhlaWdodDogY2xpZW50SGVpZ2h0LCB3aWR0aDogY2xpZW50V2lkdGggfSA9IHRoaXMuX2NhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB0aGlzLl9jYW52YXMud2lkdGggPSBjbGllbnRXaWR0aCAqIGRwcjsKICAgICAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0gY2xpZW50SGVpZ2h0ICogZHByOwogICAgICB9CiAgICAgIGNvbnN0IG9rID0gdGhpcy5fZG90TG90dGllQ29yZT8ucmVzaXplKHRoaXMuX2NhbnZhcy53aWR0aCwgdGhpcy5fY2FudmFzLmhlaWdodCk7CiAgICAgIGlmIChvaykgewogICAgICAgIHRoaXMuX3JlbmRlcigpOwogICAgICB9CiAgICB9CiAgICBzZXRTZWdtZW50KHN0YXJ0RnJhbWUsIGVuZEZyYW1lKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8IF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUgPT09IG51bGwpIHJldHVybjsKICAgICAgdGhpcy5fZG90TG90dGllQ29yZS5zZXRDb25maWcoewogICAgICAgIC4uLnRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCksCiAgICAgICAgc2VnbWVudDogY3JlYXRlQ29yZVNlZ21lbnQoW3N0YXJ0RnJhbWUsIGVuZEZyYW1lXSwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSkKICAgICAgfSk7CiAgICB9CiAgICBzZXRNb2RlKG1vZGUpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwgfHwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICBtb2RlOiBjcmVhdGVDb3JlTW9kZShtb2RlLCBfRG90TG90dGllLl93YXNtTW9kdWxlKQogICAgICB9KTsKICAgIH0KICAgIHNldFJlbmRlckNvbmZpZyhjb25maWcpIHsKICAgICAgdGhpcy5fcmVuZGVyQ29uZmlnID0gY29uZmlnOwogICAgfQogICAgbG9hZEFuaW1hdGlvbihhbmltYXRpb25JZCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCB0aGlzLl9kb3RMb3R0aWVDb3JlLmFjdGl2ZUFuaW1hdGlvbklkKCkgPT09IGFuaW1hdGlvbklkKSByZXR1cm47CiAgICAgIGNvbnN0IGxvYWRlZCA9IHRoaXMuX2RvdExvdHRpZUNvcmUubG9hZEFuaW1hdGlvbihhbmltYXRpb25JZCwgdGhpcy5fY2FudmFzLndpZHRoLCB0aGlzLl9jYW52YXMuaGVpZ2h0KTsKICAgICAgaWYgKGxvYWRlZCkgewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJsb2FkIiB9KTsKICAgICAgICB0aGlzLnJlc2l6ZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgICB0eXBlOiAibG9hZEVycm9yIiwKICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoYEZhaWxlZCB0byBhbmltYXRpb24gOiR7YW5pbWF0aW9uSWR9YCkKICAgICAgICB9KTsKICAgICAgfQogICAgfQogICAgc2V0TWFya2VyKG1hcmtlcikgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICBtYXJrZXIKICAgICAgfSk7CiAgICB9CiAgICBtYXJrZXJzKCkgewogICAgICBjb25zdCBtYXJrZXJzID0gdGhpcy5fZG90TG90dGllQ29yZT8ubWFya2VycygpOwogICAgICBpZiAobWFya2VycykgewogICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7IGkgKz0gMSkgewogICAgICAgICAgY29uc3QgbWFya2VyID0gbWFya2Vycy5nZXQoaSk7CiAgICAgICAgICByZXN1bHQucHVzaCh7CiAgICAgICAgICAgIG5hbWU6IG1hcmtlci5uYW1lLAogICAgICAgICAgICB0aW1lOiBtYXJrZXIudGltZSwKICAgICAgICAgICAgZHVyYXRpb246IG1hcmtlci5kdXJhdGlvbgogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgcmV0dXJuIFtdOwogICAgfQogICAgbG9hZFRoZW1lKHRoZW1lSWQpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgY29uc3QgbG9hZGVkID0gdGhpcy5fZG90TG90dGllQ29yZS5sb2FkVGhlbWUodGhlbWVJZCk7CiAgICAgIHRoaXMuX3JlbmRlcigpOwogICAgICByZXR1cm4gbG9hZGVkOwogICAgfQogICAgbG9hZFRoZW1lRGF0YSh0aGVtZURhdGEpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgY29uc3QgbG9hZGVkID0gdGhpcy5fZG90TG90dGllQ29yZS5sb2FkVGhlbWVEYXRhKHRoZW1lRGF0YSk7CiAgICAgIHRoaXMuX3JlbmRlcigpOwogICAgICByZXR1cm4gbG9hZGVkOwogICAgfQogICAgc2V0TGF5b3V0KGxheW91dCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCBfRG90TG90dGllLl93YXNtTW9kdWxlID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICAuLi50aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLAogICAgICAgIGxheW91dDogewogICAgICAgICAgYWxpZ246IGNyZWF0ZUNvcmVBbGlnbihsYXlvdXQuYWxpZ24sIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpLAogICAgICAgICAgZml0OiBjcmVhdGVDb3JlRml0KGxheW91dC5maXQsIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpCiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIHNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICB9CiAgICBzdGF0aWMgc2V0V2FzbVVybCh1cmwpIHsKICAgICAgRG90TG90dGllV2FzbUxvYWRlci5zZXRXYXNtVXJsKHVybCk7CiAgICB9CiAgICBsb2FkU3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZUlkKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5sb2FkU3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZUlkKSA/PyBmYWxzZTsKICAgIH0KICAgIHN0YXJ0U3RhdGVNYWNoaW5lKCkgewogICAgICBjb25zdCBzdGFydGVkID0gdGhpcy5fZG90TG90dGllQ29yZT8uc3RhcnRTdGF0ZU1hY2hpbmUoKSA/PyBmYWxzZTsKICAgICAgaWYgKHN0YXJ0ZWQpIHsKICAgICAgICB0aGlzLl9zZXR1cFN0YXRlTWFjaGluZUxpc3RlbmVycygpOwogICAgICB9CiAgICAgIHJldHVybiBzdGFydGVkOwogICAgfQogICAgc3RvcFN0YXRlTWFjaGluZSgpIHsKICAgICAgY29uc3Qgc3RvcHBlZCA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LnN0b3BTdGF0ZU1hY2hpbmUoKSA/PyBmYWxzZTsKICAgICAgaWYgKHN0b3BwZWQpIHsKICAgICAgICB0aGlzLl9jbGVhbnVwU3RhdGVNYWNoaW5lTGlzdGVuZXJzKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0b3BwZWQ7CiAgICB9CiAgICBfZ2V0UG9pbnRlclBvc2l0aW9uKGV2ZW50KSB7CiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9jYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgIGNvbnN0IHNjYWxlWCA9IHRoaXMuX2NhbnZhcy53aWR0aCAvIHJlY3Qud2lkdGg7CiAgICAgIGNvbnN0IHNjYWxlWSA9IHRoaXMuX2NhbnZhcy5oZWlnaHQgLyByZWN0LmhlaWdodDsKICAgICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IHRoaXMuX3JlbmRlckNvbmZpZy5kZXZpY2VQaXhlbFJhdGlvIHx8IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7CiAgICAgIGNvbnN0IHggPSAoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCkgKiBzY2FsZVggLyBkZXZpY2VQaXhlbFJhdGlvOwogICAgICBjb25zdCB5ID0gKGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCkgKiBzY2FsZVkgLyBkZXZpY2VQaXhlbFJhdGlvOwogICAgICByZXR1cm4gewogICAgICAgIHgsCiAgICAgICAgeQogICAgICB9OwogICAgfQogICAgX29uUG9pbnRlclVwKGV2ZW50KSB7CiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uKGV2ZW50KTsKICAgICAgdGhpcy5wb3N0U3RhdGVNYWNoaW5lRXZlbnQoYE9uUG9pbnRlclVwOiAke3h9ICR7eX1gKTsKICAgIH0KICAgIF9vblBvaW50ZXJEb3duKGV2ZW50KSB7CiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uKGV2ZW50KTsKICAgICAgdGhpcy5wb3N0U3RhdGVNYWNoaW5lRXZlbnQoYE9uUG9pbnRlckRvd246ICR7eH0gJHt5fWApOwogICAgfQogICAgX29uUG9pbnRlck1vdmUoZXZlbnQpIHsKICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpOwogICAgICB0aGlzLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChgT25Qb2ludGVyTW92ZTogJHt4fSAke3l9YCk7CiAgICB9CiAgICBfb25Qb2ludGVyRW50ZXIoZXZlbnQpIHsKICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpOwogICAgICB0aGlzLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChgT25Qb2ludGVyRW50ZXI6ICR7eH0gJHt5fWApOwogICAgfQogICAgX29uUG9pbnRlckxlYXZlKGV2ZW50KSB7CiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uKGV2ZW50KTsKICAgICAgdGhpcy5wb3N0U3RhdGVNYWNoaW5lRXZlbnQoYE9uUG9pbnRlckV4aXQ6ICR7eH0gJHt5fWApOwogICAgfQogICAgX29uQ29tcGxldGUoKSB7CiAgICAgIHRoaXMucG9zdFN0YXRlTWFjaGluZUV2ZW50KCJPbkNvbXBsZXRlIik7CiAgICB9CiAgICAvKioKICAgICAqIEBleHBlcmltZW50YWwKICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCB0byBiZSBwb3N0ZWQgdG8gdGhlIHN0YXRlIG1hY2hpbmUKICAgICAqIEByZXR1cm5zIGJvb2xlYW4gLSB0cnVlIGlmIHRoZSBldmVudCB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseSwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHBvc3RTdGF0ZU1hY2hpbmVFdmVudChldmVudCkgewogICAgICBjb25zdCBydCA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LnBvc3RFdmVudFBheWxvYWQoZXZlbnQpID8/IDE7CiAgICAgIGlmIChydCA9PT0gMikgewogICAgICAgIHRoaXMucGxheSgpOwogICAgICB9IGVsc2UgaWYgKHJ0ID09PSAzKSB7CiAgICAgICAgdGhpcy5wYXVzZSgpOwogICAgICB9IGVsc2UgaWYgKHJ0ID09PSA0KSB7CiAgICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ0OwogICAgfQogICAgZ2V0U3RhdGVNYWNoaW5lTGlzdGVuZXJzKCkgewogICAgICBpZiAoIXRoaXMuX2RvdExvdHRpZUNvcmUpIHJldHVybiBbXTsKICAgICAgY29uc3QgbGlzdGVuZXJzVmVjdG9yID0gdGhpcy5fZG90TG90dGllQ29yZS5zdGF0ZU1hY2hpbmVGcmFtZXdvcmtTZXR1cCgpOwogICAgICBjb25zdCBsaXN0ZW5lcnMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0ZW5lcnNWZWN0b3Iuc2l6ZSgpOyBpICs9IDEpIHsKICAgICAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcnNWZWN0b3IuZ2V0KGkpKTsKICAgICAgfQogICAgICByZXR1cm4gbGlzdGVuZXJzOwogICAgfQogICAgX3NldHVwU3RhdGVNYWNoaW5lTGlzdGVuZXJzKCkgewogICAgICBpZiAoSVNfQlJPV1NFUiAmJiB0aGlzLl9jYW52YXMgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCAmJiB0aGlzLl9kb3RMb3R0aWVDb3JlICE9PSBudWxsICYmIHRoaXMuaXNMb2FkZWQpIHsKICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLmdldFN0YXRlTWFjaGluZUxpc3RlbmVycygpOwogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJVcCIpKSB7CiAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIiwgdGhpcy5fb25Qb2ludGVyVXAuYmluZCh0aGlzKSk7CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJEb3duIikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIHRoaXMuX29uUG9pbnRlckRvd24uYmluZCh0aGlzKSk7CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJNb3ZlIikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsIHRoaXMuX29uUG9pbnRlck1vdmUuYmluZCh0aGlzKSk7CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJFbnRlciIpKSB7CiAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmVudGVyIiwgdGhpcy5fb25Qb2ludGVyRW50ZXIuYmluZCh0aGlzKSk7CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJFeGl0IikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLCB0aGlzLl9vblBvaW50ZXJMZWF2ZS5iaW5kKHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgaWYgKGxpc3RlbmVycy5pbmNsdWRlcygiQ29tcGxldGUiKSkgewogICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsIHRoaXMuX29uQ29tcGxldGUuYmluZCh0aGlzKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBfY2xlYW51cFN0YXRlTWFjaGluZUxpc3RlbmVycygpIHsKICAgICAgaWYgKElTX0JST1dTRVIgJiYgdGhpcy5fY2FudmFzIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIiwgdGhpcy5fb25Qb2ludGVyVXAuYmluZCh0aGlzKSk7CiAgICAgICAgdGhpcy5fY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIiwgdGhpcy5fb25Qb2ludGVyRG93bi5iaW5kKHRoaXMpKTsKICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLCB0aGlzLl9vblBvaW50ZXJNb3ZlLmJpbmQodGhpcykpOwogICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZW50ZXIiLCB0aGlzLl9vblBvaW50ZXJFbnRlci5iaW5kKHRoaXMpKTsKICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIiwgdGhpcy5fb25Qb2ludGVyTGVhdmUuYmluZCh0aGlzKSk7CiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsIHRoaXMuX29uQ29tcGxldGUuYmluZCh0aGlzKSk7CiAgICAgIH0KICAgIH0KICAgIGxvYWRTdGF0ZU1hY2hpbmVEYXRhKHN0YXRlTWFjaGluZURhdGEpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmxvYWRTdGF0ZU1hY2hpbmVEYXRhKHN0YXRlTWFjaGluZURhdGEpID8/IGZhbHNlOwogICAgfQogICAgYW5pbWF0aW9uU2l6ZSgpIHsKICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5hbmltYXRpb25TaXplKCkuZ2V0KDApID8/IDA7CiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LmFuaW1hdGlvblNpemUoKS5nZXQoMSkgPz8gMDsKICAgICAgcmV0dXJuIHsKICAgICAgICB3aWR0aCwKICAgICAgICBoZWlnaHQKICAgICAgfTsKICAgIH0KICAgIHNldFN0YXRlTWFjaGluZUJvb2xlYW5Db250ZXh0KG5hbWUsIHZhbHVlKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5zZXRTdGF0ZU1hY2hpbmVCb29sZWFuQ29udGV4dChuYW1lLCB2YWx1ZSkgPz8gZmFsc2U7CiAgICB9CiAgICBzZXRTdGF0ZU1hY2hpbmVOdW1lcmljQ29udGV4dChuYW1lLCB2YWx1ZSkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uc2V0U3RhdGVNYWNoaW5lTnVtZXJpY0NvbnRleHQobmFtZSwgdmFsdWUpID8/IGZhbHNlOwogICAgfQogICAgc2V0U3RhdGVNYWNoaW5lU3RyaW5nQ29udGV4dChuYW1lLCB2YWx1ZSkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uc2V0U3RhdGVNYWNoaW5lU3RyaW5nQ29udGV4dChuYW1lLCB2YWx1ZSkgPz8gZmFsc2U7CiAgICB9CiAgfTsKICBfX3B1YmxpY0ZpZWxkKF9Eb3RMb3R0aWUsICJfd2FzbU1vZHVsZSIsIG51bGwpOwogIHZhciBEb3RMb3R0aWUgPSBfRG90TG90dGllOwoKICAvLyBzcmMvd29ya2VyL2RvdGxvdHRpZS53b3JrZXIudHMKICB2YXIgaW5zdGFuY2VzTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICB2YXIgZXZlbnRIYW5kbGVyTWFwID0gewogICAgcmVhZHk6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uUmVhZHkiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBjb21wbGV0ZTogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25Db21wbGV0ZSIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGxvYWQ6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgbG9hZEV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvbkxvYWQiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBsb2FkRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGxvYWRFcnJvcjogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCBsb2FkRXJyb3JFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25Mb2FkRXJyb3IiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBsb2FkRXJyb3JFdmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgbG9vcDogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCBsb29wRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uTG9vcCIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQ6IGxvb3BFdmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgcGxheTogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCBwbGF5RXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uUGxheSIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQ6IHBsYXlFdmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgcGF1c2U6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgcGF1c2VFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25QYXVzZSIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQ6IHBhdXNlRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIHN0b3A6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3Qgc3RvcEV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvblN0b3AiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBzdG9wRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGZyYW1lOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IGZyYW1lRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uRnJhbWUiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBmcmFtZUV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICByZW5kZXI6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgcmVuZGVyRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uUmVuZGVyIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogcmVuZGVyRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGZyZWV6ZTogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCBmcmVlemVFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25GcmVlemUiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBmcmVlemVFdmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgdW5mcmVlemU6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgdW5mcmVlemVFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25VbmZyZWV6ZSIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQ6IHVuZnJlZXplRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGRlc3Ryb3k6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgZGVzdHJveUV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvbkRlc3Ryb3kiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBkZXN0cm95RXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfQogIH07CiAgdmFyIGNvbW1hbmRzID0gewogICAgZ2V0RG90TG90dGllSW5zdGFuY2VTdGF0ZShyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBjb25zdCBzdGF0ZSA9IHsKICAgICAgICBpc0xvYWRlZDogaW5zdGFuY2UuaXNMb2FkZWQsCiAgICAgICAgaXNQYXVzZWQ6IGluc3RhbmNlLmlzUGF1c2VkLAogICAgICAgIGlzUGxheWluZzogaW5zdGFuY2UuaXNQbGF5aW5nLAogICAgICAgIGlzU3RvcHBlZDogaW5zdGFuY2UuaXNTdG9wcGVkLAogICAgICAgIGlzRnJvemVuOiBpbnN0YW5jZS5pc0Zyb3plbiwKICAgICAgICBsb29wOiBpbnN0YW5jZS5sb29wLAogICAgICAgIG1vZGU6IGluc3RhbmNlLm1vZGUsCiAgICAgICAgc3BlZWQ6IGluc3RhbmNlLnNwZWVkLAogICAgICAgIGN1cnJlbnRGcmFtZTogaW5zdGFuY2UuY3VycmVudEZyYW1lLAogICAgICAgIHRvdGFsRnJhbWVzOiBpbnN0YW5jZS50b3RhbEZyYW1lcywKICAgICAgICBkdXJhdGlvbjogaW5zdGFuY2UuZHVyYXRpb24sCiAgICAgICAgdXNlRnJhbWVJbnRlcnBvbGF0aW9uOiBpbnN0YW5jZS51c2VGcmFtZUludGVycG9sYXRpb24sCiAgICAgICAgcmVuZGVyQ29uZmlnOiBpbnN0YW5jZS5yZW5kZXJDb25maWcsCiAgICAgICAgbWFya2VyOiBpbnN0YW5jZS5tYXJrZXIsCiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpbnN0YW5jZS5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgbWFya2VyczogaW5zdGFuY2UubWFya2VycygpLAogICAgICAgIGFjdGl2ZUFuaW1hdGlvbklkOiBpbnN0YW5jZS5hY3RpdmVBbmltYXRpb25JZCwKICAgICAgICBhY3RpdmVUaGVtZUlkOiBpbnN0YW5jZS5hY3RpdmVUaGVtZUlkLAogICAgICAgIGF1dG9wbGF5OiBpbnN0YW5jZS5hdXRvcGxheSwKICAgICAgICBzZWdtZW50OiBpbnN0YW5jZS5zZWdtZW50LAogICAgICAgIGxheW91dDogaW5zdGFuY2UubGF5b3V0LAogICAgICAgIHNlZ21lbnREdXJhdGlvbjogaW5zdGFuY2Uuc2VnbWVudER1cmF0aW9uLAogICAgICAgIGlzUmVhZHk6IGluc3RhbmNlLmlzUmVhZHksCiAgICAgICAgbWFuaWZlc3Q6IGluc3RhbmNlLm1hbmlmZXN0CiAgICAgIH07CiAgICAgIHJldHVybiB7CiAgICAgICAgc3RhdGUKICAgICAgfTsKICAgIH0sCiAgICBzZXRMYXlvdXQocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgbGF5b3V0ID0gcmVxdWVzdC5wYXJhbXMubGF5b3V0OwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRMYXlvdXQobGF5b3V0KTsKICAgICAgcmV0dXJuIHsKICAgICAgICBzdWNjZXNzOiB0cnVlCiAgICAgIH07CiAgICB9LAogICAgZ2V0U3RhdGVNYWNoaW5lTGlzdGVuZXJzKHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5nZXRTdGF0ZU1hY2hpbmVMaXN0ZW5lcnMoKTsKICAgIH0sCiAgICBwb3N0U3RhdGVNYWNoaW5lRXZlbnQocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgZXZlbnQgPSByZXF1ZXN0LnBhcmFtcy5ldmVudDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChldmVudCk7CiAgICB9LAogICAgc3RhcnRTdGF0ZU1hY2hpbmUocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLnN0YXJ0U3RhdGVNYWNoaW5lKCk7CiAgICB9LAogICAgc3RvcFN0YXRlTWFjaGluZShyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICByZXR1cm4gaW5zdGFuY2Uuc3RvcFN0YXRlTWFjaGluZSgpOwogICAgfSwKICAgIGxvYWRTdGF0ZU1hY2hpbmUocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3Qgc3RhdGVNYWNoaW5lSWQgPSByZXF1ZXN0LnBhcmFtcy5zdGF0ZU1hY2hpbmVJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLmxvYWRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lSWQpOwogICAgfSwKICAgIGxvYWRTdGF0ZU1hY2hpbmVEYXRhKHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHN0YXRlTWFjaGluZURhdGEgPSByZXF1ZXN0LnBhcmFtcy5zdGF0ZU1hY2hpbmVEYXRhOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICByZXR1cm4gaW5zdGFuY2UubG9hZFN0YXRlTWFjaGluZURhdGEoc3RhdGVNYWNoaW5lRGF0YSk7CiAgICB9LAogICAgY3JlYXRlOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgY29uZmlnID0gcmVxdWVzdC5wYXJhbXMuY29uZmlnOwogICAgICBjb25zdCB3aWR0aCA9IHJlcXVlc3QucGFyYW1zLndpZHRoOwogICAgICBjb25zdCBoZWlnaHQgPSByZXF1ZXN0LnBhcmFtcy5oZWlnaHQ7CiAgICAgIGlmIChpbnN0YW5jZXNNYXAuaGFzKGluc3RhbmNlSWQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gYWxyZWFkeSBleGlzdHMuYCk7CiAgICAgIH0KICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRG90TG90dGllKGNvbmZpZyk7CiAgICAgIGluc3RhbmNlLmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgIGluc3RhbmNlLmNhbnZhcy53aWR0aCA9IHdpZHRoOwogICAgICBpbnN0YW5jZXNNYXAuc2V0KGluc3RhbmNlSWQsIGluc3RhbmNlKTsKICAgICAgY29uc3QgZXZlbnRzID0gWwogICAgICAgICJjb21wbGV0ZSIsCiAgICAgICAgImZyYW1lIiwKICAgICAgICAibG9hZCIsCiAgICAgICAgImxvYWRFcnJvciIsCiAgICAgICAgImxvb3AiLAogICAgICAgICJwYXVzZSIsCiAgICAgICAgInBsYXkiLAogICAgICAgICJzdG9wIiwKICAgICAgICAiZGVzdHJveSIsCiAgICAgICAgImZyZWV6ZSIsCiAgICAgICAgInVuZnJlZXplIiwKICAgICAgICAicmVuZGVyIiwKICAgICAgICAicmVhZHkiCiAgICAgIF07CiAgICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4gewogICAgICAgIGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGV2ZW50SGFuZGxlck1hcFtldmVudF0oaW5zdGFuY2VJZCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHsKICAgICAgICBpbnN0YW5jZUlkCiAgICAgIH07CiAgICB9LAogICAgZGVzdHJveTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuOwogICAgICBpbnN0YW5jZS5kZXN0cm95KCk7CiAgICAgIGluc3RhbmNlc01hcC5kZWxldGUoaW5zdGFuY2VJZCk7CiAgICB9LAogICAgZnJlZXplOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuZnJlZXplKCk7CiAgICB9LAogICAgbG9hZDogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGNvbmZpZyA9IHJlcXVlc3QucGFyYW1zLmNvbmZpZzsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UubG9hZChjb25maWcpOwogICAgfSwKICAgIGxvYWRBbmltYXRpb246IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBhbmltYXRpb25JZCA9IHJlcXVlc3QucGFyYW1zLmFuaW1hdGlvbklkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5sb2FkQW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKICAgIH0sCiAgICBsb2FkVGhlbWU6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCB0aGVtZUlkID0gcmVxdWVzdC5wYXJhbXMudGhlbWVJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLmxvYWRUaGVtZSh0aGVtZUlkKTsKICAgIH0sCiAgICBsb2FkVGhlbWVEYXRhOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgdGhlbWVEYXRhID0gcmVxdWVzdC5wYXJhbXMudGhlbWVEYXRhOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICByZXR1cm4gaW5zdGFuY2UubG9hZFRoZW1lRGF0YSh0aGVtZURhdGEpOwogICAgfSwKICAgIHBhdXNlOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLnBhdXNlKCk7CiAgICB9LAogICAgcGxheTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5wbGF5KCk7CiAgICB9LAogICAgcmVzaXplOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3Qgd2lkdGggPSByZXF1ZXN0LnBhcmFtcy53aWR0aDsKICAgICAgY29uc3QgaGVpZ2h0ID0gcmVxdWVzdC5wYXJhbXMuaGVpZ2h0OwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgICBpbnN0YW5jZS5jYW52YXMud2lkdGggPSB3aWR0aDsKICAgICAgaW5zdGFuY2UucmVzaXplKCk7CiAgICAgIHJldHVybiB7CiAgICAgICAgc3VjY2VzczogdHJ1ZQogICAgICB9OwogICAgfSwKICAgIHNldEJhY2tncm91bmRDb2xvcjogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IHJlcXVlc3QucGFyYW1zLmJhY2tncm91bmRDb2xvcjsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAgICB9LAogICAgc2V0RnJhbWU6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBmcmFtZSA9IHJlcXVlc3QucGFyYW1zLmZyYW1lOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRGcmFtZShmcmFtZSk7CiAgICB9LAogICAgc2V0TW9kZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IG1vZGUgPSByZXF1ZXN0LnBhcmFtcy5tb2RlOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRNb2RlKG1vZGUpOwogICAgfSwKICAgIHNldFJlbmRlckNvbmZpZzogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHJlbmRlckNvbmZpZyA9IHJlcXVlc3QucGFyYW1zLnJlbmRlckNvbmZpZzsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0UmVuZGVyQ29uZmlnKHJlbmRlckNvbmZpZyk7CiAgICB9LAogICAgc2V0U2VnbWVudDogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHNlZ21lbnQgPSByZXF1ZXN0LnBhcmFtcy5zZWdtZW50OwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRTZWdtZW50KHNlZ21lbnRbMF0sIHNlZ21lbnRbMV0pOwogICAgfSwKICAgIHNldFNwZWVkOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3Qgc3BlZWQgPSByZXF1ZXN0LnBhcmFtcy5zcGVlZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0U3BlZWQoc3BlZWQpOwogICAgfSwKICAgIHNldFVzZUZyYW1lSW50ZXJwb2xhdGlvbjogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHVzZUZyYW1lSW50ZXJwb2xhdGlvbiA9IHJlcXVlc3QucGFyYW1zLnVzZUZyYW1lSW50ZXJwb2xhdGlvbjsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0VXNlRnJhbWVJbnRlcnBvbGF0aW9uKHVzZUZyYW1lSW50ZXJwb2xhdGlvbik7CiAgICB9LAogICAgc2V0V2FzbVVybDogKHJlcXVlc3QpID0+IHsKICAgICAgRG90TG90dGllLnNldFdhc21VcmwocmVxdWVzdC5wYXJhbXMudXJsKTsKICAgIH0sCiAgICBzdG9wOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc3RvcCgpOwogICAgfSwKICAgIHVuZnJlZXplOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UudW5mcmVlemUoKTsKICAgIH0sCiAgICBzZXRWaWV3cG9ydChyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCB4ID0gcmVxdWVzdC5wYXJhbXMueDsKICAgICAgY29uc3QgeSA9IHJlcXVlc3QucGFyYW1zLnk7CiAgICAgIGNvbnN0IHdpZHRoID0gcmVxdWVzdC5wYXJhbXMud2lkdGg7CiAgICAgIGNvbnN0IGhlaWdodCA9IHJlcXVlc3QucGFyYW1zLmhlaWdodDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgfSwKICAgIHNldE1hcmtlcihyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBtYXJrZXIgPSByZXF1ZXN0LnBhcmFtcy5tYXJrZXI7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnNldE1hcmtlcihtYXJrZXIpOwogICAgICByZXR1cm4gewogICAgICAgIHN1Y2Nlc3M6IHRydWUKICAgICAgfTsKICAgIH0sCiAgICBzZXRMb29wKHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGxvb3AgPSByZXF1ZXN0LnBhcmFtcy5sb29wOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRMb29wKGxvb3ApOwogICAgICByZXR1cm4gewogICAgICAgIHN1Y2Nlc3M6IHRydWUKICAgICAgfTsKICAgIH0KICB9OwogIGZ1bmN0aW9uIGV4ZWN1dGVDb21tYW5kKHJwY1JlcXVlc3QpIHsKICAgIGNvbnN0IG1ldGhvZCA9IHJwY1JlcXVlc3QubWV0aG9kOwogICAgaWYgKHR5cGVvZiBjb21tYW5kc1ttZXRob2RdID09PSAiZnVuY3Rpb24iKSB7CiAgICAgIHJldHVybiBjb21tYW5kc1ttZXRob2RdKHJwY1JlcXVlc3QpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgJHttZXRob2R9IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBjb21tYW5kcy5gKTsKICAgIH0KICB9CiAgc2VsZi5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDb21tYW5kKGV2ZW50LmRhdGEpOwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogZXZlbnQuZGF0YS5pZCwKICAgICAgICBtZXRob2Q6IGV2ZW50LmRhdGEubWV0aG9kLAogICAgICAgIHJlc3VsdAogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6IGV2ZW50LmRhdGEuaWQsCiAgICAgICAgbWV0aG9kOiBldmVudC5kYXRhLm1ldGhvZCwKICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKGVycm9yUmVzcG9uc2UpOwogICAgfQogIH07CiAgdmFyIGR1bW15ID0gIiI7CiAgdmFyIGRvdGxvdHRpZV93b3JrZXJfZGVmYXVsdCA9IGR1bW15Owp9KSgpOwo=', {\n type: 'classic'\n });\n }\n }\n ","// resolved to a Worker constructor by plugin-inline-worker\nimport DotLottieWebWorker from './dotlottie.worker?worker&inline';\nimport type { MethodParamsMap, RpcRequest } from './types';\n\nexport class WorkerManager {\n private readonly _workers = new Map<string, Worker>();\n\n private readonly _animationWorkerMap = new Map<string, string>();\n\n public getWorker(workerId: string): Worker {\n if (!this._workers.has(workerId)) {\n this._workers.set(workerId, new DotLottieWebWorker());\n }\n\n return this._workers.get(workerId) as Worker;\n }\n\n public assignAnimationToWorker(animationId: string, workerId: string): void {\n this._animationWorkerMap.set(animationId, workerId);\n }\n\n public unassignAnimationFromWorker(animationId: string): void {\n this._animationWorkerMap.delete(animationId);\n }\n\n public sendMessage(workerId: string, message: RpcRequest<keyof MethodParamsMap>, transfer?: Transferable[]): void {\n this.getWorker(workerId).postMessage(message, transfer || []);\n }\n\n public terminateWorker(workerId: string): void {\n const worker = this._workers.get(workerId);\n\n if (worker) {\n worker.terminate();\n this._workers.delete(workerId);\n }\n }\n}\n","import { IS_BROWSER } from '../constants';\nimport type { Marker } from '../core';\nimport type { EventType, EventListener, FrameEvent } from '../event-manager';\nimport { EventManager } from '../event-manager';\nimport type { Config, Layout, Manifest, Mode, RenderConfig } from '../types';\n\nimport type { MethodParamsMap, MethodResultMap, RpcRequest, RpcResponse } from './types';\nimport { WorkerManager } from './worker-manager';\n\nfunction getCanvasSize(canvas: HTMLCanvasElement | OffscreenCanvas): { height: number; width: number } {\n if (canvas instanceof OffscreenCanvas) {\n return { width: canvas.width, height: canvas.height };\n }\n\n const { height, width } = canvas.getBoundingClientRect();\n\n return { width: width * window.devicePixelRatio, height: height * window.devicePixelRatio };\n}\n\nfunction generateUniqueId(): string {\n return Date.now().toString(36) + Math.random().toString(36).substr(2, 9);\n}\n\nexport interface DotLottieInstanceState {\n activeAnimationId: string | undefined;\n activeThemeId: string | undefined;\n autoplay: boolean;\n backgroundColor: string;\n currentFrame: number;\n duration: number;\n isFrozen: boolean;\n isLoaded: boolean;\n isPaused: boolean;\n isPlaying: boolean;\n isReady: boolean;\n isStopped: boolean;\n layout: Layout | undefined;\n loop: boolean;\n manifest: Manifest | null;\n marker: string | undefined;\n markers: Marker[];\n mode: Mode;\n renderConfig: RenderConfig;\n segment: [number, number] | undefined;\n segmentDuration: number;\n speed: number;\n totalFrames: number;\n useFrameInterpolation: boolean;\n}\n\nexport class DotLottieWorker {\n private static readonly _workerManager = new WorkerManager();\n\n private readonly _eventManager = new EventManager();\n\n private readonly _id: string;\n\n private readonly _worker: Worker;\n\n private readonly _canvas: HTMLCanvasElement;\n\n private _dotLottieInstanceState: DotLottieInstanceState = {\n markers: [],\n autoplay: false,\n backgroundColor: '',\n currentFrame: 0,\n duration: 0,\n loop: false,\n mode: 'forward',\n segment: [0, 0],\n segmentDuration: 0,\n speed: 1,\n totalFrames: 0,\n isLoaded: false,\n isPlaying: false,\n isPaused: false,\n isStopped: true,\n isFrozen: false,\n useFrameInterpolation: false,\n renderConfig: {\n devicePixelRatio: window.devicePixelRatio,\n },\n activeAnimationId: '',\n activeThemeId: '',\n layout: undefined,\n marker: undefined,\n isReady: false,\n manifest: null,\n };\n\n private static _wasmUrl: string = '';\n\n private _created: boolean = false;\n\n public constructor(config: Config & { workerId?: string }) {\n this._canvas = config.canvas;\n\n this._id = `dotlottie-${generateUniqueId()}`;\n const workerId = config.workerId || 'defaultWorker';\n\n // creates or gets the worker\n this._worker = DotLottieWorker._workerManager.getWorker(workerId);\n\n DotLottieWorker._workerManager.assignAnimationToWorker(this._id, workerId);\n\n if (DotLottieWorker._wasmUrl) {\n this._sendMessage('setWasmUrl', { url: DotLottieWorker._wasmUrl });\n }\n\n this._create(config);\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._worker.addEventListener('message', this._handleWorkerEvent.bind(this));\n }\n\n private async _handleWorkerEvent(event: MessageEvent): Promise<void> {\n const rpcResponse: RpcResponse<\n | 'onComplete'\n | 'onLoad'\n | 'onDestroy'\n | 'onUnfreeze'\n | 'onFrame'\n | 'onRender'\n | 'onFreeze'\n | 'onPause'\n | 'onPlay'\n | 'onStop'\n | 'onLoadError'\n | 'onReady'\n > = event.data;\n\n if (!rpcResponse.id) {\n if (rpcResponse.method === 'onLoad' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onComplete' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onDestroy' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onUnfreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._dotLottieInstanceState.isFrozen = false;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFrame' && rpcResponse.result.instanceId === this._id) {\n this._dotLottieInstanceState.currentFrame = (rpcResponse.result.event as FrameEvent).currentFrame;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onRender' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPause' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPlay' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStop' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onLoadError' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onReady' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n }\n }\n\n private async _create(config: Config): Promise<void> {\n let offscreen: OffscreenCanvas;\n\n if (this._canvas instanceof HTMLCanvasElement) {\n offscreen = this._canvas.transferControlToOffscreen();\n } else {\n offscreen = this._canvas;\n }\n\n const { instanceId } = await this._sendMessage(\n 'create',\n {\n instanceId: this._id,\n config: {\n ...config,\n // @ts-ignore\n canvas: offscreen,\n },\n ...getCanvasSize(this._canvas),\n },\n [offscreen],\n );\n\n if (instanceId !== this._id) {\n throw new Error('Instance ID mismatch');\n }\n\n this._created = true;\n\n await this._updateDotLottieInstanceState();\n }\n\n public get isLoaded(): boolean {\n return this._dotLottieInstanceState.isLoaded;\n }\n\n public get isPlaying(): boolean {\n return this._dotLottieInstanceState.isPlaying;\n }\n\n public get isPaused(): boolean {\n return this._dotLottieInstanceState.isPaused;\n }\n\n public get isStopped(): boolean {\n return this._dotLottieInstanceState.isStopped;\n }\n\n public get currentFrame(): number {\n return this._dotLottieInstanceState.currentFrame;\n }\n\n public get isFrozen(): boolean {\n return this._dotLottieInstanceState.isFrozen;\n }\n\n public get segmentDuration(): number {\n return this._dotLottieInstanceState.segmentDuration;\n }\n\n public get totalFrames(): number {\n return this._dotLottieInstanceState.totalFrames;\n }\n\n public get segment(): [number, number] | undefined {\n return this._dotLottieInstanceState.segment;\n }\n\n public get speed(): number {\n return this._dotLottieInstanceState.speed;\n }\n\n public get duration(): number {\n return this._dotLottieInstanceState.duration;\n }\n\n public get isReady(): boolean {\n return this._dotLottieInstanceState.isReady;\n }\n\n public get mode(): Mode {\n return this._dotLottieInstanceState.mode;\n }\n\n public get canvas(): HTMLCanvasElement | null {\n return this._canvas;\n }\n\n public get autoplay(): boolean {\n return this._dotLottieInstanceState.autoplay;\n }\n\n public get backgroundColor(): string {\n return this._dotLottieInstanceState.backgroundColor;\n }\n\n public get loop(): boolean {\n return this._dotLottieInstanceState.loop;\n }\n\n public get useFrameInterpolation(): boolean {\n return this._dotLottieInstanceState.useFrameInterpolation;\n }\n\n public get renderConfig(): RenderConfig {\n return this._dotLottieInstanceState.renderConfig;\n }\n\n public get manifest(): Manifest | null {\n return this._dotLottieInstanceState.manifest;\n }\n\n public get activeAnimationId(): string | undefined {\n return this._dotLottieInstanceState.activeAnimationId;\n }\n\n public get marker(): string | undefined {\n return this._dotLottieInstanceState.marker;\n }\n\n public get activeThemeId(): string | undefined {\n return this._dotLottieInstanceState.activeThemeId;\n }\n\n public get layout(): Layout | undefined {\n return this._dotLottieInstanceState.layout;\n }\n\n public async play(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('play', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async pause(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('pause', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async stop(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('stop', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setSpeed(speed: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSpeed', { instanceId: this._id, speed });\n await this._updateDotLottieInstanceState();\n }\n\n public async setMode(mode: Mode): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMode', { instanceId: this._id, mode });\n await this._updateDotLottieInstanceState();\n }\n\n public async setFrame(frame: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setFrame', { frame, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setSegment(start: number, end: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSegment', { instanceId: this._id, segment: [start, end] });\n await this._updateDotLottieInstanceState();\n }\n\n public async setRenderConfig(renderConfig: RenderConfig): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setRenderConfig', { instanceId: this._id, renderConfig });\n await this._updateDotLottieInstanceState();\n }\n\n public async setUseFrameInterpolation(useFrameInterpolation: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setUseFrameInterpolation', { instanceId: this._id, useFrameInterpolation });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadTheme(themeId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = this._sendMessage('loadTheme', { instanceId: this._id, themeId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async load(config: Omit<Config, 'canvas'>): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('load', { config, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLoop(loop: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLoop', { instanceId: this._id, loop });\n await this._updateDotLottieInstanceState();\n }\n\n public async resize(): Promise<void> {\n if (!this._created) return;\n\n const { height, width } = getCanvasSize(this._canvas);\n\n this._canvas.width = width;\n this._canvas.height = height;\n\n await this._sendMessage('resize', { height, instanceId: this._id, width });\n await this._updateDotLottieInstanceState();\n }\n\n public async destroy(): Promise<void> {\n if (!this._created) return;\n\n this._created = false;\n\n await this._sendMessage('destroy', { instanceId: this._id });\n\n this._cleanupStateMachineListeners();\n\n DotLottieWorker._workerManager.unassignAnimationFromWorker(this._id);\n this._eventManager.removeAllEventListeners();\n }\n\n public async freeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('freeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async unfreeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('unfreeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setBackgroundColor(backgroundColor: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setBackgroundColor', { instanceId: this._id, backgroundColor });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadAnimation(animationId: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('loadAnimation', { animationId, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLayout(layout: Layout): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLayout', { instanceId: this._id, layout });\n await this._updateDotLottieInstanceState();\n }\n\n private async _updateDotLottieInstanceState(): Promise<void> {\n if (!this._created) return;\n\n const result = await this._sendMessage('getDotLottieInstanceState', { instanceId: this._id });\n\n this._dotLottieInstanceState = result.state;\n }\n\n public markers(): Marker[] {\n return this._dotLottieInstanceState.markers;\n }\n\n public async setMarker(marker: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMarker', { instanceId: this._id, marker });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadThemeData(themeData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const loaded = await this._sendMessage('loadThemeData', { instanceId: this._id, themeData });\n\n await this._updateDotLottieInstanceState();\n\n return loaded;\n }\n\n public async setViewport(x: number, y: number, width: number, height: number): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setViewport', { x, y, width, height, instanceId: this._id });\n }\n\n private async _sendMessage<T extends keyof MethodParamsMap>(\n method: T,\n params: MethodParamsMap[T],\n transfer?: Transferable[],\n ): Promise<MethodResultMap[T]> {\n const rpcRequest: RpcRequest<T> = {\n id: `dotlottie-request-${generateUniqueId()}`,\n method,\n params,\n };\n\n this._worker.postMessage(rpcRequest, transfer || []);\n\n return new Promise((resolve, reject) => {\n const onMessage = (event: MessageEvent): void => {\n const rpcResponse: RpcResponse<T> = event.data;\n\n // Check if the response corresponds to the request\n if (rpcResponse.id === rpcRequest.id) {\n this._worker.removeEventListener('message', onMessage);\n\n if (rpcResponse.error) {\n reject(new Error(`Failed to execute method ${method}: ${rpcResponse.error}`));\n } else {\n resolve(rpcResponse.result);\n }\n }\n };\n\n this._worker.addEventListener('message', onMessage);\n });\n }\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n public static setWasmUrl(url: string): void {\n DotLottieWorker._wasmUrl = url;\n }\n\n public async loadStateMachine(stateMachineId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('loadStateMachine', { instanceId: this._id, stateMachineId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async loadStateMachineData(stateMachineData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('loadStateMachineData', { instanceId: this._id, stateMachineData });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async startStateMachine(): Promise<boolean> {\n if (!this._created) return false;\n\n this._setupStateMachineListeners();\n\n const result = await this._sendMessage('startStateMachine', { instanceId: this._id });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n public async stopStateMachine(): Promise<boolean> {\n if (!this._created) return false;\n\n this._cleanupStateMachineListeners();\n\n return this._sendMessage('stopStateMachine', { instanceId: this._id });\n }\n\n public async postStateMachineEvent(event: string): Promise<number> {\n if (!this._created) return 1;\n\n return this._sendMessage('postStateMachineEvent', { event, instanceId: this._id });\n }\n\n public async getStateMachineListeners(): Promise<string[]> {\n if (!this._created) return [];\n\n return this._sendMessage('getStateMachineListeners', { instanceId: this._id });\n }\n\n private _getPointerPosition(event: PointerEvent): { x: number; y: number } {\n const rect = (this._canvas as HTMLCanvasElement).getBoundingClientRect();\n const scaleX = this._canvas.width / rect.width;\n const scaleY = this._canvas.height / rect.height;\n\n const devicePixelRatio = this._dotLottieInstanceState.renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n const x = ((event.clientX - rect.left) * scaleX) / devicePixelRatio;\n const y = ((event.clientY - rect.top) * scaleY) / devicePixelRatio;\n\n return {\n x,\n y,\n };\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerUp: ${x} ${y}`);\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerDown: ${x} ${y}`);\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerMove: ${x} ${y}`);\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerEnter: ${x} ${y}`);\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const { x, y } = this._getPointerPosition(event);\n\n this.postStateMachineEvent(`OnPointerExit: ${x} ${y}`);\n }\n\n private _onComplete(): void {\n this.postStateMachineEvent('OnComplete');\n }\n\n private async _setupStateMachineListeners(): Promise<void> {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this.isLoaded) {\n const listeners = await this._sendMessage('getStateMachineListeners', { instanceId: this._id });\n\n if (listeners.includes('PointerUp')) {\n this._canvas.addEventListener('pointerup', this._onPointerUp.bind(this));\n }\n\n if (listeners.includes('PointerDown')) {\n this._canvas.addEventListener('pointerdown', this._onPointerDown.bind(this));\n }\n\n if (listeners.includes('PointerMove')) {\n this._canvas.addEventListener('pointermove', this._onPointerMove.bind(this));\n }\n\n if (listeners.includes('PointerEnter')) {\n this._canvas.addEventListener('pointerenter', this._onPointerEnter.bind(this));\n }\n\n if (listeners.includes('PointerExit')) {\n this._canvas.addEventListener('pointerleave', this._onPointerLeave.bind(this));\n }\n\n if (listeners.includes('Complete')) {\n this.addEventListener('complete', this._onComplete.bind(this));\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.removeEventListener('pointerup', this._onPointerUp.bind(this));\n this._canvas.removeEventListener('pointerdown', this._onPointerDown.bind(this));\n this._canvas.removeEventListener('pointermove', this._onPointerMove.bind(this));\n this._canvas.removeEventListener('pointerenter', this._onPointerEnter.bind(this));\n this._canvas.removeEventListener('pointerleave', this._onPointerLeave.bind(this));\n this.removeEventListener('complete', this._onComplete.bind(this));\n }\n }\n}\n"]}