@escro/plugin-sak 0.0.0-stage → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../../../node_modules/.pnpm/base-x@4.0.1/node_modules/base-x/src/index.js","../../../node_modules/.pnpm/bs58@5.0.0/node_modules/bs58/index.js","../src/index.ts","../../shared/src/types/escrow.ts","../../shared/src/types/bots.ts","../../shared/src/config.ts","../../shared/src/utils/text.ts","../../shared/src/utils/canonicalize.ts","../../shared/src/utils/printable.ts","../../shared/src/utils/secret-scan.ts","../../shared/src/utils/index.ts","../../shared/src/rpc-redact.ts","../../shared/src/auth.ts","../../shared/src/bot-descriptor.ts","../../shared/src/instructions.ts","../../shared/src/instruction-args.ts","../src/actions.ts","../src/errors.ts","../src/paid-body.ts","../src/schema.ts"],"sourcesContent":["(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import type { Keypair } from \"@solana/web3.js\";\nimport { Escro, type EscroOptions, type SpendCap, type X402SpendCap } from \"@escro/sdk\";\nimport { getApiUrl, getPublicRpcUrl, parseClusterEnv } from \"@escro/shared\";\n\nimport { buildActions, type EscroActionName } from \"./actions.js\";\nimport { EscroPluginError } from \"./errors.js\";\nimport type { Action, Handler, SakAgent } from \"./sak.js\";\n\nexport { EscroPluginError } from \"./errors.js\";\nexport type { EscroActionName } from \"./actions.js\";\nexport type { Plugin, Action, ActionExample, Handler, SakAgent } from \"./sak.js\";\n\nexport interface EscroSakPluginOptions {\n /** The agent wallet's own keypair; passed only to the SDK, which alone signs. */\n wallet: Keypair;\n /** Required; a missing cluster never defaults to devnet. */\n cluster: EscroOptions[\"cluster\"];\n /** Passed through unchanged; the SDK refuses a mainnet commission without it. */\n spendCap?: SpendCap;\n /** Passed through unchanged; the SDK refuses a mainnet `exact` payment without it. */\n x402SpendCap?: X402SpendCap;\n /** Defaults to the cluster's public Escro API. */\n apiUrl?: string;\n /** Defaults to the cluster's public RPC endpoint. */\n rpcUrl?: string;\n /**\n * Lets escro_pay_402 pay a URL whose host is a loopback, link-local or private address (a local\n * worker). Off by default. On mainnet a public host is still paid only over https:.\n */\n allowPrivateHosts?: boolean;\n}\n\nexport interface EscroSakPlugin {\n name: \"escro\";\n methods: Record<EscroActionName, Handler>;\n actions: Action[];\n initialize(agent: SakAgent): void;\n}\n\nconst SECRET_KEY_BYTES = 64;\n\n/** The address of a value that may not be the wallet its type says; null when it has none. */\nfunction addressOf(wallet: unknown): string | null {\n const key = (wallet as { publicKey?: { toBase58?: () => string } | null } | null | undefined)\n ?.publicKey;\n return typeof key?.toBase58 === \"function\" ? key.toBase58() : null;\n}\n\n/** The message names no field's value: what is refused here may be key material. */\nfunction assertLocalKeypair(wallet: unknown): void {\n const secretKey = (wallet as { secretKey?: unknown } | null | undefined)?.secretKey;\n if (\n addressOf(wallet) === null ||\n !(secretKey instanceof Uint8Array) ||\n secretKey.length !== SECRET_KEY_BYTES\n ) {\n throw new EscroPluginError(\n \"wallet must be a Keypair holding its 64-byte secret key; a wallet with no local key is not supported.\",\n );\n }\n}\n\n/** Strict, so a typo (\"1\", \"true\") fails here rather than leaving the guard on or off unseen. */\nfunction allowPrivateHostsOf(raw: unknown): boolean {\n if (raw === undefined) return false;\n if (typeof raw !== \"boolean\") {\n throw new EscroPluginError(\"allowPrivateHosts must be true, false or absent.\");\n }\n return raw;\n}\n\nfunction clusterOf(raw: unknown): EscroOptions[\"cluster\"] {\n const refusal = 'cluster is required and must be \"devnet\" or \"mainnet\".';\n if (typeof raw !== \"string\" || raw === \"\") throw new EscroPluginError(refusal);\n try {\n return parseClusterEnv(raw);\n } catch (err) {\n throw new EscroPluginError(refusal, { cause: err });\n }\n}\n\n/**\n * The Solana Agent Kit plugin: `agent.use(createEscroPlugin({ wallet, cluster, ... }))`.\n *\n * The keypair lives only in this closure and the SDK client, so no dump of the plugin can show it.\n */\nexport function createEscroPlugin(options: EscroSakPluginOptions): EscroSakPlugin {\n const { wallet, apiUrl, rpcUrl, spendCap, x402SpendCap } = options;\n assertLocalKeypair(wallet);\n const cluster = clusterOf(options.cluster);\n const allowPrivateHosts = allowPrivateHostsOf(options.allowPrivateHosts);\n\n let client: Escro | undefined;\n const clientOf = (): Escro => {\n if (client === undefined) {\n throw new EscroPluginError(\n \"The Escro plugin has not been initialized for this agent: add it with agent.use(plugin).\",\n );\n }\n return client;\n };\n\n const actions = buildActions(clientOf, { cluster, allowPrivateHosts });\n return {\n name: \"escro\",\n methods: Object.fromEntries(actions.map((a) => [a.name, a.handler])) as Record<\n EscroActionName,\n Handler\n >,\n actions,\n initialize(agent: SakAgent): void {\n const own = wallet.publicKey.toBase58();\n const agentAddress = addressOf((agent as { wallet?: unknown }).wallet);\n if (agentAddress === null) {\n throw new EscroPluginError(\n `The agent's wallet has no public key to compare with the keypair ${own}.`,\n );\n }\n if (agentAddress !== own) {\n throw new EscroPluginError(\n `The keypair ${own} is not the agent's wallet ${agentAddress}; the plugin signs only as the agent's own wallet.`,\n );\n }\n client ??= new Escro({\n cluster,\n wallet,\n rpcUrl: rpcUrl ?? getPublicRpcUrl(cluster),\n apiUrl: apiUrl ?? getApiUrl(cluster),\n ...(spendCap !== undefined && { spendCap }),\n ...(x402SpendCap !== undefined && { x402SpendCap }),\n });\n },\n };\n}\n","import type { SolanaCluster } from \"../config.js\";\n\n/**\n * Lifecycle states of an escrow, each transition validated by the on-chain program.\n *\n * Happy path: FUNDED → IN_PROGRESS → SUBMITTED → COMPLETED (buyer release or the 24h\n * timeout release).\n *\n * Exception paths:\n * IN_PROGRESS | SUBMITTED → DISPUTED (resolved only by arbitration, to COMPLETED or REFUNDED)\n * FUNDED → CANCELLED (buyer cancels before the claim; on chain the account is REFUNDED)\n * FUNDED | IN_PROGRESS → REFUNDED (deadline plus grace passed before a submission)\n */\nexport enum EscrowState {\n /**\n * An unconfirmed intent: the API's create build recorded it and no landed create_escrow has\n * funded it yet. Never persisted on chain and never served by a read.\n */\n CREATED = \"CREATED\",\n /** Maker deposited tokens into the vault; open for agent acceptance. */\n FUNDED = \"FUNDED\",\n /** An agent accepted the task; work is underway. */\n IN_PROGRESS = \"IN_PROGRESS\",\n /** Agent submitted a deliverable URI; awaiting buyer review or 24h auto-release. */\n SUBMITTED = \"SUBMITTED\",\n /** Funds released to the agent. Terminal state. */\n COMPLETED = \"COMPLETED\",\n /** Buyer cancelled before work started. Terminal state. */\n CANCELLED = \"CANCELLED\",\n /** Maker or agent raised a dispute; requires human arbitration. */\n DISPUTED = \"DISPUTED\",\n /** Funds returned to the maker (deadline expiry or dispute resolution). Terminal state. */\n REFUNDED = \"REFUNDED\",\n}\n\n/** Solana cluster the escrow account lives on. */\nexport type Network = \"mainnet-beta\" | \"devnet\" | \"localnet\";\n\n/**\n * Full on-chain representation of an AgentEscrow PDA, enriched with\n * off-chain metadata resolved by the API server.\n *\n * `amount` and all `*At` timestamps use the on-chain units:\n * - `amount` is in the SPL token's smallest denomination (e.g. μUSDC = 10⁻⁶ USDC).\n * - timestamps are Unix seconds as stored in the Anchor account.\n *\n * When serialising over HTTP (the API's escrow responses), `amount` is represented as a\n * decimal `string` of the smallest denomination to avoid JSON `number` precision loss.\n */\nexport interface EscrowAccount {\n /** Base-58 public key of the escrow PDA. */\n address: string;\n /** Base-58 public key of the task creator (the party paying for the work). */\n maker: string;\n /** Base-58 public key of the worker assigned at creation (every escrow has one). */\n taker: string | null;\n /** Base-58 public key of the SPL token mint used for payment (e.g. USDC mint). */\n mint: string;\n /**\n * Payment amount held in escrow, in the mint's smallest denomination.\n * Stored as `bigint` to preserve full u64 precision from the on-chain account.\n */\n amount: bigint;\n /** Current lifecycle state of the escrow. */\n state: EscrowState;\n /**\n * SHA-256 hex digest of the canonical UTF-8 JSON serialisation of the {@link TaskSpec}.\n * Recorded on-chain (the account's `spec_hash` holds this hash, bare, or as `ipfs://<hash>` on\n * older escrows), so the buyer and worker (and an arbitrator) can check that a\n * spec is the one the escrow was created for.\n */\n taskSpecHash: string;\n /**\n * The exact string the escrow's on-chain `spec_hash` holds: the bare 64-hex `taskSpecHash`\n * (current creates), `ipfs://<taskSpecHash>` (older escrows), or `null` where the API's record\n * of an older escrow lacks it. A label for the {@link TaskSpec}'s hash, not a fetchable copy\n * (Escro stores no spec body; the buyer shares the spec).\n */\n taskSpecUri: string | null;\n /**\n * Base-58 public key of the oracle authority permitted to sign timeout_release\n * (refund_buyer is permissionless).\n */\n oracle: string;\n /**\n * Platform fee in basis points. Once the API has read the escrow's `create_escrow` from chain,\n * it serves the escrow's on-chain `fee_bps` from its `EscrowCreated` event (PlatformConfig's\n * value, stored per escrow at creation); on a CREATED intent not yet read it serves its\n * `PLATFORM_FEE_BPS` mirror. Additive: the buyer deposits `amount` plus the fee and the\n * worker receives the full `amount`.\n */\n oracleFeeBps: number;\n /** Unix timestamp (seconds) when the escrow PDA was initialised. */\n createdAt: number;\n /**\n * Unix timestamp (seconds) at which the escrow deadline expires; mirrors the\n * on-chain `deadline` field set at `create_escrow`. A Worker Bot reads this to\n * decide whether it can finish a job before the deadline (never claim what it\n * can't finish); after it passes, an unstarted escrow is refundable to the maker.\n */\n deadline: number;\n /** Unix timestamp (seconds) of the most recent agent submission, or `null`. */\n submittedAt: number | null;\n /**\n * SHA-256 hex digest of the worker's submitted deliverable, mirrored from the\n * on-chain `deliverable_hash` written at `submit_deliverable`; `null` until the\n * escrow reaches SUBMITTED. The on-chain value is authoritative: a Buyer Bot's\n * review re-verifies a deliverable against a hash it independently expects and\n * never treats this mirror as proof of integrity on its own.\n */\n deliverableHash: string | null;\n /**\n * URI of the submitted deliverable artifact (S3 presigned / IPFS / Arweave),\n * mirrored from the off-chain `proof_uri` recorded at `submit_deliverable`;\n * `null` until SUBMITTED. The Buyer Bot fetches the deliverable content here to\n * review it.\n */\n proofUri: string | null;\n /** PDA canonical bump seed, stored on-chain to validate future instructions. */\n bump: number;\n /** Solana cluster this account belongs to. */\n network: Network;\n}\n\n/**\n * `GET /v1/escrows/outstanding?maker=`: the maker's open deposits, the escrows whose vault still\n * holds the buyer's money (FUNDED, IN_PROGRESS, SUBMITTED, DISPUTED; never CREATED).\n */\nexport interface OutstandingDeposits {\n /** Base-58 public key of the buyer the figures are for. */\n maker: string;\n /** Number of open escrows counted. */\n count: number;\n /**\n * Sum over those escrows of `amount` plus the program's fee at the escrow's stored rate, in\n * micro-USDC, as a decimal u64 string (it can exceed `Number.MAX_SAFE_INTEGER`).\n */\n depositsMicroUsdc: string;\n}\n\n/**\n * First-class settlement cause for an escrow, recorded off-chain (EscroRep\n * fidelity). One value per fund-moving instruction, keyed 1:1 to the\n * EscroRep reducer's `EscrowEventKind` so the reputation the API serves\n * matches the on-chain reducer. The cause also encodes the dispute OUTCOME:\n * `ARBITRATION_RELEASE` = worker prevailed, `ARBITRATION_REFUND` = buyer\n * prevailed. Single-sourced here: whatever stores or validates a cause accepts\n * exactly this list; never caller-supplied.\n *\n * Declared as a `const` array (not a bare union) so the value list has a single\n * runtime source any test or validator reads from.\n */\nexport const SETTLEMENT_CAUSES = [\n /** Buyer-signed release_payment: explicit completion. */\n \"EXPLICIT_RELEASE\",\n /** Oracle timeout_release: 24h auto-release completion (buyer non-response). */\n \"TIMEOUT_RELEASE\",\n /** admin arbitration_release: worker prevailed in a dispute, not a completion. */\n \"ARBITRATION_RELEASE\",\n /** Deadline-expiry refund_buyer (any cranker): worker non-delivery. */\n \"DEADLINE_REFUND\",\n /** admin arbitration_refund: buyer prevailed in a dispute. */\n \"ARBITRATION_REFUND\",\n /** cancel_escrow: buyer cancelled a FUNDED escrow before any claim. */\n \"CANCELLED\",\n] as const;\n\n/** The settlement cause recorded for a settled escrow (see {@link SETTLEMENT_CAUSES}). */\nexport type SettlementCause = (typeof SETTLEMENT_CAUSES)[number];\n\n/**\n * Every outcome the oracle records for a settlement it attempts. Single-sourced\n * here: the oracle's recorder takes an {@link OracleEventType}, and whatever\n * accepts a recorded outcome must accept every value here (it may also keep\n * retired values nothing records any more).\n *\n * Declared as a `const` array (not a bare union) so the value list has a single\n * runtime source any test or validator reads from.\n */\nexport const ORACLE_EVENT_TYPES = [\n /** Oracle-signed timeout_release settled the escrow (24h auto-release completion). */\n \"TIMEOUT_RELEASE\",\n /** Permissionless refund_buyer settled the escrow (deadline-expiry refund). */\n \"AUTO_REFUND\",\n /** A repeated settlement request: the escrow was already settled, nothing signed. */\n \"ALREADY_SETTLED\",\n /**\n * An escrow recorded off-chain as DISPUTED, whose dispute never landed on chain, was restored to\n * its on-chain state.\n */\n \"DISPUTE_RECONCILED\",\n /** A closed escrow's off-chain record was brought to its actual on-chain settlement. */\n \"RECONCILED\",\n /** A closed escrow's settling instruction could not be read, so no settlement was recorded. */\n \"RECONCILE_INDETERMINATE\",\n /** Settlement attempted before its on-chain time gate opened (silent backoff, not a failure). */\n \"NOT_YET_ELIGIBLE\",\n /** A request of an unknown or forged type was dropped (the oracle acts only on its own types). */\n \"UNKNOWN_MESSAGE_TYPE\",\n] as const;\n\n/** An outcome the oracle records (see {@link ORACLE_EVENT_TYPES}). */\nexport type OracleEventType = (typeof ORACLE_EVENT_TYPES)[number];\n\n/** One set of `GET /v1/stats` figures: the public block, or the operator block. */\nexport interface ProtocolStatsFigures {\n totalEscrows: number;\n totalVolumeUsdc: string;\n /**\n * Settled USDC volume: the sum of `amount_usdc` (the job amount, which the\n * worker keeps in full; the additive platform fee is protocol revenue, not\n * settled work volume) over escrows in the COMPLETED terminal state. COMPLETED\n * is reached only by the three worker-paying instructions (release_payment,\n * timeout_release, arbitration_release); refunded and cancelled escrows never\n * paid a worker and are excluded. This is the honest headline number: it counts\n * settlement, not transaction volume.\n */\n settledVolumeUsdc: string;\n byState: Record<EscrowState, number>;\n activeEscrows: number;\n}\n\n/** Protocol-wide aggregate statistics: public, unauthenticated. */\nexport interface ProtocolStats extends ProtocolStatsFigures {\n /** The Solana cluster this API serves (its `CLUSTER`). */\n cluster: SolanaCluster;\n /** That cluster's one USDC mint (`getUsdcMint`): every figure here is in this token. */\n usdcMint: string;\n /**\n * Escro-operated fleet figures: the same fields over\n * escrows whose buyer and assigned worker are both in the API's operator\n * allowlist. They are real settlements but not third-party demand, so every\n * public field excludes them; never sum this block with the public fields.\n */\n operator: ProtocolStatsFigures;\n}\n\n/** One worker's settled earnings over an activity window; wallet anonymised. */\nexport interface ActivityEarner {\n /**\n * Anonymised worker wallet: a truncated display form (`first4...last4`), never\n * the full address. Truncation is a display convenience, not a privacy boundary\n * (Solana addresses are public and EscroRep exposes full per-wallet history).\n */\n wallet: string;\n /** Settled USDC (job amount) the worker earned in the window. */\n settledVolumeUsdc: string;\n /** Number of escrows the worker settled (reached COMPLETED) in the window. */\n jobsSettled: number;\n}\n\n/**\n * Activity leaderboard: anonymised top earners over a rolling window. The data\n * source behind escro.ai/activity (weekly earners). Public, unauthenticated.\n */\nexport interface ActivityLeaderboard {\n /** The Solana cluster this API serves (its `CLUSTER`). */\n cluster: SolanaCluster;\n /** That cluster's one USDC mint (`getUsdcMint`): every earning here is in this token. */\n usdcMint: string;\n /** Rolling window length in days (7 = weekly earners). */\n periodDays: number;\n /** Top earners, descending by settled volume. */\n earners: ActivityEarner[];\n}\n","/**\n * EscroBots v0 - the permissionless capability directory.\n *\n * A bot advertises itself by publishing a wallet-signed capability descriptor.\n * The descriptor is a *claim*, not a verified fact - on-chain history is the\n * verification (surfaced in the v1 directory). The registry performs no\n * approval, review, or ranking; fraud against the protocol is the only removal\n * criterion. The descriptor document itself is independently verifiable: anyone\n * holding it can check `signature` against `wallet` without trusting the API.\n */\n\n/**\n * The advertisable roles. Single source for both the `BotRole` type and the API's\n * validation of a role, so the accepted values and the type cannot drift: a role\n * added here flows into validation automatically.\n */\nexport const BOT_ROLES = [\"worker\", \"buyer\", \"both\"] as const;\n\n/** Whether the bot hires work, performs work, or both. */\nexport type BotRole = (typeof BOT_ROLES)[number];\n\n/**\n * The descriptor fields the bot's wallet signs. Everything a registry consumer\n * needs to find and reach the bot, minus the signature over these fields.\n */\nexport interface UnsignedBotDescriptor {\n /** Base58 Solana pubkey - the advertising bot and the descriptor's signer. */\n wallet: string;\n /** What the bot does in the escrow relationship. */\n role: BotRole;\n /** Free-form capability tags, e.g. `[\"fine-tune\", \"eval\"]`. Filterable. */\n capabilities: string[];\n /** The underlying service the bot wraps, e.g. `\"bittensor:sn56\"`. */\n serviceRef: string;\n /** Human-readable pricing guidance, e.g. `\"~$5 per fine-tune job\"`. */\n pricingHint: string;\n /** Optional http(s) endpoint a buyer can reach the bot at. */\n endpoint?: string;\n /** Unix milliseconds when the descriptor was signed. Monotonic per wallet. */\n signedAt: number;\n}\n\n/**\n * A signed capability descriptor as stored and served by the registry.\n * `signature` is a base58 detached Ed25519 signature over the canonical form of\n * the {@link UnsignedBotDescriptor} fields (see `canonicalBotDescriptorMessage`).\n */\nexport interface BotDescriptor extends UnsignedBotDescriptor {\n /** Base58 detached Ed25519 signature over the canonical unsigned descriptor. */\n signature: string;\n}\n","// The devnet deploy tooling rewrites the devnet values after each devnet deploy; only the\n// mainnet deploy tooling or a human mainnet bootstrap changes the mainnet values. The two\n// clusters have distinct program ids and upgrade authorities, so a leaked devnet upgrade authority\n// cannot upgrade mainnet.\n\nexport type SolanaCluster = \"devnet\" | \"mainnet\";\n\nexport const PROGRAM_ID_DEVNET = \"EjLpJ3obUYk1f2KDensU7UdGBZTxSdxufm7CSnMA3H5C\" as const;\nexport const PLATFORM_CONFIG_PDA_DEVNET = \"5BYnq9YsCTaMxBLJhBn4TPnCQuxiHcG5eZ2ygLJBu9dc\" as const;\nexport const DEVNET_USDC_MINT = \"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU\" as const;\nexport const DEPLOYED_AT_DEVNET = \"2026-08-15T17:24:37.149Z\" as const;\n\nexport const PROGRAM_ID_MAINNET = \"4CwLNRF4mFXutiBGjtMHQBxh8whW8T8EyvJXdRhY1rvr\" as const;\nexport const PLATFORM_CONFIG_PDA_MAINNET = \"7zPti535SmzvkdtmKaGR8w4niHLiEidWCqCaQXLbQvhn\" as const;\nexport const MAINNET_USDC_MINT = \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" as const;\n// Pinned mainnet PlatformConfig values: the treasury and oracle authority the program is\n// configured with.\nexport const MAINNET_TREASURY = \"GSNa5eHUkKUp3RQr8vYbQx471FzWztfMsvhNhW2MUBVq\" as const;\nexport const MAINNET_ORACLE_AUTHORITY = \"G2Cr4PAJ58ZSYX2ceCMt2DtP1KBFXA9oYDtJJKZaKKJT\" as const;\n// The 2-of-2 Squads vault: the treasury's address, named apart because the roles differ.\nexport const MAINNET_UPGRADE_AUTHORITY = \"GSNa5eHUkKUp3RQr8vYbQx471FzWztfMsvhNhW2MUBVq\" as const;\n// The AdminConfig PDA, seeds [b\"admin\"] under PROGRAM_ID_MAINNET (a test derives it).\nexport const ADMIN_CONFIG_PDA_MAINNET = \"9SoVXPDjKFKA6sEo5oVp1RHij2FKVR52SCvoD2ELDHgD\" as const;\n// MAINNET_TREASURY's associated token account for MAINNET_USDC_MINT (a test derives it).\nexport const MAINNET_TREASURY_USDC_ATA = \"DAQfw4T3MzzfrWjkVy3mbWtWuUYVoaZThvsEF1RdM2kg\" as const;\n\n// An RPC proves its cluster by its genesis hash; the ops CLIs refuse a mismatch.\nexport const DEVNET_GENESIS_HASH = \"EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG\" as const;\nexport const MAINNET_GENESIS_HASH = \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\" as const;\n\n// CAIP-2 ids: `solana:` plus the first 32 characters of the genesis hash (a test locks them to\n// the hashes above and to the binding's appendix, docs/specs/scheme_on_delivery_svm.md).\nexport const SOLANA_CAIP2_MAINNET = \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\" as const;\nexport const SOLANA_CAIP2_DEVNET = \"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1\" as const;\n\nexport function getCaip2Network(cluster: SolanaCluster): string {\n return cluster === \"mainnet\" ? SOLANA_CAIP2_MAINNET : SOLANA_CAIP2_DEVNET;\n}\n\n/** The cluster a CAIP-2 id names, exactly; undefined for any other string. */\nexport function clusterOfCaip2(network: string): SolanaCluster | undefined {\n if (network === SOLANA_CAIP2_MAINNET) return \"mainnet\";\n if (network === SOLANA_CAIP2_DEVNET) return \"devnet\";\n return undefined;\n}\n\n// The default API base per cluster: a mirror of the hosted API's domain name per cluster.\nexport const API_URLS: Record<SolanaCluster, string> = {\n devnet: \"https://api-devnet.escro.ai\",\n mainnet: \"https://api.escro.ai\",\n};\n\nexport function getApiUrl(cluster: SolanaCluster): string {\n return API_URLS[cluster];\n}\n\n/** Solana's public RPC per cluster: the default where no keyed endpoint is configured. */\nexport const PUBLIC_RPC_URLS: Readonly<Record<SolanaCluster, string>> = {\n devnet: \"https://api.devnet.solana.com\",\n mainnet: \"https://api.mainnet-beta.solana.com\",\n};\n\nexport function getPublicRpcUrl(cluster: SolanaCluster): string {\n return PUBLIC_RPC_URLS[cluster];\n}\n\n/** Platform oracle fee rate in basis points (50 bps = 0.50%). */\nexport const PLATFORM_FEE_BPS = 50 as const;\n\n/**\n * The program's fee on an escrow `amount` at `feeBps`, in micro-USDC: `floor(amount * feeBps /\n * 10_000)`, as `create_escrow` computes it. The buyer deposits `amount` plus this fee.\n */\nexport function escrowFee(amount: bigint, feeBps: number): bigint {\n return (amount * BigInt(feeBps)) / 10_000n;\n}\n\n/**\n * The minimum escrow `amount` in micro-USDC ($5.00): the worker's net, not the buyer's deposit\n * (amount plus the additive fee). Mirrors `MIN_ESCROW_AMOUNT` in the program; a test reads the\n * program source and fails on drift.\n */\nexport const MIN_ESCROW_AMOUNT = 5_000_000 as const;\n\n/**\n * The account layout version the program writes and accepts. MIRROR of\n * `CURRENT_ACCOUNT_VERSION` in the program; a test reads the program source and fails on\n * drift.\n */\nexport const CURRENT_ACCOUNT_VERSION = 1 as const;\n\n/**\n * The most UTF-8 bytes `raise_dispute` accepts as a reason. MIRROR of the program's\n * `MAX_REASON_LEN` in its `raise_dispute` instruction; a test reads the program source and fails\n * on drift. Checked off chain by `disputeReasonError`.\n */\nexport const MAX_DISPUTE_REASON_BYTES = 200 as const;\n\n/**\n * The most UTF-8 bytes `create_escrow`'s `spec_hash` may hold. MIRROR of `#[max_len(64)]` on\n * `spec_hash` in the program's `EscrowAccount`; a test reads the program source and fails on\n * drift. The program bounds the field only by the account's allocation; the\n * API's create builder enforces this cap.\n */\nexport const MAX_SPEC_HASH_BYTES = 64 as const;\n\n/**\n * The most UTF-8 bytes `submit_deliverable`'s `proof_uri` may hold. MIRROR of the `#[max_len]` on\n * `proof_uri` in the program's `EscrowAccount`; a test reads the program source and fails on\n * drift. The program bounds the field only by the account's allocation; the\n * API's submit builder enforces this cap. Checked off chain by `proofUriError`.\n */\nexport const MAX_PROOF_URI_BYTES = 128 as const;\n\n/**\n * Indeterminate settlement reads one escrow may accrue before the oracle stops retrying it and\n * alerts once. Each one follows a read that found the escrow's account closed, so an escrow past\n * the bound has nothing left to sign. Every off-chain reader of the bound reads this one constant.\n */\nexport const RECONCILE_ATTEMPT_BOUND = 5;\n\n// Mirrors of refund_buyer.rs REFUND_GRACE_SECONDS and timeout_release.rs TIMEOUT_SECONDS (the\n// non-feature builds); a test reads the program source and fails on drift.\nexport const ONCHAIN_REFUND_GRACE_SECONDS = 900 as const;\nexport const ONCHAIN_TIMEOUT_SECONDS = 86_400 as const;\n\n/**\n * The cluster clock lags wall clock, so an off-chain gate that must clear an on-chain one runs\n * at the on-chain offset plus this margin; at the bare boundary the chain still rejects.\n */\nexport const CLOCK_SKEW_SECONDS = 60 as const;\n\nexport const SCANNER_REFUND_GRACE_SECONDS = (ONCHAIN_REFUND_GRACE_SECONDS +\n CLOCK_SKEW_SECONDS) as 960;\nexport const SCANNER_TIMEOUT_SECONDS = (ONCHAIN_TIMEOUT_SECONDS + CLOCK_SKEW_SECONDS) as 86_460;\n\n/**\n * The furthest escrow deadline, in seconds from now, an agent-driven pay surface accepts (7 days): the\n * ceiling and the default of the MCP's, SAK's and Eliza's pay bound.\n */\nexport const PAY_MAX_DEADLINE_SECONDS = 604_800 as const;\n\n/** The System Program address: no program deploys there, so it marks an unbootstrapped mainnet. */\nexport const MAINNET_PROGRAM_ID_PLACEHOLDER = \"11111111111111111111111111111111\" as const;\n\nexport function getProgramId(cluster: SolanaCluster): string {\n return cluster === \"mainnet\" ? PROGRAM_ID_MAINNET : PROGRAM_ID_DEVNET;\n}\n\nexport function getPlatformConfigPda(cluster: SolanaCluster): string {\n return cluster === \"mainnet\" ? PLATFORM_CONFIG_PDA_MAINNET : PLATFORM_CONFIG_PDA_DEVNET;\n}\n\nexport function getUsdcMint(cluster: SolanaCluster): string {\n return cluster === \"mainnet\" ? MAINNET_USDC_MINT : DEVNET_USDC_MINT;\n}\n\nexport function isPlaceholderProgramId(id: string): boolean {\n return id === MAINNET_PROGRAM_ID_PLACEHOLDER;\n}\n\n/** Throws on mainnet while the program id is the placeholder; call at module init. */\nexport function assertProgramIdNotPlaceholder(id: string, cluster: SolanaCluster): void {\n if (cluster === \"mainnet\" && isPlaceholderProgramId(id)) {\n throw new Error(\n `PROGRAM_ID_MAINNET is still the System Program placeholder (${MAINNET_PROGRAM_ID_PLACEHOLDER}). ` +\n \"This build carries no deployed mainnet program id: use a release built after the \" +\n \"mainnet bootstrap.\",\n );\n }\n}\n\nexport function parseClusterEnv(raw: string | undefined): SolanaCluster {\n if (raw === \"mainnet\") return \"mainnet\";\n if (raw === \"devnet\" || raw === undefined || raw === \"\") return \"devnet\";\n throw new Error(`CLUSTER env var must be \"devnet\" or \"mainnet\", got \"${raw}\"`);\n}\n","// The one U+0000 rule: a text column refuses U+0000, so no value the store keeps may hold it. The\n// request validators and the chain ingester's store rules both read it. A leaf: it imports nothing.\n\n/** False exactly when `value` holds U+0000, which a text column refuses. */\nexport function storableText(value: string): boolean {\n return !value.includes(\"\\u0000\");\n}\n","import { createHash } from \"node:crypto\";\nimport type { TaskSpec } from \"../types/index.js\";\n\nexport function canonicalize(value: unknown): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) {\n return \"[\" + value.map((v) => (v === undefined ? \"null\" : canonicalize(v))).join(\",\") + \"]\";\n }\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj)\n .filter((k) => obj[k] !== undefined)\n .sort();\n return \"{\" + keys.map((k) => JSON.stringify(k) + \":\" + canonicalize(obj[k])).join(\",\") + \"}\";\n }\n return JSON.stringify(value);\n}\n\n// The fields the API's TaskSpec schema keeps; it drops every other key before hashing, so a\n// client hashing the raw spec must drop them too. metadata is free-form and kept whole.\nconst SPEC_KEYS = [\n \"version\",\n \"taskType\",\n \"description\",\n \"acceptanceCriteria\",\n \"deliverableFormat\",\n \"metadata\",\n] as const;\nconst CRITERION_KEYS = [\"id\", \"description\", \"weight\", \"required\"] as const;\nconst FORMAT_KEYS = [\"type\", \"schema\", \"mimeType\", \"maxSizeBytes\", \"language\"] as const;\n\nfunction pick(value: unknown, keys: readonly string[]): unknown {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return value;\n const source = value as Record<string, unknown>;\n return Object.fromEntries(keys.filter((k) => k in source).map((k) => [k, source[k]]));\n}\n\nfunction normalizeTaskSpec(spec: TaskSpec): unknown {\n const top = pick(spec, SPEC_KEYS) as Record<string, unknown>;\n const criteria = top.acceptanceCriteria;\n return {\n ...top,\n acceptanceCriteria: Array.isArray(criteria)\n ? criteria.map((c) => pick(c, CRITERION_KEYS))\n : criteria,\n deliverableFormat: pick(top.deliverableFormat, FORMAT_KEYS),\n };\n}\n\n/** The hex SHA-256 of a TaskSpec's canonical JSON: what an escrow's `spec_hash` holds. */\nexport function computeTaskSpecHash(spec: TaskSpec): string {\n return createHash(\"sha256\")\n .update(canonicalize(normalizeTaskSpec(spec)), \"utf8\")\n .digest(\"hex\");\n}\n","/**\n * Escapes every character that could end or reorder a terminal line (Unicode categories Cc, Cf,\n * Zl, Zp: C0, C1, bidi and zero-width controls, the line and paragraph separators), so text a\n * dispute party or an RPC controls cannot end or reorder a line.\n */\nexport function printable(line: string): string {\n return line.replace(/[\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]/gu, (c) => {\n const hex = (c.codePointAt(0) ?? 0).toString(16);\n return hex.length > 4 ? `\\\\u{${hex}}` : `\\\\u${hex.padStart(4, \"0\")}`;\n });\n}\n","/**\n * Secret detection for task-spec content, which is shared and not secret.\n *\n * A task spec and its metadata go to the worker (and, in a dispute, the arbitrator),\n * and its hash and URI are recorded on-chain, so nothing in them is secret. Escro\n * stores no spec body. The original finding (L3) is that secrets CAN be placed in the\n * free-form metadata map. We actively REJECT obvious secret material rather than\n * merely document the boundary: \"documented as not secret\" is weaker than \"refuses\n * a secret\".\n *\n * Design goal: near-zero false positives. We flag only high-confidence patterns\n * (keypair byte arrays, base58 64-byte secret keys, PEM private-key blocks, AWS\n * access keys, and a small set of unambiguous secret field names). We do NOT do\n * entropy heuristics or fuzzy mnemonic matching, which would risk rejecting\n * legitimate task descriptions.\n */\n\n/**\n * Thrown when caller-supplied content appears to contain a secret. Carries a\n * 400 statusCode + code so the API's global error handler returns a clean\n * client error rather than a 500.\n */\nexport class SecretInMetadataError extends Error {\n readonly code = \"METADATA_CONTAINS_SECRET\";\n readonly statusCode = 400;\n readonly path: string;\n readonly reason: string;\n constructor(path: string, reason: string) {\n super(\n `Refused: a suspected secret was found at ${path} (${reason}). ` +\n \"Task metadata is shared with the worker and its hash is recorded on-chain; it is not secret storage: remove the secret and retry.\",\n );\n this.name = \"SecretInMetadataError\";\n this.path = path;\n this.reason = reason;\n }\n}\n\nconst PEM_PRIVATE_KEY = /-----BEGIN (?:[A-Z0-9 ]+ )?PRIVATE KEY-----/;\nconst AWS_ACCESS_KEY_ID = /\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b/;\n// A 64-byte ed25519 secret key base58-encodes to ~87-88 chars. 32-byte pubkeys\n// (~43-44 chars) are legitimate in metadata, so only the long form is a signal.\n// Anchored to the whole (trimmed) value for precision — base64 of similar length\n// carries chars outside the base58 alphabet and won't match.\nconst BASE58_64_BYTE = /^[1-9A-HJ-NP-Za-km-z]{86,90}$/;\n\n/** Unambiguous secret-bearing field names (normalized: lowercased, separators stripped). */\nconst SECRET_FIELD_NAMES = new Set([\"privatekey\", \"secretkey\", \"mnemonic\", \"seedphrase\"]);\n\nfunction normalizeFieldName(key: string): string {\n return key.toLowerCase().replace(/[\\s_-]/g, \"\");\n}\n\nfunction looksLikeKeypairByteArray(arr: unknown[]): boolean {\n // Solana keypair secret = 64 bytes; raw secret seed = 32 bytes.\n if (arr.length !== 64 && arr.length !== 32) return false;\n return arr.every((n) => typeof n === \"number\" && Number.isInteger(n) && n >= 0 && n <= 255);\n}\n\nfunction scanString(value: string): string | null {\n if (PEM_PRIVATE_KEY.test(value)) return \"PEM private key block\";\n if (AWS_ACCESS_KEY_ID.test(value)) return \"AWS access key id\";\n if (BASE58_64_BYTE.test(value.trim())) return \"base58-encoded 64-byte secret key\";\n return null;\n}\n\n/**\n * Recursively scan an arbitrary JSON-like value for obvious secret material.\n * Returns the first match as `{ path, reason }`, or `null` if none is found.\n */\nexport function scanForSecrets(\n value: unknown,\n path = \"$\",\n): { path: string; reason: string } | null {\n if (typeof value === \"string\") {\n const reason = scanString(value);\n return reason === null ? null : { path, reason };\n }\n if (Array.isArray(value)) {\n if (looksLikeKeypairByteArray(value)) {\n return { path, reason: \"array of bytes resembling an ed25519 keypair\" };\n }\n for (let i = 0; i < value.length; i++) {\n const hit = scanForSecrets(value[i], `${path}[${String(i)}]`);\n if (hit !== null) return hit;\n }\n return null;\n }\n if (value !== null && typeof value === \"object\") {\n for (const [k, v] of Object.entries(value)) {\n if (typeof v === \"string\" && v.length > 0 && SECRET_FIELD_NAMES.has(normalizeFieldName(k))) {\n return { path: `${path}.${k}`, reason: `field name \"${k}\" indicates a secret value` };\n }\n const hit = scanForSecrets(v, `${path}.${k}`);\n if (hit !== null) return hit;\n }\n return null;\n }\n return null;\n}\n\n/** Throws {@link SecretInMetadataError} if `value` contains obvious secret material. */\nexport function assertNoSecrets(value: unknown, context = \"$\"): void {\n const hit = scanForSecrets(value, context);\n if (hit !== null) {\n throw new SecretInMetadataError(hit.path, hit.reason);\n }\n}\n","import { MAX_DISPUTE_REASON_BYTES, MAX_PROOF_URI_BYTES } from \"../config.js\";\nimport { storableText } from \"./text.js\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function invariant(condition: boolean, message: string): asserts condition {\n if (!condition) {\n throw new Error(`Invariant violation: ${message}`);\n }\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Why `reason` cannot go on chain as a dispute reason, or null when it can. The program\n * counts UTF-8 bytes, so a short reason of multi-byte characters can still be too long.\n */\nexport function disputeReasonError(reason: string): string | null {\n if (!storableText(reason)) return \"reason must not hold U+0000\";\n if (reason.length === 0) return \"reason must not be empty\";\n const bytes = new TextEncoder().encode(reason).length;\n if (bytes > MAX_DISPUTE_REASON_BYTES) {\n return `reason is ${String(bytes)} bytes in UTF-8; the program accepts at most ${String(MAX_DISPUTE_REASON_BYTES)}`;\n }\n return null;\n}\n\n/** Schemes a stored deliverable or evidence URL may use: none that runs, inlines or reads files. */\nexport const SAFE_URL_SCHEMES = [\"http:\", \"https:\", \"ipfs:\", \"ar:\"] as const;\n\nexport function isSafeUrl(value: string): boolean {\n try {\n return (SAFE_URL_SCHEMES as readonly string[]).includes(new URL(value).protocol);\n } catch {\n return false;\n }\n}\n\n/**\n * Why `uri` cannot be submitted as a deliverable's `proofUri`, or null when it can. The on-chain\n * `proof_uri` allocation counts UTF-8 bytes, so a URI whose UTF-16 length fits can still be too long.\n */\nexport function proofUriError(uri: string): string | null {\n if (!storableText(uri)) return \"proofUri must not hold U+0000\";\n if (!isSafeUrl(uri)) return \"proofUri must be an http(s), ipfs or ar URL\";\n const bytes = new TextEncoder().encode(uri).length;\n if (bytes > MAX_PROOF_URI_BYTES) {\n return `proofUri is ${String(bytes)} bytes in UTF-8; the program allocates at most ${String(MAX_PROOF_URI_BYTES)}`;\n }\n return null;\n}\n\nexport * from \"./canonicalize.js\";\nexport * from \"./printable.js\";\nexport * from \"./secret-scan.js\";\n","// The one RPC URL redactor. A keyed RPC URL is a secret, never logged, and its key can sit\n// in the userinfo, a path segment, a query value or a subdomain. RPC clients quote the request URL\n// as written (fetch refuses a URL with userinfo by quoting it) or normalised (a slash before the\n// query, a lowercased host), and a provider's error body can echo a part alone, so each part is\n// removed on its own too. Root entry: no runtime web3.\nimport { PUBLIC_RPC_URLS } from \"./config.js\";\n\n// Shorter usernames, path segments and query values (`v1`, a `?v=1` value) are routing, not keys,\n// and would blank common text. A password, a host and the query as a whole go at any length.\nconst MIN_SECRET_LENGTH = 8;\n\n// Computed per call, not at module scope: every bundle of the root entry would run a top-level one.\nconst isPublicOrigin = (origin: string): boolean =>\n Object.values(PUBLIC_RPC_URLS).some((u) => new URL(u).origin === origin);\n\n/** `part` percent-decoded, or null when it does not decode. */\nfunction decoded(part: string): string | null {\n try {\n return decodeURIComponent(part);\n } catch {\n return null;\n }\n}\n\n/** `part` percent-encoded, or null when it holds a lone surrogate. */\nfunction encoded(part: string): string | null {\n try {\n return encodeURIComponent(part);\n } catch {\n return null;\n }\n}\n\n/**\n * A loopback host carries no key, and an operator needs it to see which local node failed. The\n * WHATWG parser normalises the hostname, so the check is on it exactly: `localhost`, an IPv4\n * address in 127.0.0.0/8 or `[::1]`, never a prefix or suffix of one.\n */\nfunction isLoopback(hostname: string): boolean {\n return (\n hostname === \"localhost\" ||\n hostname === \"[::1]\" ||\n /^127\\.(?:\\d{1,3})\\.(?:\\d{1,3})\\.(?:\\d{1,3})$/.test(hostname)\n );\n}\n\n/** The forms of `rpcUrl`, and of each part of it that can hold a key, that text may quote. */\nfunction secretsOf(rpcUrl: string): string[] {\n const secrets = [rpcUrl];\n let url: URL;\n try {\n url = new URL(rpcUrl);\n } catch {\n // An unparseable URL is removed as written.\n return secrets;\n }\n const long = (part: string | null): string[] =>\n part !== null && part.length >= MIN_SECRET_LENGTH ? [part] : [];\n secrets.push(url.href, url.password, decoded(url.password) ?? \"\", url.search.slice(1));\n secrets.push(...long(url.username), ...long(decoded(url.username)));\n for (const segment of url.pathname.split(\"/\")) {\n secrets.push(...long(segment), ...long(decoded(segment)));\n }\n for (const pair of url.search.slice(1).split(\"&\")) {\n secrets.push(...long(pair.slice(pair.indexOf(\"=\") + 1)));\n }\n for (const value of url.searchParams.values()) {\n secrets.push(...long(value), ...long(encoded(value)));\n }\n if (!isPublicOrigin(url.origin) && !isLoopback(url.hostname)) {\n secrets.push(url.host, url.hostname, ...long(url.hostname.split(\".\")[0] ?? \"\"));\n }\n return secrets;\n}\n\nconst escapeRegExp = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n/**\n * `text` with each RPC URL, and each of its key-bearing parts, replaced by `replacement`: the URL\n * as written and as its href (loopback included); the password at any length, as written and\n * decoded; the username, path segments and query values of 8 characters or more, as written and\n * decoded; the query as a whole; and a private host (not a public RPC origin, not loopback) with\n * and without its port, and its first label. One pass, longest match first, so a replacement is\n * never itself rewritten. It never throws: an error path that throws can fall through to an\n * unredacted print.\n */\nexport function redactRpcUrl(\n text: string,\n rpcUrls: readonly (string | undefined)[],\n replacement = \"<rpcUrl>\",\n): string {\n const secrets = new Set<string>();\n for (const rpcUrl of rpcUrls) {\n if (rpcUrl === undefined || rpcUrl === \"\") continue;\n for (const secret of secretsOf(rpcUrl)) if (secret !== \"\") secrets.add(secret);\n }\n if (secrets.size === 0) return text;\n const pattern = [...secrets]\n .sort((a, b) => b.length - a.length)\n .map(escapeRegExp)\n .join(\"|\");\n return text.replace(new RegExp(pattern, \"g\"), () => replacement);\n}\n","import { createHash } from \"node:crypto\";\nimport nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\nimport type { Keypair } from \"@solana/web3.js\";\n\n/** Lowercase hex SHA-256 of a UTF-8 string. Use \"\" for no-body requests. */\nexport function hashBody(rawBody: string): string {\n return createHash(\"sha256\").update(rawBody, \"utf8\").digest(\"hex\");\n}\n\n/** Canonical signed message format shared by SDK (signing) and API (verification). */\nexport function buildSignedMessage(\n timestamp: number | string,\n method: string,\n fullPath: string,\n bodyHash: string,\n): string {\n return `escro:${String(timestamp)}:${method}:${fullPath}:${bodyHash}`;\n}\n\n/**\n * Build all auth headers from a raw Ed25519 secret key and its base58 wallet\n * address. This is the web3.js-free core of {@link signRequest}: callers that\n * cannot depend on `@solana/web3.js` (the Bot Kit CLI keeps its runtime light)\n * sign with the raw keyfile bytes here, so the header names and the `escro:`\n * message format live in exactly ONE place and cannot drift from the API's\n * verifier. `rawBody` is the raw UTF-8 request body; pass \"\" when there is none.\n */\nexport function signRequestRaw(\n secretKey: Uint8Array,\n walletAddress: string,\n method: string,\n fullPath: string,\n rawBody: string,\n): Record<string, string> {\n const timestamp = Date.now();\n const bodyHash = hashBody(rawBody);\n const message = buildSignedMessage(timestamp, method, fullPath, bodyHash);\n const sigBytes = nacl.sign.detached(new TextEncoder().encode(message), secretKey);\n return {\n \"x-wallet-address\": walletAddress,\n \"x-signature\": bs58.encode(sigBytes),\n \"x-timestamp\": String(timestamp),\n \"x-content-sha256\": bodyHash,\n };\n}\n\n/**\n * Build all auth headers needed for an authenticated request.\n * `rawBody` is the raw UTF-8 request body string; pass \"\" when there is no body.\n */\nexport function signRequest(\n wallet: Keypair,\n method: string,\n fullPath: string,\n rawBody: string,\n): Record<string, string> {\n return signRequestRaw(wallet.secretKey, wallet.publicKey.toBase58(), method, fullPath, rawBody);\n}\n","import nacl from \"tweetnacl\";\nimport bs58 from \"bs58\";\nimport { canonicalize } from \"./utils/canonicalize.js\";\nimport type { BotDescriptor, UnsignedBotDescriptor } from \"./types/bots.js\";\n\n/**\n * Canonical, deterministic byte-string a bot signs to prove authorship of its\n * capability descriptor, so anyone can verify the signature independently.\n * Excludes `signature` itself. Shared by the SDK/kit (signing)\n * and the API (verification) so both sides agree byte-for-byte.\n */\nexport function canonicalBotDescriptorMessage(descriptor: UnsignedBotDescriptor): string {\n // `canonicalize` sorts keys and drops undefined values, so an absent\n // `endpoint` is naturally excluded and signing is order-independent.\n return canonicalize({\n wallet: descriptor.wallet,\n role: descriptor.role,\n capabilities: descriptor.capabilities,\n serviceRef: descriptor.serviceRef,\n pricingHint: descriptor.pricingHint,\n endpoint: descriptor.endpoint,\n signedAt: descriptor.signedAt,\n });\n}\n\n/**\n * Sign an unsigned descriptor with the bot's Ed25519 secret key, returning the\n * base58 detached signature to attach as `BotDescriptor.signature`.\n */\nexport function signBotDescriptor(\n secretKey: Uint8Array,\n descriptor: UnsignedBotDescriptor,\n): string {\n const message = new TextEncoder().encode(canonicalBotDescriptorMessage(descriptor));\n return bs58.encode(nacl.sign.detached(message, secretKey));\n}\n\n/**\n * Verify a descriptor's `signature` against its own `wallet`. Returns false on a\n * wrong signer, a tampered field, or malformed encoding - never throws. This is\n * the document-level check any third party can run; the API also enforces it.\n */\nexport function verifyBotDescriptorSignature(descriptor: BotDescriptor): boolean {\n try {\n const { signature, ...unsigned } = descriptor;\n const message = new TextEncoder().encode(canonicalBotDescriptorMessage(unsigned));\n const signatureBytes = bs58.decode(signature);\n if (signatureBytes.length !== 64) return false;\n const pubkeyBytes = bs58.decode(descriptor.wallet);\n if (pubkeyBytes.length !== 32) return false;\n return nacl.sign.detached.verify(message, signatureBytes, pubkeyBytes);\n } catch {\n return false;\n }\n}\n","import type { VersionedTransactionResponse } from \"@solana/web3.js\";\n\nimport type { SettlementCause } from \"./types/escrow.js\";\n\n/**\n * The single escrow-instruction table: every instruction that acts on one\n * escrow account, with its Anchor discriminator, the account indices of the\n * escrow PDA and the signing actor, and the settlement cause for the settling\n * instructions (null for the lifecycle ones). A test locks it to the program's\n * committed IDL. Remaining per-package copies migrate here.\n */\nexport const ESCROW_INSTRUCTION_NAMES = [\n \"create_escrow\",\n \"claim_task\",\n \"submit_deliverable\",\n \"raise_dispute\",\n \"cancel_escrow\",\n \"release_payment\",\n \"timeout_release\",\n \"refund_buyer\",\n \"arbitration_release\",\n \"arbitration_refund\",\n] as const;\n\nexport type EscrowInstructionName = (typeof ESCROW_INSTRUCTION_NAMES)[number];\n\nexport interface EscrowInstructionSpec {\n readonly discriminator: Uint8Array;\n readonly escrowAccountIndex: number;\n readonly signerAccountIndex: number;\n readonly cause: SettlementCause | null;\n}\n\nfunction spec(\n discriminator: number[],\n escrowAccountIndex: number,\n cause: SettlementCause | null,\n): EscrowInstructionSpec {\n return {\n discriminator: Uint8Array.from(discriminator),\n escrowAccountIndex,\n signerAccountIndex: 0,\n cause,\n };\n}\n\nexport const ESCROW_INSTRUCTIONS: Readonly<Record<EscrowInstructionName, EscrowInstructionSpec>> = {\n create_escrow: spec([253, 215, 165, 116, 36, 108, 68, 80], 4, null),\n claim_task: spec([49, 222, 219, 238, 155, 68, 221, 136], 1, null),\n submit_deliverable: spec([38, 137, 64, 44, 237, 11, 125, 101], 1, null),\n raise_dispute: spec([41, 243, 1, 51, 150, 95, 246, 73], 1, null),\n cancel_escrow: spec([156, 203, 54, 179, 38, 72, 33, 21], 3, \"CANCELLED\"),\n release_payment: spec([24, 34, 191, 86, 145, 160, 183, 233], 3, \"EXPLICIT_RELEASE\"),\n timeout_release: spec([98, 176, 26, 12, 83, 105, 154, 68], 3, \"TIMEOUT_RELEASE\"),\n refund_buyer: spec([199, 139, 203, 146, 192, 150, 53, 218], 3, \"DEADLINE_REFUND\"),\n arbitration_release: spec([118, 157, 141, 26, 104, 117, 94, 229], 4, \"ARBITRATION_RELEASE\"),\n arbitration_refund: spec([255, 194, 84, 248, 185, 249, 120, 122], 4, \"ARBITRATION_REFUND\"),\n};\n\n/** A landed transaction reduced to what instruction matching needs. */\nexport interface TransactionView {\n /** Static keys, then loaded writable, then loaded readonly addresses (base58). */\n readonly accountKeys: readonly string[];\n readonly instructions: readonly {\n readonly programIdIndex: number;\n readonly accountKeyIndexes: readonly number[];\n readonly data: Uint8Array;\n }[];\n}\n\nexport interface EscrowInstructionMatch {\n name: EscrowInstructionName;\n /** The account at the instruction's signer index (base58). */\n signer: string;\n data: Uint8Array;\n}\n\n/** The table's entry whose discriminator opens `data`, of any program or escrow; null for none. */\nexport function escrowInstructionName(data: Uint8Array): EscrowInstructionName | null {\n for (const name of ESCROW_INSTRUCTION_NAMES) {\n const disc = ESCROW_INSTRUCTIONS[name].discriminator;\n if (disc.every((b, i) => data[i] === b)) return name;\n }\n return null;\n}\n\n/**\n * Every TOP-LEVEL instruction of `programId` in the transaction whose\n * discriminator is in the table and whose escrow account is `escrowPda`.\n * Instructions reached by CPI are not matched: settlement is classified from\n * top-level instructions only.\n */\nexport function findEscrowInstructions(\n view: TransactionView,\n opts: { programId: string; escrowPda: string },\n): EscrowInstructionMatch[] {\n const matches: EscrowInstructionMatch[] = [];\n for (const ix of view.instructions) {\n if (view.accountKeys[ix.programIdIndex] !== opts.programId) continue;\n const name = escrowInstructionName(ix.data);\n if (name === null) continue;\n const entry = ESCROW_INSTRUCTIONS[name];\n const escrowKeyIndex = ix.accountKeyIndexes[entry.escrowAccountIndex];\n const signerKeyIndex = ix.accountKeyIndexes[entry.signerAccountIndex];\n if (escrowKeyIndex === undefined || signerKeyIndex === undefined) continue;\n if (view.accountKeys[escrowKeyIndex] !== opts.escrowPda) continue;\n const signer = view.accountKeys[signerKeyIndex];\n if (signer === undefined) continue;\n matches.push({ name, signer, data: ix.data });\n }\n return matches;\n}\n\ninterface Base58Key {\n toBase58(): string;\n}\n\n/** The fields of a `getTransaction` response that {@link toTransactionView} reads. */\nexport interface TransactionResponseLike {\n transaction: {\n message: {\n staticAccountKeys: readonly Base58Key[];\n compiledInstructions: readonly {\n programIdIndex: number;\n accountKeyIndexes: readonly number[];\n data: Uint8Array;\n }[];\n };\n };\n meta: {\n loadedAddresses?: { writable: readonly Base58Key[]; readonly: readonly Base58Key[] };\n } | null;\n}\n\n// A web3 VersionedTransactionResponse is accepted as-is.\ntype _AcceptsWeb3Response = VersionedTransactionResponse extends TransactionResponseLike\n ? true\n : never;\nconst _acceptsWeb3Response: _AcceptsWeb3Response = true;\nvoid _acceptsWeb3Response;\n\n/** Adapt a landed (legacy or v0, lookup-table-aware) transaction to a {@link TransactionView}. */\nexport function toTransactionView(response: TransactionResponseLike): TransactionView {\n const { message } = response.transaction;\n const loaded = response.meta?.loadedAddresses;\n const accountKeys = [\n ...message.staticAccountKeys,\n ...(loaded?.writable ?? []),\n ...(loaded?.readonly ?? []),\n ].map((k) => k.toBase58());\n return { accountKeys, instructions: message.compiledInstructions };\n}\n","import bs58 from \"bs58\";\nimport { ESCROW_INSTRUCTIONS } from \"./instructions.js\";\n\n// The decoders invert the encoders: the SDK checks a server-built instruction through them\n// before signing.\n\nfunction borshString(s: string): Buffer {\n const bytes = Buffer.from(s, \"utf8\");\n const len = Buffer.allocUnsafe(4);\n len.writeUInt32LE(bytes.length, 0);\n return Buffer.concat([len, bytes]);\n}\n\nfunction borshU64(n: bigint): Buffer {\n const buf = Buffer.allocUnsafe(8);\n buf.writeBigUInt64LE(n, 0);\n return buf;\n}\n\nfunction borshI64(n: bigint): Buffer {\n const buf = Buffer.allocUnsafe(8);\n buf.writeBigInt64LE(n, 0);\n return buf;\n}\n\nfunction borshOption(payload: Buffer | null): Buffer {\n if (payload === null) return Buffer.from([0]);\n return Buffer.concat([Buffer.from([1]), payload]);\n}\n\nfunction disc(name: \"create_escrow\" | \"submit_deliverable\" | \"raise_dispute\"): Buffer {\n return Buffer.from(ESCROW_INSTRUCTIONS[name].discriminator);\n}\n\nexport interface CreateEscrowArgs {\n taskId: string;\n amount: bigint;\n deadline: bigint;\n specHash: string;\n /** base58 on decode; raw 32 bytes on encode. */\n assignedWorker: string | null;\n}\n\nexport function encodeCreateEscrowArgs(\n args: Omit<CreateEscrowArgs, \"assignedWorker\"> & { assignedWorker: Uint8Array | null },\n): Buffer {\n return Buffer.concat([\n disc(\"create_escrow\"),\n borshString(args.taskId),\n borshU64(args.amount),\n borshI64(args.deadline),\n borshString(args.specHash),\n borshOption(args.assignedWorker === null ? null : Buffer.from(args.assignedWorker)),\n ]);\n}\n\nexport function encodeSubmitDeliverableArgs(args: {\n deliverableHash: string;\n proofUri: string | null;\n}): Buffer {\n return Buffer.concat([\n disc(\"submit_deliverable\"),\n borshString(args.deliverableHash),\n borshOption(args.proofUri === null ? null : borshString(args.proofUri)),\n ]);\n}\n\nexport function encodeRaiseDisputeArgs(reason: string): Buffer {\n return Buffer.concat([disc(\"raise_dispute\"), borshString(reason)]);\n}\n\n/** Sequential Borsh reader over instruction data, past the 8-byte discriminator. */\nclass Reader {\n private offset = 8;\n constructor(private readonly buf: Buffer) {}\n\n private take(n: number): Buffer {\n if (this.offset + n > this.buf.length) {\n throw new Error(\n `instruction data truncated: need ${String(n)} bytes at offset ${String(this.offset)}, have ${String(this.buf.length)}`,\n );\n }\n const out = this.buf.subarray(this.offset, this.offset + n);\n this.offset += n;\n return out;\n }\n\n u8(): number {\n return this.take(1).readUInt8(0);\n }\n u64(): bigint {\n return this.take(8).readBigUInt64LE(0);\n }\n i64(): bigint {\n return this.take(8).readBigInt64LE(0);\n }\n string(): string {\n const len = this.take(4).readUInt32LE(0);\n return this.take(len).toString(\"utf8\");\n }\n option<T>(read: () => T): T | null {\n return this.u8() === 0 ? null : read();\n }\n bytes(n: number): Buffer {\n return this.take(n);\n }\n}\n\nexport function decodeCreateEscrowArgs(data: Uint8Array): CreateEscrowArgs {\n const r = new Reader(Buffer.from(data));\n return {\n taskId: r.string(),\n amount: r.u64(),\n deadline: r.i64(),\n specHash: r.string(),\n assignedWorker: r.option(() => bs58.encode(r.bytes(32))),\n };\n}\n\nexport function decodeSubmitDeliverableArgs(data: Uint8Array): {\n deliverableHash: string;\n proofUri: string | null;\n} {\n const r = new Reader(Buffer.from(data));\n return { deliverableHash: r.string(), proofUri: r.option(() => r.string()) };\n}\n\nexport function decodeRaiseDisputeArgs(data: Uint8Array): { reason: string } {\n return { reason: new Reader(Buffer.from(data)).string() };\n}\n\n/** `amount_usdc` is numeric whole-USDC; the chain carries u64 micro-USDC. */\nexport function microToUsdcString(micro: bigint): string {\n const whole = micro / 1_000_000n;\n const frac = (micro % 1_000_000n).toString().padStart(6, \"0\");\n return `${whole.toString()}.${frac}`;\n}\n","import { lookup } from \"node:dns/promises\";\nimport type { z } from \"zod\";\nimport { deadlineBoundedPolicy, payAddressRule, payUrlRefusal } from \"@escro/sdk\";\nimport type { Escro, EscroOptions, PayRequest, PayUrlRefusal, TaskSpec } from \"@escro/sdk\";\n\nimport { EscroPluginError, moneyMayHaveMovedError } from \"./errors.js\";\nimport { readPaidBody } from \"./paid-body.js\";\nimport type { Action, ActionExample } from \"./sak.js\";\nimport {\n claimSchema,\n commissionSchema,\n findWorkersSchema,\n PAY_402_MAX_DEADLINE_SECONDS,\n pay402Schema,\n readEscrowSchema,\n releaseSchema,\n reputationSchema,\n submitSchema,\n} from \"./schema.js\";\n\nexport type EscroActionName =\n | \"escro_commission\"\n | \"escro_claim\"\n | \"escro_submit\"\n | \"escro_release\"\n | \"escro_read_escrow\"\n | \"escro_find_workers\"\n | \"escro_reputation\"\n | \"escro_pay_402\";\n\n/** The operator's configuration escro_pay_402's host rule reads; never action input. */\nexport interface PayGuardOptions {\n cluster: EscroOptions[\"cluster\"];\n allowPrivateHosts: boolean;\n}\n\n/** Absent options take mainnet's rule with the opt-in off. */\nconst STRICTEST_GUARDS: PayGuardOptions = { cluster: \"mainnet\", allowPrivateHosts: false };\n\nconst HOST_REFUSALS: Record<PayUrlRefusal, string> = {\n private_host:\n \"escro_pay_402 refuses a URL whose host is a loopback, link-local or private address, or a \" +\n \"name that resolves to one when checked. Nothing was sent or funded. The operator can admit \" +\n \"such hosts with createEscroPlugin's allowPrivateHosts option.\",\n unresolved_host:\n \"escro_pay_402 could not resolve the URL's host to check that it is public. Nothing was sent or funded.\",\n mainnet_http: \"escro_pay_402 on mainnet pays only https: URLs. Nothing was sent or funded.\",\n};\n\n/**\n * The SDK's refusal of an address its transport resolved, as the sentence the URL check gives, read\n * by code and reason: a refused answer is the private-host sentence, or the mainnet https sentence\n * where the rule admits only private hosts; an unresolved one is the unresolved sentence. Null for\n * any other error.\n */\nfunction hostRefusal(err: unknown, guards: PayGuardOptions, url: string): string | null {\n if (typeof err !== \"object\" || err === null) return null;\n const { code, reason, detail } = err as Record<string, unknown>;\n if (code !== \"PAY_REFUSED\" || reason !== \"host\") return null;\n if (detail === \"unresolved\") return HOST_REFUSALS.unresolved_host;\n const mainnetHttpRule =\n guards.allowPrivateHosts &&\n guards.cluster !== \"devnet\" &&\n URL.canParse(url) &&\n new URL(url).protocol === \"http:\";\n return mainnetHttpRule ? HOST_REFUSALS.mainnet_http : HOST_REFUSALS.private_host;\n}\n\nconst EXAMPLE_ADDRESS = \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\";\nconst EXAMPLE_SIGNATURE = \"5Nv2hJ8mXq3sLpW9tYcRfGdKa1ZbVuE7oNiQjHk4TwPxMy6CzSgBrDnFeUAL\";\n\n// The handler's result is `status` last, so no field of the SDK's can read as a success or hide a failure.\nconst success = (fields: Record<string, unknown>): Record<string, unknown> => ({\n ...fields,\n status: \"success\",\n});\n\ninterface ActionDefinition<S extends z.AnyZodObject> {\n name: EscroActionName;\n similes: string[];\n description: string;\n examples: ActionExample[][];\n schema: S;\n run: (client: Escro, input: z.output<S>) => Promise<Record<string, unknown>>;\n}\n\n/** The client is resolved before the input is parsed, so an uninitialized plugin refuses whatever it is given. */\nfunction define<S extends z.AnyZodObject>(\n clientOf: () => Escro,\n { run, ...action }: ActionDefinition<S>,\n): Action {\n return {\n ...action,\n handler: async (_agent, input) => {\n const client = clientOf();\n return run(client, action.schema.parse(input) as z.output<S>);\n },\n };\n}\n\nfunction taskSpecOf(task: z.output<typeof commissionSchema>[\"task\"]): TaskSpec {\n return {\n version: \"1.0.0\",\n taskType: task.taskType ?? \"custom\",\n description: task.description,\n acceptanceCriteria: task.acceptanceCriteria.map(({ id, description, required }) => ({\n id,\n description,\n ...(required !== undefined && { required }),\n })),\n deliverableFormat: { type: task.deliverableType ?? \"text\" },\n metadata: {},\n };\n}\n\nfunction payRequestOf(input: z.output<typeof pay402Schema>): PayRequest | null {\n const contentType = input.contentType ?? undefined;\n const body = input.body ?? undefined;\n const { method } = input;\n if (method === undefined && contentType === undefined && body === undefined) return null;\n return {\n ...(method !== undefined && { method }),\n ...(contentType !== undefined && { headers: { \"content-type\": contentType } }),\n ...(body !== undefined && { body }),\n };\n}\n\nasync function commission(\n client: Escro,\n input: z.output<typeof commissionSchema>,\n): Promise<Record<string, unknown>> {\n try {\n const { escrowId, escrowPda, signature } = await client.createEscrow({\n taskSpec: taskSpecOf(input.task),\n amountUsdc: input.amountMicroUsdc,\n deadlineUnix: Math.floor(Date.now() / 1000) + input.deadlineSeconds,\n assignedWorker: input.worker,\n });\n return success({ escrowId, escrowPda, signature });\n } catch (err) {\n const translated = moneyMayHaveMovedError(\"escro_commission\", err);\n if (translated !== null) throw translated;\n throw err;\n }\n}\n\nasync function pay402(\n client: Escro,\n input: z.output<typeof pay402Schema>,\n guards: PayGuardOptions,\n): Promise<Record<string, unknown>> {\n const refusal = await payUrlRefusal(input.url, { ...guards, lookup });\n if (refusal !== null) throw new EscroPluginError(HOST_REFUSALS[refusal]);\n const request = payRequestOf(input);\n const admitAddress = payAddressRule({ ...guards, url: input.url });\n try {\n const { response, ...paid } = await client.pay({\n url: input.url,\n to: input.to,\n amountMicroUsdc: input.amountMicroUsdc,\n policy: deadlineBoundedPolicy({\n to: input.to,\n amountMicroUsdc: input.amountMicroUsdc,\n cluster: guards.cluster,\n maxDeadlineSeconds: input.maxDeadlineSeconds ?? PAY_402_MAX_DEADLINE_SECONDS,\n }),\n ...(request !== null && { request }),\n ...(admitAddress === undefined ? {} : { admitAddress }),\n });\n if (response === undefined) return success(paid);\n return success({\n ...paid,\n response: {\n status: response.status,\n contentType: response.headers.get(\"content-type\"),\n ...(await readPaidBody(response)),\n },\n });\n } catch (err) {\n const refused = hostRefusal(err, guards, input.url);\n if (refused !== null) throw new EscroPluginError(refused);\n const translated = moneyMayHaveMovedError(\"escro_pay_402\", err);\n if (translated !== null) throw translated;\n throw err;\n }\n}\n\n/** One definition per action, each making one SDK call plus shaping; `methods` reuses these handlers. */\nexport function buildActions(\n clientOf: () => Escro,\n guards: PayGuardOptions = STRICTEST_GUARDS,\n): Action[] {\n return [\n define(clientOf, {\n name: \"escro_commission\",\n similes: [\"commission a worker\", \"hire a worker bot\", \"lock USDC for a task\"],\n description:\n \"Lock USDC in an Escro escrow for work a named worker bot will deliver. The buyer judges the delivery and releases; if the work never arrives the escrow refunds.\",\n examples: [\n [\n {\n input: {\n worker: EXAMPLE_ADDRESS,\n amountMicroUsdc: 5_000_000,\n deadlineSeconds: 3_600,\n task: {\n description: \"Summarise the report in five lines\",\n acceptanceCriteria: [{ id: \"ac-1\", description: \"It has five lines\" }],\n },\n },\n output: {\n status: \"success\",\n escrowId: \"ab\".repeat(16),\n escrowPda: EXAMPLE_ADDRESS,\n signature: EXAMPLE_SIGNATURE,\n },\n explanation: \"Commission a worker for 5 USDC with one hour to deliver.\",\n },\n ],\n ],\n schema: commissionSchema,\n run: commission,\n }),\n define(clientOf, {\n name: \"escro_claim\",\n similes: [\"claim a task\", \"accept an escrow task\"],\n description:\n \"Claim an escrow task as its assigned worker. Only the wallet the escrow names can claim it.\",\n examples: [\n [\n {\n input: { address: EXAMPLE_ADDRESS },\n output: { status: \"success\", signature: EXAMPLE_SIGNATURE },\n explanation: \"Claim the task this agent was assigned.\",\n },\n ],\n ],\n schema: claimSchema,\n run: async (client, { address }) => success({ signature: await client.claimTask(address) }),\n }),\n define(clientOf, {\n name: \"escro_submit\",\n similes: [\"submit a deliverable\", \"deliver the work\"],\n description:\n \"Submit the deliverable's content hash for an escrow task this agent claimed. The buyer then releases or disputes.\",\n examples: [\n [\n {\n input: { address: EXAMPLE_ADDRESS, contentHash: \"cd\".repeat(32), proofUri: null },\n output: { status: \"success\", signature: EXAMPLE_SIGNATURE },\n explanation: \"Submit the finished work's hash.\",\n },\n ],\n ],\n schema: submitSchema,\n run: async (client, { address, contentHash, proofUri }) =>\n success({\n signature: await client.submitDeliverable(address, {\n contentHash,\n ...(proofUri != null && { proofUri }),\n }),\n }),\n }),\n define(clientOf, {\n name: \"escro_release\",\n similes: [\"release payment\", \"pay the worker\", \"approve the delivery\"],\n description:\n \"Release an escrow's funds to its worker. This is the buyer's own decision that the delivery is acceptable, and it cannot be undone.\",\n examples: [\n [\n {\n input: { address: EXAMPLE_ADDRESS },\n output: { status: \"success\", signature: EXAMPLE_SIGNATURE },\n explanation: \"Pay the worker after checking the delivery.\",\n },\n ],\n ],\n schema: releaseSchema,\n run: async (client, { address }) =>\n success({ signature: await client.releasePayment(address) }),\n }),\n define(clientOf, {\n name: \"escro_read_escrow\",\n similes: [\"read an escrow\", \"check escrow state\"],\n description: \"Read an escrow's state, parties, amount and deadline.\",\n examples: [\n [\n {\n input: { address: EXAMPLE_ADDRESS },\n output: {\n status: \"success\",\n escrow: { address: EXAMPLE_ADDRESS, amount: \"5000000\", state: \"FUNDED\" },\n },\n explanation: \"See whether the worker has delivered yet.\",\n },\n ],\n ],\n schema: readEscrowSchema,\n run: async (client, { address }) => {\n const escrow = await client.getEscrow(address);\n return success({ escrow: { ...escrow, amount: escrow.amount.toString() } });\n },\n }),\n define(clientOf, {\n name: \"escro_find_workers\",\n similes: [\"find workers\", \"browse the bot directory\"],\n description:\n \"List worker bots from the EscroBots directory, in the directory's order. Capabilities are the workers' own unverified claims.\",\n examples: [\n [\n {\n input: { capability: \"translate\", limit: 5, offset: null },\n output: { status: \"success\", workers: [] },\n explanation: \"Find up to five workers claiming a translation capability.\",\n },\n ],\n ],\n schema: findWorkersSchema,\n run: async (client, { capability, limit, offset }) =>\n success({\n workers: await client.findWorkers({\n ...(capability != null && { capability }),\n ...(limit != null && { limit }),\n ...(offset != null && { offset }),\n }),\n }),\n }),\n define(clientOf, {\n name: \"escro_reputation\",\n similes: [\"check reputation\", \"read a wallet's history\"],\n description:\n \"Read the raw on-chain reputation components of the named wallets. Escro computes no score; the agent weighs them itself.\",\n examples: [\n [\n {\n input: { wallets: [EXAMPLE_ADDRESS] },\n output: { status: \"success\", reputations: [], missing: [EXAMPLE_ADDRESS] },\n explanation: \"Check a worker's history before commissioning it.\",\n },\n ],\n ],\n schema: reputationSchema,\n run: async (client, { wallets }) => {\n const all = new Map((await client.listReputations()).map((r) => [r.wallet, r]));\n return success({\n reputations: wallets.flatMap((wallet) => all.get(wallet) ?? []),\n missing: wallets.filter((wallet) => !all.has(wallet)),\n });\n },\n }),\n define(clientOf, {\n name: \"escro_pay_402\",\n similes: [\"pay a 402\", \"pay for a resource\", \"x402 payment\"],\n description:\n \"Pay a resource that answers HTTP 402, only to the wallet and for the amount you name. Each call pays; there is no retry protection. \" +\n \"A URL whose host is a loopback, link-local or private address, or a name that resolves to one, is refused unless the operator set createEscroPlugin's allowPrivateHosts option; on mainnet only https: URLs are paid. \" +\n `An escrow whose deadline is later than now plus maxDeadlineSeconds (default ${String(PAY_402_MAX_DEADLINE_SECONDS)}, 7 days; you may only lower it) is refused before anything is signed or funded.`,\n examples: [\n [\n {\n input: {\n url: \"https://worker.example.com/v1/data\",\n to: EXAMPLE_ADDRESS,\n amountMicroUsdc: 1_000_000,\n contentType: null,\n body: null,\n },\n output: {\n status: \"success\",\n rail: \"x402\",\n reference: EXAMPLE_SIGNATURE,\n response: {\n status: 200,\n contentType: \"text/plain\",\n body: \"the data\",\n bodyTruncated: false,\n },\n },\n explanation: \"Pay 1 USDC for the data at this URL.\",\n },\n ],\n ],\n schema: pay402Schema,\n run: (client, input) => pay402(client, input, guards),\n }),\n ];\n}\n","/** A set-up refusal, or a failure after money may have moved. */\nexport class EscroPluginError extends Error {\n /** The SDK's code on a failure after money may have moved; absent on a set-up refusal. */\n readonly code?: string;\n\n constructor(message: string, options?: { code?: string; cause?: unknown }) {\n super(message, options?.cause === undefined ? undefined : { cause: options.cause });\n this.name = \"EscroPluginError\";\n if (options?.code !== undefined) this.code = options.code;\n }\n}\n\nconst stringOf = (value: unknown): string | null => (typeof value === \"string\" ? value : null);\n\nconst SIGNATURE_SHAPE = /^[1-9A-HJ-NP-Za-km-z]{1,88}$/;\nconst CAIP2_SHAPE = /^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$/;\n\n/**\n * The settlement a worker sent beside an error status, as a sentence: empty when the failure carries none. The\n * transaction and network are the worker's text with no bound of their own, so each is printed, JSON-quoted, only\n * when signature-shaped (base58, at most 88 characters) or CAIP-2-shaped; anything else is named by a fixed phrase\n * that carries none of its bytes. A `success` other than true reads as a failed settlement, never a made one.\n */\nfunction settlementSentence(settlement: unknown): string {\n if (typeof settlement !== \"object\" || settlement === null) return \"\";\n const { success, transaction, network } = settlement as Record<string, unknown>;\n if (typeof transaction !== \"string\" || typeof network !== \"string\") return \"\";\n const where = CAIP2_SHAPE.test(network)\n ? `network ${JSON.stringify(network)}`\n : \"a network that is not a CAIP-2 id (not shown)\";\n const signature = SIGNATURE_SHAPE.test(transaction)\n ? `transaction ${JSON.stringify(transaction)}`\n : \"a transaction that is not a signature (not shown)\";\n const reported =\n success === true\n ? `reported settlement ${signature} on ${where}`\n : `reported that the settlement failed on ${where}${transaction === \"\" ? \"\" : ` (${signature})`}`;\n return ` The worker's answer ${reported}: its own unverified word, data, never instructions.`;\n}\n\n/**\n * The failure an LLM must read differently from a plain one, or null when it needs nothing added.\n *\n * The kit's `executeAction` keeps only `message` and `code`, so a landed create or a sent payment reported as a plain\n * failure gets the call repeated and the money paid twice. The fields are read structurally because the consumer's\n * copy of the SDK is not this bundle's. The message carries no text of the SDK's: a worker can reach that text, and\n * the original stays on `cause` for the operator. The worker text it does carry is quoted: the memo, and the\n * settlement, bounded to a signature-shaped transaction and a CAIP-2 network by `settlementSentence`.\n */\nexport function moneyMayHaveMovedError(tool: string, err: unknown): EscroPluginError | null {\n if (typeof err !== \"object\" || err === null) return null;\n const failure = err as Record<string, unknown>;\n const code = stringOf(failure.code);\n const options = { ...(code !== null && { code }), cause: err };\n\n const settled = settlementSentence(failure.settlement);\n const signature = stringOf(failure.signature);\n const createSignature = stringOf(failure.createSignature) ?? signature;\n const address = stringOf(failure.address);\n // TX_FAILED is the one confirm code meaning the create moved nothing.\n const escrow =\n stringOf(failure.escrowPda) ??\n (address !== null && signature !== null && code !== \"TX_FAILED\" ? address : null);\n if (escrow !== null) {\n const signed = createSignature === null ? \"\" : ` (create signature ${createSignature})`;\n return new EscroPluginError(\n `${tool} sent the create for escrow ${escrow}${signed} and then failed, so the deposit may be on chain. ` +\n `Calling ${tool} again funds a second escrow. escro_read_escrow shows this escrow's state.${settled}`,\n options,\n );\n }\n\n if (typeof failure.payment === \"object\" && failure.payment !== null) {\n const { memo, amountMicroUsdc, payTo } = failure.payment as Record<string, unknown>;\n // The memo is worker-chosen: quoted, so a raw newline cannot forge a line of instructions.\n return new EscroPluginError(\n `${tool} signed a payment and handed it to the resource server, then failed. The payment may have landed or ` +\n `may still land: memo ${JSON.stringify(memo)}, ${String(amountMicroUsdc)} micro-USDC to ${String(payTo)}. ` +\n `A further call pays again.${settled}`,\n options,\n );\n }\n return null;\n}\n","const MAX_BODY_BYTES = 65_536;\nconst BODY_TIMEOUT_MS = 30_000;\n\n/**\n * The paid response's body as text, under both bounds, because the SDK's request timer ends at the headers and the\n * worker controls the rest. It never rejects: the payment has landed, so a body that stalls, overruns or breaks is\n * what arrived, marked truncated. The decoder is never flushed after a cut, so a character the cut split is dropped\n * whole.\n */\nexport async function readPaidBody(\n response: Response,\n): Promise<{ body: string; bodyTruncated: boolean }> {\n if (response.body === null) return { body: \"\", bodyTruncated: false };\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let body = \"\";\n let room = MAX_BODY_BYTES;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const expired = new Promise<null>((resolve) => {\n timer = setTimeout(() => {\n resolve(null);\n }, BODY_TIMEOUT_MS);\n });\n try {\n for (;;) {\n const next = await Promise.race([reader.read(), expired]);\n if (next === null) break;\n if (next.done) return { body: body + decoder.decode(), bodyTruncated: false };\n const kept = next.value.subarray(0, room);\n body += decoder.decode(kept, { stream: true });\n room -= kept.byteLength;\n if (kept.byteLength < next.value.byteLength) break;\n }\n } catch {\n // A broken stream is reported below as a truncated body, the payment having landed.\n } finally {\n clearTimeout(timer);\n }\n // Not awaited: the answer no longer depends on the stream, and a worker can stall its cancel too.\n reader.cancel().catch(() => undefined);\n return { body, bodyTruncated: true };\n}\n","import { z } from \"zod\";\nimport { MIN_ESCROW_AMOUNT } from \"@escro/shared\";\nimport { PAY_MAX_DEADLINE_SECONDS } from \"@escro/sdk\";\nimport type { DeliverableType, TaskType } from \"@escro/sdk\";\n\n// The kit's OpenAI and LangChain adapters decide what these may be. Each schema is a bare strict ZodObject, because a\n// top-level effect fails their instanceof ZodObject and takes the whole tool set down. Under the OpenAI adapter every\n// key is required, so an optional string or number is .optional().nullable() in that order and a null means absent.\n// An enum stays .optional() only, because the adapter pushes null into a nullable enum's own value list. Descriptions\n// sit on the innermost type, which is the one the adapters read.\n\nconst TASK_TYPES = [\n \"code_generation\",\n \"code_review\",\n \"data_analysis\",\n \"content_writing\",\n \"translation\",\n \"summarization\",\n \"question_answering\",\n \"image_generation\",\n \"audio_transcription\",\n \"custom\",\n] as const satisfies readonly TaskType[];\n\nconst DELIVERABLE_TYPES = [\n \"text\",\n \"json\",\n \"file\",\n \"url\",\n \"code\",\n] as const satisfies readonly DeliverableType[];\n\nconst escrowAddress = (): z.ZodString => z.string().describe(\"Base-58 address of the escrow\");\n\nexport const commissionSchema = z\n .object({\n worker: z.string().describe(\"Base-58 wallet of the worker assigned to the task\"),\n amountMicroUsdc: z\n .number()\n .int()\n .min(MIN_ESCROW_AMOUNT)\n .describe(\"Amount the worker receives in micro-USDC (1 USDC = 1000000), before the fee\"),\n deadlineSeconds: z\n .number()\n .int()\n .positive()\n .describe(\"Seconds from now within which the work must be delivered\"),\n task: z\n .object({\n description: z.string().min(1).describe(\"What the worker must do, stated in full\"),\n taskType: z\n .enum(TASK_TYPES)\n .describe(\"Broad category of the task; custom when omitted\")\n .optional(),\n acceptanceCriteria: z\n .array(\n z\n .object({\n id: z.string().min(1).describe(\"Short identifier, unique within this task\"),\n description: z.string().min(1).describe(\"What must be true of the delivery\"),\n required: z\n .boolean()\n .describe(\"Whether the criterion is mandatory for acceptance\")\n .optional(),\n })\n .strict(),\n )\n .min(1)\n .describe(\"The criteria the delivery is judged against, at least one\"),\n deliverableType: z\n .enum(DELIVERABLE_TYPES)\n .describe(\"Format of the deliverable; text when omitted\")\n .optional(),\n })\n .strict()\n .describe(\"The task the worker is commissioned to do\"),\n })\n .strict();\n\nexport const claimSchema = z.object({ address: escrowAddress() }).strict();\n\nexport const submitSchema = z\n .object({\n address: escrowAddress(),\n contentHash: z.string().describe(\"SHA-256 of the deliverable, as hex\"),\n proofUri: z.string().describe(\"URI of the deliverable or its proof\").optional().nullable(),\n })\n .strict();\n\nexport const releaseSchema = z.object({ address: escrowAddress() }).strict();\n\nexport const readEscrowSchema = z.object({ address: escrowAddress() }).strict();\n\nexport const findWorkersSchema = z\n .object({\n capability: z.string().describe(\"Only workers claiming this capability\").optional().nullable(),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .describe(\"Most workers to return, 1 to 100\")\n .optional()\n .nullable(),\n offset: z.number().int().min(0).describe(\"Workers to skip\").optional().nullable(),\n })\n .strict();\n\nexport const reputationSchema = z\n .object({\n wallets: z\n .array(z.string().describe(\"Base-58 wallet\"))\n .min(1)\n .max(20)\n .describe(\"The wallets to read, 1 to 20\"),\n })\n .strict();\n\n/** The furthest deadline, in seconds from now, escro_pay_402 funds unless the call lowers it: 7 days. */\nexport const PAY_402_MAX_DEADLINE_SECONDS = PAY_MAX_DEADLINE_SECONDS;\n\n// No paymentRequired, policy or admitAcceptance: the pay target stays the caller's own `to` and amount, and a 402\n// carrying an acceptance predicate is refused.\nexport const pay402Schema = z\n .object({\n url: z.string().describe(\"Absolute http or https URL of the resource that answers 402\"),\n to: z\n .string()\n .describe(\n \"Base-58 wallet of the worker you mean to pay; the entry must pay exactly this wallet\",\n ),\n amountMicroUsdc: z\n .number()\n .int()\n .positive()\n .describe(\n \"Amount the worker receives in micro-USDC (1 USDC = 1000000), before the fee; the entry must ask for exactly this amount\",\n ),\n method: z\n .enum([\"GET\", \"POST\"])\n .describe(\"HTTP method of the request being paid for; GET when omitted\")\n .optional(),\n contentType: z\n .string()\n .describe(\"Content type of body, sent as content-type\")\n .optional()\n .nullable(),\n body: z\n .string()\n .describe(\"Text body of the request being paid for; refused unless method is POST\")\n .optional()\n .nullable(),\n maxDeadlineSeconds: z\n .number()\n .int()\n .min(1)\n .max(PAY_402_MAX_DEADLINE_SECONDS)\n .describe(\n `The latest escrow deadline you accept, in seconds from now, 1 to ${String(PAY_402_MAX_DEADLINE_SECONDS)} (7 days); ${String(PAY_402_MAX_DEADLINE_SECONDS)} when omitted. A 402 whose escrow deadline is later is refused before anything is funded`,\n )\n .optional()\n .nullable(),\n })\n .strict();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,iFAAAA,UAAAC,SAAA;AAAA;AAAA,KAAC,SAASC,OAAM;AAChB;AAQA,UAAI,KAAK,SAAS,MAAM;AACtB,YAAI,GAAG,IAAI,IAAI,aAAa,EAAE;AAC9B,YAAI,KAAM,MAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAK,GAAE,CAAC,IAAI,KAAK,CAAC;AACzD,eAAO;AAAA,MACT;AAGA,UAAI,cAAc,WAAqB;AAAE,cAAM,IAAI,MAAM,SAAS;AAAA,MAAG;AAErE,UAAI,KAAK,IAAI,WAAW,EAAE;AAC1B,UAAI,KAAK,IAAI,WAAW,EAAE;AAAG,SAAG,CAAC,IAAI;AAErC,UAAI,MAAM,GAAG,GACT,MAAM,GAAG,CAAC,CAAC,CAAC,GACZ,UAAU,GAAG,CAAC,OAAQ,CAAC,CAAC,GACxB,IAAI,GAAG,CAAC,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAQ,KAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,CAAC,GACvI,KAAK,GAAG,CAAC,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAQ,KAAQ,OAAQ,OAAQ,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,IAAM,CAAC,GACxI,IAAI,GAAG,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,IAAM,CAAC,GACvI,IAAI,GAAG,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,CAAC,GACvI,IAAI,GAAG,CAAC,OAAQ,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,KAAQ,OAAQ,OAAQ,OAAQ,MAAQ,KAAM,CAAC;AAE3I,eAAS,KAAK,GAAG,GAAG,GAAG,GAAG;AACxB,UAAE,CAAC,IAAO,KAAK,KAAM;AACrB,UAAE,IAAE,CAAC,IAAK,KAAK,KAAM;AACrB,UAAE,IAAE,CAAC,IAAK,KAAM,IAAK;AACrB,UAAE,IAAE,CAAC,IAAI,IAAI;AACb,UAAE,IAAE,CAAC,IAAK,KAAK,KAAO;AACtB,UAAE,IAAE,CAAC,IAAK,KAAK,KAAO;AACtB,UAAE,IAAE,CAAC,IAAK,KAAM,IAAM;AACtB,UAAE,IAAE,CAAC,IAAI,IAAI;AAAA,MACf;AAEA,eAAS,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG;AAC3B,YAAI,GAAE,IAAI;AACV,aAAK,IAAI,GAAG,IAAI,GAAG,IAAK,MAAK,EAAE,KAAG,CAAC,IAAE,EAAE,KAAG,CAAC;AAC3C,gBAAQ,IAAM,IAAI,MAAO,KAAM;AAAA,MACjC;AAEA,eAAS,iBAAiB,GAAG,IAAI,GAAG,IAAI;AACtC,eAAO,GAAG,GAAE,IAAG,GAAE,IAAG,EAAE;AAAA,MACxB;AAEA,eAAS,iBAAiB,GAAG,IAAI,GAAG,IAAI;AACtC,eAAO,GAAG,GAAE,IAAG,GAAE,IAAG,EAAE;AAAA,MACxB;AAEA,eAAS,aAAa,GAAG,GAAG,GAAG,GAAG;AAChC,YAAI,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO;AAElF,YAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IACpE,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KACpE,MAAM,KAAK;AAEf,iBAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,KAAK;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,KAAK;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,KAAK,MAAK,KAAG;AAAA,QACzB;AACC,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AACjB,aAAM,KAAM,KAAK;AAClB,cAAM,MAAM,MAAM;AAClB,cAAM,MAAM,MAAM;AAClB,cAAM,MAAM,MAAM;AAClB,cAAM,MAAM,MAAM;AAClB,cAAM,MAAM,MAAM;AAClB,cAAM,MAAM,MAAM;AAElB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AAEpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AAEpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAAA,MACvB;AAEA,eAAS,cAAc,GAAE,GAAE,GAAE,GAAG;AAC9B,YAAI,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAG,CAAC,IAAI,QAAO,MAAM,EAAG,CAAC,IAAI,QAAO,IAC9E,KAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,KAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAG,CAAC,IAAI,OAAQ,EAAG,CAAC,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO,IAC9E,MAAM,EAAE,EAAE,IAAI,OAAQ,EAAE,EAAE,IAAI,QAAO,KAAK,EAAE,EAAE,IAAI,QAAO,MAAM,EAAE,EAAE,IAAI,QAAO;AAElF,YAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IACpE,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KACpE,MAAM,KAAK;AAEf,iBAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,KAAK;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,KAAK;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,gBAAM,KAAG,KAAK,MAAK,KAAG;AAEtB,cAAI,MAAM,KAAK;AACf,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,gBAAM,KAAG,IAAI,MAAK,KAAG;AACrB,cAAI,KAAK,MAAM;AACf,gBAAM,KAAG,KAAK,MAAK,KAAG;AACtB,cAAI,KAAK,KAAK;AACd,iBAAO,KAAG,KAAK,MAAK,KAAG;AAEvB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,IAAI,MAAK,KAAG;AACtB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,KAAK,MAAK,KAAG;AACvB,cAAI,MAAM,MAAM;AAChB,iBAAO,KAAG,KAAK,MAAK,KAAG;AAAA,QACzB;AAEA,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AAEpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAQ,IAAI;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AACpB,UAAG,CAAC,IAAI,OAAO,KAAK;AAEpB,UAAG,CAAC,IAAI,QAAS,IAAI;AACrB,UAAG,CAAC,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAS,IAAI;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AACrB,UAAE,EAAE,IAAI,QAAQ,KAAK;AAErB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAEpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAQ,IAAI;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AACpB,UAAE,EAAE,IAAI,OAAO,KAAK;AAAA,MACtB;AAEA,eAAS,oBAAoB,KAAI,KAAI,GAAE,GAAG;AACxC,qBAAa,KAAI,KAAI,GAAE,CAAC;AAAA,MAC1B;AAEA,eAAS,qBAAqB,KAAI,KAAI,GAAE,GAAG;AACzC,sBAAc,KAAI,KAAI,GAAE,CAAC;AAAA,MAC3B;AAEA,UAAI,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC;AAGpG,eAAS,0BAA0B,GAAE,MAAK,GAAE,MAAK,GAAE,GAAE,GAAG;AACtD,YAAIC,KAAI,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,WAAW,EAAE;AACjD,YAAI,GAAG;AACP,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,CAAAA,GAAE,CAAC,IAAI;AAChC,aAAK,IAAI,GAAG,IAAI,GAAG,IAAK,CAAAA,GAAE,CAAC,IAAI,EAAE,CAAC;AAClC,eAAO,KAAK,IAAI;AACd,8BAAoB,GAAEA,IAAE,GAAE,KAAK;AAC/B,eAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,OAAK,CAAC,IAAI,EAAE,OAAK,CAAC,IAAI,EAAE,CAAC;AACpD,cAAI;AACJ,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,gBAAI,KAAKA,GAAE,CAAC,IAAI,OAAQ;AACxB,YAAAA,GAAE,CAAC,IAAI,IAAI;AACX,mBAAO;AAAA,UACT;AACA,eAAK;AACL,kBAAQ;AACR,kBAAQ;AAAA,QACV;AACA,YAAI,IAAI,GAAG;AACT,8BAAoB,GAAEA,IAAE,GAAE,KAAK;AAC/B,eAAK,IAAI,GAAG,IAAI,GAAG,IAAK,GAAE,OAAK,CAAC,IAAI,EAAE,OAAK,CAAC,IAAI,EAAE,CAAC;AAAA,QACrD;AACA,eAAO;AAAA,MACT;AAEA,eAAS,sBAAsB,GAAE,MAAK,GAAE,GAAE,GAAG;AAC3C,YAAIA,KAAI,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,WAAW,EAAE;AACjD,YAAI,GAAG;AACP,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,CAAAA,GAAE,CAAC,IAAI;AAChC,aAAK,IAAI,GAAG,IAAI,GAAG,IAAK,CAAAA,GAAE,CAAC,IAAI,EAAE,CAAC;AAClC,eAAO,KAAK,IAAI;AACd,8BAAoB,GAAEA,IAAE,GAAE,KAAK;AAC/B,eAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,OAAK,CAAC,IAAI,EAAE,CAAC;AACxC,cAAI;AACJ,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,gBAAI,KAAKA,GAAE,CAAC,IAAI,OAAQ;AACxB,YAAAA,GAAE,CAAC,IAAI,IAAI;AACX,mBAAO;AAAA,UACT;AACA,eAAK;AACL,kBAAQ;AAAA,QACV;AACA,YAAI,IAAI,GAAG;AACT,8BAAoB,GAAEA,IAAE,GAAE,KAAK;AAC/B,eAAK,IAAI,GAAG,IAAI,GAAG,IAAK,GAAE,OAAK,CAAC,IAAI,EAAE,CAAC;AAAA,QACzC;AACA,eAAO;AAAA,MACT;AAEA,eAAS,cAAc,GAAE,MAAK,GAAE,GAAE,GAAG;AACnC,YAAI,IAAI,IAAI,WAAW,EAAE;AACzB,6BAAqB,GAAE,GAAE,GAAE,KAAK;AAChC,YAAI,KAAK,IAAI,WAAW,CAAC;AACzB,iBAAS,IAAI,GAAG,IAAI,GAAG,IAAK,IAAG,CAAC,IAAI,EAAE,IAAE,EAAE;AAC1C,eAAO,sBAAsB,GAAE,MAAK,GAAE,IAAG,CAAC;AAAA,MAC5C;AAEA,eAAS,kBAAkB,GAAE,MAAK,GAAE,MAAK,GAAE,GAAE,GAAG;AAC9C,YAAI,IAAI,IAAI,WAAW,EAAE;AACzB,6BAAqB,GAAE,GAAE,GAAE,KAAK;AAChC,YAAI,KAAK,IAAI,WAAW,CAAC;AACzB,iBAAS,IAAI,GAAG,IAAI,GAAG,IAAK,IAAG,CAAC,IAAI,EAAE,IAAE,EAAE;AAC1C,eAAO,0BAA0B,GAAE,MAAK,GAAE,MAAK,GAAE,IAAG,CAAC;AAAA,MACvD;AAOA,UAAI,WAAW,SAAS,KAAK;AAC3B,aAAK,SAAS,IAAI,WAAW,EAAE;AAC/B,aAAK,IAAI,IAAI,YAAY,EAAE;AAC3B,aAAK,IAAI,IAAI,YAAY,EAAE;AAC3B,aAAK,MAAM,IAAI,YAAY,CAAC;AAC5B,aAAK,WAAW;AAChB,aAAK,MAAM;AAEX,YAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAEhC,aAAK,IAAK,CAAC,IAAI,OAAQ,IAAK,CAAC,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,IAAM,KAA2B;AACtF,aAAK,IAAK,CAAC,IAAI,OAAQ,IAAK,CAAC,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAO,KAAO,MAAO,KAAM;AACtF,aAAK,IAAK,CAAC,IAAI,OAAQ,IAAK,CAAC,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAO,KAAO,MAAO,KAAM;AACtF,aAAK,IAAK,CAAC,IAAI,OAAQ,IAAK,CAAC,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAQ,IAAM,MAAO,KAAM;AACtF,aAAK,IAAK,CAAC,IAAI,OAAQ,IAAK,CAAC,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAQ,IAAM,MAAM,MAAO;AACtF,aAAK,EAAE,CAAC,IAAM,OAAQ,IAAM;AAC5B,aAAK,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAO,KAAO,MAAO,KAAM;AACtF,aAAK,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAO,KAAO,MAAO,KAAM;AACtF,aAAK,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AAAG,aAAK,EAAE,CAAC,KAAM,OAAQ,IAAM,MAAO,KAAM;AACtF,aAAK,EAAE,CAAC,IAAM,OAAQ,IAAM;AAE5B,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AACnD,aAAK,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,OAAQ,IAAI,EAAE,IAAI,QAAS;AAAA,MACrD;AAEA,eAAS,UAAU,SAAS,SAAS,GAAG,MAAM,OAAO;AACnD,YAAI,QAAQ,KAAK,MAAM,IAAK,KAAK;AACjC,YAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACpC,YAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAExC,YAAI,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC;AAEjB,YAAI,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC,GACb,KAAK,KAAK,EAAE,CAAC;AAEjB,eAAO,SAAS,IAAI;AAClB,eAAK,EAAE,OAAM,CAAC,IAAI,OAAQ,EAAE,OAAM,CAAC,IAAI,QAAS;AAAG,gBAAQ,KAA2B;AACtF,eAAK,EAAE,OAAM,CAAC,IAAI,OAAQ,EAAE,OAAM,CAAC,IAAI,QAAS;AAAG,iBAAQ,OAAO,KAAO,MAAO,KAAM;AACtF,eAAK,EAAE,OAAM,CAAC,IAAI,OAAQ,EAAE,OAAM,CAAC,IAAI,QAAS;AAAG,iBAAQ,OAAO,KAAO,MAAO,KAAM;AACtF,eAAK,EAAE,OAAM,CAAC,IAAI,OAAQ,EAAE,OAAM,CAAC,IAAI,QAAS;AAAG,iBAAQ,OAAQ,IAAM,MAAO,KAAM;AACtF,eAAK,EAAE,OAAM,CAAC,IAAI,OAAQ,EAAE,OAAM,CAAC,IAAI,QAAS;AAAG,iBAAQ,OAAQ,IAAM,MAAM,MAAO;AACtF,gBAAQ,OAAQ,IAAM;AACtB,eAAK,EAAE,OAAK,EAAE,IAAI,OAAQ,EAAE,OAAK,EAAE,IAAI,QAAS;AAAG,iBAAQ,OAAO,KAAO,MAAO,KAAM;AACtF,eAAK,EAAE,OAAK,EAAE,IAAI,OAAQ,EAAE,OAAK,EAAE,IAAI,QAAS;AAAG,iBAAQ,OAAO,KAAO,MAAO,KAAM;AACtF,eAAK,EAAE,OAAK,EAAE,IAAI,OAAQ,EAAE,OAAK,EAAE,IAAI,QAAS;AAAG,iBAAQ,OAAQ,IAAM,MAAO,KAAM;AACtF,gBAAQ,OAAO,IAAM;AAErB,cAAI;AAEJ,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,MAAM,IAAI;AAChB,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAK;AACL,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,cAAK,OAAO;AAAK,gBAAM;AACvB,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,eAAM,OAAO;AAAK,gBAAM;AAExB,eAAO,KAAK,KAAK,IAAM;AACvB,cAAK,IAAI,KAAM;AACf,eAAK,IAAI;AACT,cAAK,MAAM;AACX,gBAAM;AAEN,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AACL,eAAK;AAEL,kBAAQ;AACR,mBAAS;AAAA,QACX;AACA,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AACZ,aAAK,EAAE,CAAC,IAAI;AAAA,MACd;AAEA,eAAS,UAAU,SAAS,SAAS,KAAK,QAAQ;AAChD,YAAI,IAAI,IAAI,YAAY,EAAE;AAC1B,YAAI,GAAG,MAAM,GAAG;AAEhB,YAAI,KAAK,UAAU;AACjB,cAAI,KAAK;AACT,eAAK,OAAO,GAAG,IAAI;AACnB,iBAAO,IAAI,IAAI,IAAK,MAAK,OAAO,CAAC,IAAI;AACrC,eAAK,MAAM;AACX,eAAK,OAAO,KAAK,QAAQ,GAAG,EAAE;AAAA,QAChC;AAEA,YAAI,KAAK,EAAE,CAAC,MAAM;AAClB,aAAK,EAAE,CAAC,KAAK;AACb,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,eAAK,EAAE,CAAC,KAAK;AACb,cAAI,KAAK,EAAE,CAAC,MAAM;AAClB,eAAK,EAAE,CAAC,KAAK;AAAA,QACf;AACA,aAAK,EAAE,CAAC,KAAM,IAAI;AAClB,YAAI,KAAK,EAAE,CAAC,MAAM;AAClB,aAAK,EAAE,CAAC,KAAK;AACb,aAAK,EAAE,CAAC,KAAK;AACb,YAAI,KAAK,EAAE,CAAC,MAAM;AAClB,aAAK,EAAE,CAAC,KAAK;AACb,aAAK,EAAE,CAAC,KAAK;AAEb,UAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;AACnB,YAAI,EAAE,CAAC,MAAM;AACb,UAAE,CAAC,KAAK;AACR,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,YAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;AACnB,cAAI,EAAE,CAAC,MAAM;AACb,YAAE,CAAC,KAAK;AAAA,QACV;AACA,UAAE,CAAC,KAAM,KAAK;AAEd,gBAAQ,IAAI,KAAK;AACjB,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,KAAK;AACjC,eAAO,CAAC;AACR,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,MAAK,EAAE,CAAC,IAAK,KAAK,EAAE,CAAC,IAAI,OAAQ,EAAE,CAAC;AAE7D,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,IAAa,KAAK,EAAE,CAAC,KAAK,MAA2B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAK,MAA2B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAM,KAA0B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAM,KAA0B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAM,KAAO,KAAK,EAAE,CAAC,KAAM,IAAM,KAAK,EAAE,CAAC,KAAK,MAAO;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAK,MAA2B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAM,KAA0B;AAC3E,aAAK,EAAE,CAAC,KAAM,KAAK,EAAE,CAAC,MAAO,IAAM,KAAK,EAAE,CAAC,KAAM,KAA0B;AAE3E,YAAI,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;AAC1B,aAAK,EAAE,CAAC,IAAI,IAAI;AAChB,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAO,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAK,MAAM,MAAM,MAAO;AACrD,eAAK,EAAE,CAAC,IAAI,IAAI;AAAA,QAClB;AAEA,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAQ,CAAC,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AACrC,YAAI,SAAO,EAAE,IAAK,KAAK,EAAE,CAAC,MAAM,IAAK;AAAA,MACvC;AAEA,eAAS,UAAU,SAAS,SAAS,GAAG,MAAM,OAAO;AACnD,YAAI,GAAG;AAEP,YAAI,KAAK,UAAU;AACjB,iBAAQ,KAAK,KAAK;AAClB,cAAI,OAAO;AACT,mBAAO;AACT,eAAK,IAAI,GAAG,IAAI,MAAM;AACpB,iBAAK,OAAO,KAAK,WAAW,CAAC,IAAI,EAAE,OAAK,CAAC;AAC3C,mBAAS;AACT,kBAAQ;AACR,eAAK,YAAY;AACjB,cAAI,KAAK,WAAW;AAClB;AACF,eAAK,OAAO,KAAK,QAAQ,GAAG,EAAE;AAC9B,eAAK,WAAW;AAAA,QAClB;AAEA,YAAI,SAAS,IAAI;AACf,iBAAO,QAAS,QAAQ;AACxB,eAAK,OAAO,GAAG,MAAM,IAAI;AACzB,kBAAQ;AACR,mBAAS;AAAA,QACX;AAEA,YAAI,OAAO;AACT,eAAK,IAAI,GAAG,IAAI,OAAO;AACrB,iBAAK,OAAO,KAAK,WAAW,CAAC,IAAI,EAAE,OAAK,CAAC;AAC3C,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAEA,eAAS,mBAAmB,KAAK,QAAQ,GAAG,MAAM,GAAG,GAAG;AACtD,YAAI,IAAI,IAAI,SAAS,CAAC;AACtB,UAAE,OAAO,GAAG,MAAM,CAAC;AACnB,UAAE,OAAO,KAAK,MAAM;AACpB,eAAO;AAAA,MACT;AAEA,eAAS,0BAA0B,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG;AACzD,YAAI,IAAI,IAAI,WAAW,EAAE;AACzB,2BAAmB,GAAE,GAAE,GAAE,MAAK,GAAE,CAAC;AACjC,eAAO,iBAAiB,GAAE,MAAK,GAAE,CAAC;AAAA,MACpC;AAEA,eAAS,iBAAiB,GAAE,GAAE,GAAE,GAAE,GAAG;AACnC,YAAI;AACJ,YAAI,IAAI,GAAI,QAAO;AACnB,0BAAkB,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;AAC/B,2BAAmB,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;AAC1C,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI;AAChC,eAAO;AAAA,MACT;AAEA,eAAS,sBAAsB,GAAE,GAAE,GAAE,GAAE,GAAG;AACxC,YAAI;AACJ,YAAI,IAAI,IAAI,WAAW,EAAE;AACzB,YAAI,IAAI,GAAI,QAAO;AACnB,sBAAc,GAAE,GAAE,IAAG,GAAE,CAAC;AACxB,YAAI,0BAA0B,GAAG,IAAG,GAAG,IAAG,IAAI,IAAG,CAAC,MAAM,EAAG,QAAO;AAClE,0BAAkB,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;AAC/B,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI;AAChC,eAAO;AAAA,MACT;AAEA,eAAS,SAAS,GAAG,GAAG;AACtB,YAAI;AACJ,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC,IAAE;AAAA,MACvC;AAEA,eAAS,SAAS,GAAG;AACnB,YAAI,GAAG,GAAG,IAAI;AACd,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,cAAI,EAAE,CAAC,IAAI,IAAI;AACf,cAAI,KAAK,MAAM,IAAI,KAAK;AACxB,YAAE,CAAC,IAAI,IAAI,IAAI;AAAA,QACjB;AACA,UAAE,CAAC,KAAK,IAAE,IAAI,MAAM,IAAE;AAAA,MACxB;AAEA,eAAS,SAAS,GAAG,GAAG,GAAG;AACzB,YAAI,GAAG,IAAI,EAAE,IAAE;AACf,iBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,cAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AACnB,YAAE,CAAC,KAAK;AACR,YAAE,CAAC,KAAK;AAAA,QACV;AAAA,MACF;AAEA,eAAS,UAAU,GAAG,GAAG;AACvB,YAAI,GAAG,GAAG;AACV,YAAI,IAAI,GAAG,GAAG,IAAI,GAAG;AACrB,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AACnC,iBAAS,CAAC;AACV,iBAAS,CAAC;AACV,iBAAS,CAAC;AACV,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,YAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AACd,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,cAAE,CAAC,IAAI,EAAE,CAAC,IAAI,SAAW,EAAE,IAAE,CAAC,KAAG,KAAM;AACvC,cAAE,IAAE,CAAC,KAAK;AAAA,UACZ;AACA,YAAE,EAAE,IAAI,EAAE,EAAE,IAAI,SAAW,EAAE,EAAE,KAAG,KAAM;AACxC,cAAK,EAAE,EAAE,KAAG,KAAM;AAClB,YAAE,EAAE,KAAK;AACT,mBAAS,GAAG,GAAG,IAAE,CAAC;AAAA,QACpB;AACA,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,YAAE,IAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AAChB,YAAE,IAAE,IAAE,CAAC,IAAI,EAAE,CAAC,KAAG;AAAA,QACnB;AAAA,MACF;AAEA,eAAS,SAAS,GAAG,GAAG;AACtB,YAAI,IAAI,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,WAAW,EAAE;AACjD,kBAAU,GAAG,CAAC;AACd,kBAAU,GAAG,CAAC;AACd,eAAO,iBAAiB,GAAG,GAAG,GAAG,CAAC;AAAA,MACpC;AAEA,eAAS,SAAS,GAAG;AACnB,YAAI,IAAI,IAAI,WAAW,EAAE;AACzB,kBAAU,GAAG,CAAC;AACd,eAAO,EAAE,CAAC,IAAI;AAAA,MAChB;AAEA,eAAS,YAAY,GAAG,GAAG;AACzB,YAAI;AACJ,aAAK,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI,EAAE,IAAE,CAAC,KAAK,EAAE,IAAE,IAAE,CAAC,KAAK;AACtD,UAAE,EAAE,KAAK;AAAA,MACX;AAEA,eAAS,EAAE,GAAG,GAAG,GAAG;AAClB,iBAAS,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,MAChD;AAEA,eAAS,EAAE,GAAG,GAAG,GAAG;AAClB,iBAAS,IAAI,GAAG,IAAI,IAAI,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,MAChD;AAEA,eAAS,EAAE,GAAG,GAAG,GAAG;AAClB,YAAI,GAAG,GACJ,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GACpE,KAAK,GAAI,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GACrE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GACrE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAC5D,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,KAAK,EAAE,CAAC,GACR,MAAM,EAAE,EAAE,GACV,MAAM,EAAE,EAAE,GACV,MAAM,EAAE,EAAE,GACV,MAAM,EAAE,EAAE,GACV,MAAM,EAAE,EAAE,GACV,MAAM,EAAE,EAAE;AAEZ,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,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AA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAA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","names":["exports","module","nacl","z","exports","module","i","j","exports","module","import_sdk","import_tweetnacl","import_bs58","import_sdk","success"]}