@atproto/crypto 0.2.3 → 0.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atproto/crypto
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1839](https://github.com/bluesky-social/atproto/pull/1839) [`e1b5f253`](https://github.com/bluesky-social/atproto/commit/e1b5f2537a5ba4d8b951a741269b604856028ae5) Thanks [@dholms](https://github.com/dholms)! - Prevent signature malleability through DER-encoded signatures
8
+
3
9
  ## 0.2.3
4
10
 
5
11
  ### Patch Changes
package/dist/index.js CHANGED
@@ -3048,11 +3048,23 @@ var verifyDidSig = async (did, data, sig, opts) => {
3048
3048
  return verifySig(keyBytes, data, sig, opts);
3049
3049
  };
3050
3050
  var verifySig = async (publicKey, data, sig, opts) => {
3051
+ const allowMalleable = opts?.allowMalleableSig ?? false;
3051
3052
  const msgHash = await sha2562(data);
3053
+ if (!allowMalleable && !isCompactFormat(sig)) {
3054
+ return false;
3055
+ }
3052
3056
  return p256.verify(sig, msgHash, publicKey, {
3053
- lowS: opts?.lowS ?? true
3057
+ lowS: !allowMalleable
3054
3058
  });
3055
3059
  };
3060
+ var isCompactFormat = (sig) => {
3061
+ try {
3062
+ const parsed = p256.Signature.fromCompact(sig);
3063
+ return equals(parsed.toCompactRawBytes(), sig);
3064
+ } catch {
3065
+ return false;
3066
+ }
3067
+ };
3056
3068
 
3057
3069
  // src/p256/plugin.ts
3058
3070
  var p256Plugin = {
@@ -3071,11 +3083,23 @@ var verifyDidSig2 = async (did, data, sig, opts) => {
3071
3083
  return verifySig2(keyBytes, data, sig, opts);
3072
3084
  };
3073
3085
  var verifySig2 = async (publicKey, data, sig, opts) => {
3086
+ const allowMalleable = opts?.allowMalleableSig ?? false;
3074
3087
  const msgHash = await sha2562(data);
3088
+ if (!allowMalleable && !isCompactFormat2(sig)) {
3089
+ return false;
3090
+ }
3075
3091
  return secp256k1.verify(sig, msgHash, publicKey, {
3076
- lowS: opts?.lowS ?? true
3092
+ lowS: !allowMalleable
3077
3093
  });
3078
3094
  };
3095
+ var isCompactFormat2 = (sig) => {
3096
+ try {
3097
+ const parsed = secp256k1.Signature.fromCompact(sig);
3098
+ return equals(parsed.toCompactRawBytes(), sig);
3099
+ } catch {
3100
+ return false;
3101
+ }
3102
+ };
3079
3103
 
3080
3104
  // src/secp256k1/plugin.ts
3081
3105
  var secp256k1Plugin = {
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/const.ts", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/concat.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/equals.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/identity.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/base-x.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bytes.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base2.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base8.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base10.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base16.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base32.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base36.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base58.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base256emoji.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/sha2.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/varint.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/varint.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/digest.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/hasher.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/hashes/identity.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/json.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/cid.js", "../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/basics.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/util/bases.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/from-string.js", "../../../node_modules/.pnpm/uint8arrays@3.0.0/node_modules/uint8arrays/esm/src/to-string.js", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/_assert.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/cryptoNode.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/hmac.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/utils.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/modular.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/curve.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/abstract/weierstrass.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/_shortw_utils.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/_sha2.ts", "../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/src/sha256.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/p256.ts", "../src/p256/encoding.ts", "../../../node_modules/.pnpm/@noble+curves@1.1.0/node_modules/@noble/curves/src/secp256k1.ts", "../src/secp256k1/encoding.ts", "../src/p256/operations.ts", "../src/p256/plugin.ts", "../src/secp256k1/operations.ts", "../src/secp256k1/plugin.ts", "../src/plugins.ts", "../src/did.ts", "../src/multibase.ts", "../src/sha.ts", "../src/random.ts", "../src/verify.ts", "../src/p256/keypair.ts", "../src/secp256k1/keypair.ts"],
4
- "sourcesContent": ["export * from './const'\nexport * from './did'\nexport * from './multibase'\nexport * from './random'\nexport * from './sha'\nexport * from './types'\nexport * from './verify'\n\nexport * from './p256/keypair'\nexport * from './p256/plugin'\n\nexport * from './secp256k1/keypair'\nexport * from './secp256k1/plugin'\n", "export const P256_DID_PREFIX = new Uint8Array([0x80, 0x24])\nexport const SECP256K1_DID_PREFIX = new Uint8Array([0xe7, 0x01])\nexport const BASE58_MULTIBASE_PREFIX = 'z'\nexport const DID_KEY_PREFIX = 'did:key:'\n\nexport const P256_JWT_ALG = 'ES256'\nexport const SECP256K1_JWT_ALG = 'ES256K'\n", "export function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = new Uint8Array(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}", "export function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}", "import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});", "function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\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) {\n throw new TypeError(x + ' is ambiguous');\n }\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);\n var iFACTOR = Math.log(256) / Math.log(BASE);\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)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\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 var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\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) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\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) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\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) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};", "import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});", "import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});", "import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});", "import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});", "import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});", "import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});", "import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});", "import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});", "import crypto from 'crypto';\nimport { from } from './hasher.js';\nimport { coerce } from '../bytes.js';\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: input => coerce(crypto.createHash('sha256').update(input).digest())\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: input => coerce(crypto.createHash('sha512').update(input).digest())\n});", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};", "import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}", "import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};", "const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));", "import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;", "import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};", "import { bases } from 'multiformats/basics';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;", "import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}", "import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.encoder.encode(array).substring(1);\n}", null, null, null, null, null, null, null, null, null, null, null, null, "import { p256 } from '@noble/curves/p256'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = p256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = p256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", null, "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = k256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = k256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", "import { p256 } from '@noble/curves/p256'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { P256_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== P256_JWT_ALG) {\n throw new Error(`Not a P-256 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const msgHash = await sha256(data)\n return p256.verify(sig, msgHash, publicKey, {\n lowS: opts?.lowS ?? true,\n })\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { P256_DID_PREFIX, P256_JWT_ALG } from '../const'\n\nexport const p256Plugin: DidKeyPlugin = {\n prefix: P256_DID_PREFIX,\n jwtAlg: P256_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default p256Plugin\n", "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { SECP256K1_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== SECP256K1_JWT_ALG) {\n throw new Error(`Not a secp256k1 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const msgHash = await sha256(data)\n return k256.verify(sig, msgHash, publicKey, {\n lowS: opts?.lowS ?? true,\n })\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { SECP256K1_DID_PREFIX, SECP256K1_JWT_ALG } from '../const'\n\nexport const secp256k1Plugin: DidKeyPlugin = {\n prefix: SECP256K1_DID_PREFIX,\n jwtAlg: SECP256K1_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default secp256k1Plugin\n", "import p256Plugin from './p256/plugin'\nimport secp256k1Plugin from './secp256k1/plugin'\n\nexport const plugins = [p256Plugin, secp256k1Plugin]\n\nexport default plugins\n", "import * as uint8arrays from 'uint8arrays'\nimport * as p256 from './p256/encoding'\nimport * as secp from './secp256k1/encoding'\nimport plugins from './plugins'\nimport {\n BASE58_MULTIBASE_PREFIX,\n DID_KEY_PREFIX,\n P256_JWT_ALG,\n SECP256K1_JWT_ALG,\n} from './const'\n\nexport type ParsedMultikey = {\n jwtAlg: string\n keyBytes: Uint8Array\n}\n\nexport const parseMultikey = (multikey: string): ParsedMultikey => {\n if (!multikey.startsWith(BASE58_MULTIBASE_PREFIX)) {\n throw new Error(`Incorrect prefix for multikey: ${multikey}`)\n }\n const prefixedBytes = uint8arrays.fromString(\n multikey.slice(BASE58_MULTIBASE_PREFIX.length),\n 'base58btc',\n )\n const plugin = plugins.find((p) => hasPrefix(prefixedBytes, p.prefix))\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n let keyBytes = prefixedBytes.slice(plugin.prefix.length)\n if (plugin.jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.decompressPubkey(keyBytes)\n } else if (plugin.jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.decompressPubkey(keyBytes)\n }\n return {\n jwtAlg: plugin.jwtAlg,\n keyBytes,\n }\n}\n\nexport const formatMultikey = (\n jwtAlg: string,\n keyBytes: Uint8Array,\n): string => {\n const plugin = plugins.find((p) => p.jwtAlg === jwtAlg)\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n if (jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.compressPubkey(keyBytes)\n } else if (jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.compressPubkey(keyBytes)\n }\n const prefixedBytes = uint8arrays.concat([plugin.prefix, keyBytes])\n return (\n BASE58_MULTIBASE_PREFIX + uint8arrays.toString(prefixedBytes, 'base58btc')\n )\n}\n\nexport const parseDidKey = (did: string): ParsedMultikey => {\n if (!did.startsWith(DID_KEY_PREFIX)) {\n throw new Error(`Incorrect prefix for did:key: ${did}`)\n }\n return parseMultikey(did.slice(DID_KEY_PREFIX.length))\n}\n\nexport const formatDidKey = (jwtAlg: string, keyBytes: Uint8Array): string => {\n return DID_KEY_PREFIX + formatMultikey(jwtAlg, keyBytes)\n}\n\nconst hasPrefix = (bytes: Uint8Array, prefix: Uint8Array): boolean => {\n return uint8arrays.equals(prefix, bytes.subarray(0, prefix.byteLength))\n}\n", "import * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/to-string'\n\nexport const multibaseToBytes = (mb: string): Uint8Array => {\n const base = mb[0]\n const key = mb.slice(1)\n switch (base) {\n case 'f':\n return uint8arrays.fromString(key, 'base16')\n case 'F':\n return uint8arrays.fromString(key, 'base16upper')\n case 'b':\n return uint8arrays.fromString(key, 'base32')\n case 'B':\n return uint8arrays.fromString(key, 'base32upper')\n case 'z':\n return uint8arrays.fromString(key, 'base58btc')\n case 'm':\n return uint8arrays.fromString(key, 'base64')\n case 'u':\n return uint8arrays.fromString(key, 'base64url')\n case 'U':\n return uint8arrays.fromString(key, 'base64urlpad')\n default:\n throw new Error(`Unsupported multibase: :${mb}`)\n }\n}\n\nexport const bytesToMultibase = (\n mb: Uint8Array,\n encoding: SupportedEncodings,\n): string => {\n switch (encoding) {\n case 'base16':\n return 'f' + uint8arrays.toString(mb, encoding)\n case 'base16upper':\n return 'F' + uint8arrays.toString(mb, encoding)\n case 'base32':\n return 'b' + uint8arrays.toString(mb, encoding)\n case 'base32upper':\n return 'B' + uint8arrays.toString(mb, encoding)\n case 'base58btc':\n return 'z' + uint8arrays.toString(mb, encoding)\n case 'base64':\n return 'm' + uint8arrays.toString(mb, encoding)\n case 'base64url':\n return 'u' + uint8arrays.toString(mb, encoding)\n case 'base64urlpad':\n return 'U' + uint8arrays.toString(mb, encoding)\n default:\n throw new Error(`Unsupported multibase: :${mb}`)\n }\n}\n", "import * as noble from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\n\n// takes either bytes of utf8 input\nexport const sha256 = async (\n input: Uint8Array | string,\n): Promise<Uint8Array> => {\n const bytes =\n typeof input === 'string' ? uint8arrays.fromString(input, 'utf8') : input\n return noble.sha256(bytes)\n}\n", "import * as noble from '@noble/hashes/utils'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/to-string'\nimport { sha256 } from './sha'\n\nexport const randomBytes = noble.randomBytes\n\nexport const randomStr = (\n byteLength: number,\n encoding: SupportedEncodings,\n): string => {\n const bytes = randomBytes(byteLength)\n return uint8arrays.toString(bytes, encoding)\n}\n\nexport const randomIntFromSeed = async (\n seed: string,\n high: number,\n low = 0,\n): Promise<number> => {\n const hash = await sha256(seed)\n const number = Buffer.from(hash).readUintBE(0, 6)\n const range = high - low\n const normalized = number % range\n return normalized + low\n}\n", "import * as uint8arrays from 'uint8arrays'\nimport { parseDidKey } from './did'\nimport plugins from './plugins'\nimport { VerifyOptions } from './types'\n\nexport const verifySignature = (\n didKey: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const parsed = parseDidKey(didKey)\n const plugin = plugins.find((p) => p.jwtAlg === parsed.jwtAlg)\n if (!plugin) {\n throw new Error(`Unsupported signature alg: ${parsed.jwtAlg}`)\n }\n return plugin.verifySignature(didKey, data, sig, opts)\n}\n\nexport const verifySignatureUtf8 = async (\n didKey: string,\n data: string,\n sig: string,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const dataBytes = uint8arrays.fromString(data, 'utf8')\n const sigBytes = uint8arrays.fromString(sig, 'base64url')\n return verifySignature(didKey, dataBytes, sigBytes, opts)\n}\n", "import { p256 } from '@noble/curves/p256'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/util/bases'\nimport * as did from '../did'\nimport { P256_JWT_ALG } from '../const'\nimport { Keypair } from '../types'\n\nexport type P256KeypairOptions = {\n exportable: boolean\n}\n\nexport class P256Keypair implements Keypair {\n jwtAlg = P256_JWT_ALG\n private publicKey: Uint8Array\n\n constructor(private privateKey: Uint8Array, private exportable: boolean) {\n this.publicKey = p256.getPublicKey(privateKey)\n }\n\n static async create(\n opts?: Partial<P256KeypairOptions>,\n ): Promise<P256Keypair> {\n const { exportable = false } = opts || {}\n const privKey = p256.utils.randomPrivateKey()\n return new P256Keypair(privKey, exportable)\n }\n\n static async import(\n privKey: Uint8Array | string,\n opts?: Partial<P256KeypairOptions>,\n ): Promise<P256Keypair> {\n const { exportable = false } = opts || {}\n const privKeyBytes =\n typeof privKey === 'string'\n ? uint8arrays.fromString(privKey, 'hex')\n : privKey\n return new P256Keypair(privKeyBytes, exportable)\n }\n\n publicKeyBytes(): Uint8Array {\n return this.publicKey\n }\n\n publicKeyStr(encoding: SupportedEncodings = 'base64pad'): string {\n return uint8arrays.toString(this.publicKey, encoding)\n }\n\n did(): string {\n return did.formatDidKey(this.jwtAlg, this.publicKey)\n }\n\n async sign(msg: Uint8Array): Promise<Uint8Array> {\n const msgHash = await sha256(msg)\n // return raw 64 byte sig not DER-encoded\n const sig = await p256.sign(msgHash, this.privateKey, { lowS: true })\n return sig.toCompactRawBytes()\n }\n\n async export(): Promise<Uint8Array> {\n if (!this.exportable) {\n throw new Error('Private key is not exportable')\n }\n return this.privateKey\n }\n}\n\nexport default P256Keypair\n", "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/util/bases'\nimport * as did from '../did'\nimport { SECP256K1_JWT_ALG } from '../const'\nimport { Keypair } from '../types'\n\nexport type Secp256k1KeypairOptions = {\n exportable: boolean\n}\n\nexport class Secp256k1Keypair implements Keypair {\n jwtAlg = SECP256K1_JWT_ALG\n private publicKey: Uint8Array\n\n constructor(private privateKey: Uint8Array, private exportable: boolean) {\n this.publicKey = k256.getPublicKey(privateKey)\n }\n\n static async create(\n opts?: Partial<Secp256k1KeypairOptions>,\n ): Promise<Secp256k1Keypair> {\n const { exportable = false } = opts || {}\n const privKey = k256.utils.randomPrivateKey()\n return new Secp256k1Keypair(privKey, exportable)\n }\n\n static async import(\n privKey: Uint8Array | string,\n opts?: Partial<Secp256k1KeypairOptions>,\n ): Promise<Secp256k1Keypair> {\n const { exportable = false } = opts || {}\n const privKeyBytes =\n typeof privKey === 'string'\n ? uint8arrays.fromString(privKey, 'hex')\n : privKey\n return new Secp256k1Keypair(privKeyBytes, exportable)\n }\n\n publicKeyBytes(): Uint8Array {\n return this.publicKey\n }\n\n publicKeyStr(encoding: SupportedEncodings = 'base64pad'): string {\n return uint8arrays.toString(this.publicKey, encoding)\n }\n\n did(): string {\n return did.formatDidKey(this.jwtAlg, this.publicKey)\n }\n\n async sign(msg: Uint8Array): Promise<Uint8Array> {\n const msgHash = await sha256(msg)\n // return raw 64 byte sig not DER-encoded\n const sig = await k256.sign(msgHash, this.privateKey, { lowS: true })\n return sig.toCompactRawBytes()\n }\n\n async export(): Promise<Uint8Array> {\n if (!this.exportable) {\n throw new Error('Private key is not exportable')\n }\n return this.privateKey\n }\n}\n\nexport default Secp256k1Keypair\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,kBAAkB,IAAI,WAAW,CAAC,KAAM,EAAI,CAAC;AACnD,IAAM,uBAAuB,IAAI,WAAW,CAAC,KAAM,CAAI,CAAC;AACxD,IAAM,0BAA0B;AAChC,IAAM,iBAAiB;AAEvB,IAAM,eAAe;AACrB,IAAM,oBAAoB;;;ACN1B,gBAAgB,QAAQ,SAAQ;AACrC,MAAI,CAAC,SAAQ;AACX,cAAS,OAAO,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC5D;AACA,QAAM,UAAS,IAAI,WAAW,OAAM;AACpC,MAAI,SAAS;AACb,aAAW,OAAO,QAAQ;AACxB,YAAO,IAAI,KAAK,MAAM;AACtB,cAAU,IAAI;AAAA,EAChB;AACA,SAAO;AACT;;;ACXO,gBAAgB,GAAG,GAAG;AAC3B,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT;AACA,MAAI,EAAE,eAAe,EAAE,YAAY;AACjC,WAAO;AAAA,EACT;AACA,WAAS,IAAI,GAAG,IAAI,EAAE,YAAY,KAAK;AACrC,QAAI,EAAE,OAAO,EAAE,IAAI;AACjB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;;;ACbA;AAAA;AAAA;AAAA;;;ACAA,cAAc,UAAU,OAAM;AAC5B,MAAI,SAAS,UAAU,KAAK;AAC1B,UAAM,IAAI,UAAU,mBAAmB;AAAA,EACzC;AACA,MAAI,WAAW,IAAI,WAAW,GAAG;AACjC,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,aAAS,KAAK;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,QAAI,IAAI,SAAS,OAAO,CAAC;AACzB,QAAI,KAAK,EAAE,WAAW,CAAC;AACvB,QAAI,SAAS,QAAQ,KAAK;AACxB,YAAM,IAAI,UAAU,IAAI,eAAe;AAAA,IACzC;AACA,aAAS,MAAM;AAAA,EACjB;AACA,MAAI,OAAO,SAAS;AACpB,MAAI,SAAS,SAAS,OAAO,CAAC;AAC9B,MAAI,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG;AAC1C,MAAI,UAAU,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI;AAC3C,mBAAgB,QAAQ;AACtB,QAAI,kBAAkB;AAAW;AAAA,aACxB,YAAY,OAAO,MAAM,GAAG;AACnC,eAAS,IAAI,WAAW,OAAO,QAAQ,OAAO,YAAY,OAAO,UAAU;AAAA,IAC7E,WAAW,MAAM,QAAQ,MAAM,GAAG;AAChC,eAAS,WAAW,KAAK,MAAM;AAAA,IACjC;AACA,QAAI,CAAE,mBAAkB,aAAa;AACnC,YAAM,IAAI,UAAU,qBAAqB;AAAA,IAC3C;AACA,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACb,QAAI,UAAS;AACb,QAAI,SAAS;AACb,QAAI,OAAO,OAAO;AAClB,WAAO,WAAW,QAAQ,OAAO,YAAY,GAAG;AAC9C;AACA;AAAA,IACF;AACA,QAAI,OAAQ,QAAO,UAAU,UAAU,MAAM;AAC7C,QAAI,MAAM,IAAI,WAAW,IAAI;AAC7B,WAAO,WAAW,MAAM;AACtB,UAAI,QAAQ,OAAO;AACnB,UAAI,KAAI;AACR,eAAS,MAAM,OAAO,GAAI,WAAU,KAAK,KAAI,YAAW,QAAQ,IAAI,OAAO,MAAK;AAC9E,iBAAS,MAAM,IAAI,SAAS;AAC5B,YAAI,OAAO,QAAQ,SAAS;AAC5B,gBAAQ,QAAQ,SAAS;AAAA,MAC3B;AACA,UAAI,UAAU,GAAG;AACf,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AACA,gBAAS;AACT;AAAA,IACF;AACA,QAAI,MAAM,OAAO;AACjB,WAAO,QAAQ,QAAQ,IAAI,SAAS,GAAG;AACrC;AAAA,IACF;AACA,QAAI,MAAM,OAAO,OAAO,MAAM;AAC9B,WAAO,MAAM,MAAM,EAAE,KAAK;AACxB,aAAO,SAAS,OAAO,IAAI,IAAI;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AACA,wBAAsB,QAAQ;AAC5B,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI,UAAU,iBAAiB;AAAA,IACvC;AACA,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO,IAAI,WAAW;AAAA,IACxB;AACA,QAAI,MAAM;AACV,QAAI,OAAO,SAAS,KAAK;AACvB;AAAA,IACF;AACA,QAAI,SAAS;AACb,QAAI,UAAS;AACb,WAAO,OAAO,SAAS,QAAQ;AAC7B;AACA;AAAA,IACF;AACA,QAAI,OAAQ,QAAO,SAAS,OAAO,SAAS,MAAM;AAClD,QAAI,OAAO,IAAI,WAAW,IAAI;AAC9B,WAAO,OAAO,MAAM;AAClB,UAAI,QAAQ,SAAS,OAAO,WAAW,GAAG;AAC1C,UAAI,UAAU,KAAK;AACjB;AAAA,MACF;AACA,UAAI,KAAI;AACR,eAAS,MAAM,OAAO,GAAI,WAAU,KAAK,KAAI,YAAW,QAAQ,IAAI,OAAO,MAAK;AAC9E,iBAAS,OAAO,KAAK,SAAS;AAC9B,aAAK,OAAO,QAAQ,QAAQ;AAC5B,gBAAQ,QAAQ,QAAQ;AAAA,MAC1B;AACA,UAAI,UAAU,GAAG;AACf,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AACA,gBAAS;AACT;AAAA,IACF;AACA,QAAI,OAAO,SAAS,KAAK;AACvB;AAAA,IACF;AACA,QAAI,MAAM,OAAO;AACjB,WAAO,QAAQ,QAAQ,KAAK,SAAS,GAAG;AACtC;AAAA,IACF;AACA,QAAI,MAAM,IAAI,WAAW,SAAU,QAAO,IAAI;AAC9C,QAAI,KAAI;AACR,WAAO,QAAQ,MAAM;AACnB,UAAI,QAAO,KAAK;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACA,mBAAgB,SAAQ;AACtB,QAAI,SAAS,aAAa,OAAM;AAChC,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AACA,UAAM,IAAI,MAAM,OAAQ,iBAAiB;AAAA,EAC3C;AACA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,EACV;AACF;AACA,IAAI,MAAM;AACV,IAAI,kCAAkC;AACtC,IAAO,iBAAQ;;;ACpIf,IAAM,QAAQ,IAAI,WAAW,CAAC;AAM9B,IAAM,UAAS,CAAC,IAAI,OAAO;AACzB,MAAI,OAAO;AACT,WAAO;AACT,MAAI,GAAG,eAAe,GAAG,YAAY;AACnC,WAAO;AAAA,EACT;AACA,WAAS,KAAK,GAAG,KAAK,GAAG,YAAY,MAAM;AACzC,QAAI,GAAG,QAAQ,GAAG,KAAK;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAM,SAAS,OAAK;AAClB,MAAI,aAAa,cAAc,EAAE,YAAY,SAAS;AACpD,WAAO;AACT,MAAI,aAAa;AACf,WAAO,IAAI,WAAW,CAAC;AACzB,MAAI,YAAY,OAAO,CAAC,GAAG;AACzB,WAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU;AAAA,EAC5D;AACA,QAAM,IAAI,MAAM,mCAAmC;AACrD;AAEA,IAAM,aAAa,SAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AACtD,IAAM,WAAW,OAAK,IAAI,YAAY,EAAE,OAAO,CAAC;;;AC7BhD,IAAM,UAAN,MAAc;AAAA,EACZ,YAAY,OAAM,QAAQ,YAAY;AACpC,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,OAAO,QAAO;AACZ,QAAI,kBAAiB,YAAY;AAC/B,aAAO,GAAI,KAAK,SAAW,KAAK,WAAW,MAAK;AAAA,IAClD,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IACjD;AAAA,EACF;AACF;AACA,IAAM,UAAN,MAAc;AAAA,EACZ,YAAY,OAAM,QAAQ,YAAY;AACpC,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI,OAAO,YAAY,CAAC,MAAM,QAAW;AACvC,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AACA,SAAK,kBAAkB,OAAO,YAAY,CAAC;AAC3C,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,OAAO,MAAM;AACX,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,KAAK,YAAY,CAAC,MAAM,KAAK,iBAAiB;AAChD,cAAM,MAAM,qCAAsC,KAAK,UAAU,IAAI,MAAQ,KAAK,mDAAqD,KAAK,QAAS;AAAA,MACvJ;AACA,aAAO,KAAK,WAAW,KAAK,MAAM,KAAK,OAAO,MAAM,CAAC;AAAA,IACvD,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IACjD;AAAA,EACF;AAAA,EACA,GAAG,SAAS;AACV,WAAO,GAAG,MAAM,OAAO;AAAA,EACzB;AACF;AACA,IAAM,kBAAN,MAAsB;AAAA,EACpB,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,GAAG,SAAS;AACV,WAAO,GAAG,MAAM,OAAO;AAAA,EACzB;AAAA,EACA,OAAO,OAAO;AACZ,UAAM,SAAS,MAAM;AACrB,UAAM,UAAU,KAAK,SAAS;AAC9B,QAAI,SAAS;AACX,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,OAAO;AACL,YAAM,WAAW,qCAAsC,KAAK,UAAU,KAAK,gCAAkC,OAAO,KAAK,KAAK,QAAQ,iBAAkB;AAAA,IAC1J;AAAA,EACF;AACF;AACO,IAAM,KAAK,CAAC,MAAM,UAAU,IAAI,gBAAgB;AAAA,EACrD,GAAG,KAAK,YAAY,EAAE,CAAC,KAAK,SAAS,KAAK;AAAA,EAC1C,GAAG,MAAM,YAAY,EAAE,CAAC,MAAM,SAAS,MAAM;AAC/C,CAAC;AACM,IAAM,QAAN,MAAY;AAAA,EACjB,YAAY,OAAM,QAAQ,YAAY,YAAY;AAChD,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,UAAU,IAAI,QAAQ,OAAM,QAAQ,UAAU;AACnD,SAAK,UAAU,IAAI,QAAQ,OAAM,QAAQ,UAAU;AAAA,EACrD;AAAA,EACA,OAAO,OAAO;AACZ,WAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,EAClC;AAAA,EACA,OAAO,OAAO;AACZ,WAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,EAClC;AACF;AACO,IAAM,OAAO,CAAC,EAAC,aAAM,QAAQ,iBAAQ,sBAAY,IAAI,MAAM,OAAM,QAAQ,SAAQ,OAAM;AACvF,IAAM,QAAQ,CAAC,EAAC,QAAQ,aAAM,0BAAc;AACjD,QAAM,EAAC,iBAAQ,oBAAU,eAAM,WAAU,KAAI;AAC7C,SAAO,KAAK;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,UAAQ,OAAO,QAAO,IAAI,CAAC;AAAA,EACrC,CAAC;AACH;AACA,IAAM,SAAS,CAAC,SAAQ,WAAU,aAAa,UAAS;AACtD,QAAM,QAAQ,CAAC;AACf,WAAS,IAAI,GAAG,IAAI,UAAS,QAAQ,EAAE,GAAG;AACxC,UAAM,UAAS,MAAM;AAAA,EACvB;AACA,MAAI,MAAM,QAAO;AACjB,SAAO,QAAO,MAAM,OAAO,KAAK;AAC9B,MAAE;AAAA,EACJ;AACA,QAAM,MAAM,IAAI,WAAW,MAAM,cAAc,IAAI,CAAC;AACpD,MAAI,OAAO;AACX,MAAI,SAAS;AACb,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC5B,UAAM,QAAQ,MAAM,QAAO;AAC3B,QAAI,UAAU,QAAW;AACvB,YAAM,IAAI,YAAY,OAAQ,iBAAiB;AAAA,IACjD;AACA,aAAS,UAAU,cAAc;AACjC,YAAQ;AACR,QAAI,QAAQ,GAAG;AACb,cAAQ;AACR,UAAI,aAAa,MAAM,UAAU;AAAA,IACnC;AAAA,EACF;AACA,MAAI,QAAQ,eAAe,MAAM,UAAU,IAAI,MAAM;AACnD,UAAM,IAAI,YAAY,wBAAwB;AAAA,EAChD;AACA,SAAO;AACT;AACA,IAAM,SAAS,CAAC,MAAM,WAAU,gBAAgB;AAC9C,QAAM,MAAM,UAAS,UAAS,SAAS,OAAO;AAC9C,QAAM,OAAQ,MAAK,eAAe;AAClC,MAAI,MAAM;AACV,MAAI,OAAO;AACX,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AACpC,aAAS,UAAU,IAAI,KAAK;AAC5B,YAAQ;AACR,WAAO,OAAO,aAAa;AACzB,cAAQ;AACR,aAAO,UAAS,OAAO,UAAU;AAAA,IACnC;AAAA,EACF;AACA,MAAI,MAAM;AACR,WAAO,UAAS,OAAO,UAAU,cAAc;AAAA,EACjD;AACA,MAAI,KAAK;AACP,WAAO,IAAI,SAAS,cAAc,GAAG;AACnC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACO,IAAM,UAAU,CAAC,EAAC,aAAM,QAAQ,aAAa,0BAAc;AAChE,SAAO,KAAK;AAAA,IACV;AAAA,IACA;AAAA,IACA,OAAO,OAAO;AACZ,aAAO,OAAO,OAAO,WAAU,WAAW;AAAA,IAC5C;AAAA,IACA,OAAO,OAAO;AACZ,aAAO,OAAO,OAAO,WAAU,aAAa,KAAI;AAAA,IAClD;AAAA,EACF,CAAC;AACH;;;AHnJO,IAAM,WAAW,KAAK;AAAA,EAC3B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ,SAAO,SAAS,GAAG;AAAA,EAC3B,QAAQ,SAAO,WAAW,GAAG;AAC/B,CAAC;;;AIVD;AAAA;AAAA;AAAA;AACO,IAAM,QAAQ,QAAQ;AAAA,EAC3B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;ACND;AAAA;AAAA;AAAA;AACO,IAAM,QAAQ,QAAQ;AAAA,EAC3B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;ACND;AAAA;AAAA;AAAA;AACO,IAAM,SAAS,MAAM;AAAA,EAC1B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;;;ACLD;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,SAAS,QAAQ;AAAA,EAC5B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,cAAc,QAAQ;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;ACZD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,SAAS,QAAQ;AAAA,EAC5B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,cAAc,QAAQ;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,iBAAiB,QAAQ;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,iBAAiB,QAAQ;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,eAAe,QAAQ;AAAA,EAClC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,oBAAoB,QAAQ;AAAA,EACvC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,UAAU,QAAQ;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;ACtDD;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,SAAS,MAAM;AAAA,EAC1B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;AACM,IAAM,cAAc,MAAM;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;;;ACVD;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,YAAY,MAAM;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ,CAAC;AACM,IAAM,eAAe,MAAM;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ,CAAC;;;ACVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,SAAS,QAAQ;AAAA,EAC5B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AACM,IAAM,eAAe,QAAQ;AAAA,EAClC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;ACxBD;AAAA;AAAA;AAAA;AACA,IAAM,WAAW,MAAM,KAAK,orEAAs2F;AACl4F,IAAM,uBAAuB,SAAS,OAAO,CAAC,GAAG,GAAG,MAAM;AACxD,IAAE,KAAK;AACP,SAAO;AACT,GAAG,CAAC,CAAC;AACL,IAAM,uBAAuB,SAAS,OAAO,CAAC,GAAG,GAAG,MAAM;AACxD,IAAE,EAAE,YAAY,CAAC,KAAK;AACtB,SAAO;AACT,GAAG,CAAC,CAAC;AACL,iBAAgB,MAAM;AACpB,SAAO,KAAK,OAAO,CAAC,GAAG,MAAM;AAC3B,SAAK,qBAAqB;AAC1B,WAAO;AAAA,EACT,GAAG,EAAE;AACP;AACA,iBAAgB,KAAK;AACnB,QAAM,OAAO,CAAC;AACd,aAAW,QAAQ,KAAK;AACtB,UAAM,MAAM,qBAAqB,KAAK,YAAY,CAAC;AACnD,QAAI,QAAQ,QAAW;AACrB,YAAM,IAAI,MAAM,+BAAgC,MAAO;AAAA,IACzD;AACA,SAAK,KAAK,GAAG;AAAA,EACf;AACA,SAAO,IAAI,WAAW,IAAI;AAC5B;AACO,IAAM,eAAe,KAAK;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN;AAAA,EACA;AACF,CAAC;;;AChCD;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;;;ACAnB,IAAI,WAAW;AACf,IAAI,MAAM;AAAV,IAAe,OAAO;AAAtB,IAA2B,SAAS,CAAC;AAArC,IAA2C,MAAM,KAAK,IAAI,GAAG,EAAE;AAC/D,iBAAgB,KAAK,KAAK,QAAQ;AAChC,QAAM,OAAO,CAAC;AACd,WAAS,UAAU;AACnB,MAAI,YAAY;AAChB,SAAO,OAAO,KAAK;AACjB,QAAI,YAAY,MAAM,MAAM;AAC5B,WAAO;AAAA,EACT;AACA,SAAO,MAAM,QAAQ;AACnB,QAAI,YAAY,MAAM,MAAM;AAC5B,aAAS;AAAA,EACX;AACA,MAAI,UAAU,MAAM;AACpB,UAAO,QAAQ,SAAS,YAAY;AACpC,SAAO;AACT;AACA,IAAI,UAAS;AACb,IAAI,QAAQ;AAAZ,IAAiB,SAAS;AAC1B,cAAc,KAAK,QAAQ;AACzB,MAAI,MAAM,GAAG,SAAS,UAAU,GAAG,QAAQ,GAAG,UAAU,QAAQ,GAAG,IAAI,IAAI;AAC3E,KAAG;AACD,QAAI,WAAW,GAAG;AAChB,WAAK,QAAQ;AACb,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAChD;AACA,QAAI,IAAI;AACR,WAAO,QAAQ,KAAM,KAAI,WAAW,QAAS,KAAI,UAAU,KAAK,IAAI,GAAG,KAAK;AAC5E,aAAS;AAAA,EACX,SAAS,KAAK;AACd,OAAK,QAAQ,UAAU;AACvB,SAAO;AACT;AACA,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC;AACtB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,SAAS,SAAU,OAAO;AAC5B,SAAO,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI;AAClK;AACA,IAAI,SAAS;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,gBAAgB;AAClB;AACA,IAAI,eAAe;AACnB,IAAO,iBAAQ;;;ACnDR,IAAM,UAAS,CAAC,MAAM,SAAS,MAAM;AAC1C,QAAM,QAAO,eAAO,OAAO,MAAM,MAAM;AACvC,SAAO;AAAA,IACL;AAAA,IACA,eAAO,OAAO;AAAA,EAChB;AACF;AACO,IAAM,WAAW,CAAC,KAAK,QAAQ,SAAS,MAAM;AACnD,iBAAO,OAAO,KAAK,QAAQ,MAAM;AACjC,SAAO;AACT;AACO,IAAM,iBAAiB,SAAO;AACnC,SAAO,eAAO,eAAe,GAAG;AAClC;;;ACTO,IAAM,SAAS,CAAC,OAAM,YAAW;AACtC,QAAM,OAAO,QAAO;AACpB,QAAM,aAAa,AAAO,eAAe,KAAI;AAC7C,QAAM,eAAe,aAAa,AAAO,eAAe,IAAI;AAC5D,QAAM,SAAQ,IAAI,WAAW,eAAe,IAAI;AAChD,EAAO,SAAS,OAAM,QAAO,CAAC;AAC9B,EAAO,SAAS,MAAM,QAAO,UAAU;AACvC,SAAM,IAAI,SAAQ,YAAY;AAC9B,SAAO,IAAI,OAAO,OAAM,MAAM,SAAQ,MAAK;AAC7C;AACO,IAAM,UAAS,eAAa;AACjC,QAAM,SAAQ,OAAO,SAAS;AAC9B,QAAM,CAAC,OAAM,cAAc,AAAO,QAAO,MAAK;AAC9C,QAAM,CAAC,MAAM,gBAAgB,AAAO,QAAO,OAAM,SAAS,UAAU,CAAC;AACrE,QAAM,UAAS,OAAM,SAAS,aAAa,YAAY;AACvD,MAAI,QAAO,eAAe,MAAM;AAC9B,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACpC;AACA,SAAO,IAAI,OAAO,OAAM,MAAM,SAAQ,MAAK;AAC7C;AACO,IAAM,UAAS,CAAC,GAAG,MAAM;AAC9B,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT,OAAO;AACL,WAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,QAAW,EAAE,OAAO,EAAE,KAAK;AAAA,EAC9E;AACF;AACO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAY,OAAM,MAAM,SAAQ,QAAO;AACrC,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,QAAQ;AAAA,EACf;AACF;;;ACtCO,IAAM,QAAO,CAAC,EAAC,aAAM,aAAM,sBAAY,IAAI,OAAO,OAAM,OAAM,OAAM;AACpE,IAAM,SAAN,MAAa;AAAA,EAClB,YAAY,OAAM,OAAM,SAAQ;AAC9B,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,OAAO,OAAO;AACZ,QAAI,iBAAiB,YAAY;AAC/B,YAAM,SAAS,KAAK,OAAO,KAAK;AAChC,aAAO,kBAAkB,aAAa,AAAO,OAAO,KAAK,MAAM,MAAM,IAAI,OAAO,KAAK,aAAU,AAAO,OAAO,KAAK,MAAM,OAAM,CAAC;AAAA,IACjI,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IACjD;AAAA,EACF;AACF;;;AJbO,IAAM,SAAS,MAAK;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ,WAAS,OAAO,sBAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC;AAC5E,CAAC;AACM,IAAM,SAAS,MAAK;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ,WAAS,OAAO,sBAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC;AAC5E,CAAC;;;AKZD;AAAA;AAAA;AAAA;AAEA,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,UAAS;AACf,IAAM,SAAS,WAAS,AAAO,OAAO,MAAM,QAAO,KAAK,CAAC;AAClD,IAAM,YAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACXA,IAAM,cAAc,IAAI,YAAY;AACpC,IAAM,cAAc,IAAI,YAAY;;;ACI7B,IAAM,MAAN,MAAU;AAAA,EACf,YAAY,UAAS,OAAM,WAAW,QAAO;AAC3C,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,aAAa,OAAM;AACxB,SAAK,aAAa,OAAM;AACxB,SAAK,QAAQ;AACb,SAAK,aAAa,oBAAI,IAAI;AAC1B,WAAO,iBAAiB,MAAM;AAAA,MAC5B,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AACL,YAAQ,KAAK;AAAA,WACR,GAAG;AACJ,eAAO;AAAA,MACT;AAAA,eACO;AACL,cAAM,EAAC,aAAM,cAAa;AAC1B,YAAI,UAAS,aAAa;AACxB,gBAAM,IAAI,MAAM,0CAA0C;AAAA,QAC5D;AACA,YAAI,UAAU,SAAS,cAAc;AACnC,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AACA,eAAO,IAAI,SAAS,SAAS;AAAA,MAC/B;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AACL,YAAQ,KAAK;AAAA,WACR,GAAG;AACJ,cAAM,EAAC,aAAM,oBAAU,KAAK;AAC5B,cAAM,YAAY,AAAO,OAAO,OAAM,OAAM;AAC5C,eAAO,IAAI,SAAS,KAAK,MAAM,SAAS;AAAA,MAC1C;AAAA,WACG,GAAG;AACJ,eAAO;AAAA,MACT;AAAA,eACO;AACL,cAAM,MAAM,+BAAgC,KAAK,mDAAoD;AAAA,MACvG;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,OAAO;AACZ,WAAO,SAAS,KAAK,SAAS,MAAM,QAAQ,KAAK,YAAY,MAAM,WAAW,AAAO,QAAO,KAAK,WAAW,MAAM,SAAS;AAAA,EAC7H;AAAA,EACA,SAAS,OAAM;AACb,UAAM,EAAC,eAAO,mBAAS,eAAc;AACrC,YAAQ;AAAA,WACH;AACH,eAAO,WAAW,QAAO,YAAY,SAAQ,UAAU,OAAO;AAAA;AAE9D,eAAO,WAAW,QAAO,YAAY,SAAQ,OAAO,OAAO;AAAA;AAAA,EAE/D;AAAA,EACA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,MAAM,KAAK,UAAU;AAAA,IACvB;AAAA,EACF;AAAA,EACA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EACA,CAAC,OAAO,IAAI,4BAA4B,KAAK;AAC3C,WAAO,SAAS,KAAK,SAAS,IAAI;AAAA,EACpC;AAAA,EACA,OAAO,MAAM,OAAO;AAClB,cAAU,SAAS,kBAAkB;AACrC,WAAO,CAAC,CAAE,UAAU,OAAM,cAAc,MAAM,UAAU;AAAA,EAC1D;AAAA,EACA,IAAI,sBAAsB;AACxB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAAA,EACA,IAAI,QAAQ;AACV,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACvF;AAAA,EACA,IAAI,SAAS;AACX,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACrF;AAAA,EACA,IAAI,gBAAgB;AAClB,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA,EACA,IAAI,SAAS;AACX,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AAAA,EACA,OAAO,MAAM,OAAO;AAClB,QAAI,iBAAiB,KAAK;AACxB,aAAO;AAAA,IACT,WAAW,SAAS,QAAQ,MAAM,UAAU,OAAO;AACjD,YAAM,EAAC,mBAAS,aAAM,WAAW,kBAAS;AAC1C,aAAO,IAAI,IAAI,UAAS,OAAM,WAAW,UAAS,UAAU,UAAS,OAAM,UAAU,KAAK,CAAC;AAAA,IAC7F,WAAW,SAAS,QAAQ,MAAM,eAAe,MAAM;AACrD,YAAM,EAAC,mBAAS,WAAW,gBAAQ;AACnC,YAAM,UAAS,AAAO,QAAO,SAAS;AACtC,aAAO,IAAI,OAAO,UAAS,OAAM,OAAM;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO,OAAO,UAAS,OAAM,SAAQ;AACnC,QAAI,OAAO,UAAS,UAAU;AAC5B,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AACA,YAAQ;AAAA,WACH,GAAG;AACJ,YAAI,UAAS,aAAa;AACxB,gBAAM,IAAI,MAAM,wCAAyC,6BAA8B;AAAA,QACzF,OAAO;AACL,iBAAO,IAAI,IAAI,UAAS,OAAM,SAAQ,QAAO,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,WACG,GAAG;AACJ,cAAM,SAAQ,UAAU,UAAS,OAAM,QAAO,KAAK;AACnD,eAAO,IAAI,IAAI,UAAS,OAAM,SAAQ,MAAK;AAAA,MAC7C;AAAA,eACO;AACL,cAAM,IAAI,MAAM,iBAAiB;AAAA,MACnC;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,SAAS,SAAQ;AACtB,WAAO,IAAI,OAAO,GAAG,aAAa,OAAM;AAAA,EAC1C;AAAA,EACA,OAAO,SAAS,OAAM,SAAQ;AAC5B,WAAO,IAAI,OAAO,GAAG,OAAM,OAAM;AAAA,EACnC;AAAA,EACA,OAAO,OAAO,QAAO;AACnB,UAAM,CAAC,KAAK,aAAa,IAAI,YAAY,MAAK;AAC9C,QAAI,UAAU,QAAQ;AACpB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAY,QAAO;AACxB,UAAM,QAAQ,IAAI,aAAa,MAAK;AACpC,UAAM,aAAa,MAAM,OAAO,MAAM;AACtC,UAAM,iBAAiB,OAAO,OAAM,SAAS,YAAY,aAAa,MAAM,aAAa,CAAC;AAC1F,QAAI,eAAe,eAAe,MAAM,eAAe;AACrD,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,UAAM,cAAc,eAAe,SAAS,MAAM,gBAAgB,MAAM,UAAU;AAClF,UAAM,UAAS,IAAW,OAAO,MAAM,eAAe,MAAM,YAAY,aAAa,cAAc;AACnG,UAAM,MAAM,MAAM,YAAY,IAAI,IAAI,SAAS,OAAM,IAAI,IAAI,SAAS,MAAM,OAAO,OAAM;AACzF,WAAO;AAAA,MACL;AAAA,MACA,OAAM,SAAS,MAAM,IAAI;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,OAAO,aAAa,cAAc;AAChC,QAAI,SAAS;AACb,UAAM,OAAO,MAAM;AACjB,YAAM,CAAC,GAAG,WAAU,AAAO,QAAO,aAAa,SAAS,MAAM,CAAC;AAC/D,gBAAU;AACV,aAAO;AAAA,IACT;AACA,QAAI,WAAU,KAAK;AACnB,QAAI,QAAQ;AACZ,QAAI,aAAY,IAAI;AAClB,iBAAU;AACV,eAAS;AAAA,IACX,WAAW,aAAY,GAAG;AACxB,cAAQ,KAAK;AAAA,IACf;AACA,QAAI,aAAY,KAAK,aAAY,GAAG;AAClC,YAAM,IAAI,WAAW,uBAAwB,UAAU;AAAA,IACzD;AACA,UAAM,aAAa;AACnB,UAAM,gBAAgB,KAAK;AAC3B,UAAM,aAAa,KAAK;AACxB,UAAM,OAAO,SAAS;AACtB,UAAM,gBAAgB,OAAO;AAC7B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,MAAM,QAAQ,OAAM;AACzB,UAAM,CAAC,QAAQ,UAAS,gBAAgB,QAAQ,KAAI;AACpD,UAAM,MAAM,IAAI,OAAO,MAAK;AAC5B,QAAI,WAAW,IAAI,QAAQ,MAAM;AACjC,WAAO;AAAA,EACT;AACF;AACA,IAAM,kBAAkB,CAAC,QAAQ,UAAS;AACxC,UAAQ,OAAO;AAAA,SACV,KAAK;AACN,YAAM,UAAU,SAAQ;AACxB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ,OAAO,GAAI,UAAU,SAAW,QAAS;AAAA,MACnD;AAAA,IACF;AAAA,SACG,UAAU,QAAQ;AACnB,YAAM,UAAU,SAAQ;AACxB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ,OAAO,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,SACG,OAAO,QAAQ;AAChB,YAAM,UAAU,SAAQ;AACxB,aAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,OAAO,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,aACO;AACL,UAAI,SAAQ,MAAM;AAChB,cAAM,MAAM,iFAAiF;AAAA,MAC/F;AACA,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAK,OAAO,MAAM;AAAA,MACpB;AAAA,IACF;AAAA;AAEJ;AACA,IAAM,aAAa,CAAC,QAAO,OAAO,UAAS;AACzC,QAAM,EAAC,WAAU;AACjB,MAAI,WAAW,UAAU,QAAQ;AAC/B,UAAM,MAAM,8BAA+B,MAAK,eAAgB;AAAA,EAClE;AACA,QAAM,MAAM,MAAM,IAAI,MAAM;AAC5B,MAAI,OAAO,MAAM;AACf,UAAM,OAAM,MAAK,OAAO,MAAK,EAAE,MAAM,CAAC;AACtC,UAAM,IAAI,QAAQ,IAAG;AACrB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,IAAM,aAAa,CAAC,QAAO,OAAO,UAAS;AACzC,QAAM,EAAC,WAAU;AACjB,QAAM,MAAM,MAAM,IAAI,MAAM;AAC5B,MAAI,OAAO,MAAM;AACf,UAAM,OAAM,MAAK,OAAO,MAAK;AAC7B,UAAM,IAAI,QAAQ,IAAG;AACrB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,IAAM,YAAY,CAAC,UAAS,OAAM,cAAc;AAC9C,QAAM,aAAa,AAAO,eAAe,QAAO;AAChD,QAAM,aAAa,aAAa,AAAO,eAAe,KAAI;AAC1D,QAAM,SAAQ,IAAI,WAAW,aAAa,UAAU,UAAU;AAC9D,EAAO,SAAS,UAAS,QAAO,CAAC;AACjC,EAAO,SAAS,OAAM,QAAO,UAAU;AACvC,SAAM,IAAI,WAAW,UAAU;AAC/B,SAAO;AACT;AACA,IAAM,YAAY,OAAO,IAAI,kBAAkB;AAC/C,IAAM,WAAW;AAAA,EACf,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AACA,IAAM,SAAS;AAAA,EACb,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAChB;AACA,IAAM,UAAU;AAChB,IAAM,YAAY,CAAC,OAAO,YAAY;AACpC,MAAI,MAAM,KAAK,OAAO,GAAG;AACvB,YAAQ,KAAK,OAAO;AAAA,EACtB,OAAO;AACL,UAAM,IAAI,MAAM,OAAO;AAAA,EACzB;AACF;AACA,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AChR3B,IAAM,QAAQ;AAAA,EACZ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AACA,IAAM,SAAS;AAAA,EACb,GAAG;AAAA,EACH,GAAG;AACL;;;ACnCA,qBAAqB,OAAM,QAAQ,SAAQ,SAAQ;AACjD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS,EAAE,gBAAO;AAAA,EACpB;AACF;AACA,IAAM,SAAS,YAAY,QAAQ,KAAK,SAAO;AAC7C,QAAM,UAAU,IAAI,YAAY,MAAM;AACtC,SAAO,MAAM,QAAQ,OAAO,GAAG;AACjC,GAAG,SAAO;AACR,QAAM,UAAU,IAAI,YAAY;AAChC,SAAO,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC;AACxC,CAAC;AACD,IAAM,QAAQ,YAAY,SAAS,KAAK,SAAO;AAC7C,MAAI,UAAS;AACb,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,eAAU,OAAO,aAAa,IAAI,EAAE;AAAA,EACtC;AACA,SAAO;AACT,GAAG,SAAO;AACR,QAAM,IAAI,UAAU,CAAC;AACrB,QAAM,MAAM,IAAI,WAAW,IAAI,MAAM;AACrC,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,QAAI,KAAK,IAAI,WAAW,CAAC;AAAA,EAC3B;AACA,SAAO;AACT,CAAC;AACD,IAAM,QAAQ;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK,MAAM;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL;AACA,IAAO,gBAAQ;;;AC1CR,qBAAoB,SAAQ,WAAW,QAAQ;AACpD,QAAM,QAAO,cAAM;AACnB,MAAI,CAAC,OAAM;AACT,UAAM,IAAI,MAAM,yBAA0B,WAAY;AAAA,EACxD;AACA,SAAO,MAAK,QAAQ,OAAO,GAAI,MAAK,SAAW,SAAS;AAC1D;;;ACNO,mBAAkB,OAAO,WAAW,QAAQ;AACjD,QAAM,QAAO,cAAM;AACnB,MAAI,CAAC,OAAM;AACT,UAAM,IAAI,MAAM,yBAA0B,WAAY;AAAA,EACxD;AACA,SAAO,MAAK,QAAQ,OAAO,KAAK,EAAE,UAAU,CAAC;AAC/C;;;ACPM,gBAAiB,GAAS;AAC9B,MAAI,CAAC,OAAO,cAAc,CAAC,KAAK,IAAI;AAAG,UAAM,IAAI,MAAM,2BAA2B,GAAG;AACvF;AAEM,cAAe,GAAU;AAC7B,MAAI,OAAO,MAAM;AAAW,UAAM,IAAI,MAAM,yBAAyB,GAAG;AAC1E;AAEM,eAAgB,MAA8B,SAAiB;AACnE,MAAI,CAAE,cAAa;AAAa,UAAM,IAAI,MAAM,qBAAqB;AACrE,MAAI,QAAQ,SAAS,KAAK,CAAC,QAAQ,SAAS,EAAE,MAAM;AAClD,UAAM,IAAI,MAAM,iCAAiC,0BAA0B,EAAE,QAAQ;AACzF;AAQM,cAAe,OAAU;AAC7B,MAAI,OAAO,UAAS,cAAc,OAAO,MAAK,WAAW;AACvD,UAAM,IAAI,MAAM,iDAAiD;AACnE,SAAO,MAAK,SAAS;AACrB,SAAO,MAAK,QAAQ;AACtB;AAEM,gBAAiB,UAAe,gBAAgB,MAAI;AACxD,MAAI,SAAS;AAAW,UAAM,IAAI,MAAM,kCAAkC;AAC1E,MAAI,iBAAiB,SAAS;AAAU,UAAM,IAAI,MAAM,uCAAuC;AACjG;AACM,gBAAiB,KAAU,UAAa;AAC5C,QAAM,GAAG;AACT,QAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,KAAK;AACpB,UAAM,IAAI,MAAM,yDAAyD,KAAK;;AAElF;AAEA,IAAM,SAAS;EACb;EACA;EACA;EACA;EACA;EACA;;AAGF,IAAA,iBAAe;;;AC5Cf,SAAoB;AACb,IAAM,UACX,MAAM,OAAO,OAAO,YAAY,eAAe,KAAS,eAAoB;;;ACN9E,AAcA,IAAM,MAAM,CAAC,MAA4B,aAAa;AAO/C,IAAM,aAAa,CAAC,QACzB,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAGlD,IAAM,OAAO,CAAC,MAAc,UAAmB,QAAS,KAAK,QAAW,SAAS;AAIjF,IAAM,OAAO,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,OAAO;AAChF,IAAI,CAAC;AAAM,QAAM,IAAI,MAAM,6CAA6C;AAExE,IAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,IAAG,GAAI,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAyD7E,qBAAsB,KAAW;AACrC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,oCAAoC,OAAO,KAAK;AAC7F,SAAO,IAAI,WAAW,IAAI,YAAW,EAAG,OAAO,GAAG,CAAC;AACrD;AAQM,iBAAkB,MAAW;AACjC,MAAI,OAAO,SAAS;AAAU,WAAO,YAAY,IAAI;AACrD,MAAI,CAAC,IAAI,IAAI;AAAG,UAAM,IAAI,MAAM,4BAA4B,OAAO,MAAM;AACzE,SAAO;AACT;AAKM,wBAAyB,QAAoB;AACjD,QAAM,IAAI,IAAI,WAAW,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrE,MAAI,MAAM;AACV,SAAO,QAAQ,CAAC,MAAK;AACnB,QAAI,CAAC,IAAI,CAAC;AAAG,YAAM,IAAI,MAAM,qBAAqB;AAClD,MAAE,IAAI,GAAG,GAAG;AACZ,WAAO,EAAE;EACX,CAAC;AACD,SAAO;AACT;AAGM,IAAgB,OAAhB,MAAoB;EAsBxB,QAAK;AACH,WAAO,KAAK,WAAU;EACxB;;AA+BI,yBAA6C,UAAuB;AACxE,QAAM,QAAQ,CAAC,QAA2B,SAAQ,EAAG,OAAO,QAAQ,GAAG,CAAC,EAAE,OAAM;AAChF,QAAM,MAAM,SAAQ;AACpB,QAAM,YAAY,IAAI;AACtB,QAAM,WAAW,IAAI;AACrB,QAAM,SAAS,MAAM,SAAQ;AAC7B,SAAO;AACT;AA2BM,qBAAsB,cAAc,IAAE;AAC1C,MAAI,WAAU,OAAO,QAAO,oBAAoB,YAAY;AAC1D,WAAO,QAAO,gBAAgB,IAAI,WAAW,WAAW,CAAC;;AAE3D,QAAM,IAAI,MAAM,wCAAwC;AAC1D;;;ACpNM,IAAO,OAAP,cAAuC,KAAa;EAQxD,YAAY,OAAa,MAAW;AAClC,UAAK;AAJC,SAAA,WAAW;AACX,SAAA,YAAY;AAIlB,mBAAO,KAAK,KAAI;AAChB,UAAM,MAAM,QAAQ,IAAI;AACxB,SAAK,QAAQ,MAAK,OAAM;AACxB,QAAI,OAAO,KAAK,MAAM,WAAW;AAC/B,YAAM,IAAI,MAAM,qDAAqD;AACvE,SAAK,WAAW,KAAK,MAAM;AAC3B,SAAK,YAAY,KAAK,MAAM;AAC5B,UAAM,WAAW,KAAK;AACtB,UAAM,MAAM,IAAI,WAAW,QAAQ;AAEnC,QAAI,IAAI,IAAI,SAAS,WAAW,MAAK,OAAM,EAAG,OAAO,GAAG,EAAE,OAAM,IAAK,GAAG;AACxE,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAK,UAAI,MAAM;AAC/C,SAAK,MAAM,OAAO,GAAG;AAErB,SAAK,QAAQ,MAAK,OAAM;AAExB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAK,UAAI,MAAM,KAAO;AACtD,SAAK,MAAM,OAAO,GAAG;AACrB,QAAI,KAAK,CAAC;EACZ;EACA,OAAO,KAAU;AACf,mBAAO,OAAO,IAAI;AAClB,SAAK,MAAM,OAAO,GAAG;AACrB,WAAO;EACT;EACA,WAAW,KAAe;AACxB,mBAAO,OAAO,IAAI;AAClB,mBAAO,MAAM,KAAK,KAAK,SAAS;AAChC,SAAK,WAAW;AAChB,SAAK,MAAM,WAAW,GAAG;AACzB,SAAK,MAAM,OAAO,GAAG;AACrB,SAAK,MAAM,WAAW,GAAG;AACzB,SAAK,QAAO;EACd;EACA,SAAM;AACJ,UAAM,MAAM,IAAI,WAAW,KAAK,MAAM,SAAS;AAC/C,SAAK,WAAW,GAAG;AACnB,WAAO;EACT;EACA,WAAW,IAAY;AAErB,UAAA,MAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,CAAA,CAAE;AACpD,UAAM,EAAE,OAAO,OAAO,UAAU,WAAW,UAAU,cAAc;AACnE,SAAK;AACL,OAAG,WAAW;AACd,OAAG,YAAY;AACf,OAAG,WAAW;AACd,OAAG,YAAY;AACf,OAAG,QAAQ,MAAM,WAAW,GAAG,KAAK;AACpC,OAAG,QAAQ,MAAM,WAAW,GAAG,KAAK;AACpC,WAAO;EACT;EACA,UAAO;AACL,SAAK,YAAY;AACjB,SAAK,MAAM,QAAO;AAClB,SAAK,MAAM,QAAO;EACpB;;AASK,IAAM,OAAO,CAAC,OAAa,KAAY,YAC5C,IAAI,KAAU,OAAM,GAAG,EAAE,OAAO,OAAO,EAAE,OAAM;AACjD,KAAK,SAAS,CAAC,OAAa,QAAe,IAAI,KAAU,OAAM,GAAG;;;AChFlE;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,MAAM,OAAO,CAAC;AACpB,IAAM,MAAM,OAAO,CAAC;AACpB,IAAM,MAAM,OAAO,CAAC;AACpB,IAAM,OAAM,CAAC,MAA4B,aAAa;AAWtD,IAAM,SAAQ,MAAM,KAAK,EAAE,QAAQ,IAAG,GAAI,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAI7E,oBAAqB,QAAiB;AAC1C,MAAI,CAAC,KAAI,MAAK;AAAG,UAAM,IAAI,MAAM,qBAAqB;AAEtD,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,OAAM,QAAQ,KAAK;AACrC,WAAO,OAAM,OAAM;;AAErB,SAAO;AACT;AAEM,6BAA8B,KAAoB;AACtD,QAAM,MAAM,IAAI,SAAS,EAAE;AAC3B,SAAO,IAAI,SAAS,IAAI,IAAI,QAAQ;AACtC;AAEM,qBAAsB,KAAW;AACrC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,8BAA8B,OAAO,GAAG;AAErF,SAAO,OAAO,QAAQ,KAAK,MAAM,KAAK,KAAK;AAC7C;AAKM,oBAAqB,KAAW;AACpC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,8BAA8B,OAAO,GAAG;AACrF,QAAM,MAAM,IAAI;AAChB,MAAI,MAAM;AAAG,UAAM,IAAI,MAAM,4DAA4D,GAAG;AAC5F,QAAM,QAAQ,IAAI,WAAW,MAAM,CAAC;AACpC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,IAAI,IAAI;AACd,UAAM,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC;AAClC,UAAM,OAAO,OAAO,SAAS,SAAS,EAAE;AACxC,QAAI,OAAO,MAAM,IAAI,KAAK,OAAO;AAAG,YAAM,IAAI,MAAM,uBAAuB;AAC3E,UAAM,KAAK;;AAEb,SAAO;AACT;AAGM,yBAA0B,QAAiB;AAC/C,SAAO,YAAY,WAAW,MAAK,CAAC;AACtC;AACM,yBAA0B,QAAiB;AAC/C,MAAI,CAAC,KAAI,MAAK;AAAG,UAAM,IAAI,MAAM,qBAAqB;AACtD,SAAO,YAAY,WAAW,WAAW,KAAK,MAAK,EAAE,QAAO,CAAE,CAAC;AACjE;AAEM,yBAA0B,GAAoB,KAAW;AAC7D,SAAO,WAAW,EAAE,SAAS,EAAE,EAAE,SAAS,MAAM,GAAG,GAAG,CAAC;AACzD;AACM,yBAA0B,GAAoB,KAAW;AAC7D,SAAO,gBAAgB,GAAG,GAAG,EAAE,QAAO;AACxC;AAEM,4BAA6B,GAAkB;AACnD,SAAO,WAAW,oBAAoB,CAAC,CAAC;AAC1C;AAWM,qBAAsB,OAAe,KAAU,gBAAuB;AAC1E,MAAI;AACJ,MAAI,OAAO,QAAQ,UAAU;AAC3B,QAAI;AACF,YAAM,WAAW,GAAG;aACb,GAAP;AACA,YAAM,IAAI,MAAM,GAAG,wCAAwC,gBAAgB,GAAG;;aAEvE,KAAI,GAAG,GAAG;AAGnB,UAAM,WAAW,KAAK,GAAG;SACpB;AACL,UAAM,IAAI,MAAM,GAAG,wCAAwC;;AAE7D,QAAM,MAAM,IAAI;AAChB,MAAI,OAAO,mBAAmB,YAAY,QAAQ;AAChD,UAAM,IAAI,MAAM,GAAG,kBAAkB,6BAA6B,KAAK;AACzE,SAAO;AACT;AAKM,yBAAyB,QAAoB;AACjD,QAAM,IAAI,IAAI,WAAW,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrE,MAAI,MAAM;AACV,SAAO,QAAQ,CAAC,MAAK;AACnB,QAAI,CAAC,KAAI,CAAC;AAAG,YAAM,IAAI,MAAM,qBAAqB;AAClD,MAAE,IAAI,GAAG,GAAG;AACZ,WAAO,EAAE;EACX,CAAC;AACD,SAAO;AACT;AAEM,oBAAqB,IAAgB,IAAc;AAEvD,MAAI,GAAG,WAAW,GAAG;AAAQ,WAAO;AACpC,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ;AAAK,QAAI,GAAG,OAAO,GAAG;AAAI,aAAO;AAChE,SAAO;AACT;AASM,sBAAsB,KAAW;AACrC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,oCAAoC,OAAO,KAAK;AAC7F,SAAO,IAAI,WAAW,IAAI,YAAW,EAAG,OAAO,GAAG,CAAC;AACrD;AAQM,gBAAiB,GAAS;AAC9B,MAAI;AACJ,OAAK,MAAM,GAAG,IAAI,KAAK,MAAM,KAAK,OAAO;AAAE;AAC3C,SAAO;AACT;AAOM,gBAAiB,GAAW,KAAW;AAC3C,SAAQ,KAAK,OAAO,GAAG,IAAK;AAC9B;AAKO,IAAM,SAAS,CAAC,GAAW,KAAa,UAAkB;AAC/D,SAAO,IAAM,SAAQ,MAAM,QAAQ,OAAO,GAAG;AAC/C;AAMO,IAAM,UAAU,CAAC,MAAe,QAAO,OAAO,IAAI,CAAC,KAAK;AAI/D,IAAM,MAAM,CAAC,SAAe,IAAI,WAAW,IAAI;AAC/C,IAAM,OAAO,CAAC,QAAa,WAAW,KAAK,GAAG;AASxC,wBACJ,SACA,UACA,QAAkE;AAElE,MAAI,OAAO,YAAY,YAAY,UAAU;AAAG,UAAM,IAAI,MAAM,0BAA0B;AAC1F,MAAI,OAAO,aAAa,YAAY,WAAW;AAAG,UAAM,IAAI,MAAM,2BAA2B;AAC7F,MAAI,OAAO,WAAW;AAAY,UAAM,IAAI,MAAM,2BAA2B;AAE7E,MAAI,IAAI,IAAI,OAAO;AACnB,MAAI,IAAI,IAAI,OAAO;AACnB,MAAI,IAAI;AACR,QAAM,QAAQ,MAAK;AACjB,MAAE,KAAK,CAAC;AACR,MAAE,KAAK,CAAC;AACR,QAAI;EACN;AACA,QAAM,IAAI,IAAI,MAAoB,OAAO,GAAG,GAAG,GAAG,CAAC;AACnD,QAAM,SAAS,CAAC,OAAO,IAAG,MAAM;AAE9B,QAAI,EAAE,KAAK,CAAC,CAAI,CAAC,GAAG,IAAI;AACxB,QAAI,EAAC;AACL,QAAI,KAAK,WAAW;AAAG;AACvB,QAAI,EAAE,KAAK,CAAC,CAAI,CAAC,GAAG,IAAI;AACxB,QAAI,EAAC;EACP;AACA,QAAM,MAAM,MAAK;AAEf,QAAI,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC1D,QAAI,MAAM;AACV,UAAM,MAAoB,CAAA;AAC1B,WAAO,MAAM,UAAU;AACrB,UAAI,EAAC;AACL,YAAM,KAAK,EAAE,MAAK;AAClB,UAAI,KAAK,EAAE;AACX,aAAO,EAAE;;AAEX,WAAO,aAAY,GAAG,GAAG;EAC3B;AACA,QAAM,WAAW,CAAC,MAAkB,SAAoB;AACtD,UAAK;AACL,WAAO,IAAI;AACX,QAAI,MAAqB;AACzB,WAAO,CAAE,OAAM,KAAK,IAAG,CAAE;AAAI,aAAM;AACnC,UAAK;AACL,WAAO;EACT;AACA,SAAO;AACT;AAIA,IAAM,eAAe;EACnB,QAAQ,CAAC,QAAa,OAAO,QAAQ;EACrC,UAAU,CAAC,QAAa,OAAO,QAAQ;EACvC,SAAS,CAAC,QAAa,OAAO,QAAQ;EACtC,QAAQ,CAAC,QAAa,OAAO,QAAQ;EACrC,eAAe,CAAC,QAAa,OAAO,cAAc,GAAG;EACrD,OAAO,CAAC,QAAa,MAAM,QAAQ,GAAG;EACtC,OAAO,CAAC,KAAU,WAAiB,OAAe,GAAG,QAAQ,GAAG;EAChE,MAAM,CAAC,QAAa,OAAO,QAAQ,cAAc,OAAO,cAAc,IAAI,SAAS;;AAM/E,wBACJ,QACA,YACA,gBAA2B,CAAA,GAAE;AAE7B,QAAM,aAAa,CAAC,WAAoB,MAAiB,eAAuB;AAC9E,UAAM,WAAW,aAAa;AAC9B,QAAI,OAAO,aAAa;AACtB,YAAM,IAAI,MAAM,sBAAsB,0BAA0B;AAElE,UAAM,MAAM,OAAO;AACnB,QAAI,cAAc,QAAQ;AAAW;AACrC,QAAI,CAAC,SAAS,KAAK,MAAM,GAAG;AAC1B,YAAM,IAAI,MACR,iBAAiB,OAAO,SAAS,KAAK,QAAQ,OAAO,kBAAkB,MAAM;;EAGnF;AACA,aAAW,CAAC,WAAW,SAAS,OAAO,QAAQ,UAAU;AAAG,eAAW,WAAW,MAAO,KAAK;AAC9F,aAAW,CAAC,WAAW,SAAS,OAAO,QAAQ,aAAa;AAAG,eAAW,WAAW,MAAO,IAAI;AAChG,SAAO;AACT;;;ACtRA,AAYA,IAAM,OAAM,OAAO,CAAC;AAApB,IAAuB,OAAM,OAAO,CAAC;AAArC,IAAwC,OAAM,OAAO,CAAC;AAAtD,IAAyD,MAAM,OAAO,CAAC;AAEvE,IAAM,MAAM,OAAO,CAAC;AAApB,IAAuB,MAAM,OAAO,CAAC;AAArC,IAAwC,MAAM,OAAO,CAAC;AAEtD,IAAM,MAAM,OAAO,CAAC;AAApB,IAAuB,OAAO,OAAO,EAAE;AAGjC,aAAc,GAAW,GAAS;AACtC,QAAM,SAAS,IAAI;AACnB,SAAO,UAAU,OAAM,SAAS,IAAI;AACtC;AAQM,aAAc,KAAa,OAAe,QAAc;AAC5D,MAAI,UAAU,QAAO,QAAQ;AAAK,UAAM,IAAI,MAAM,2BAA2B;AAC7E,MAAI,WAAW;AAAK,WAAO;AAC3B,MAAI,MAAM;AACV,SAAO,QAAQ,MAAK;AAClB,QAAI,QAAQ;AAAK,YAAO,MAAM,MAAO;AACrC,UAAO,MAAM,MAAO;AACpB,cAAU;;AAEZ,SAAO;AACT;AAGM,cAAe,GAAW,OAAe,QAAc;AAC3D,MAAI,MAAM;AACV,SAAO,UAAU,MAAK;AACpB,WAAO;AACP,WAAO;;AAET,SAAO;AACT;AAGM,gBAAiB,SAAgB,QAAc;AACnD,MAAI,YAAW,QAAO,UAAU,MAAK;AACnC,UAAM,IAAI,MAAM,6CAA6C,eAAc,QAAQ;;AAIrF,MAAI,IAAI,IAAI,SAAQ,MAAM;AAC1B,MAAI,IAAI;AAER,MAAI,IAAI,MAAK,IAAI,MAAK,IAAI,MAAK,IAAI;AACnC,SAAO,MAAM,MAAK;AAEhB,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI,IAAI;AAClB,UAAM,IAAI,IAAI,IAAI;AAElB,QAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;;AAEzC,QAAM,MAAM;AACZ,MAAI,QAAQ;AAAK,UAAM,IAAI,MAAM,wBAAwB;AACzD,SAAO,IAAI,GAAG,MAAM;AACtB;AAKM,uBAAwB,GAAS;AAMrC,QAAM,YAAa,KAAI,QAAO;AAE9B,MAAI,GAAW,GAAW;AAG1B,OAAK,IAAI,IAAI,MAAK,IAAI,GAAG,IAAI,SAAQ,MAAK,KAAK,MAAK;AAAI;AAGxD,OAAK,IAAI,MAAK,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,MAAM,IAAI,MAAK;AAAI;AAG7D,MAAI,MAAM,GAAG;AACX,UAAM,SAAU,KAAI,QAAO;AAC3B,WAAO,qBAAwB,KAAe,GAAI;AAChD,YAAM,OAAO,IAAG,IAAI,GAAG,MAAM;AAC7B,UAAI,CAAC,IAAG,IAAI,IAAG,IAAI,IAAI,GAAG,CAAC;AAAG,cAAM,IAAI,MAAM,yBAAyB;AACvE,aAAO;IACT;;AAIF,QAAM,SAAU,KAAI,QAAO;AAC3B,SAAO,qBAAwB,KAAe,GAAI;AAEhD,QAAI,IAAG,IAAI,GAAG,SAAS,MAAM,IAAG,IAAI,IAAG,GAAG;AAAG,YAAM,IAAI,MAAM,yBAAyB;AACtF,QAAI,IAAI;AAER,QAAI,IAAI,IAAG,IAAI,IAAG,IAAI,IAAG,KAAK,CAAC,GAAG,CAAC;AACnC,QAAI,IAAI,IAAG,IAAI,GAAG,MAAM;AACxB,QAAI,IAAI,IAAG,IAAI,GAAG,CAAC;AAEnB,WAAO,CAAC,IAAG,IAAI,GAAG,IAAG,GAAG,GAAG;AACzB,UAAI,IAAG,IAAI,GAAG,IAAG,IAAI;AAAG,eAAO,IAAG;AAElC,UAAI,IAAI;AACR,eAAS,KAAK,IAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACnC,YAAI,IAAG,IAAI,IAAI,IAAG,GAAG;AAAG;AACxB,aAAK,IAAG,IAAI,EAAE;;AAGhB,YAAM,KAAK,IAAG,IAAI,GAAG,QAAO,OAAO,IAAI,IAAI,CAAC,CAAC;AAC7C,UAAI,IAAG,IAAI,EAAE;AACb,UAAI,IAAG,IAAI,GAAG,EAAE;AAChB,UAAI,IAAG,IAAI,GAAG,CAAC;AACf,UAAI;;AAEN,WAAO;EACT;AACF;AAEM,gBAAiB,GAAS;AAM9B,MAAI,IAAI,QAAQ,KAAK;AAKnB,UAAM,SAAU,KAAI,QAAO;AAC3B,WAAO,mBAAsB,KAAe,GAAI;AAC9C,YAAM,OAAO,IAAG,IAAI,GAAG,MAAM;AAE7B,UAAI,CAAC,IAAG,IAAI,IAAG,IAAI,IAAI,GAAG,CAAC;AAAG,cAAM,IAAI,MAAM,yBAAyB;AACvE,aAAO;IACT;;AAIF,MAAI,IAAI,QAAQ,KAAK;AACnB,UAAM,KAAM,KAAI,OAAO;AACvB,WAAO,mBAAsB,KAAe,GAAI;AAC9C,YAAM,KAAK,IAAG,IAAI,GAAG,IAAG;AACxB,YAAM,IAAI,IAAG,IAAI,IAAI,EAAE;AACvB,YAAM,KAAK,IAAG,IAAI,GAAG,CAAC;AACtB,YAAM,IAAI,IAAG,IAAI,IAAG,IAAI,IAAI,IAAG,GAAG,CAAC;AACnC,YAAM,OAAO,IAAG,IAAI,IAAI,IAAG,IAAI,GAAG,IAAG,GAAG,CAAC;AACzC,UAAI,CAAC,IAAG,IAAI,IAAG,IAAI,IAAI,GAAG,CAAC;AAAG,cAAM,IAAI,MAAM,yBAAyB;AACvE,aAAO;IACT;;AAIF,MAAI,IAAI,SAAS,KAAK;;AAuBtB,SAAO,cAAc,CAAC;AACxB;AA+CA,IAAM,eAAe;EACnB;EAAU;EAAW;EAAO;EAAO;EAAO;EAAQ;EAClD;EAAO;EAAO;EAAO;EAAO;EAAO;EACnC;EAAQ;EAAQ;EAAQ;;AAEpB,uBAA2B,OAAgB;AAC/C,QAAM,UAAU;IACd,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;;AAER,QAAM,OAAO,aAAa,OAAO,CAAC,KAAK,QAAe;AACpD,QAAI,OAAO;AACX,WAAO;EACT,GAAG,OAAO;AACV,SAAO,eAAe,OAAO,IAAI;AACnC;AAGM,eAAmB,GAAc,KAAQ,OAAa;AAG1D,MAAI,QAAQ;AAAK,UAAM,IAAI,MAAM,oBAAoB;AACrD,MAAI,UAAU;AAAK,WAAO,EAAE;AAC5B,MAAI,UAAU;AAAK,WAAO;AAC1B,MAAI,IAAI,EAAE;AACV,MAAI,IAAI;AACR,SAAO,QAAQ,MAAK;AAClB,QAAI,QAAQ;AAAK,UAAI,EAAE,IAAI,GAAG,CAAC;AAC/B,QAAI,EAAE,IAAI,CAAC;AACX,cAAU;;AAEZ,SAAO;AACT;AAGM,uBAA2B,GAAc,MAAS;AACtD,QAAM,MAAM,IAAI,MAAM,KAAK,MAAM;AAEjC,QAAM,iBAAiB,KAAK,OAAO,CAAC,KAAK,KAAK,MAAK;AACjD,QAAI,EAAE,IAAI,GAAG;AAAG,aAAO;AACvB,QAAI,KAAK;AACT,WAAO,EAAE,IAAI,KAAK,GAAG;EACvB,GAAG,EAAE,GAAG;AAER,QAAM,WAAW,EAAE,IAAI,cAAc;AAErC,OAAK,YAAY,CAAC,KAAK,KAAK,MAAK;AAC/B,QAAI,EAAE,IAAI,GAAG;AAAG,aAAO;AACvB,QAAI,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE;AAC1B,WAAO,EAAE,IAAI,KAAK,GAAG;EACvB,GAAG,QAAQ;AACX,SAAO;AACT;AAgBM,iBAAkB,GAAW,YAAmB;AAEpD,QAAM,cAAc,eAAe,SAAY,aAAa,EAAE,SAAS,CAAC,EAAE;AAC1E,QAAM,cAAc,KAAK,KAAK,cAAc,CAAC;AAC7C,SAAO,EAAE,YAAY,aAAa,YAAW;AAC/C;AAeM,eACJ,OACA,SACA,QAAO,OACP,QAAiC,CAAA,GAAE;AAEnC,MAAI,SAAS;AAAK,UAAM,IAAI,MAAM,8BAA8B,OAAO;AACvE,QAAM,EAAE,YAAY,MAAM,aAAa,UAAU,QAAQ,OAAO,OAAM;AACtE,MAAI,QAAQ;AAAM,UAAM,IAAI,MAAM,iDAAiD;AACnF,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,IAAuB,OAAO,OAAO;IACzC;IACA;IACA;IACA,MAAM,QAAQ,IAAI;IAClB,MAAM;IACN,KAAK;IACL,QAAQ,CAAC,QAAQ,IAAI,KAAK,KAAK;IAC/B,SAAS,CAAC,QAAO;AACf,UAAI,OAAO,QAAQ;AACjB,cAAM,IAAI,MAAM,+CAA+C,OAAO,KAAK;AAC7E,aAAO,QAAO,OAAO,MAAM;IAC7B;IACA,KAAK,CAAC,QAAQ,QAAQ;IACtB,OAAO,CAAC,QAAS,OAAM,UAAS;IAChC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK;IAC7B,KAAK,CAAC,KAAK,QAAQ,QAAQ;IAE3B,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,KAAK;IAClC,KAAK,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK;IACvC,KAAK,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK;IACvC,KAAK,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK;IACvC,KAAK,CAAC,KAAK,UAAU,MAAM,GAAG,KAAK,KAAK;IACxC,KAAK,CAAC,KAAK,QAAQ,IAAI,MAAM,OAAO,KAAK,KAAK,GAAG,KAAK;IAGtD,MAAM,CAAC,QAAQ,MAAM;IACrB,MAAM,CAAC,KAAK,QAAQ,MAAM;IAC1B,MAAM,CAAC,KAAK,QAAQ,MAAM;IAC1B,MAAM,CAAC,KAAK,QAAQ,MAAM;IAE1B,KAAK,CAAC,QAAQ,OAAO,KAAK,KAAK;IAC/B,MAAM,MAAM,QAAS,EAAC,MAAM,MAAM,GAAG,CAAC;IACtC,aAAa,CAAC,QAAQ,cAAc,GAAG,GAAG;IAG1C,MAAM,CAAC,GAAG,GAAG,MAAO,IAAI,IAAI;IAC5B,SAAS,CAAC,QAAS,QAAO,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,KAAK;IAClF,WAAW,CAAC,WAAS;AACnB,UAAI,OAAM,WAAW;AACnB,cAAM,IAAI,MAAM,0BAA0B,cAAc,OAAM,QAAQ;AACxE,aAAO,QAAO,gBAAgB,MAAK,IAAI,gBAAgB,MAAK;IAC9D;GACU;AACZ,SAAO,OAAO,OAAO,CAAC;AACxB;AAyBM,6BACJ,OACA,YACA,QAAO,OAAK;AAEZ,UAAO,YAAY,eAAe,KAAI;AACtC,QAAM,UAAU,MAAK;AACrB,QAAM,SAAS,QAAQ,UAAU,EAAE,cAAc;AACjD,MAAI,SAAS,MAAM,UAAU,UAAU,UAAU;AAC/C,UAAM,IAAI,MAAM,iCAAiC,mCAAmC,SAAS;AAC/F,QAAM,MAAM,QAAO,gBAAgB,KAAI,IAAI,gBAAgB,KAAI;AAC/D,SAAO,IAAI,KAAK,aAAa,IAAG,IAAI;AACtC;;;ACxaA,AAIA,IAAM,OAAM,OAAO,CAAC;AACpB,IAAM,OAAM,OAAO,CAAC;AAiCd,cAAmC,GAAwB,MAAY;AAC3E,QAAM,kBAAkB,CAAC,WAAoB,SAAc;AACzD,UAAM,MAAM,KAAK,OAAM;AACvB,WAAO,YAAY,MAAM;EAC3B;AACA,QAAM,OAAO,CAAC,MAAa;AACzB,UAAM,UAAU,KAAK,KAAK,OAAO,CAAC,IAAI;AACtC,UAAM,aAAa,KAAM,KAAI;AAC7B,WAAO,EAAE,SAAS,WAAU;EAC9B;AACA,SAAO;IACL;IAEA,aAAa,KAAQ,GAAS;AAC5B,UAAI,IAAI,EAAE;AACV,UAAI,IAAO;AACX,aAAO,IAAI,MAAK;AACd,YAAI,IAAI;AAAK,cAAI,EAAE,IAAI,CAAC;AACxB,YAAI,EAAE,OAAM;AACZ,cAAM;;AAER,aAAO;IACT;IAYA,iBAAiB,KAAQ,GAAS;AAChC,YAAM,EAAE,SAAS,eAAe,KAAK,CAAC;AACtC,YAAM,SAAc,CAAA;AACpB,UAAI,IAAO;AACX,UAAI,QAAO;AACX,eAAS,SAAS,GAAG,SAAS,SAAS,UAAU;AAC/C,gBAAO;AACP,eAAO,KAAK,KAAI;AAEhB,iBAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,kBAAO,MAAK,IAAI,CAAC;AACjB,iBAAO,KAAK,KAAI;;AAElB,YAAI,MAAK,OAAM;;AAEjB,aAAO;IACT;IASA,KAAK,GAAW,aAAkB,GAAS;AAGzC,YAAM,EAAE,SAAS,eAAe,KAAK,CAAC;AAEtC,UAAI,IAAI,EAAE;AACV,UAAI,IAAI,EAAE;AAEV,YAAM,OAAO,OAAO,KAAK,IAAI,CAAC;AAC9B,YAAM,YAAY,KAAK;AACvB,YAAM,UAAU,OAAO,CAAC;AAExB,eAAS,SAAS,GAAG,SAAS,SAAS,UAAU;AAC/C,cAAM,SAAS,SAAS;AAExB,YAAI,QAAQ,OAAO,IAAI,IAAI;AAG3B,cAAM;AAIN,YAAI,QAAQ,YAAY;AACtB,mBAAS;AACT,eAAK;;AAWP,cAAM,UAAU;AAChB,cAAM,UAAU,SAAS,KAAK,IAAI,KAAK,IAAI;AAC3C,cAAM,QAAQ,SAAS,MAAM;AAC7B,cAAM,QAAQ,QAAQ;AACtB,YAAI,UAAU,GAAG;AAEf,cAAI,EAAE,IAAI,gBAAgB,OAAO,YAAY,QAAQ,CAAC;eACjD;AACL,cAAI,EAAE,IAAI,gBAAgB,OAAO,YAAY,QAAQ,CAAC;;;AAQ1D,aAAO,EAAE,GAAG,EAAC;IACf;IAEA,WAAW,GAAM,gBAA6B,GAAW,WAAoB;AAE3E,YAAM,IAAY,EAAE,gBAAgB;AAEpC,UAAI,OAAO,eAAe,IAAI,CAAC;AAC/B,UAAI,CAAC,MAAM;AACT,eAAO,KAAK,iBAAiB,GAAG,CAAC;AACjC,YAAI,MAAM,GAAG;AACX,yBAAe,IAAI,GAAG,UAAU,IAAI,CAAC;;;AAGzC,aAAO,KAAK,KAAK,GAAG,MAAM,CAAC;IAC7B;;AAEJ;AAgBM,uBAA+B,OAAyB;AAC5D,gBAAc,MAAM,EAAE;AACtB,iBACE,OACA;IACE,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;KAEN;IACE,YAAY;IACZ,aAAa;GACd;AAGH,SAAO,OAAO,OAAO;IACnB,GAAG,QAAQ,MAAM,GAAG,MAAM,UAAU;IACpC,GAAG;IACH,GAAG,EAAE,GAAG,MAAM,GAAG,MAAK;GACd;AACZ;;;AC1MA,AA0FA,2BAA8B,OAAyB;AACrD,QAAM,OAAO,cAAc,KAAK;AAChC,EAAG,eACD,MACA;IACE,GAAG;IACH,GAAG;KAEL;IACE,0BAA0B;IAC1B,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,SAAS;GACV;AAEH,QAAM,EAAE,MAAM,SAAI,MAAM;AACxB,MAAI,MAAM;AACR,QAAI,CAAC,IAAG,IAAI,GAAG,IAAG,IAAI,GAAG;AACvB,YAAM,IAAI,MAAM,mEAAmE;;AAErF,QACE,OAAO,SAAS,YAChB,OAAO,KAAK,SAAS,YACrB,OAAO,KAAK,gBAAgB,YAC5B;AACA,YAAM,IAAI,MAAM,mEAAmE;;;AAGvF,SAAO,OAAO,OAAO,EAAE,GAAG,KAAI,CAAW;AAC3C;AAUA,IAAM,EAAE,iBAAiB,KAAK,YAAY,QAAQ;AAC3C,IAAM,MAAM;EAEjB,KAAK,MAAM,eAAe,MAAK;IAC7B,YAAY,IAAI,IAAE;AAChB,YAAM,CAAC;IACT;;EAEF,UAAU,MAAgB;AACxB,UAAM,EAAE,KAAK,MAAM;AACnB,QAAI,KAAK,SAAS,KAAK,KAAK,OAAO;AAAM,YAAM,IAAI,EAAE,+BAA+B;AACpF,UAAM,MAAM,KAAK;AACjB,UAAM,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC;AACpC,QAAI,CAAC,OAAO,IAAI,WAAW;AAAK,YAAM,IAAI,EAAE,yCAAyC;AAKrF,QAAI,IAAI,KAAK;AAAY,YAAM,IAAI,EAAE,qCAAqC;AAC1E,QAAI,IAAI,OAAO,KAAQ,CAAE,KAAI,KAAK;AAChC,YAAM,IAAI,EAAE,qDAAqD;AACnE,WAAO,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,SAAS,MAAM,CAAC,EAAC;EACjD;EACA,MAAM,KAAwB;AAE5B,UAAM,EAAE,KAAK,MAAM;AACnB,UAAM,OAAO,OAAO,QAAQ,WAAW,IAAI,GAAG,IAAI;AAClD,QAAI,CAAE,iBAAgB;AAAa,YAAM,IAAI,MAAM,eAAe;AAClE,QAAI,IAAI,KAAK;AACb,QAAI,IAAI,KAAK,KAAK,MAAM;AAAM,YAAM,IAAI,EAAE,uBAAuB;AACjE,QAAI,KAAK,OAAO,IAAI;AAAG,YAAM,IAAI,EAAE,qCAAqC;AACxE,UAAM,EAAE,GAAG,GAAG,GAAG,WAAW,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC;AAC1D,UAAM,EAAE,GAAG,GAAG,GAAG,eAAe,IAAI,UAAU,MAAM;AACpD,QAAI,WAAW;AAAQ,YAAM,IAAI,EAAE,6CAA6C;AAChF,WAAO,EAAE,GAAG,EAAC;EACf;EACA,WAAW,KAA6B;AAEtC,UAAM,QAAQ,CAAC,OAAuB,OAAO,SAAS,GAAE,IAAI,EAAE,IAAI,IAAS,OAAO,KAAI;AACtF,UAAM,IAAI,CAAC,QAAwB;AACjC,YAAM,MAAM,IAAI,SAAS,EAAE;AAC3B,aAAO,IAAI,SAAS,IAAI,IAAI,QAAQ;IACtC;AACA,UAAM,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AACxB,UAAM,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AACxB,UAAM,MAAM,EAAE,SAAS;AACvB,UAAM,MAAM,EAAE,SAAS;AACvB,UAAM,KAAK,EAAE,GAAG;AAChB,UAAM,KAAK,EAAE,GAAG;AAChB,WAAO,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,KAAK,MAAM,KAAK;EACnD;;AAKF,IAAM,OAAM,OAAO,CAAC;AAApB,IAAuB,OAAM,OAAO,CAAC;AAArC,IAAwC,OAAM,OAAO,CAAC;AAAtD,IAAyD,OAAM,OAAO,CAAC;AAAvE,IAA0E,OAAM,OAAO,CAAC;AAElF,2BAA+B,MAAwB;AAC3D,QAAM,QAAQ,kBAAkB,IAAI;AACpC,QAAM,EAAE,YAAO;AAEf,QAAM,WACJ,MAAM,WACL,EAAC,GAAuB,OAAyB,iBAAyB;AACzE,UAAM,IAAI,MAAM,SAAQ;AACxB,WAAO,AAAG,aAAY,WAAW,KAAK,CAAC,CAAI,CAAC,GAAG,IAAG,QAAQ,EAAE,CAAC,GAAG,IAAG,QAAQ,EAAE,CAAC,CAAC;EACjF;AACF,QAAM,YACJ,MAAM,aACL,EAAC,WAAqB;AAErB,UAAM,OAAO,OAAM,SAAS,CAAC;AAE7B,UAAM,IAAI,IAAG,UAAU,KAAK,SAAS,GAAG,IAAG,KAAK,CAAC;AACjD,UAAM,IAAI,IAAG,UAAU,KAAK,SAAS,IAAG,OAAO,IAAI,IAAG,KAAK,CAAC;AAC5D,WAAO,EAAE,GAAG,EAAC;EACf;AAMF,+BAA6B,GAAI;AAC/B,UAAM,EAAE,GAAG,MAAM;AACjB,UAAM,KAAK,IAAG,IAAI,CAAC;AACnB,UAAM,KAAK,IAAG,IAAI,IAAI,CAAC;AACvB,WAAO,IAAG,IAAI,IAAG,IAAI,IAAI,IAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;EAC3C;AAKA,MAAI,CAAC,IAAG,IAAI,IAAG,IAAI,MAAM,EAAE,GAAG,oBAAoB,MAAM,EAAE,CAAC;AACzD,UAAM,IAAI,MAAM,6CAA6C;AAG/D,8BAA4B,KAAW;AACrC,WAAO,OAAO,QAAQ,YAAY,OAAM,OAAO,MAAM,MAAM;EAC7D;AACA,oBAAkB,KAAW;AAC3B,QAAI,CAAC,mBAAmB,GAAG;AAAG,YAAM,IAAI,MAAM,6CAA6C;EAC7F;AAGA,kCAAgC,KAAY;AAC1C,UAAM,EAAE,0BAA0B,SAAS,aAAa,gBAAgB,MAAM;AAC9E,QAAI,WAAW,OAAO,QAAQ,UAAU;AACtC,UAAI,eAAe;AAAY,cAAM,AAAG,WAAW,GAAG;AAEtD,UAAI,OAAO,QAAQ,YAAY,CAAC,QAAQ,SAAS,IAAI,MAAM;AAAG,cAAM,IAAI,MAAM,aAAa;AAC3F,YAAM,IAAI,SAAS,cAAc,GAAG,GAAG;;AAEzC,QAAI;AACJ,QAAI;AACF,YACE,OAAO,QAAQ,WACX,MACA,AAAG,gBAAgB,YAAY,eAAe,KAAK,WAAW,CAAC;aAC9D,OAAP;AACA,YAAM,IAAI,MAAM,uBAAuB,yCAAyC,OAAO,KAAK;;AAE9F,QAAI;AAAgB,YAAM,AAAI,IAAI,KAAK,CAAC;AACxC,aAAS,GAAG;AACZ,WAAO;EACT;AAEA,QAAM,mBAAmB,oBAAI,IAAG;AAChC,0BAAwB,OAAc;AACpC,QAAI,CAAE,kBAAiB;AAAQ,YAAM,IAAI,MAAM,0BAA0B;EAC3E;AAMA,QAAM,OAAK;IAIT,YAAqB,IAAgB,IAAgB,IAAK;AAArC,WAAA,KAAA;AAAgB,WAAA,KAAA;AAAgB,WAAA,KAAA;AACnD,UAAI,MAAM,QAAQ,CAAC,IAAG,QAAQ,EAAE;AAAG,cAAM,IAAI,MAAM,YAAY;AAC/D,UAAI,MAAM,QAAQ,CAAC,IAAG,QAAQ,EAAE;AAAG,cAAM,IAAI,MAAM,YAAY;AAC/D,UAAI,MAAM,QAAQ,CAAC,IAAG,QAAQ,EAAE;AAAG,cAAM,IAAI,MAAM,YAAY;IACjE;IAIA,OAAO,WAAW,GAAiB;AACjC,YAAM,EAAE,GAAG,MAAM,KAAK,CAAA;AACtB,UAAI,CAAC,KAAK,CAAC,IAAG,QAAQ,CAAC,KAAK,CAAC,IAAG,QAAQ,CAAC;AAAG,cAAM,IAAI,MAAM,sBAAsB;AAClF,UAAI,aAAa;AAAO,cAAM,IAAI,MAAM,8BAA8B;AACtE,YAAM,MAAM,CAAC,MAAS,IAAG,IAAI,GAAG,IAAG,IAAI;AAEvC,UAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAAG,eAAO,OAAM;AACnC,aAAO,IAAI,OAAM,GAAG,GAAG,IAAG,GAAG;IAC/B;IAEA,IAAI,IAAC;AACH,aAAO,KAAK,SAAQ,EAAG;IACzB;IACA,IAAI,IAAC;AACH,aAAO,KAAK,SAAQ,EAAG;IACzB;IAQA,OAAO,WAAW,QAAe;AAC/B,YAAM,QAAQ,IAAG,YAAY,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AACpD,aAAO,OAAO,IAAI,CAAC,GAAG,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,OAAM,UAAU;IACxE;IAMA,OAAO,QAAQ,KAAQ;AACrB,YAAM,IAAI,OAAM,WAAW,UAAU,YAAY,YAAY,GAAG,CAAC,CAAC;AAClE,QAAE,eAAc;AAChB,aAAO;IACT;IAGA,OAAO,eAAe,YAAmB;AACvC,aAAO,OAAM,KAAK,SAAS,uBAAuB,UAAU,CAAC;IAC/D;IAQA,eAAe,YAAkB;AAC/B,WAAK,eAAe;AACpB,uBAAiB,OAAO,IAAI;IAC9B;IAGA,iBAAc;AAEZ,UAAI,KAAK,IAAG,GAAI;AACd,YAAI,MAAM;AAAoB;AAC9B,cAAM,IAAI,MAAM,iBAAiB;;AAGnC,YAAM,EAAE,GAAG,MAAM,KAAK,SAAQ;AAE9B,UAAI,CAAC,IAAG,QAAQ,CAAC,KAAK,CAAC,IAAG,QAAQ,CAAC;AAAG,cAAM,IAAI,MAAM,0BAA0B;AAChF,YAAM,OAAO,IAAG,IAAI,CAAC;AACrB,YAAM,QAAQ,oBAAoB,CAAC;AACnC,UAAI,CAAC,IAAG,IAAI,MAAM,KAAK;AAAG,cAAM,IAAI,MAAM,mCAAmC;AAC7E,UAAI,CAAC,KAAK,cAAa;AAAI,cAAM,IAAI,MAAM,wCAAwC;IACrF;IACA,WAAQ;AACN,YAAM,EAAE,MAAM,KAAK,SAAQ;AAC3B,UAAI,IAAG;AAAO,eAAO,CAAC,IAAG,MAAM,CAAC;AAChC,YAAM,IAAI,MAAM,6BAA6B;IAC/C;IAKA,OAAO,OAAY;AACjB,qBAAe,KAAK;AACpB,YAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO;AACnC,YAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO;AACnC,YAAM,KAAK,IAAG,IAAI,IAAG,IAAI,IAAI,EAAE,GAAG,IAAG,IAAI,IAAI,EAAE,CAAC;AAChD,YAAM,KAAK,IAAG,IAAI,IAAG,IAAI,IAAI,EAAE,GAAG,IAAG,IAAI,IAAI,EAAE,CAAC;AAChD,aAAO,MAAM;IACf;IAKA,SAAM;AACJ,aAAO,IAAI,OAAM,KAAK,IAAI,IAAG,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE;IACpD;IAMA,SAAM;AACJ,YAAM,EAAE,GAAG,MAAM;AACjB,YAAM,KAAK,IAAG,IAAI,GAAG,IAAG;AACxB,YAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO;AACnC,UAAI,KAAK,IAAG,MAAM,KAAK,IAAG,MAAM,KAAK,IAAG;AACxC,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,aAAO,IAAI,OAAM,IAAI,IAAI,EAAE;IAC7B;IAMA,IAAI,OAAY;AACd,qBAAe,KAAK;AACpB,YAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO;AACnC,YAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO;AACnC,UAAI,KAAK,IAAG,MAAM,KAAK,IAAG,MAAM,KAAK,IAAG;AACxC,YAAM,IAAI,MAAM;AAChB,YAAM,KAAK,IAAG,IAAI,MAAM,GAAG,IAAG;AAC9B,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,UAAI,KAAK,IAAG,IAAI,IAAI,EAAE;AACtB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,GAAG,EAAE;AACjB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,WAAK,IAAG,IAAI,IAAI,EAAE;AAClB,aAAO,IAAI,OAAM,IAAI,IAAI,EAAE;IAC7B;IAEA,SAAS,OAAY;AACnB,aAAO,KAAK,IAAI,MAAM,OAAM,CAAE;IAChC;IAEQ,MAAG;AACT,aAAO,KAAK,OAAO,OAAM,IAAI;IAC/B;IACQ,KAAK,GAAS;AACpB,aAAO,KAAK,WAAW,MAAM,kBAAkB,GAAG,CAAC,SAAiB;AAClE,cAAM,QAAQ,IAAG,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAClD,eAAO,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,OAAM,UAAU;MACtE,CAAC;IACH;IAOA,eAAe,GAAS;AACtB,YAAM,IAAI,OAAM;AAChB,UAAI,MAAM;AAAK,eAAO;AACtB,eAAS,CAAC;AACV,UAAI,MAAM;AAAK,eAAO;AACtB,YAAM,EAAE,SAAS;AACjB,UAAI,CAAC;AAAM,eAAO,KAAK,aAAa,MAAM,CAAC;AAG3C,UAAI,EAAE,OAAO,IAAI,OAAO,OAAO,KAAK,YAAY,CAAC;AACjD,UAAI,MAAM;AACV,UAAI,MAAM;AACV,UAAI,IAAW;AACf,aAAO,KAAK,QAAO,KAAK,MAAK;AAC3B,YAAI,KAAK;AAAK,gBAAM,IAAI,IAAI,CAAC;AAC7B,YAAI,KAAK;AAAK,gBAAM,IAAI,IAAI,CAAC;AAC7B,YAAI,EAAE,OAAM;AACZ,eAAO;AACP,eAAO;;AAET,UAAI;AAAO,cAAM,IAAI,OAAM;AAC3B,UAAI;AAAO,cAAM,IAAI,OAAM;AAC3B,YAAM,IAAI,OAAM,IAAG,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE;AACzD,aAAO,IAAI,IAAI,GAAG;IACpB;IAWA,SAAS,QAAc;AACrB,eAAS,MAAM;AACf,UAAI,IAAI;AACR,UAAI,OAAc;AAClB,YAAM,EAAE,SAAS;AACjB,UAAI,MAAM;AACR,cAAM,EAAE,OAAO,IAAI,OAAO,OAAO,KAAK,YAAY,CAAC;AACnD,YAAI,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAI,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,EAAE;AACrC,cAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,cAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,cAAM,IAAI,OAAM,IAAG,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE;AACzD,gBAAQ,IAAI,IAAI,GAAG;AACnB,eAAO,IAAI,IAAI,GAAG;aACb;AACL,cAAM,EAAE,GAAG,MAAM,KAAK,KAAK,CAAC;AAC5B,gBAAQ;AACR,eAAO;;AAGT,aAAO,OAAM,WAAW,CAAC,OAAO,IAAI,CAAC,EAAE;IACzC;IAQA,qBAAqB,GAAU,GAAW,GAAS;AACjD,YAAM,IAAI,OAAM;AAChB,YAAM,MAAM,CACV,GACA,OACI,OAAM,QAAO,OAAM,QAAO,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,EAAC,IAAI,EAAE,SAAS,EAAC;AACjF,YAAM,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACtC,aAAO,IAAI,IAAG,IAAK,SAAY;IACjC;IAKA,SAAS,IAAM;AACb,YAAM,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,MAAM;AAChC,YAAM,MAAM,KAAK,IAAG;AAGpB,UAAI,MAAM;AAAM,aAAK,MAAM,IAAG,MAAM,IAAG,IAAI,CAAC;AAC5C,YAAM,KAAK,IAAG,IAAI,GAAG,EAAE;AACvB,YAAM,KAAK,IAAG,IAAI,GAAG,EAAE;AACvB,YAAM,KAAK,IAAG,IAAI,GAAG,EAAE;AACvB,UAAI;AAAK,eAAO,EAAE,GAAG,IAAG,MAAM,GAAG,IAAG,KAAI;AACxC,UAAI,CAAC,IAAG,IAAI,IAAI,IAAG,GAAG;AAAG,cAAM,IAAI,MAAM,kBAAkB;AAC3D,aAAO,EAAE,GAAG,IAAI,GAAG,GAAE;IACvB;IACA,gBAAa;AACX,YAAM,EAAE,GAAG,UAAU,kBAAkB;AACvC,UAAI,aAAa;AAAK,eAAO;AAC7B,UAAI;AAAe,eAAO,cAAc,QAAO,IAAI;AACnD,YAAM,IAAI,MAAM,8DAA8D;IAChF;IACA,gBAAa;AACX,YAAM,EAAE,GAAG,UAAU,kBAAkB;AACvC,UAAI,aAAa;AAAK,eAAO;AAC7B,UAAI;AAAe,eAAO,cAAc,QAAO,IAAI;AACnD,aAAO,KAAK,eAAe,MAAM,CAAC;IACpC;IAEA,WAAW,eAAe,MAAI;AAC5B,WAAK,eAAc;AACnB,aAAO,SAAQ,QAAO,MAAM,YAAY;IAC1C;IAEA,MAAM,eAAe,MAAI;AACvB,aAAO,AAAG,WAAW,KAAK,WAAW,YAAY,CAAC;IACpD;;AA5UgB,SAAA,OAAO,IAAI,OAAM,MAAM,IAAI,MAAM,IAAI,IAAG,GAAG;AAC3C,SAAA,OAAO,IAAI,OAAM,IAAG,MAAM,IAAG,KAAK,IAAG,IAAI;AA6U3D,QAAM,QAAQ,MAAM;AACpB,QAAM,OAAO,KAAK,QAAO,MAAM,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,KAAK;AAElE,SAAO;IACL;IACA,iBAAiB;IACjB;IACA;IACA;;AAEJ;AAwCA,sBAAsB,OAAgB;AACpC,QAAM,OAAO,cAAc,KAAK;AAChC,EAAG,eACD,MACA;IACE,MAAM;IACN,MAAM;IACN,aAAa;KAEf;IACE,UAAU;IACV,eAAe;IACf,MAAM;GACP;AAEH,SAAO,OAAO,OAAO,EAAE,MAAM,MAAM,GAAG,KAAI,CAAW;AACvD;AAkBM,qBAAsB,UAAmB;AAC7C,QAAM,QAAQ,aAAa,QAAQ;AACnC,QAAM,EAAE,SAAI,GAAG,gBAAgB;AAC/B,QAAM,gBAAgB,IAAG,QAAQ;AACjC,QAAM,kBAAkB,IAAI,IAAG,QAAQ;AAEvC,+BAA6B,KAAW;AACtC,WAAO,OAAM,OAAO,MAAM,IAAG;EAC/B;AACA,gBAAc,GAAS;AACrB,WAAO,AAAI,IAAI,GAAG,WAAW;EAC/B;AACA,gBAAc,GAAS;AACrB,WAAO,AAAI,OAAO,GAAG,WAAW;EAClC;AAEA,QAAM,EACJ,iBAAiB,QACjB,wBACA,qBACA,uBACE,kBAAkB;IACpB,GAAG;IACH,QAAQ,GAAG,OAAO,cAAqB;AACrC,YAAM,IAAI,MAAM,SAAQ;AACxB,YAAM,IAAI,IAAG,QAAQ,EAAE,CAAC;AACxB,YAAM,MAAS;AACf,UAAI,cAAc;AAChB,eAAO,IAAI,WAAW,KAAK,CAAC,MAAM,SAAQ,IAAK,IAAO,CAAI,CAAC,GAAG,CAAC;aAC1D;AACL,eAAO,IAAI,WAAW,KAAK,CAAC,CAAI,CAAC,GAAG,GAAG,IAAG,QAAQ,EAAE,CAAC,CAAC;;IAE1D;IACA,UAAU,QAAiB;AACzB,YAAM,MAAM,OAAM;AAClB,YAAM,OAAO,OAAM;AACnB,YAAM,OAAO,OAAM,SAAS,CAAC;AAE7B,UAAI,QAAQ,iBAAkB,UAAS,KAAQ,SAAS,IAAO;AAC7D,cAAM,IAAI,AAAG,gBAAgB,IAAI;AACjC,YAAI,CAAC,oBAAoB,CAAC;AAAG,gBAAM,IAAI,MAAM,uBAAuB;AACpE,cAAM,KAAK,oBAAoB,CAAC;AAChC,YAAI,IAAI,IAAG,KAAK,EAAE;AAClB,cAAM,SAAU,KAAI,UAAS;AAE7B,cAAM,YAAa,QAAO,OAAO;AACjC,YAAI,cAAc;AAAQ,cAAI,IAAG,IAAI,CAAC;AACtC,eAAO,EAAE,GAAG,EAAC;iBACJ,QAAQ,mBAAmB,SAAS,GAAM;AACnD,cAAM,IAAI,IAAG,UAAU,KAAK,SAAS,GAAG,IAAG,KAAK,CAAC;AACjD,cAAM,IAAI,IAAG,UAAU,KAAK,SAAS,IAAG,OAAO,IAAI,IAAG,KAAK,CAAC;AAC5D,eAAO,EAAE,GAAG,EAAC;aACR;AACL,cAAM,IAAI,MACR,mBAAmB,6BAA6B,qCAAqC,oCAAoC;;IAG/H;GACD;AACD,QAAM,gBAAgB,CAAC,QACrB,AAAG,WAAW,AAAG,gBAAgB,KAAK,MAAM,WAAW,CAAC;AAE1D,iCAA+B,SAAc;AAC3C,UAAM,OAAO,eAAe;AAC5B,WAAO,UAAS;EAClB;AAEA,sBAAoB,GAAS;AAC3B,WAAO,sBAAsB,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;EAC/C;AAEA,QAAM,SAAS,CAAC,GAAe,OAAc,OAAe,AAAG,gBAAgB,EAAE,MAAM,OAAM,EAAE,CAAC;AAKhG,QAAM,UAAS;IACb,YAAqB,GAAoB,GAAoB,UAAiB;AAAzD,WAAA,IAAA;AAAoB,WAAA,IAAA;AAAoB,WAAA,WAAA;AAC3D,WAAK,eAAc;IACrB;IAGA,OAAO,YAAY,KAAQ;AACzB,YAAM,IAAI,MAAM;AAChB,YAAM,YAAY,oBAAoB,KAAK,IAAI,CAAC;AAChD,aAAO,IAAI,UAAU,OAAO,KAAK,GAAG,CAAC,GAAG,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC;IAC/D;IAIA,OAAO,QAAQ,KAAQ;AACrB,YAAM,EAAE,GAAG,MAAM,IAAI,MAAM,YAAY,OAAO,GAAG,CAAC;AAClD,aAAO,IAAI,UAAU,GAAG,CAAC;IAC3B;IAEA,iBAAc;AAEZ,UAAI,CAAC,mBAAmB,KAAK,CAAC;AAAG,cAAM,IAAI,MAAM,2BAA2B;AAC5E,UAAI,CAAC,mBAAmB,KAAK,CAAC;AAAG,cAAM,IAAI,MAAM,2BAA2B;IAC9E;IAEA,eAAe,UAAgB;AAC7B,aAAO,IAAI,UAAU,KAAK,GAAG,KAAK,GAAG,QAAQ;IAC/C;IAEA,iBAAiB,SAAY;AAC3B,YAAM,EAAE,GAAG,GAAG,UAAU,QAAQ;AAChC,YAAM,IAAI,cAAc,YAAY,WAAW,OAAO,CAAC;AACvD,UAAI,OAAO,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,SAAS,GAAG;AAAG,cAAM,IAAI,MAAM,qBAAqB;AACrF,YAAM,OAAO,QAAQ,KAAK,QAAQ,IAAI,IAAI,MAAM,IAAI;AACpD,UAAI,QAAQ,IAAG;AAAO,cAAM,IAAI,MAAM,4BAA4B;AAClE,YAAM,SAAU,OAAM,OAAO,IAAI,OAAO;AACxC,YAAM,IAAI,OAAM,QAAQ,SAAS,cAAc,IAAI,CAAC;AACpD,YAAM,KAAK,KAAK,IAAI;AACpB,YAAM,KAAK,KAAK,CAAC,IAAI,EAAE;AACvB,YAAM,KAAK,KAAK,IAAI,EAAE;AACtB,YAAM,IAAI,OAAM,KAAK,qBAAqB,GAAG,IAAI,EAAE;AACnD,UAAI,CAAC;AAAG,cAAM,IAAI,MAAM,mBAAmB;AAC3C,QAAE,eAAc;AAChB,aAAO;IACT;IAGA,WAAQ;AACN,aAAO,sBAAsB,KAAK,CAAC;IACrC;IAEA,aAAU;AACR,aAAO,KAAK,SAAQ,IAAK,IAAI,UAAU,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI;IACjF;IAGA,gBAAa;AACX,aAAO,AAAG,WAAW,KAAK,SAAQ,CAAE;IACtC;IACA,WAAQ;AACN,aAAO,IAAI,WAAW,EAAE,GAAG,KAAK,GAAG,GAAG,KAAK,EAAC,CAAE;IAChD;IAGA,oBAAiB;AACf,aAAO,AAAG,WAAW,KAAK,aAAY,CAAE;IAC1C;IACA,eAAY;AACV,aAAO,cAAc,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC;IACrD;;AAIF,QAAM,QAAQ;IACZ,kBAAkB,YAAmB;AACnC,UAAI;AACF,+BAAuB,UAAU;AACjC,eAAO;eACA,OAAP;AACA,eAAO;;IAEX;IACA;IAMA,kBAAkB,MAAiB;AACjC,YAAM,OAAO,MAAM,YAAY,IAAG,QAAQ,CAAC;AAC3C,YAAM,MAAM,AAAI,oBAAoB,MAAM,WAAW;AACrD,aAAO,AAAG,gBAAgB,KAAK,MAAM,WAAW;IAClD;IAUA,WAAW,aAAa,GAAG,QAAQ,OAAM,MAAI;AAC3C,YAAM,eAAe,UAAU;AAC/B,YAAM,SAAS,OAAO,CAAC,CAAC;AACxB,aAAO;IACT;;AASF,wBAAsB,YAAqB,eAAe,MAAI;AAC5D,WAAO,OAAM,eAAe,UAAU,EAAE,WAAW,YAAY;EACjE;AAKA,qBAAmB,MAAsB;AACvC,UAAM,MAAM,gBAAgB;AAC5B,UAAM,MAAM,OAAO,SAAS;AAC5B,UAAM,MAAO,QAAO,QAAS,KAAa;AAC1C,QAAI;AAAK,aAAO,QAAQ,iBAAiB,QAAQ;AACjD,QAAI;AAAK,aAAO,QAAQ,IAAI,iBAAiB,QAAQ,IAAI;AACzD,QAAI,gBAAgB;AAAO,aAAO;AAClC,WAAO;EACT;AAYA,2BAAyB,UAAmB,SAAc,eAAe,MAAI;AAC3E,QAAI,UAAU,QAAQ;AAAG,YAAM,IAAI,MAAM,+BAA+B;AACxE,QAAI,CAAC,UAAU,OAAO;AAAG,YAAM,IAAI,MAAM,+BAA+B;AACxE,UAAM,IAAI,OAAM,QAAQ,OAAO;AAC/B,WAAO,EAAE,SAAS,uBAAuB,QAAQ,CAAC,EAAE,WAAW,YAAY;EAC7E;AAMA,QAAM,WACJ,MAAM,YACN,SAAU,QAAiB;AAGzB,UAAM,MAAM,AAAG,gBAAgB,MAAK;AACpC,UAAM,QAAQ,OAAM,SAAS,IAAI,MAAM;AACvC,WAAO,QAAQ,IAAI,OAAO,OAAO,KAAK,IAAI;EAC5C;AACF,QAAM,gBACJ,MAAM,iBACN,SAAU,QAAiB;AACzB,WAAO,KAAK,SAAS,MAAK,CAAC;EAC7B;AAEF,QAAM,aAAa,AAAG,QAAQ,MAAM,UAAU;AAI9C,sBAAoB,KAAW;AAC7B,QAAI,OAAO,QAAQ;AAAU,YAAM,IAAI,MAAM,iBAAiB;AAC9D,QAAI,CAAE,SAAO,OAAO,MAAM;AACxB,YAAM,IAAI,MAAM,uBAAuB,MAAM,YAAY;AAE3D,WAAO,AAAG,gBAAgB,KAAK,MAAM,WAAW;EAClD;AAOA,mBAAiB,SAAc,YAAqB,OAAO,gBAAc;AACvE,QAAI,CAAC,aAAa,WAAW,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;AAClD,YAAM,IAAI,MAAM,qCAAqC;AACvD,UAAM,EAAE,aAAM,8BAAgB;AAC9B,QAAI,EAAE,MAAM,SAAS,cAAc,QAAQ;AAC3C,QAAI,QAAQ;AAAM,aAAO;AACzB,cAAU,YAAY,WAAW,OAAO;AACxC,QAAI;AAAS,gBAAU,YAAY,qBAAqB,MAAK,OAAO,CAAC;AAKrE,UAAM,QAAQ,cAAc,OAAO;AACnC,UAAM,IAAI,uBAAuB,UAAU;AAC3C,UAAM,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW,KAAK,CAAC;AAElD,QAAI,OAAO,MAAM;AAEf,YAAM,IAAI,QAAQ,OAAO,aAAY,IAAG,KAAK,IAAI;AACjD,eAAS,KAAK,YAAY,gBAAgB,GAAG,IAAG,KAAK,CAAC;;AAExD,UAAM,OAAO,AAAG,aAAY,GAAG,QAAQ;AACvC,UAAM,IAAI;AAEV,mBAAe,QAAkB;AAE/B,YAAM,IAAI,SAAS,MAAM;AACzB,UAAI,CAAC,mBAAmB,CAAC;AAAG;AAC5B,YAAM,KAAK,KAAK,CAAC;AACjB,YAAM,IAAI,OAAM,KAAK,SAAS,CAAC,EAAE,SAAQ;AACzC,YAAM,IAAI,KAAK,EAAE,CAAC;AAClB,UAAI,MAAM;AAAK;AAIf,YAAM,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC;AACnC,UAAI,MAAM;AAAK;AACf,UAAI,WAAY,GAAE,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,IAAI,IAAG;AACrD,UAAI,QAAQ;AACZ,UAAI,QAAQ,sBAAsB,CAAC,GAAG;AACpC,gBAAQ,WAAW,CAAC;AACpB,oBAAY;;AAEd,aAAO,IAAI,UAAU,GAAG,OAAO,QAAQ;IACzC;AACA,WAAO,EAAE,MAAM,MAAK;EACtB;AACA,QAAM,iBAA2B,EAAE,MAAM,MAAM,MAAM,SAAS,MAAK;AACnE,QAAM,iBAA0B,EAAE,MAAM,MAAM,MAAM,SAAS,MAAK;AAelE,gBAAc,SAAc,SAAkB,OAAO,gBAAc;AACjE,UAAM,EAAE,MAAM,UAAU,QAAQ,SAAS,SAAS,IAAI;AACtD,UAAM,IAAI;AACV,UAAM,OAAO,AAAG,eAAmC,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,IAAI;AAC1F,WAAO,KAAK,MAAM,KAAK;EACzB;AAGA,SAAM,KAAK,eAAe,CAAC;AAgB3B,kBACE,WACA,SACA,WACA,OAAO,gBAAc;AAErB,UAAM,KAAK;AACX,cAAU,YAAY,WAAW,OAAO;AACxC,gBAAY,YAAY,aAAa,SAAS;AAC9C,QAAI,YAAY;AAAM,YAAM,IAAI,MAAM,oCAAoC;AAC1E,UAAM,EAAE,MAAM,YAAY;AAE1B,QAAI,OAA8B;AAClC,QAAI;AACJ,QAAI;AACF,UAAI,OAAO,OAAO,YAAY,cAAc,YAAY;AAGtD,YAAI;AACF,iBAAO,UAAU,QAAQ,EAAE;iBACpB,UAAP;AACA,cAAI,CAAE,qBAAoB,IAAI;AAAM,kBAAM;AAC1C,iBAAO,UAAU,YAAY,EAAE;;iBAExB,OAAO,OAAO,YAAY,OAAO,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,UAAU;AACzF,cAAM,EAAE,OAAG,UAAM;AACjB,eAAO,IAAI,UAAU,IAAG,EAAC;aACpB;AACL,cAAM,IAAI,MAAM,OAAO;;AAEzB,UAAI,OAAM,QAAQ,SAAS;aACpB,OAAP;AACA,UAAK,MAAgB,YAAY;AAC/B,cAAM,IAAI,MAAM,gEAAgE;AAClF,aAAO;;AAET,QAAI,QAAQ,KAAK,SAAQ;AAAI,aAAO;AACpC,QAAI;AAAS,gBAAU,MAAM,KAAK,OAAO;AACzC,UAAM,EAAE,GAAG,MAAM;AACjB,UAAM,IAAI,cAAc,OAAO;AAC/B,UAAM,KAAK,KAAK,CAAC;AACjB,UAAM,KAAK,KAAK,IAAI,EAAE;AACtB,UAAM,KAAK,KAAK,IAAI,EAAE;AACtB,UAAM,IAAI,OAAM,KAAK,qBAAqB,GAAG,IAAI,EAAE,GAAG,SAAQ;AAC9D,QAAI,CAAC;AAAG,aAAO;AACf,UAAM,IAAI,KAAK,EAAE,CAAC;AAClB,WAAO,MAAM;EACf;AACA,SAAO;IACL;IACA;IACA;IACA;IACA;IACA,iBAAiB;IACjB;IACA;;AAEJ;;;ACpkCA,AAOM,iBAAkB,OAAW;AACjC,SAAO;IACL;IACA,MAAM,CAAC,QAAoB,SAAuB,KAAK,OAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IACtF;;AAEJ;AAGM,qBAAsB,UAAoB,SAAc;AAC5D,QAAM,UAAS,CAAC,UAAgB,YAAY,EAAE,GAAG,UAAU,GAAG,QAAQ,KAAI,EAAC,CAAE;AAC7E,SAAO,OAAO,OAAO,EAAE,GAAG,QAAO,OAAO,GAAG,gBAAM,CAAE;AACrD;;;ACfA,sBAAsB,MAAgB,YAAoB,OAAe,OAAa;AACpF,MAAI,OAAO,KAAK,iBAAiB;AAAY,WAAO,KAAK,aAAa,YAAY,OAAO,KAAI;AAC7F,QAAM,OAAO,OAAO,EAAE;AACtB,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,KAAK,OAAQ,SAAS,OAAQ,QAAQ;AAC5C,QAAM,KAAK,OAAO,QAAQ,QAAQ;AAClC,QAAM,IAAI,QAAO,IAAI;AACrB,QAAM,IAAI,QAAO,IAAI;AACrB,OAAK,UAAU,aAAa,GAAG,IAAI,KAAI;AACvC,OAAK,UAAU,aAAa,GAAG,IAAI,KAAI;AACzC;AAGM,IAAgB,OAAhB,cAAgD,KAAO;EAc3D,YACW,UACF,WACE,WACA,OAAa;AAEtB,UAAK;AALI,SAAA,WAAA;AACF,SAAA,YAAA;AACE,SAAA,YAAA;AACA,SAAA,OAAA;AATD,SAAA,WAAW;AACX,SAAA,SAAS;AACT,SAAA,MAAM;AACN,SAAA,YAAY;AASpB,SAAK,SAAS,IAAI,WAAW,QAAQ;AACrC,SAAK,OAAO,WAAW,KAAK,MAAM;EACpC;EACA,OAAO,MAAW;AAChB,mBAAO,OAAO,IAAI;AAClB,UAAM,EAAE,MAAM,QAAQ,aAAa;AACnC,WAAO,QAAQ,IAAI;AACnB,UAAM,MAAM,KAAK;AACjB,aAAS,MAAM,GAAG,MAAM,OAAO;AAC7B,YAAM,OAAO,KAAK,IAAI,WAAW,KAAK,KAAK,MAAM,GAAG;AAEpD,UAAI,SAAS,UAAU;AACrB,cAAM,WAAW,WAAW,IAAI;AAChC,eAAO,YAAY,MAAM,KAAK,OAAO;AAAU,eAAK,QAAQ,UAAU,GAAG;AACzE;;AAEF,aAAO,IAAI,KAAK,SAAS,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG;AACnD,WAAK,OAAO;AACZ,aAAO;AACP,UAAI,KAAK,QAAQ,UAAU;AACzB,aAAK,QAAQ,MAAM,CAAC;AACpB,aAAK,MAAM;;;AAGf,SAAK,UAAU,KAAK;AACpB,SAAK,WAAU;AACf,WAAO;EACT;EACA,WAAW,KAAe;AACxB,mBAAO,OAAO,IAAI;AAClB,mBAAO,OAAO,KAAK,IAAI;AACvB,SAAK,WAAW;AAIhB,UAAM,EAAE,QAAQ,MAAM,UAAU,gBAAS;AACzC,QAAI,EAAE,QAAQ;AAEd,WAAO,SAAS;AAChB,SAAK,OAAO,SAAS,GAAG,EAAE,KAAK,CAAC;AAEhC,QAAI,KAAK,YAAY,WAAW,KAAK;AACnC,WAAK,QAAQ,MAAM,CAAC;AACpB,YAAM;;AAGR,aAAS,IAAI,KAAK,IAAI,UAAU;AAAK,aAAO,KAAK;AAIjD,iBAAa,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,GAAG,KAAI;AAC9D,SAAK,QAAQ,MAAM,CAAC;AACpB,UAAM,QAAQ,WAAW,GAAG;AAC5B,UAAM,MAAM,KAAK;AAEjB,QAAI,MAAM;AAAG,YAAM,IAAI,MAAM,6CAA6C;AAC1E,UAAM,SAAS,MAAM;AACrB,UAAM,QAAQ,KAAK,IAAG;AACtB,QAAI,SAAS,MAAM;AAAQ,YAAM,IAAI,MAAM,oCAAoC;AAC/E,aAAS,IAAI,GAAG,IAAI,QAAQ;AAAK,YAAM,UAAU,IAAI,GAAG,MAAM,IAAI,KAAI;EACxE;EACA,SAAM;AACJ,UAAM,EAAE,QAAQ,cAAc;AAC9B,SAAK,WAAW,MAAM;AACtB,UAAM,MAAM,OAAO,MAAM,GAAG,SAAS;AACrC,SAAK,QAAO;AACZ,WAAO;EACT;EACA,WAAW,IAAM;AACf,UAAA,MAAO,IAAK,KAAK,YAAmB;AACpC,OAAG,IAAI,GAAG,KAAK,IAAG,CAAE;AACpB,UAAM,EAAE,UAAU,QAAQ,iBAAQ,UAAU,WAAW,QAAQ;AAC/D,OAAG,SAAS;AACZ,OAAG,MAAM;AACT,OAAG,WAAW;AACd,OAAG,YAAY;AACf,QAAI,UAAS;AAAU,SAAG,OAAO,IAAI,MAAM;AAC3C,WAAO;EACT;;;;AChHF,IAAM,MAAM,CAAC,GAAW,GAAW,MAAe,IAAI,IAAM,CAAC,IAAI;AAEjE,IAAM,MAAM,CAAC,GAAW,GAAW,MAAe,IAAI,IAAM,IAAI,IAAM,IAAI;AAK1E,IAAM,WAAW,IAAI,YAAY;EAC/B;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;CACrF;AAID,IAAM,KAAK,IAAI,YAAY;EACzB;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;CACrF;AAID,IAAM,WAAW,IAAI,YAAY,EAAE;AACnC,IAAM,SAAN,cAAqB,KAAY;EAY/B,cAAA;AACE,UAAM,IAAI,IAAI,GAAG,KAAK;AAVxB,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;AACZ,SAAA,IAAI,GAAG,KAAK;EAIZ;EACU,MAAG;AACX,UAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM;AACnC,WAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAChC;EAEU,IACR,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAS;AAEtF,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;EACf;EACU,QAAQ,MAAgB,QAAc;AAE9C,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK,UAAU;AAAG,eAAS,KAAK,KAAK,UAAU,QAAQ,KAAK;AACpF,aAAS,IAAI,IAAI,IAAI,IAAI,KAAK;AAC5B,YAAM,MAAM,SAAS,IAAI;AACzB,YAAM,KAAK,SAAS,IAAI;AACxB,YAAM,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,IAAK,QAAQ;AACnD,YAAM,KAAK,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAK,OAAO;AACjD,eAAS,KAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAO;;AAGjE,QAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM;AACjC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAM,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;AACpD,YAAM,KAAM,IAAI,SAAS,IAAI,GAAG,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,KAAM;AACrE,YAAM,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;AACpD,YAAM,KAAM,SAAS,IAAI,GAAG,GAAG,CAAC,IAAK;AACrC,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAK,IAAI,KAAM;AACf,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAK,KAAK,KAAM;;AAGlB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACjC;EACU,aAAU;AAClB,aAAS,KAAK,CAAC;EACjB;EACA,UAAO;AACL,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/B,SAAK,OAAO,KAAK,CAAC;EACpB;;AAGF,IAAM,SAAN,cAAqB,OAAM;EASzB,cAAA;AACE,UAAK;AATP,SAAA,IAAI,aAAa;AACjB,SAAA,IAAI,YAAa;AACjB,SAAA,IAAI,YAAa;AACjB,SAAA,IAAI,aAAa;AACjB,SAAA,IAAI,aAAa;AACjB,SAAA,IAAI,aAAa;AACjB,SAAA,IAAI,aAAa;AACjB,SAAA,IAAI,aAAa;AAGf,SAAK,YAAY;EACnB;;AAOK,IAAM,UAAS,gBAAgB,MAAM,IAAI,OAAM,CAAE;AACjD,IAAM,SAAS,gBAAgB,MAAM,IAAI,OAAM,CAAE;;;ACjIxD,AAUA,IAAM,KAAK,MAAM,OAAO,oEAAoE,CAAC;AAC7F,IAAM,UAAU,GAAG,OAAO,OAAO,IAAI,CAAC;AACtC,IAAM,UAAU,OAAO,oEAAoE;AAGpF,IAAM,OAAO,YAAY;EAC9B,GAAG;EACH,GAAG;EACH;EAEA,GAAG,OAAO,oEAAoE;EAE9E,IAAI,OAAO,oEAAoE;EAC/E,IAAI,OAAO,oEAAoE;EAC/E,GAAG,OAAO,CAAC;EACX,MAAM;GACI,OAAM;;;ACxBX,IAAM,iBAAiB,CAAC,gBAAwC;AACrE,QAAM,QAAQ,KAAK,gBAAgB,QAAQ,WAAW;AACtD,SAAO,MAAM,WAAW,IAAI;AAC9B;AAEO,IAAM,mBAAmB,CAAC,eAAuC;AACtE,MAAI,WAAW,WAAW,IAAI;AAC5B,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,QAAM,QAAQ,KAAK,gBAAgB,QAAQ,UAAU;AACrD,SAAO,MAAM,WAAW,KAAK;AAC/B;;;ACbA,AAUA,IAAM,aAAa,OAAO,oEAAoE;AAC9F,IAAM,aAAa,OAAO,oEAAoE;AAC9F,IAAM,OAAM,OAAO,CAAC;AACpB,IAAM,OAAM,OAAO,CAAC;AACpB,IAAM,aAAa,CAAC,GAAW,MAAe,KAAI,IAAI,QAAO;AAM7D,iBAAiB,GAAS;AACxB,QAAM,IAAI;AAEV,QAAM,OAAM,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO,EAAE;AAE3E,QAAM,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO,EAAE;AAC5D,QAAM,KAAM,IAAI,IAAI,IAAK;AACzB,QAAM,KAAM,KAAK,KAAK,IAAK;AAC3B,QAAM,KAAM,KAAK,IAAI,MAAK,CAAC,IAAI,KAAM;AACrC,QAAM,KAAM,KAAK,IAAI,MAAK,CAAC,IAAI,KAAM;AACrC,QAAM,MAAO,KAAK,IAAI,MAAK,CAAC,IAAI,KAAM;AACtC,QAAM,MAAO,KAAK,KAAK,MAAM,CAAC,IAAI,MAAO;AACzC,QAAM,MAAO,KAAK,KAAK,MAAM,CAAC,IAAI,MAAO;AACzC,QAAM,MAAO,KAAK,KAAK,MAAM,CAAC,IAAI,MAAO;AACzC,QAAM,OAAQ,KAAK,KAAK,MAAM,CAAC,IAAI,MAAO;AAC1C,QAAM,OAAQ,KAAK,MAAM,MAAM,CAAC,IAAI,MAAO;AAC3C,QAAM,OAAQ,KAAK,MAAM,MAAK,CAAC,IAAI,KAAM;AACzC,QAAM,KAAM,KAAK,MAAM,MAAM,CAAC,IAAI,MAAO;AACzC,QAAM,KAAM,KAAK,IAAI,KAAK,CAAC,IAAI,KAAM;AACrC,QAAM,OAAO,KAAK,IAAI,MAAK,CAAC;AAC5B,MAAI,CAAC,IAAG,IAAI,IAAG,IAAI,IAAI,GAAG,CAAC;AAAG,UAAM,IAAI,MAAM,yBAAyB;AACvE,SAAO;AACT;AAEA,IAAM,MAAK,MAAM,YAAY,QAAW,QAAW,EAAE,MAAM,QAAO,CAAE;AAE7D,IAAM,YAAY,YACvB;EACE,GAAG,OAAO,CAAC;EACX,GAAG,OAAO,CAAC;EACX;EACA,GAAG;EAEH,IAAI,OAAO,+EAA+E;EAC1F,IAAI,OAAO,+EAA+E;EAC1F,GAAG,OAAO,CAAC;EACX,MAAM;EAON,MAAM;IACJ,MAAM,OAAO,oEAAoE;IACjF,aAAa,CAAC,MAAa;AACzB,YAAM,IAAI;AACV,YAAM,KAAK,OAAO,oCAAoC;AACtD,YAAM,KAAK,CAAC,OAAM,OAAO,oCAAoC;AAC7D,YAAM,KAAK,OAAO,qCAAqC;AACvD,YAAM,KAAK;AACX,YAAM,YAAY,OAAO,qCAAqC;AAE9D,YAAM,KAAK,WAAW,KAAK,GAAG,CAAC;AAC/B,YAAM,KAAK,WAAW,CAAC,KAAK,GAAG,CAAC;AAChC,UAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC;AACrC,UAAI,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC;AAClC,YAAM,QAAQ,KAAK;AACnB,YAAM,QAAQ,KAAK;AACnB,UAAI;AAAO,aAAK,IAAI;AACpB,UAAI;AAAO,aAAK,IAAI;AACpB,UAAI,KAAK,aAAa,KAAK,WAAW;AACpC,cAAM,IAAI,MAAM,yCAAyC,CAAC;;AAE5D,aAAO,EAAE,OAAO,IAAI,OAAO,GAAE;IAC/B;;GAGJ,OAAM;AAKR,IAAM,OAAM,OAAO,CAAC;AAoBpB,IAAM,QAAQ,UAAU;;;AC/GjB,IAAM,kBAAiB,CAAC,gBAAwC;AACrE,QAAM,QAAQ,UAAK,gBAAgB,QAAQ,WAAW;AACtD,SAAO,MAAM,WAAW,IAAI;AAC9B;AAEO,IAAM,oBAAmB,CAAC,eAAuC;AACtE,MAAI,WAAW,WAAW,IAAI;AAC5B,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,QAAM,QAAQ,UAAK,gBAAgB,QAAQ,UAAU;AACrD,SAAO,MAAM,WAAW,KAAK;AAC/B;;;ACPO,IAAM,eAAe,OAC1B,KACA,MACA,KACA,SACqB;AACrB,QAAM,EAAE,QAAQ,aAAa,YAAY,GAAG;AAC5C,MAAI,WAAW,cAAc;AAC3B,UAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA,EAC/C;AACA,SAAO,UAAU,UAAU,MAAM,KAAK,IAAI;AAC5C;AAEO,IAAM,YAAY,OACvB,WACA,MACA,KACA,SACqB;AACrB,QAAM,UAAU,MAAM,QAAO,IAAI;AACjC,SAAO,KAAK,OAAO,KAAK,SAAS,WAAW;AAAA,IAC1C,MAAM,MAAM,QAAQ;AAAA,EACtB,CAAC;AACH;;;ACzBO,IAAM,aAA2B;AAAA,EACtC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,iBAA4B;AAC9B;AAEA,IAAO,iBAAQ;;;ACJR,IAAM,gBAAe,OAC1B,KACA,MACA,KACA,SACqB;AACrB,QAAM,EAAE,QAAQ,aAAa,YAAY,GAAG;AAC5C,MAAI,WAAW,mBAAmB;AAChC,UAAM,IAAI,MAAM,4BAA4B,KAAK;AAAA,EACnD;AACA,SAAO,WAAU,UAAU,MAAM,KAAK,IAAI;AAC5C;AAEO,IAAM,aAAY,OACvB,WACA,MACA,KACA,SACqB;AACrB,QAAM,UAAU,MAAM,QAAO,IAAI;AACjC,SAAO,UAAK,OAAO,KAAK,SAAS,WAAW;AAAA,IAC1C,MAAM,MAAM,QAAQ;AAAA,EACtB,CAAC;AACH;;;ACzBO,IAAM,kBAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,iBAA4B;AAC9B;AAEA,IAAO,kBAAQ;;;ACPR,IAAM,UAAU,CAAC,gBAAY,eAAe;AAEnD,IAAO,kBAAQ;;;ACWR,IAAM,gBAAgB,CAAC,aAAqC;AACjE,MAAI,CAAC,SAAS,WAAW,uBAAuB,GAAG;AACjD,UAAM,IAAI,MAAM,kCAAkC,UAAU;AAAA,EAC9D;AACA,QAAM,gBAAgB,AAAY,YAChC,SAAS,MAAM,wBAAwB,MAAM,GAC7C,WACF;AACA,QAAM,SAAS,gBAAQ,KAAK,CAAC,MAAM,UAAU,eAAe,EAAE,MAAM,CAAC;AACrE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AACA,MAAI,WAAW,cAAc,MAAM,OAAO,OAAO,MAAM;AACvD,MAAI,OAAO,WAAW,cAAc;AAClC,eAAW,AAAK,iBAAiB,QAAQ;AAAA,EAC3C,WAAW,OAAO,WAAW,mBAAmB;AAC9C,eAAW,AAAK,kBAAiB,QAAQ;AAAA,EAC3C;AACA,SAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,CAC5B,QACA,aACW;AACX,QAAM,SAAS,gBAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,MAAM;AACtD,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AACA,MAAI,WAAW,cAAc;AAC3B,eAAW,AAAK,eAAe,QAAQ;AAAA,EACzC,WAAW,WAAW,mBAAmB;AACvC,eAAW,AAAK,gBAAe,QAAQ;AAAA,EACzC;AACA,QAAM,gBAAgB,AAAY,OAAO,CAAC,OAAO,QAAQ,QAAQ,CAAC;AAClE,SACE,0BAA0B,AAAY,UAAS,eAAe,WAAW;AAE7E;AAEO,IAAM,cAAc,CAAC,QAAgC;AAC1D,MAAI,CAAC,IAAI,WAAW,cAAc,GAAG;AACnC,UAAM,IAAI,MAAM,iCAAiC,KAAK;AAAA,EACxD;AACA,SAAO,cAAc,IAAI,MAAM,eAAe,MAAM,CAAC;AACvD;AAEO,IAAM,eAAe,CAAC,QAAgB,aAAiC;AAC5E,SAAO,iBAAiB,eAAe,QAAQ,QAAQ;AACzD;AAEA,IAAM,YAAY,CAAC,QAAmB,WAAgC;AACpE,SAAO,AAAY,OAAO,QAAQ,OAAM,SAAS,GAAG,OAAO,UAAU,CAAC;AACxE;;;ACrEO,IAAM,mBAAmB,CAAC,OAA2B;AAC1D,QAAM,QAAO,GAAG;AAChB,QAAM,MAAM,GAAG,MAAM,CAAC;AACtB,UAAQ;AAAA,SACD;AACH,aAAO,AAAY,YAAW,KAAK,QAAQ;AAAA,SACxC;AACH,aAAO,AAAY,YAAW,KAAK,aAAa;AAAA,SAC7C;AACH,aAAO,AAAY,YAAW,KAAK,QAAQ;AAAA,SACxC;AACH,aAAO,AAAY,YAAW,KAAK,aAAa;AAAA,SAC7C;AACH,aAAO,AAAY,YAAW,KAAK,WAAW;AAAA,SAC3C;AACH,aAAO,AAAY,YAAW,KAAK,QAAQ;AAAA,SACxC;AACH,aAAO,AAAY,YAAW,KAAK,WAAW;AAAA,SAC3C;AACH,aAAO,AAAY,YAAW,KAAK,cAAc;AAAA;AAEjD,YAAM,IAAI,MAAM,2BAA2B,IAAI;AAAA;AAErD;AAEO,IAAM,mBAAmB,CAC9B,IACA,aACW;AACX,UAAQ;AAAA,SACD;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA,SAC3C;AACH,aAAO,MAAM,AAAY,UAAS,IAAI,QAAQ;AAAA;AAE9C,YAAM,IAAI,MAAM,2BAA2B,IAAI;AAAA;AAErD;;;AChDO,IAAM,UAAS,OACpB,UACwB;AACxB,QAAM,SACJ,OAAO,UAAU,WAAW,AAAY,YAAW,OAAO,MAAM,IAAI;AACtE,SAAO,AAAM,QAAO,MAAK;AAC3B;;;ACLO,IAAM,eAAoB;AAE1B,IAAM,YAAY,CACvB,YACA,aACW;AACX,QAAM,SAAQ,aAAY,UAAU;AACpC,SAAO,AAAY,UAAS,QAAO,QAAQ;AAC7C;AAEO,IAAM,oBAAoB,OAC/B,MACA,MACA,MAAM,MACc;AACpB,QAAM,QAAO,MAAM,QAAO,IAAI;AAC9B,QAAM,UAAS,OAAO,KAAK,KAAI,EAAE,WAAW,GAAG,CAAC;AAChD,QAAM,QAAQ,OAAO;AACrB,QAAM,aAAa,UAAS;AAC5B,SAAO,aAAa;AACtB;;;ACpBO,IAAM,kBAAkB,CAC7B,QACA,MACA,KACA,SACqB;AACrB,QAAM,SAAS,YAAY,MAAM;AACjC,QAAM,SAAS,gBAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,OAAO,MAAM;AAC7D,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,8BAA8B,OAAO,QAAQ;AAAA,EAC/D;AACA,SAAO,OAAO,gBAAgB,QAAQ,MAAM,KAAK,IAAI;AACvD;AAEO,IAAM,sBAAsB,OACjC,QACA,MACA,KACA,SACqB;AACrB,QAAM,YAAY,AAAY,YAAW,MAAM,MAAM;AACrD,QAAM,WAAW,AAAY,YAAW,KAAK,WAAW;AACxD,SAAO,gBAAgB,QAAQ,WAAW,UAAU,IAAI;AAC1D;;;AChBO,IAAM,cAAN,MAAqC;AAAA,EAI1C,YAAoB,YAAgC,YAAqB;AAArD;AAAgC;AAHpD,kBAAS;AAIP,SAAK,YAAY,KAAK,aAAa,UAAU;AAAA,EAC/C;AAAA,EAEA,aAAa,OACX,MACsB;AACtB,UAAM,EAAE,aAAa,UAAU,QAAQ,CAAC;AACxC,UAAM,UAAU,KAAK,MAAM,iBAAiB;AAC5C,WAAO,IAAI,YAAY,SAAS,UAAU;AAAA,EAC5C;AAAA,EAEA,aAAa,OACX,SACA,MACsB;AACtB,UAAM,EAAE,aAAa,UAAU,QAAQ,CAAC;AACxC,UAAM,eACJ,OAAO,YAAY,WACf,AAAY,YAAW,SAAS,KAAK,IACrC;AACN,WAAO,IAAI,YAAY,cAAc,UAAU;AAAA,EACjD;AAAA,EAEA,iBAA6B;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa,WAA+B,aAAqB;AAC/D,WAAO,AAAY,UAAS,KAAK,WAAW,QAAQ;AAAA,EACtD;AAAA,EAEA,MAAc;AACZ,WAAO,AAAI,aAAa,KAAK,QAAQ,KAAK,SAAS;AAAA,EACrD;AAAA,EAEA,MAAM,KAAK,KAAsC;AAC/C,UAAM,UAAU,MAAM,QAAO,GAAG;AAEhC,UAAM,MAAM,MAAM,KAAK,KAAK,SAAS,KAAK,YAAY,EAAE,MAAM,KAAK,CAAC;AACpE,WAAO,IAAI,kBAAkB;AAAA,EAC/B;AAAA,EAEA,MAAM,SAA8B;AAClC,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;ACrDO,IAAM,mBAAN,MAA0C;AAAA,EAI/C,YAAoB,YAAgC,YAAqB;AAArD;AAAgC;AAHpD,kBAAS;AAIP,SAAK,YAAY,UAAK,aAAa,UAAU;AAAA,EAC/C;AAAA,EAEA,aAAa,OACX,MAC2B;AAC3B,UAAM,EAAE,aAAa,UAAU,QAAQ,CAAC;AACxC,UAAM,UAAU,UAAK,MAAM,iBAAiB;AAC5C,WAAO,IAAI,iBAAiB,SAAS,UAAU;AAAA,EACjD;AAAA,EAEA,aAAa,OACX,SACA,MAC2B;AAC3B,UAAM,EAAE,aAAa,UAAU,QAAQ,CAAC;AACxC,UAAM,eACJ,OAAO,YAAY,WACf,AAAY,YAAW,SAAS,KAAK,IACrC;AACN,WAAO,IAAI,iBAAiB,cAAc,UAAU;AAAA,EACtD;AAAA,EAEA,iBAA6B;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa,WAA+B,aAAqB;AAC/D,WAAO,AAAY,UAAS,KAAK,WAAW,QAAQ;AAAA,EACtD;AAAA,EAEA,MAAc;AACZ,WAAO,AAAI,aAAa,KAAK,QAAQ,KAAK,SAAS;AAAA,EACrD;AAAA,EAEA,MAAM,KAAK,KAAsC;AAC/C,UAAM,UAAU,MAAM,QAAO,GAAG;AAEhC,UAAM,MAAM,MAAM,UAAK,KAAK,SAAS,KAAK,YAAY,EAAE,MAAM,KAAK,CAAC;AACpE,WAAO,IAAI,kBAAkB;AAAA,EAC/B;AAAA,EAEA,MAAM,SAA8B;AAClC,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AACA,WAAO,KAAK;AAAA,EACd;AACF;",
4
+ "sourcesContent": ["export * from './const'\nexport * from './did'\nexport * from './multibase'\nexport * from './random'\nexport * from './sha'\nexport * from './types'\nexport * from './verify'\n\nexport * from './p256/keypair'\nexport * from './p256/plugin'\n\nexport * from './secp256k1/keypair'\nexport * from './secp256k1/plugin'\n", "export const P256_DID_PREFIX = new Uint8Array([0x80, 0x24])\nexport const SECP256K1_DID_PREFIX = new Uint8Array([0xe7, 0x01])\nexport const BASE58_MULTIBASE_PREFIX = 'z'\nexport const DID_KEY_PREFIX = 'did:key:'\n\nexport const P256_JWT_ALG = 'ES256'\nexport const SECP256K1_JWT_ALG = 'ES256K'\n", "export function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = new Uint8Array(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}", "export function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}", "import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});", "function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\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) {\n throw new TypeError(x + ' is ambiguous');\n }\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);\n var iFACTOR = Math.log(256) / Math.log(BASE);\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)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\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 var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\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) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\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) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\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) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};", "import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});", "import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});", "import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});", "import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});", "import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});", "import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});", "import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});", "import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});", "import crypto from 'crypto';\nimport { from } from './hasher.js';\nimport { coerce } from '../bytes.js';\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: input => coerce(crypto.createHash('sha256').update(input).digest())\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: input => coerce(crypto.createHash('sha512').update(input).digest())\n});", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};", "import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}", "import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};", "const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));", "import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;", "import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};", "import { bases } from 'multiformats/basics';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;", "import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}", "import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n return base.encoder.encode(array).substring(1);\n}", null, null, null, null, null, null, null, null, null, null, null, null, "import { p256 } from '@noble/curves/p256'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = p256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = p256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", null, "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\n\nexport const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => {\n const point = k256.ProjectivePoint.fromHex(pubkeyBytes)\n return point.toRawBytes(true)\n}\n\nexport const decompressPubkey = (compressed: Uint8Array): Uint8Array => {\n if (compressed.length !== 33) {\n throw new Error('Expected 33 byte compress pubkey')\n }\n const point = k256.ProjectivePoint.fromHex(compressed)\n return point.toRawBytes(false)\n}\n", "import { p256 } from '@noble/curves/p256'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as ui8 from 'uint8arrays'\nimport { P256_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== P256_JWT_ALG) {\n throw new Error(`Not a P-256 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const allowMalleable = opts?.allowMalleableSig ?? false\n const msgHash = await sha256(data)\n // parse as compact sig to prevent signature malleability\n // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99\n if (!allowMalleable && !isCompactFormat(sig)) {\n return false\n }\n return p256.verify(sig, msgHash, publicKey, {\n lowS: !allowMalleable,\n })\n}\n\nexport const isCompactFormat = (sig: Uint8Array) => {\n try {\n const parsed = p256.Signature.fromCompact(sig)\n return ui8.equals(parsed.toCompactRawBytes(), sig)\n } catch {\n return false\n }\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { P256_DID_PREFIX, P256_JWT_ALG } from '../const'\n\nexport const p256Plugin: DidKeyPlugin = {\n prefix: P256_DID_PREFIX,\n jwtAlg: P256_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default p256Plugin\n", "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as ui8 from 'uint8arrays'\nimport { SECP256K1_JWT_ALG } from '../const'\nimport { parseDidKey } from '../did'\nimport { VerifyOptions } from '../types'\n\nexport const verifyDidSig = async (\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const { jwtAlg, keyBytes } = parseDidKey(did)\n if (jwtAlg !== SECP256K1_JWT_ALG) {\n throw new Error(`Not a secp256k1 did:key: ${did}`)\n }\n return verifySig(keyBytes, data, sig, opts)\n}\n\nexport const verifySig = async (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const allowMalleable = opts?.allowMalleableSig ?? false\n const msgHash = await sha256(data)\n // parse as compact sig to prevent signature malleability\n // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99\n if (!allowMalleable && !isCompactFormat(sig)) {\n return false\n }\n return k256.verify(sig, msgHash, publicKey, {\n lowS: !allowMalleable,\n })\n}\n\nexport const isCompactFormat = (sig: Uint8Array) => {\n try {\n const parsed = k256.Signature.fromCompact(sig)\n return ui8.equals(parsed.toCompactRawBytes(), sig)\n } catch {\n return false\n }\n}\n", "import * as operations from './operations'\nimport { DidKeyPlugin } from '../types'\nimport { SECP256K1_DID_PREFIX, SECP256K1_JWT_ALG } from '../const'\n\nexport const secp256k1Plugin: DidKeyPlugin = {\n prefix: SECP256K1_DID_PREFIX,\n jwtAlg: SECP256K1_JWT_ALG,\n verifySignature: operations.verifyDidSig,\n}\n\nexport default secp256k1Plugin\n", "import p256Plugin from './p256/plugin'\nimport secp256k1Plugin from './secp256k1/plugin'\n\nexport const plugins = [p256Plugin, secp256k1Plugin]\n\nexport default plugins\n", "import * as uint8arrays from 'uint8arrays'\nimport * as p256 from './p256/encoding'\nimport * as secp from './secp256k1/encoding'\nimport plugins from './plugins'\nimport {\n BASE58_MULTIBASE_PREFIX,\n DID_KEY_PREFIX,\n P256_JWT_ALG,\n SECP256K1_JWT_ALG,\n} from './const'\n\nexport type ParsedMultikey = {\n jwtAlg: string\n keyBytes: Uint8Array\n}\n\nexport const parseMultikey = (multikey: string): ParsedMultikey => {\n if (!multikey.startsWith(BASE58_MULTIBASE_PREFIX)) {\n throw new Error(`Incorrect prefix for multikey: ${multikey}`)\n }\n const prefixedBytes = uint8arrays.fromString(\n multikey.slice(BASE58_MULTIBASE_PREFIX.length),\n 'base58btc',\n )\n const plugin = plugins.find((p) => hasPrefix(prefixedBytes, p.prefix))\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n let keyBytes = prefixedBytes.slice(plugin.prefix.length)\n if (plugin.jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.decompressPubkey(keyBytes)\n } else if (plugin.jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.decompressPubkey(keyBytes)\n }\n return {\n jwtAlg: plugin.jwtAlg,\n keyBytes,\n }\n}\n\nexport const formatMultikey = (\n jwtAlg: string,\n keyBytes: Uint8Array,\n): string => {\n const plugin = plugins.find((p) => p.jwtAlg === jwtAlg)\n if (!plugin) {\n throw new Error('Unsupported key type')\n }\n if (jwtAlg === P256_JWT_ALG) {\n keyBytes = p256.compressPubkey(keyBytes)\n } else if (jwtAlg === SECP256K1_JWT_ALG) {\n keyBytes = secp.compressPubkey(keyBytes)\n }\n const prefixedBytes = uint8arrays.concat([plugin.prefix, keyBytes])\n return (\n BASE58_MULTIBASE_PREFIX + uint8arrays.toString(prefixedBytes, 'base58btc')\n )\n}\n\nexport const parseDidKey = (did: string): ParsedMultikey => {\n if (!did.startsWith(DID_KEY_PREFIX)) {\n throw new Error(`Incorrect prefix for did:key: ${did}`)\n }\n return parseMultikey(did.slice(DID_KEY_PREFIX.length))\n}\n\nexport const formatDidKey = (jwtAlg: string, keyBytes: Uint8Array): string => {\n return DID_KEY_PREFIX + formatMultikey(jwtAlg, keyBytes)\n}\n\nconst hasPrefix = (bytes: Uint8Array, prefix: Uint8Array): boolean => {\n return uint8arrays.equals(prefix, bytes.subarray(0, prefix.byteLength))\n}\n", "import * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/to-string'\n\nexport const multibaseToBytes = (mb: string): Uint8Array => {\n const base = mb[0]\n const key = mb.slice(1)\n switch (base) {\n case 'f':\n return uint8arrays.fromString(key, 'base16')\n case 'F':\n return uint8arrays.fromString(key, 'base16upper')\n case 'b':\n return uint8arrays.fromString(key, 'base32')\n case 'B':\n return uint8arrays.fromString(key, 'base32upper')\n case 'z':\n return uint8arrays.fromString(key, 'base58btc')\n case 'm':\n return uint8arrays.fromString(key, 'base64')\n case 'u':\n return uint8arrays.fromString(key, 'base64url')\n case 'U':\n return uint8arrays.fromString(key, 'base64urlpad')\n default:\n throw new Error(`Unsupported multibase: :${mb}`)\n }\n}\n\nexport const bytesToMultibase = (\n mb: Uint8Array,\n encoding: SupportedEncodings,\n): string => {\n switch (encoding) {\n case 'base16':\n return 'f' + uint8arrays.toString(mb, encoding)\n case 'base16upper':\n return 'F' + uint8arrays.toString(mb, encoding)\n case 'base32':\n return 'b' + uint8arrays.toString(mb, encoding)\n case 'base32upper':\n return 'B' + uint8arrays.toString(mb, encoding)\n case 'base58btc':\n return 'z' + uint8arrays.toString(mb, encoding)\n case 'base64':\n return 'm' + uint8arrays.toString(mb, encoding)\n case 'base64url':\n return 'u' + uint8arrays.toString(mb, encoding)\n case 'base64urlpad':\n return 'U' + uint8arrays.toString(mb, encoding)\n default:\n throw new Error(`Unsupported multibase: :${mb}`)\n }\n}\n", "import * as noble from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\n\n// takes either bytes of utf8 input\nexport const sha256 = async (\n input: Uint8Array | string,\n): Promise<Uint8Array> => {\n const bytes =\n typeof input === 'string' ? uint8arrays.fromString(input, 'utf8') : input\n return noble.sha256(bytes)\n}\n", "import * as noble from '@noble/hashes/utils'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/to-string'\nimport { sha256 } from './sha'\n\nexport const randomBytes = noble.randomBytes\n\nexport const randomStr = (\n byteLength: number,\n encoding: SupportedEncodings,\n): string => {\n const bytes = randomBytes(byteLength)\n return uint8arrays.toString(bytes, encoding)\n}\n\nexport const randomIntFromSeed = async (\n seed: string,\n high: number,\n low = 0,\n): Promise<number> => {\n const hash = await sha256(seed)\n const number = Buffer.from(hash).readUintBE(0, 6)\n const range = high - low\n const normalized = number % range\n return normalized + low\n}\n", "import * as uint8arrays from 'uint8arrays'\nimport { parseDidKey } from './did'\nimport plugins from './plugins'\nimport { VerifyOptions } from './types'\n\nexport const verifySignature = (\n didKey: string,\n data: Uint8Array,\n sig: Uint8Array,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const parsed = parseDidKey(didKey)\n const plugin = plugins.find((p) => p.jwtAlg === parsed.jwtAlg)\n if (!plugin) {\n throw new Error(`Unsupported signature alg: ${parsed.jwtAlg}`)\n }\n return plugin.verifySignature(didKey, data, sig, opts)\n}\n\nexport const verifySignatureUtf8 = async (\n didKey: string,\n data: string,\n sig: string,\n opts?: VerifyOptions,\n): Promise<boolean> => {\n const dataBytes = uint8arrays.fromString(data, 'utf8')\n const sigBytes = uint8arrays.fromString(sig, 'base64url')\n return verifySignature(didKey, dataBytes, sigBytes, opts)\n}\n", "import { p256 } from '@noble/curves/p256'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/util/bases'\nimport * as did from '../did'\nimport { P256_JWT_ALG } from '../const'\nimport { Keypair } from '../types'\n\nexport type P256KeypairOptions = {\n exportable: boolean\n}\n\nexport class P256Keypair implements Keypair {\n jwtAlg = P256_JWT_ALG\n private publicKey: Uint8Array\n\n constructor(private privateKey: Uint8Array, private exportable: boolean) {\n this.publicKey = p256.getPublicKey(privateKey)\n }\n\n static async create(\n opts?: Partial<P256KeypairOptions>,\n ): Promise<P256Keypair> {\n const { exportable = false } = opts || {}\n const privKey = p256.utils.randomPrivateKey()\n return new P256Keypair(privKey, exportable)\n }\n\n static async import(\n privKey: Uint8Array | string,\n opts?: Partial<P256KeypairOptions>,\n ): Promise<P256Keypair> {\n const { exportable = false } = opts || {}\n const privKeyBytes =\n typeof privKey === 'string'\n ? uint8arrays.fromString(privKey, 'hex')\n : privKey\n return new P256Keypair(privKeyBytes, exportable)\n }\n\n publicKeyBytes(): Uint8Array {\n return this.publicKey\n }\n\n publicKeyStr(encoding: SupportedEncodings = 'base64pad'): string {\n return uint8arrays.toString(this.publicKey, encoding)\n }\n\n did(): string {\n return did.formatDidKey(this.jwtAlg, this.publicKey)\n }\n\n async sign(msg: Uint8Array): Promise<Uint8Array> {\n const msgHash = await sha256(msg)\n // return raw 64 byte sig not DER-encoded\n const sig = await p256.sign(msgHash, this.privateKey, { lowS: true })\n return sig.toCompactRawBytes()\n }\n\n async export(): Promise<Uint8Array> {\n if (!this.exportable) {\n throw new Error('Private key is not exportable')\n }\n return this.privateKey\n }\n}\n\nexport default P256Keypair\n", "import { secp256k1 as k256 } from '@noble/curves/secp256k1'\nimport { sha256 } from '@noble/hashes/sha256'\nimport * as uint8arrays from 'uint8arrays'\nimport { SupportedEncodings } from 'uint8arrays/util/bases'\nimport * as did from '../did'\nimport { SECP256K1_JWT_ALG } from '../const'\nimport { Keypair } from '../types'\n\nexport type Secp256k1KeypairOptions = {\n exportable: boolean\n}\n\nexport class Secp256k1Keypair implements Keypair {\n jwtAlg = SECP256K1_JWT_ALG\n private publicKey: Uint8Array\n\n constructor(private privateKey: Uint8Array, private exportable: boolean) {\n this.publicKey = k256.getPublicKey(privateKey)\n }\n\n static async create(\n opts?: Partial<Secp256k1KeypairOptions>,\n ): Promise<Secp256k1Keypair> {\n const { exportable = false } = opts || {}\n const privKey = k256.utils.randomPrivateKey()\n return new Secp256k1Keypair(privKey, exportable)\n }\n\n static async import(\n privKey: Uint8Array | string,\n opts?: Partial<Secp256k1KeypairOptions>,\n ): Promise<Secp256k1Keypair> {\n const { exportable = false } = opts || {}\n const privKeyBytes =\n typeof privKey === 'string'\n ? uint8arrays.fromString(privKey, 'hex')\n : privKey\n return new Secp256k1Keypair(privKeyBytes, exportable)\n }\n\n publicKeyBytes(): Uint8Array {\n return this.publicKey\n }\n\n publicKeyStr(encoding: SupportedEncodings = 'base64pad'): string {\n return uint8arrays.toString(this.publicKey, encoding)\n }\n\n did(): string {\n return did.formatDidKey(this.jwtAlg, this.publicKey)\n }\n\n async sign(msg: Uint8Array): Promise<Uint8Array> {\n const msgHash = await sha256(msg)\n // return raw 64 byte sig not DER-encoded\n const sig = await k256.sign(msgHash, this.privateKey, { lowS: true })\n return sig.toCompactRawBytes()\n }\n\n async export(): Promise<Uint8Array> {\n if (!this.exportable) {\n throw new Error('Private key is not exportable')\n }\n return this.privateKey\n }\n}\n\nexport default Secp256k1Keypair\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
1
  import { VerifyOptions } from '../types';
2
2
  export declare const verifyDidSig: (did: string, data: Uint8Array, sig: Uint8Array, opts?: VerifyOptions) => Promise<boolean>;
3
3
  export declare const verifySig: (publicKey: Uint8Array, data: Uint8Array, sig: Uint8Array, opts?: VerifyOptions) => Promise<boolean>;
4
+ export declare const isCompactFormat: (sig: Uint8Array) => boolean;
@@ -1,3 +1,4 @@
1
1
  import { VerifyOptions } from '../types';
2
2
  export declare const verifyDidSig: (did: string, data: Uint8Array, sig: Uint8Array, opts?: VerifyOptions) => Promise<boolean>;
3
3
  export declare const verifySig: (publicKey: Uint8Array, data: Uint8Array, sig: Uint8Array, opts?: VerifyOptions) => Promise<boolean>;
4
+ export declare const isCompactFormat: (sig: Uint8Array) => boolean;
package/dist/types.d.ts CHANGED
@@ -13,5 +13,5 @@ export declare type DidKeyPlugin = {
13
13
  verifySignature: (did: string, msg: Uint8Array, data: Uint8Array, opts?: VerifyOptions) => Promise<boolean>;
14
14
  };
15
15
  export declare type VerifyOptions = {
16
- lowS?: boolean;
16
+ allowMalleableSig?: boolean;
17
17
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/crypto",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "description": "Library for cryptographic keys and signing in atproto",
6
6
  "keywords": [
@@ -1,5 +1,6 @@
1
1
  import { p256 } from '@noble/curves/p256'
2
2
  import { sha256 } from '@noble/hashes/sha256'
3
+ import * as ui8 from 'uint8arrays'
3
4
  import { P256_JWT_ALG } from '../const'
4
5
  import { parseDidKey } from '../did'
5
6
  import { VerifyOptions } from '../types'
@@ -23,8 +24,23 @@ export const verifySig = async (
23
24
  sig: Uint8Array,
24
25
  opts?: VerifyOptions,
25
26
  ): Promise<boolean> => {
27
+ const allowMalleable = opts?.allowMalleableSig ?? false
26
28
  const msgHash = await sha256(data)
29
+ // parse as compact sig to prevent signature malleability
30
+ // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99
31
+ if (!allowMalleable && !isCompactFormat(sig)) {
32
+ return false
33
+ }
27
34
  return p256.verify(sig, msgHash, publicKey, {
28
- lowS: opts?.lowS ?? true,
35
+ lowS: !allowMalleable,
29
36
  })
30
37
  }
38
+
39
+ export const isCompactFormat = (sig: Uint8Array) => {
40
+ try {
41
+ const parsed = p256.Signature.fromCompact(sig)
42
+ return ui8.equals(parsed.toCompactRawBytes(), sig)
43
+ } catch {
44
+ return false
45
+ }
46
+ }
@@ -1,5 +1,6 @@
1
1
  import { secp256k1 as k256 } from '@noble/curves/secp256k1'
2
2
  import { sha256 } from '@noble/hashes/sha256'
3
+ import * as ui8 from 'uint8arrays'
3
4
  import { SECP256K1_JWT_ALG } from '../const'
4
5
  import { parseDidKey } from '../did'
5
6
  import { VerifyOptions } from '../types'
@@ -23,8 +24,23 @@ export const verifySig = async (
23
24
  sig: Uint8Array,
24
25
  opts?: VerifyOptions,
25
26
  ): Promise<boolean> => {
27
+ const allowMalleable = opts?.allowMalleableSig ?? false
26
28
  const msgHash = await sha256(data)
29
+ // parse as compact sig to prevent signature malleability
30
+ // library supports sigs in 2 different formats: https://github.com/paulmillr/noble-curves/issues/99
31
+ if (!allowMalleable && !isCompactFormat(sig)) {
32
+ return false
33
+ }
27
34
  return k256.verify(sig, msgHash, publicKey, {
28
- lowS: opts?.lowS ?? true,
35
+ lowS: !allowMalleable,
29
36
  })
30
37
  }
38
+
39
+ export const isCompactFormat = (sig: Uint8Array) => {
40
+ try {
41
+ const parsed = k256.Signature.fromCompact(sig)
42
+ return ui8.equals(parsed.toCompactRawBytes(), sig)
43
+ } catch {
44
+ return false
45
+ }
46
+ }
package/src/types.ts CHANGED
@@ -21,5 +21,5 @@ export type DidKeyPlugin = {
21
21
  }
22
22
 
23
23
  export type VerifyOptions = {
24
- lowS?: boolean
24
+ allowMalleableSig?: boolean
25
25
  }
@@ -78,7 +78,7 @@ describe('signatures', () => {
78
78
  keyBytes,
79
79
  messageBytes,
80
80
  signatureBytes,
81
- { lowS: false },
81
+ { allowMalleableSig: true },
82
82
  )
83
83
  expect(verified).toEqual(true)
84
84
  expect(vector.validSignature).toEqual(false) // otherwise would fail per low-s requirement
@@ -87,7 +87,46 @@ describe('signatures', () => {
87
87
  keyBytes,
88
88
  messageBytes,
89
89
  signatureBytes,
90
- { lowS: false },
90
+ { allowMalleableSig: true },
91
+ )
92
+ expect(verified).toEqual(true)
93
+ expect(vector.validSignature).toEqual(false) // otherwise would fail per low-s requirement
94
+ } else {
95
+ throw new Error('Unsupported test vector')
96
+ }
97
+ }
98
+ })
99
+
100
+ it('verifies der-encoded signatures with explicit option', async () => {
101
+ const DERVectors = vectors.filter((vec) => vec.tags.includes('der-encoded'))
102
+ expect(DERVectors.length).toBeGreaterThanOrEqual(2)
103
+ for (const vector of DERVectors) {
104
+ const messageBytes = uint8arrays.fromString(
105
+ vector.messageBase64,
106
+ 'base64',
107
+ )
108
+ const signatureBytes = uint8arrays.fromString(
109
+ vector.signatureBase64,
110
+ 'base64',
111
+ )
112
+ const keyBytes = multibaseToBytes(vector.publicKeyMultibase)
113
+ const didKey = parseDidKey(vector.publicKeyDid)
114
+ expect(uint8arrays.equals(keyBytes, didKey.keyBytes))
115
+ if (vector.algorithm === P256_JWT_ALG) {
116
+ const verified = await p256.verifySig(
117
+ keyBytes,
118
+ messageBytes,
119
+ signatureBytes,
120
+ { allowMalleableSig: true },
121
+ )
122
+ expect(verified).toEqual(true)
123
+ expect(vector.validSignature).toEqual(false) // otherwise would fail per low-s requirement
124
+ } else if (vector.algorithm === SECP256K1_JWT_ALG) {
125
+ const verified = await secp.verifySig(
126
+ keyBytes,
127
+ messageBytes,
128
+ signatureBytes,
129
+ { allowMalleableSig: true },
91
130
  )
92
131
  expect(verified).toEqual(true)
93
132
  expect(vector.validSignature).toEqual(false) // otherwise would fail per low-s requirement
@@ -168,6 +207,39 @@ async function generateTestVectors(): Promise<TestVector[]> {
168
207
  validSignature: false,
169
208
  tags: ['high-s'],
170
209
  },
210
+ // these vectors test to ensure we don't allow der-encoded signatures
211
+ {
212
+ messageBase64,
213
+ algorithm: P256_JWT_ALG, // "ES256" / ecdsa p-256
214
+ publicKeyDid: p256Key.did(),
215
+ publicKeyMultibase: bytesToMultibase(
216
+ p256Key.publicKeyBytes(),
217
+ 'base58btc',
218
+ ),
219
+ signatureBase64: await makeDerEncodedSig(
220
+ messageBytes,
221
+ await p256Key.export(),
222
+ P256_JWT_ALG,
223
+ ),
224
+ validSignature: false,
225
+ tags: ['der-encoded'],
226
+ },
227
+ {
228
+ messageBase64,
229
+ algorithm: SECP256K1_JWT_ALG, // "ES256K" / secp256k
230
+ publicKeyDid: secpKey.did(),
231
+ publicKeyMultibase: bytesToMultibase(
232
+ secpKey.publicKeyBytes(),
233
+ 'base58btc',
234
+ ),
235
+ signatureBase64: await makeDerEncodedSig(
236
+ messageBytes,
237
+ await secpKey.export(),
238
+ SECP256K1_JWT_ALG,
239
+ ),
240
+ validSignature: false,
241
+ tags: ['der-encoded'],
242
+ },
171
243
  ]
172
244
  }
173
245
 
@@ -195,6 +267,24 @@ async function makeHighSSig(
195
267
  return sig
196
268
  }
197
269
 
270
+ async function makeDerEncodedSig(
271
+ msgBytes: Uint8Array,
272
+ keyBytes: Uint8Array,
273
+ alg: string,
274
+ ): Promise<string> {
275
+ const hash = await sha256(msgBytes)
276
+
277
+ let sig: string
278
+ if (alg === SECP256K1_JWT_ALG) {
279
+ const attempt = await nobleK256.sign(hash, keyBytes, { lowS: true })
280
+ sig = uint8arrays.toString(attempt.toDERRawBytes(), 'base64')
281
+ } else {
282
+ const attempt = await nobleP256.sign(hash, keyBytes, { lowS: true })
283
+ sig = uint8arrays.toString(attempt.toDERRawBytes(), 'base64')
284
+ }
285
+ return sig
286
+ }
287
+
198
288
  type TestVector = {
199
289
  algorithm: string
200
290
  publicKeyDid: string