{"version":3,"file":"actions.cjs","sources":["../../../node_modules/@auth/core/providers/google.js","../../../node_modules/@auth/core/providers/github.js","../../../node_modules/@auth/core/providers/twitter.js","../../../node_modules/@auth/core/providers/credentials.js","../../../node_modules/tweetnacl/nacl-fast.js","../../shared/src/types/index.ts","../../shared/src/models/UserProfile.ts","../../shared/src/utils/connect-database.ts","../../../node_modules/shortid/lib/random/random-from-seed.js","../../../node_modules/shortid/lib/alphabet.js","../../../node_modules/shortid/lib/random/random-byte-browser.js","../../../node_modules/nanoid/url-alphabet/index.js","../../../node_modules/nanoid/index.browser.js","../../../node_modules/shortid/lib/generate.js","../../../node_modules/shortid/lib/build.js","../../../node_modules/shortid/lib/is-valid.js","../../../node_modules/shortid/lib/util/cluster-worker-id-browser.js","../../../node_modules/shortid/lib/index.js","../../../node_modules/shortid/index.js","../../../node_modules/@noble/hashes/crypto.js","../../../node_modules/@noble/hashes/utils.js","../../../node_modules/@noble/hashes/_md.js","../../../node_modules/@noble/hashes/_u64.js","../../../node_modules/@noble/hashes/sha2.js","../../../node_modules/@noble/hashes/sha256.js","../../../node_modules/@noble/hashes/sha512.js","../../../node_modules/@noble/hashes/hmac.js","../../../node_modules/@noble/hashes/pbkdf2.js","../../../node_modules/bip39/src/_wordlists.js","../../../node_modules/bip39/src/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/base64-js/index.js","../../../node_modules/ieee754/index.js","../../../node_modules/buffer/index.js","../../../node_modules/safe-buffer/index.js","../../../node_modules/string_decoder/lib/string_decoder.js","../../../node_modules/cipher-base/index.js","../../../node_modules/create-hmac/legacy.js","../../../node_modules/events/events.js","../../../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../__vite-browser-external","../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../node_modules/readable-stream/errors-browser.js","../../../node_modules/readable-stream/lib/internal/streams/state.js","../../../node_modules/util-deprecate/browser.js","../../../node_modules/readable-stream/lib/_stream_writable.js","../../../node_modules/readable-stream/lib/_stream_duplex.js","../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../node_modules/readable-stream/lib/_stream_readable.js","../../../node_modules/readable-stream/lib/_stream_transform.js","../../../node_modules/readable-stream/lib/_stream_passthrough.js","../../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../node_modules/readable-stream/readable-browser.js","../../../node_modules/md5.js/node_modules/hash-base/index.js","../../../node_modules/md5.js/index.js","../../../node_modules/create-hash/md5.js","../../../node_modules/ripemd160/node_modules/hash-base/index.js","../../../node_modules/ripemd160/index.js","../../../node_modules/sha.js/hash.js","../../../node_modules/sha.js/sha.js","../../../node_modules/sha.js/sha1.js","../../../node_modules/sha.js/sha256.js","../../../node_modules/sha.js/sha224.js","../../../node_modules/sha.js/sha512.js","../../../node_modules/sha.js/sha384.js","../../../node_modules/sha.js/index.js","../../../node_modules/create-hmac/browser.js","../../../node_modules/ed25519-hd-key/dist/utils.js","../../../node_modules/ed25519-hd-key/dist/index.js","../../../node_modules/@noble/hashes/esm/crypto.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/_md.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha2.js","../../../node_modules/@noble/curves/esm/abstract/utils.js","../../../node_modules/@noble/curves/esm/abstract/modular.js","../../../node_modules/@noble/curves/esm/abstract/curve.js","../../../node_modules/@noble/curves/esm/abstract/edwards.js","../../../node_modules/@noble/curves/esm/ed25519.js","../../../node_modules/@mysten/utils/node_modules/@scure/base/lib/esm/index.js","../../../node_modules/@mysten/utils/dist/esm/b58.js","../../../node_modules/@mysten/utils/dist/esm/b64.js","../../../node_modules/@mysten/utils/dist/esm/hex.js","../../../node_modules/@mysten/bcs/dist/esm/uleb.js","../../../node_modules/@mysten/bcs/dist/esm/reader.js","../../../node_modules/@mysten/bcs/dist/esm/utils.js","../../../node_modules/@mysten/bcs/dist/esm/writer.js","../../../node_modules/@mysten/bcs/dist/esm/bcs-type.js","../../../node_modules/@mysten/bcs/dist/esm/bcs.js","../../../node_modules/@noble/hashes/esm/_blake.js","../../../node_modules/@noble/hashes/esm/blake2.js","../../../node_modules/@noble/hashes/esm/blake2b.js","../../../node_modules/@mysten/sui/node_modules/@scure/base/lib/esm/index.js","../../../node_modules/@mysten/sui/dist/esm/utils/sui-types.js","../../../node_modules/@mysten/sui/dist/esm/bcs/type-tag-serializer.js","../../../node_modules/@mysten/sui/dist/esm/bcs/bcs.js","../../../node_modules/@mysten/sui/dist/esm/bcs/effects.js","../../../node_modules/@mysten/sui/dist/esm/bcs/index.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/intent.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/signature-scheme.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/publickey.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/signature.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/keypair.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@scure/bip39/esm/index.js","../../../node_modules/@mysten/sui/dist/esm/cryptography/mnemonics.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../../node_modules/@mysten/sui/dist/esm/keypairs/ed25519/ed25519-hd-key.js","../../../node_modules/@mysten/sui/dist/esm/keypairs/ed25519/publickey.js","../../../node_modules/@mysten/sui/dist/esm/keypairs/ed25519/keypair.js","../src/actions/create-keypairs.ts","../src/actions/user-profile.ts","../src/actions/auth-config.ts","../src/actions/web3-handlers.ts"],"sourcesContent":["/**\n * Add Google login to your page.\n *\n * ### Setup\n *\n * #### Callback URL\n * ```\n * https://example.com/api/auth/callback/google\n * ```\n *\n * #### Configuration\n *```ts\n * import { Auth } from \"@auth/core\"\n * import Google from \"@auth/core/providers/google\"\n *\n * const request = new Request(origin)\n * const response = await Auth(request, {\n *   providers: [\n *     Google({ clientId: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET }),\n *   ],\n * })\n * ```\n *\n * ### Resources\n *\n *  - [Google OAuth documentation](https://developers.google.com/identity/protocols/oauth2)\n *  - [Google OAuth Configuration](https://console.developers.google.com/apis/credentials)\n *\n * ### Notes\n *\n * By default, Auth.js assumes that the Google provider is\n * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n *\n *\n * The \"Authorized redirect URIs\" used when creating the credentials must include your full domain and end in the callback path. For example;\n *\n * - For production: `https://{YOUR_DOMAIN}/api/auth/callback/google`\n * - For development: `http://localhost:3000/api/auth/callback/google`\n *\n * :::warning\n * Google only provides Refresh Token to an application the first time a user signs in.\n *\n * To force Google to re-issue a Refresh Token, the user needs to remove the application from their account and sign in again:\n * https://myaccount.google.com/permissions\n *\n * Alternatively, you can also pass options in the `params` object of `authorization` which will force the Refresh Token to always be provided on sign in, however this will ask all users to confirm if they wish to grant your application access every time they sign in.\n *\n * If you need access to the RefreshToken or AccessToken for a Google account and you are not using a database to persist user accounts, this may be something you need to do.\n *\n * ```ts\n * const options = {\n *   providers: [\n *     Google({\n *       clientId: process.env.GOOGLE_ID,\n *       clientSecret: process.env.GOOGLE_SECRET,\n *       authorization: {\n *         params: {\n *           prompt: \"consent\",\n *           access_type: \"offline\",\n *           response_type: \"code\"\n *         }\n *       }\n *     })\n *   ],\n * }\n * ```\n *\n * :::\n *\n * :::tip\n * Google also returns a `email_verified` boolean property in the OAuth profile.\n *\n * You can use this property to restrict access to people with verified accounts at a particular domain.\n *\n * ```ts\n * const options = {\n *   ...\n *   callbacks: {\n *     async signIn({ account, profile }) {\n *       if (account.provider === \"google\") {\n *         return profile.email_verified && profile.email.endsWith(\"@example.com\")\n *       }\n *       return true // Do different verification for other providers that don't have `email_verified`\n *     },\n *   }\n *   ...\n * }\n * ```\n *\n * :::\n * :::tip\n *\n * The Google provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/google.ts).\n * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).\n *\n * :::\n *\n * :::info **Disclaimer**\n *\n * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).\n *\n * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from\n * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,\n * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).\n *\n * :::\n */\nexport default function Google(options) {\n    return {\n        id: \"google\",\n        name: \"Google\",\n        type: \"oidc\",\n        issuer: \"https://accounts.google.com\",\n        style: {\n            brandColor: \"#1a73e8\",\n        },\n        options,\n    };\n}\n","/**\n * <div class=\"provider\" style={{backgroundColor: \"#24292f\", display: \"flex\", justifyContent: \"space-between\", color: \"#fff\", padding: 16}}>\n * <span>Built-in <b>GitHub</b> integration.</span>\n * <a href=\"https://github.com\">\n *   <img style={{display: \"block\"}} src=\"https://authjs.dev/img/providers/github.svg\" height=\"48\" width=\"48\"/>\n * </a>\n * </div>\n *\n * @module providers/github\n */\n/**\n * Add GitHub login to your page and make requests to [GitHub APIs](https://docs.github.com/en/rest).\n *\n * ### Setup\n *\n * #### Callback URL\n * ```\n * https://example.com/api/auth/callback/github\n * ```\n *\n * #### Configuration\n * ```ts\n * import { Auth } from \"@auth/core\"\n * import GitHub from \"@auth/core/providers/github\"\n *\n * const request = new Request(origin)\n * const response = await Auth(request, {\n *   providers: [\n *     GitHub({ clientId: GITHUB_CLIENT_ID, clientSecret: GITHUB_CLIENT_SECRET }),\n *   ],\n * })\n * ```\n *\n * ### Resources\n *\n * - [GitHub - Creating an OAuth App](https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app)\n * - [GitHub - Authorizing OAuth Apps](https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps)\n * - [GitHub - Configure your GitHub OAuth Apps](https://github.com/settings/developers)\n * - [Learn more about OAuth](https://authjs.dev/concepts/oauth)\n * - [Source code](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts)\n *\n * ### Notes\n *\n * By default, Auth.js assumes that the GitHub provider is\n * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.\n *\n * :::tip\n *\n * The GitHub provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts).\n * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).\n *\n * :::\n *\n * :::info **Disclaimer**\n *\n * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).\n *\n * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from\n * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,\n * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).\n *\n * :::\n */\nexport default function GitHub(config) {\n    const baseUrl = config?.enterprise?.baseUrl ?? \"https://github.com\";\n    const apiBaseUrl = config?.enterprise?.baseUrl\n        ? `${config?.enterprise?.baseUrl}/api/v3`\n        : \"https://api.github.com\";\n    return {\n        id: \"github\",\n        name: \"GitHub\",\n        type: \"oauth\",\n        authorization: {\n            url: `${baseUrl}/login/oauth/authorize`,\n            params: { scope: \"read:user user:email\" },\n        },\n        token: `${baseUrl}/login/oauth/access_token`,\n        userinfo: {\n            url: `${apiBaseUrl}/user`,\n            async request({ tokens, provider }) {\n                const profile = await fetch(provider.userinfo?.url, {\n                    headers: {\n                        Authorization: `Bearer ${tokens.access_token}`,\n                        \"User-Agent\": \"authjs\",\n                    },\n                }).then(async (res) => await res.json());\n                if (!profile.email) {\n                    // If the user does not have a public email, get another via the GitHub API\n                    // See https://docs.github.com/en/rest/users/emails#list-public-email-addresses-for-the-authenticated-user\n                    const res = await fetch(`${apiBaseUrl}/user/emails`, {\n                        headers: {\n                            Authorization: `Bearer ${tokens.access_token}`,\n                            \"User-Agent\": \"authjs\",\n                        },\n                    });\n                    if (res.ok) {\n                        const emails = await res.json();\n                        profile.email = (emails.find((e) => e.primary) ?? emails[0]).email;\n                    }\n                }\n                return profile;\n            },\n        },\n        profile(profile) {\n            return {\n                id: profile.id.toString(),\n                name: profile.name ?? profile.login,\n                email: profile.email,\n                image: profile.avatar_url,\n            };\n        },\n        style: { bg: \"#24292f\", text: \"#fff\" },\n        options: config,\n    };\n}\n","/**\n * Add Twitter login to your page.\n *\n * ### Setup\n *\n * #### Callback URL\n * ```\n * https://example.com/api/auth/callback/twitter\n * ```\n *\n * #### Configuration\n *```ts\n * import { Auth } from \"@auth/core\"\n * import Twitter from \"@auth/core/providers/twitter\"\n *\n * const request = new Request(origin)\n * const response = await Auth(request, {\n *   providers: [\n *     Twitter({\n *       clientId: TWITTER_CLIENT_ID,\n *       clientSecret: TWITTER_CLIENT_SECRET,\n *     }),\n *   ],\n * })\n * ```\n *\n * ### Resources\n *\n * - [Twitter App documentation](https://developer.x.com/en/apps)\n *\n * ## OAuth 2\n * Twitter supports OAuth 2, which is currently opt-in. To enable it, simply add version: \"2.0\" to your Provider configuration:\n * ```ts\n * Twitter({\n *   clientId: process.env.TWITTER_ID,\n *   clientSecret: process.env.TWITTER_SECRET,\n *   version: \"2.0\", // opt-in to Twitter OAuth 2.0\n * })\n * ```\n * Keep in mind that although this change is easy, it changes how and with which of Twitter APIs you can interact with. Read the official Twitter OAuth 2 documentation for more details.\n *\n *\n * :::note\n *\n * Email is currently not supported by Twitter OAuth 2.0.\n *\n * :::\n *\n * ### Notes\n *\n * Twitter is currently the only built-in provider using the OAuth 1.0 spec.\n * This means that you won't receive an `access_token` or `refresh_token`, but an `oauth_token` and `oauth_token_secret` respectively. Remember to add these to your database schema, in case if you are using an [Adapter](https://authjs.dev/reference/core/adapters).\n *\n * :::tip\n *\n * You must enable the \"Request email address from users\" option in your app permissions if you want to obtain the users email address.\n *\n * :::\n *\n * By default, Auth.js assumes that the Twitter provider is\n * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.\n *\n * :::tip\n *\n * The Twitter provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/twitter.ts).\n * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).\n *\n * :::\n *\n * :::info **Disclaimer**\n *\n * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).\n *\n * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from\n * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,\n * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).\n *\n * :::\n */\nexport default function Twitter(config) {\n    return {\n        id: \"twitter\",\n        name: \"Twitter\",\n        type: \"oauth\",\n        checks: [\"pkce\", \"state\"],\n        authorization: \"https://x.com/i/oauth2/authorize?scope=users.read tweet.read offline.access\",\n        token: \"https://api.x.com/2/oauth2/token\",\n        userinfo: \"https://api.x.com/2/users/me?user.fields=profile_image_url\",\n        profile({ data }) {\n            return {\n                id: data.id,\n                name: data.name,\n                email: data.email ?? null,\n                image: data.profile_image_url,\n            };\n        },\n        style: { bg: \"#1da1f2\", text: \"#fff\" },\n        options: config,\n    };\n}\n","/**\n * The Credentials provider allows you to handle signing in with arbitrary credentials,\n * such as a username and password, domain, or two factor authentication or hardware device (e.g. YubiKey U2F / FIDO).\n *\n * It is intended to support use cases where you have an existing system you need to authenticate users against.\n *\n * It comes with the constraint that users authenticated in this manner are not persisted in the database,\n * and consequently that the Credentials provider can only be used if JSON Web Tokens are enabled for sessions.\n *\n * :::caution\n * The functionality provided for credentials-based authentication is intentionally limited to discourage the use of passwords due to the inherent security risks of the username-password model.\n *\n * OAuth providers spend significant amounts of money, time, and engineering effort to build:\n *\n * - abuse detection (bot-protection, rate-limiting)\n * - password management (password reset, credential stuffing, rotation)\n * - data security (encryption/salting, strength validation)\n *\n * and much more for authentication solutions. It is likely that your application would benefit from leveraging these battle-tested solutions rather than try to rebuild them from scratch.\n *\n * If you'd still like to build password-based authentication for your application despite these risks, Auth.js gives you full control to do so.\n *\n * :::\n *\n * See the [callbacks documentation](/reference/core#authconfig#callbacks) for more information on how to interact with the token. For example, you can add additional information to the token by returning an object from the `jwt()` callback:\n *\n * ```ts\n * callbacks: {\n *   async jwt({ token, user, account, profile, isNewUser }) {\n *     if (user) {\n *       token.id = user.id\n *     }\n *     return token\n *   }\n * }\n * ```\n *\n * @example\n * ```ts\n * import { Auth } from \"@auth/core\"\n * import Credentials from \"@auth/core/providers/credentials\"\n *\n * const request = new Request(\"https://example.com\")\n * const response = await AuthHandler(request, {\n *   providers: [\n *     Credentials({\n *       credentials: {\n *         username: { label: \"Username\" },\n *         password: {  label: \"Password\", type: \"password\" }\n *       },\n *       async authorize({ request }) {\n *         const response = await fetch(request)\n *         if(!response.ok) return null\n *         return await response.json() ?? null\n *       }\n *     })\n *   ],\n *   secret: \"...\",\n *   trustHost: true,\n * })\n * ```\n * @see [Username/Password Example](https://authjs.dev/getting-started/authentication/credentials)\n */\nexport default function Credentials(config) {\n    return {\n        id: \"credentials\",\n        name: \"Credentials\",\n        type: \"credentials\",\n        credentials: {},\n        authorize: () => null,\n        // @ts-expect-error\n        options: config,\n    };\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n  var i, r = new Float64Array(16);\n  if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n  return r;\n};\n\n//  Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n    gf1 = gf([1]),\n    _121665 = gf([0xdb41, 1]),\n    D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n    D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n    X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n    Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n    I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n  x[i]   = (h >> 24) & 0xff;\n  x[i+1] = (h >> 16) & 0xff;\n  x[i+2] = (h >>  8) & 0xff;\n  x[i+3] = h & 0xff;\n  x[i+4] = (l >> 24)  & 0xff;\n  x[i+5] = (l >> 16)  & 0xff;\n  x[i+6] = (l >>  8)  & 0xff;\n  x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n  var i,d = 0;\n  for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n  return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n  return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n  return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n   x0 =  x0 +  j0 | 0;\n   x1 =  x1 +  j1 | 0;\n   x2 =  x2 +  j2 | 0;\n   x3 =  x3 +  j3 | 0;\n   x4 =  x4 +  j4 | 0;\n   x5 =  x5 +  j5 | 0;\n   x6 =  x6 +  j6 | 0;\n   x7 =  x7 +  j7 | 0;\n   x8 =  x8 +  j8 | 0;\n   x9 =  x9 +  j9 | 0;\n  x10 = x10 + j10 | 0;\n  x11 = x11 + j11 | 0;\n  x12 = x12 + j12 | 0;\n  x13 = x13 + j13 | 0;\n  x14 = x14 + j14 | 0;\n  x15 = x15 + j15 | 0;\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x1 >>>  0 & 0xff;\n  o[ 5] = x1 >>>  8 & 0xff;\n  o[ 6] = x1 >>> 16 & 0xff;\n  o[ 7] = x1 >>> 24 & 0xff;\n\n  o[ 8] = x2 >>>  0 & 0xff;\n  o[ 9] = x2 >>>  8 & 0xff;\n  o[10] = x2 >>> 16 & 0xff;\n  o[11] = x2 >>> 24 & 0xff;\n\n  o[12] = x3 >>>  0 & 0xff;\n  o[13] = x3 >>>  8 & 0xff;\n  o[14] = x3 >>> 16 & 0xff;\n  o[15] = x3 >>> 24 & 0xff;\n\n  o[16] = x4 >>>  0 & 0xff;\n  o[17] = x4 >>>  8 & 0xff;\n  o[18] = x4 >>> 16 & 0xff;\n  o[19] = x4 >>> 24 & 0xff;\n\n  o[20] = x5 >>>  0 & 0xff;\n  o[21] = x5 >>>  8 & 0xff;\n  o[22] = x5 >>> 16 & 0xff;\n  o[23] = x5 >>> 24 & 0xff;\n\n  o[24] = x6 >>>  0 & 0xff;\n  o[25] = x6 >>>  8 & 0xff;\n  o[26] = x6 >>> 16 & 0xff;\n  o[27] = x6 >>> 24 & 0xff;\n\n  o[28] = x7 >>>  0 & 0xff;\n  o[29] = x7 >>>  8 & 0xff;\n  o[30] = x7 >>> 16 & 0xff;\n  o[31] = x7 >>> 24 & 0xff;\n\n  o[32] = x8 >>>  0 & 0xff;\n  o[33] = x8 >>>  8 & 0xff;\n  o[34] = x8 >>> 16 & 0xff;\n  o[35] = x8 >>> 24 & 0xff;\n\n  o[36] = x9 >>>  0 & 0xff;\n  o[37] = x9 >>>  8 & 0xff;\n  o[38] = x9 >>> 16 & 0xff;\n  o[39] = x9 >>> 24 & 0xff;\n\n  o[40] = x10 >>>  0 & 0xff;\n  o[41] = x10 >>>  8 & 0xff;\n  o[42] = x10 >>> 16 & 0xff;\n  o[43] = x10 >>> 24 & 0xff;\n\n  o[44] = x11 >>>  0 & 0xff;\n  o[45] = x11 >>>  8 & 0xff;\n  o[46] = x11 >>> 16 & 0xff;\n  o[47] = x11 >>> 24 & 0xff;\n\n  o[48] = x12 >>>  0 & 0xff;\n  o[49] = x12 >>>  8 & 0xff;\n  o[50] = x12 >>> 16 & 0xff;\n  o[51] = x12 >>> 24 & 0xff;\n\n  o[52] = x13 >>>  0 & 0xff;\n  o[53] = x13 >>>  8 & 0xff;\n  o[54] = x13 >>> 16 & 0xff;\n  o[55] = x13 >>> 24 & 0xff;\n\n  o[56] = x14 >>>  0 & 0xff;\n  o[57] = x14 >>>  8 & 0xff;\n  o[58] = x14 >>> 16 & 0xff;\n  o[59] = x14 >>> 24 & 0xff;\n\n  o[60] = x15 >>>  0 & 0xff;\n  o[61] = x15 >>>  8 & 0xff;\n  o[62] = x15 >>> 16 & 0xff;\n  o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x5 >>>  0 & 0xff;\n  o[ 5] = x5 >>>  8 & 0xff;\n  o[ 6] = x5 >>> 16 & 0xff;\n  o[ 7] = x5 >>> 24 & 0xff;\n\n  o[ 8] = x10 >>>  0 & 0xff;\n  o[ 9] = x10 >>>  8 & 0xff;\n  o[10] = x10 >>> 16 & 0xff;\n  o[11] = x10 >>> 24 & 0xff;\n\n  o[12] = x15 >>>  0 & 0xff;\n  o[13] = x15 >>>  8 & 0xff;\n  o[14] = x15 >>> 16 & 0xff;\n  o[15] = x15 >>> 24 & 0xff;\n\n  o[16] = x6 >>>  0 & 0xff;\n  o[17] = x6 >>>  8 & 0xff;\n  o[18] = x6 >>> 16 & 0xff;\n  o[19] = x6 >>> 24 & 0xff;\n\n  o[20] = x7 >>>  0 & 0xff;\n  o[21] = x7 >>>  8 & 0xff;\n  o[22] = x7 >>> 16 & 0xff;\n  o[23] = x7 >>> 24 & 0xff;\n\n  o[24] = x8 >>>  0 & 0xff;\n  o[25] = x8 >>>  8 & 0xff;\n  o[26] = x8 >>> 16 & 0xff;\n  o[27] = x8 >>> 24 & 0xff;\n\n  o[28] = x9 >>>  0 & 0xff;\n  o[29] = x9 >>>  8 & 0xff;\n  o[30] = x9 >>> 16 & 0xff;\n  o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n  core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n  core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n            // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n    mpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n  this.buffer = new Uint8Array(16);\n  this.r = new Uint16Array(10);\n  this.h = new Uint16Array(10);\n  this.pad = new Uint16Array(8);\n  this.leftover = 0;\n  this.fin = 0;\n\n  var t0, t1, t2, t3, t4, t5, t6, t7;\n\n  t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0                     ) & 0x1fff;\n  t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n  t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 <<  6)) & 0x1f03;\n  t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n  t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>>  4) | (t4 << 12)) & 0x00ff;\n  this.r[5] = ((t4 >>>  1)) & 0x1ffe;\n  t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n  t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 <<  5)) & 0x1f81;\n  t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n  this.r[9] = ((t7 >>>  5)) & 0x007f;\n\n  this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n  this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n  this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n  this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n  this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n  this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n  this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n  this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n  var hibit = this.fin ? 0 : (1 << 11);\n  var t0, t1, t2, t3, t4, t5, t6, t7, c;\n  var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n  var h0 = this.h[0],\n      h1 = this.h[1],\n      h2 = this.h[2],\n      h3 = this.h[3],\n      h4 = this.h[4],\n      h5 = this.h[5],\n      h6 = this.h[6],\n      h7 = this.h[7],\n      h8 = this.h[8],\n      h9 = this.h[9];\n\n  var r0 = this.r[0],\n      r1 = this.r[1],\n      r2 = this.r[2],\n      r3 = this.r[3],\n      r4 = this.r[4],\n      r5 = this.r[5],\n      r6 = this.r[6],\n      r7 = this.r[7],\n      r8 = this.r[8],\n      r9 = this.r[9];\n\n  while (bytes >= 16) {\n    t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0                     ) & 0x1fff;\n    t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n    t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 <<  6)) & 0x1fff;\n    t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n    t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>>  4) | (t4 << 12)) & 0x1fff;\n    h5 += ((t4 >>>  1)) & 0x1fff;\n    t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n    t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 <<  5)) & 0x1fff;\n    t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n    h9 += ((t7 >>> 5)) | hibit;\n\n    c = 0;\n\n    d0 = c;\n    d0 += h0 * r0;\n    d0 += h1 * (5 * r9);\n    d0 += h2 * (5 * r8);\n    d0 += h3 * (5 * r7);\n    d0 += h4 * (5 * r6);\n    c = (d0 >>> 13); d0 &= 0x1fff;\n    d0 += h5 * (5 * r5);\n    d0 += h6 * (5 * r4);\n    d0 += h7 * (5 * r3);\n    d0 += h8 * (5 * r2);\n    d0 += h9 * (5 * r1);\n    c += (d0 >>> 13); d0 &= 0x1fff;\n\n    d1 = c;\n    d1 += h0 * r1;\n    d1 += h1 * r0;\n    d1 += h2 * (5 * r9);\n    d1 += h3 * (5 * r8);\n    d1 += h4 * (5 * r7);\n    c = (d1 >>> 13); d1 &= 0x1fff;\n    d1 += h5 * (5 * r6);\n    d1 += h6 * (5 * r5);\n    d1 += h7 * (5 * r4);\n    d1 += h8 * (5 * r3);\n    d1 += h9 * (5 * r2);\n    c += (d1 >>> 13); d1 &= 0x1fff;\n\n    d2 = c;\n    d2 += h0 * r2;\n    d2 += h1 * r1;\n    d2 += h2 * r0;\n    d2 += h3 * (5 * r9);\n    d2 += h4 * (5 * r8);\n    c = (d2 >>> 13); d2 &= 0x1fff;\n    d2 += h5 * (5 * r7);\n    d2 += h6 * (5 * r6);\n    d2 += h7 * (5 * r5);\n    d2 += h8 * (5 * r4);\n    d2 += h9 * (5 * r3);\n    c += (d2 >>> 13); d2 &= 0x1fff;\n\n    d3 = c;\n    d3 += h0 * r3;\n    d3 += h1 * r2;\n    d3 += h2 * r1;\n    d3 += h3 * r0;\n    d3 += h4 * (5 * r9);\n    c = (d3 >>> 13); d3 &= 0x1fff;\n    d3 += h5 * (5 * r8);\n    d3 += h6 * (5 * r7);\n    d3 += h7 * (5 * r6);\n    d3 += h8 * (5 * r5);\n    d3 += h9 * (5 * r4);\n    c += (d3 >>> 13); d3 &= 0x1fff;\n\n    d4 = c;\n    d4 += h0 * r4;\n    d4 += h1 * r3;\n    d4 += h2 * r2;\n    d4 += h3 * r1;\n    d4 += h4 * r0;\n    c = (d4 >>> 13); d4 &= 0x1fff;\n    d4 += h5 * (5 * r9);\n    d4 += h6 * (5 * r8);\n    d4 += h7 * (5 * r7);\n    d4 += h8 * (5 * r6);\n    d4 += h9 * (5 * r5);\n    c += (d4 >>> 13); d4 &= 0x1fff;\n\n    d5 = c;\n    d5 += h0 * r5;\n    d5 += h1 * r4;\n    d5 += h2 * r3;\n    d5 += h3 * r2;\n    d5 += h4 * r1;\n    c = (d5 >>> 13); d5 &= 0x1fff;\n    d5 += h5 * r0;\n    d5 += h6 * (5 * r9);\n    d5 += h7 * (5 * r8);\n    d5 += h8 * (5 * r7);\n    d5 += h9 * (5 * r6);\n    c += (d5 >>> 13); d5 &= 0x1fff;\n\n    d6 = c;\n    d6 += h0 * r6;\n    d6 += h1 * r5;\n    d6 += h2 * r4;\n    d6 += h3 * r3;\n    d6 += h4 * r2;\n    c = (d6 >>> 13); d6 &= 0x1fff;\n    d6 += h5 * r1;\n    d6 += h6 * r0;\n    d6 += h7 * (5 * r9);\n    d6 += h8 * (5 * r8);\n    d6 += h9 * (5 * r7);\n    c += (d6 >>> 13); d6 &= 0x1fff;\n\n    d7 = c;\n    d7 += h0 * r7;\n    d7 += h1 * r6;\n    d7 += h2 * r5;\n    d7 += h3 * r4;\n    d7 += h4 * r3;\n    c = (d7 >>> 13); d7 &= 0x1fff;\n    d7 += h5 * r2;\n    d7 += h6 * r1;\n    d7 += h7 * r0;\n    d7 += h8 * (5 * r9);\n    d7 += h9 * (5 * r8);\n    c += (d7 >>> 13); d7 &= 0x1fff;\n\n    d8 = c;\n    d8 += h0 * r8;\n    d8 += h1 * r7;\n    d8 += h2 * r6;\n    d8 += h3 * r5;\n    d8 += h4 * r4;\n    c = (d8 >>> 13); d8 &= 0x1fff;\n    d8 += h5 * r3;\n    d8 += h6 * r2;\n    d8 += h7 * r1;\n    d8 += h8 * r0;\n    d8 += h9 * (5 * r9);\n    c += (d8 >>> 13); d8 &= 0x1fff;\n\n    d9 = c;\n    d9 += h0 * r9;\n    d9 += h1 * r8;\n    d9 += h2 * r7;\n    d9 += h3 * r6;\n    d9 += h4 * r5;\n    c = (d9 >>> 13); d9 &= 0x1fff;\n    d9 += h5 * r4;\n    d9 += h6 * r3;\n    d9 += h7 * r2;\n    d9 += h8 * r1;\n    d9 += h9 * r0;\n    c += (d9 >>> 13); d9 &= 0x1fff;\n\n    c = (((c << 2) + c)) | 0;\n    c = (c + d0) | 0;\n    d0 = c & 0x1fff;\n    c = (c >>> 13);\n    d1 += c;\n\n    h0 = d0;\n    h1 = d1;\n    h2 = d2;\n    h3 = d3;\n    h4 = d4;\n    h5 = d5;\n    h6 = d6;\n    h7 = d7;\n    h8 = d8;\n    h9 = d9;\n\n    mpos += 16;\n    bytes -= 16;\n  }\n  this.h[0] = h0;\n  this.h[1] = h1;\n  this.h[2] = h2;\n  this.h[3] = h3;\n  this.h[4] = h4;\n  this.h[5] = h5;\n  this.h[6] = h6;\n  this.h[7] = h7;\n  this.h[8] = h8;\n  this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n  var g = new Uint16Array(10);\n  var c, mask, f, i;\n\n  if (this.leftover) {\n    i = this.leftover;\n    this.buffer[i++] = 1;\n    for (; i < 16; i++) this.buffer[i] = 0;\n    this.fin = 1;\n    this.blocks(this.buffer, 0, 16);\n  }\n\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  for (i = 2; i < 10; i++) {\n    this.h[i] += c;\n    c = this.h[i] >>> 13;\n    this.h[i] &= 0x1fff;\n  }\n  this.h[0] += (c * 5);\n  c = this.h[0] >>> 13;\n  this.h[0] &= 0x1fff;\n  this.h[1] += c;\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  this.h[2] += c;\n\n  g[0] = this.h[0] + 5;\n  c = g[0] >>> 13;\n  g[0] &= 0x1fff;\n  for (i = 1; i < 10; i++) {\n    g[i] = this.h[i] + c;\n    c = g[i] >>> 13;\n    g[i] &= 0x1fff;\n  }\n  g[9] -= (1 << 13);\n\n  mask = (c ^ 1) - 1;\n  for (i = 0; i < 10; i++) g[i] &= mask;\n  mask = ~mask;\n  for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n  this.h[0] = ((this.h[0]       ) | (this.h[1] << 13)                    ) & 0xffff;\n  this.h[1] = ((this.h[1] >>>  3) | (this.h[2] << 10)                    ) & 0xffff;\n  this.h[2] = ((this.h[2] >>>  6) | (this.h[3] <<  7)                    ) & 0xffff;\n  this.h[3] = ((this.h[3] >>>  9) | (this.h[4] <<  4)                    ) & 0xffff;\n  this.h[4] = ((this.h[4] >>> 12) | (this.h[5] <<  1) | (this.h[6] << 14)) & 0xffff;\n  this.h[5] = ((this.h[6] >>>  2) | (this.h[7] << 11)                    ) & 0xffff;\n  this.h[6] = ((this.h[7] >>>  5) | (this.h[8] <<  8)                    ) & 0xffff;\n  this.h[7] = ((this.h[8] >>>  8) | (this.h[9] <<  5)                    ) & 0xffff;\n\n  f = this.h[0] + this.pad[0];\n  this.h[0] = f & 0xffff;\n  for (i = 1; i < 8; i++) {\n    f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n    this.h[i] = f & 0xffff;\n  }\n\n  mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n  mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n  mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n  mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n  mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n  mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n  mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n  mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n  mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n  mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n  mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n  mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n  mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n  mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n  mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n  mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n  var i, want;\n\n  if (this.leftover) {\n    want = (16 - this.leftover);\n    if (want > bytes)\n      want = bytes;\n    for (i = 0; i < want; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    bytes -= want;\n    mpos += want;\n    this.leftover += want;\n    if (this.leftover < 16)\n      return;\n    this.blocks(this.buffer, 0, 16);\n    this.leftover = 0;\n  }\n\n  if (bytes >= 16) {\n    want = bytes - (bytes % 16);\n    this.blocks(m, mpos, want);\n    mpos += want;\n    bytes -= want;\n  }\n\n  if (bytes) {\n    for (i = 0; i < bytes; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    this.leftover += bytes;\n  }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n  var s = new poly1305(k);\n  s.update(m, mpos, n);\n  s.finish(out, outpos);\n  return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n  var x = new Uint8Array(16);\n  crypto_onetimeauth(x,0,m,mpos,n,k);\n  return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n  var i;\n  if (d < 32) return -1;\n  crypto_stream_xor(c,0,m,0,d,n,k);\n  crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n  for (i = 0; i < 16; i++) c[i] = 0;\n  return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n  var i;\n  var x = new Uint8Array(32);\n  if (d < 32) return -1;\n  crypto_stream(x,0,32,n,k);\n  if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n  crypto_stream_xor(m,0,c,0,d,n,k);\n  for (i = 0; i < 32; i++) m[i] = 0;\n  return 0;\n}\n\nfunction set25519(r, a) {\n  var i;\n  for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n  var i, v, c = 1;\n  for (i = 0; i < 16; i++) {\n    v = o[i] + c + 65535;\n    c = Math.floor(v / 65536);\n    o[i] = v - c * 65536;\n  }\n  o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n  var t, c = ~(b-1);\n  for (var i = 0; i < 16; i++) {\n    t = c & (p[i] ^ q[i]);\n    p[i] ^= t;\n    q[i] ^= t;\n  }\n}\n\nfunction pack25519(o, n) {\n  var i, j, b;\n  var m = gf(), t = gf();\n  for (i = 0; i < 16; i++) t[i] = n[i];\n  car25519(t);\n  car25519(t);\n  car25519(t);\n  for (j = 0; j < 2; j++) {\n    m[0] = t[0] - 0xffed;\n    for (i = 1; i < 15; i++) {\n      m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n      m[i-1] &= 0xffff;\n    }\n    m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n    b = (m[15]>>16) & 1;\n    m[14] &= 0xffff;\n    sel25519(t, m, 1-b);\n  }\n  for (i = 0; i < 16; i++) {\n    o[2*i] = t[i] & 0xff;\n    o[2*i+1] = t[i]>>8;\n  }\n}\n\nfunction neq25519(a, b) {\n  var c = new Uint8Array(32), d = new Uint8Array(32);\n  pack25519(c, a);\n  pack25519(d, b);\n  return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n  var d = new Uint8Array(32);\n  pack25519(d, a);\n  return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n  var i;\n  for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n  o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n  var v, c,\n     t0 = 0,  t1 = 0,  t2 = 0,  t3 = 0,  t4 = 0,  t5 = 0,  t6 = 0,  t7 = 0,\n     t8 = 0,  t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n    t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n    t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n    b0 = b[0],\n    b1 = b[1],\n    b2 = b[2],\n    b3 = b[3],\n    b4 = b[4],\n    b5 = b[5],\n    b6 = b[6],\n    b7 = b[7],\n    b8 = b[8],\n    b9 = b[9],\n    b10 = b[10],\n    b11 = b[11],\n    b12 = b[12],\n    b13 = b[13],\n    b14 = b[14],\n    b15 = b[15];\n\n  v = a[0];\n  t0 += v * b0;\n  t1 += v * b1;\n  t2 += v * b2;\n  t3 += v * b3;\n  t4 += v * b4;\n  t5 += v * b5;\n  t6 += v * b6;\n  t7 += v * b7;\n  t8 += v * b8;\n  t9 += v * b9;\n  t10 += v * b10;\n  t11 += v * b11;\n  t12 += v * b12;\n  t13 += v * b13;\n  t14 += v * b14;\n  t15 += v * b15;\n  v = a[1];\n  t1 += v * b0;\n  t2 += v * b1;\n  t3 += v * b2;\n  t4 += v * b3;\n  t5 += v * b4;\n  t6 += v * b5;\n  t7 += v * b6;\n  t8 += v * b7;\n  t9 += v * b8;\n  t10 += v * b9;\n  t11 += v * b10;\n  t12 += v * b11;\n  t13 += v * b12;\n  t14 += v * b13;\n  t15 += v * b14;\n  t16 += v * b15;\n  v = a[2];\n  t2 += v * b0;\n  t3 += v * b1;\n  t4 += v * b2;\n  t5 += v * b3;\n  t6 += v * b4;\n  t7 += v * b5;\n  t8 += v * b6;\n  t9 += v * b7;\n  t10 += v * b8;\n  t11 += v * b9;\n  t12 += v * b10;\n  t13 += v * b11;\n  t14 += v * b12;\n  t15 += v * b13;\n  t16 += v * b14;\n  t17 += v * b15;\n  v = a[3];\n  t3 += v * b0;\n  t4 += v * b1;\n  t5 += v * b2;\n  t6 += v * b3;\n  t7 += v * b4;\n  t8 += v * b5;\n  t9 += v * b6;\n  t10 += v * b7;\n  t11 += v * b8;\n  t12 += v * b9;\n  t13 += v * b10;\n  t14 += v * b11;\n  t15 += v * b12;\n  t16 += v * b13;\n  t17 += v * b14;\n  t18 += v * b15;\n  v = a[4];\n  t4 += v * b0;\n  t5 += v * b1;\n  t6 += v * b2;\n  t7 += v * b3;\n  t8 += v * b4;\n  t9 += v * b5;\n  t10 += v * b6;\n  t11 += v * b7;\n  t12 += v * b8;\n  t13 += v * b9;\n  t14 += v * b10;\n  t15 += v * b11;\n  t16 += v * b12;\n  t17 += v * b13;\n  t18 += v * b14;\n  t19 += v * b15;\n  v = a[5];\n  t5 += v * b0;\n  t6 += v * b1;\n  t7 += v * b2;\n  t8 += v * b3;\n  t9 += v * b4;\n  t10 += v * b5;\n  t11 += v * b6;\n  t12 += v * b7;\n  t13 += v * b8;\n  t14 += v * b9;\n  t15 += v * b10;\n  t16 += v * b11;\n  t17 += v * b12;\n  t18 += v * b13;\n  t19 += v * b14;\n  t20 += v * b15;\n  v = a[6];\n  t6 += v * b0;\n  t7 += v * b1;\n  t8 += v * b2;\n  t9 += v * b3;\n  t10 += v * b4;\n  t11 += v * b5;\n  t12 += v * b6;\n  t13 += v * b7;\n  t14 += v * b8;\n  t15 += v * b9;\n  t16 += v * b10;\n  t17 += v * b11;\n  t18 += v * b12;\n  t19 += v * b13;\n  t20 += v * b14;\n  t21 += v * b15;\n  v = a[7];\n  t7 += v * b0;\n  t8 += v * b1;\n  t9 += v * b2;\n  t10 += v * b3;\n  t11 += v * b4;\n  t12 += v * b5;\n  t13 += v * b6;\n  t14 += v * b7;\n  t15 += v * b8;\n  t16 += v * b9;\n  t17 += v * b10;\n  t18 += v * b11;\n  t19 += v * b12;\n  t20 += v * b13;\n  t21 += v * b14;\n  t22 += v * b15;\n  v = a[8];\n  t8 += v * b0;\n  t9 += v * b1;\n  t10 += v * b2;\n  t11 += v * b3;\n  t12 += v * b4;\n  t13 += v * b5;\n  t14 += v * b6;\n  t15 += v * b7;\n  t16 += v * b8;\n  t17 += v * b9;\n  t18 += v * b10;\n  t19 += v * b11;\n  t20 += v * b12;\n  t21 += v * b13;\n  t22 += v * b14;\n  t23 += v * b15;\n  v = a[9];\n  t9 += v * b0;\n  t10 += v * b1;\n  t11 += v * b2;\n  t12 += v * b3;\n  t13 += v * b4;\n  t14 += v * b5;\n  t15 += v * b6;\n  t16 += v * b7;\n  t17 += v * b8;\n  t18 += v * b9;\n  t19 += v * b10;\n  t20 += v * b11;\n  t21 += v * b12;\n  t22 += v * b13;\n  t23 += v * b14;\n  t24 += v * b15;\n  v = a[10];\n  t10 += v * b0;\n  t11 += v * b1;\n  t12 += v * b2;\n  t13 += v * b3;\n  t14 += v * b4;\n  t15 += v * b5;\n  t16 += v * b6;\n  t17 += v * b7;\n  t18 += v * b8;\n  t19 += v * b9;\n  t20 += v * b10;\n  t21 += v * b11;\n  t22 += v * b12;\n  t23 += v * b13;\n  t24 += v * b14;\n  t25 += v * b15;\n  v = a[11];\n  t11 += v * b0;\n  t12 += v * b1;\n  t13 += v * b2;\n  t14 += v * b3;\n  t15 += v * b4;\n  t16 += v * b5;\n  t17 += v * b6;\n  t18 += v * b7;\n  t19 += v * b8;\n  t20 += v * b9;\n  t21 += v * b10;\n  t22 += v * b11;\n  t23 += v * b12;\n  t24 += v * b13;\n  t25 += v * b14;\n  t26 += v * b15;\n  v = a[12];\n  t12 += v * b0;\n  t13 += v * b1;\n  t14 += v * b2;\n  t15 += v * b3;\n  t16 += v * b4;\n  t17 += v * b5;\n  t18 += v * b6;\n  t19 += v * b7;\n  t20 += v * b8;\n  t21 += v * b9;\n  t22 += v * b10;\n  t23 += v * b11;\n  t24 += v * b12;\n  t25 += v * b13;\n  t26 += v * b14;\n  t27 += v * b15;\n  v = a[13];\n  t13 += v * b0;\n  t14 += v * b1;\n  t15 += v * b2;\n  t16 += v * b3;\n  t17 += v * b4;\n  t18 += v * b5;\n  t19 += v * b6;\n  t20 += v * b7;\n  t21 += v * b8;\n  t22 += v * b9;\n  t23 += v * b10;\n  t24 += v * b11;\n  t25 += v * b12;\n  t26 += v * b13;\n  t27 += v * b14;\n  t28 += v * b15;\n  v = a[14];\n  t14 += v * b0;\n  t15 += v * b1;\n  t16 += v * b2;\n  t17 += v * b3;\n  t18 += v * b4;\n  t19 += v * b5;\n  t20 += v * b6;\n  t21 += v * b7;\n  t22 += v * b8;\n  t23 += v * b9;\n  t24 += v * b10;\n  t25 += v * b11;\n  t26 += v * b12;\n  t27 += v * b13;\n  t28 += v * b14;\n  t29 += v * b15;\n  v = a[15];\n  t15 += v * b0;\n  t16 += v * b1;\n  t17 += v * b2;\n  t18 += v * b3;\n  t19 += v * b4;\n  t20 += v * b5;\n  t21 += v * b6;\n  t22 += v * b7;\n  t23 += v * b8;\n  t24 += v * b9;\n  t25 += v * b10;\n  t26 += v * b11;\n  t27 += v * b12;\n  t28 += v * b13;\n  t29 += v * b14;\n  t30 += v * b15;\n\n  t0  += 38 * t16;\n  t1  += 38 * t17;\n  t2  += 38 * t18;\n  t3  += 38 * t19;\n  t4  += 38 * t20;\n  t5  += 38 * t21;\n  t6  += 38 * t22;\n  t7  += 38 * t23;\n  t8  += 38 * t24;\n  t9  += 38 * t25;\n  t10 += 38 * t26;\n  t11 += 38 * t27;\n  t12 += 38 * t28;\n  t13 += 38 * t29;\n  t14 += 38 * t30;\n  // t15 left as is\n\n  // first car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  // second car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  o[ 0] = t0;\n  o[ 1] = t1;\n  o[ 2] = t2;\n  o[ 3] = t3;\n  o[ 4] = t4;\n  o[ 5] = t5;\n  o[ 6] = t6;\n  o[ 7] = t7;\n  o[ 8] = t8;\n  o[ 9] = t9;\n  o[10] = t10;\n  o[11] = t11;\n  o[12] = t12;\n  o[13] = t13;\n  o[14] = t14;\n  o[15] = t15;\n}\n\nfunction S(o, a) {\n  M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 253; a >= 0; a--) {\n    S(c, c);\n    if(a !== 2 && a !== 4) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 250; a >= 0; a--) {\n      S(c, c);\n      if(a !== 1) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n  var z = new Uint8Array(32);\n  var x = new Float64Array(80), r, i;\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf();\n  for (i = 0; i < 31; i++) z[i] = n[i];\n  z[31]=(n[31]&127)|64;\n  z[0]&=248;\n  unpack25519(x,p);\n  for (i = 0; i < 16; i++) {\n    b[i]=x[i];\n    d[i]=a[i]=c[i]=0;\n  }\n  a[0]=d[0]=1;\n  for (i=254; i>=0; --i) {\n    r=(z[i>>>3]>>>(i&7))&1;\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n    A(e,a,c);\n    Z(a,a,c);\n    A(c,b,d);\n    Z(b,b,d);\n    S(d,e);\n    S(f,a);\n    M(a,c,a);\n    M(c,b,e);\n    A(e,a,c);\n    Z(a,a,c);\n    S(b,a);\n    Z(c,d,f);\n    M(a,c,_121665);\n    A(a,a,d);\n    M(c,c,a);\n    M(a,d,f);\n    M(d,b,x);\n    S(b,e);\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n  }\n  for (i = 0; i < 16; i++) {\n    x[i+16]=a[i];\n    x[i+32]=c[i];\n    x[i+48]=b[i];\n    x[i+64]=d[i];\n  }\n  var x32 = x.subarray(32);\n  var x16 = x.subarray(16);\n  inv25519(x32,x32);\n  M(x16,x16,x32);\n  pack25519(q,x16);\n  return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n  return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n  randombytes(x, 32);\n  return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n  var s = new Uint8Array(32);\n  crypto_scalarmult(s, x, y);\n  return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n  var wh = new Int32Array(16), wl = new Int32Array(16),\n      bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n      bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n      th, tl, i, j, h, l, a, b, c, d;\n\n  var ah0 = hh[0],\n      ah1 = hh[1],\n      ah2 = hh[2],\n      ah3 = hh[3],\n      ah4 = hh[4],\n      ah5 = hh[5],\n      ah6 = hh[6],\n      ah7 = hh[7],\n\n      al0 = hl[0],\n      al1 = hl[1],\n      al2 = hl[2],\n      al3 = hl[3],\n      al4 = hl[4],\n      al5 = hl[5],\n      al6 = hl[6],\n      al7 = hl[7];\n\n  var pos = 0;\n  while (n >= 128) {\n    for (i = 0; i < 16; i++) {\n      j = 8 * i + pos;\n      wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n      wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n    }\n    for (i = 0; i < 80; i++) {\n      bh0 = ah0;\n      bh1 = ah1;\n      bh2 = ah2;\n      bh3 = ah3;\n      bh4 = ah4;\n      bh5 = ah5;\n      bh6 = ah6;\n      bh7 = ah7;\n\n      bl0 = al0;\n      bl1 = al1;\n      bl2 = al2;\n      bl3 = al3;\n      bl4 = al4;\n      bl5 = al5;\n      bl6 = al6;\n      bl7 = al7;\n\n      // add\n      h = ah7;\n      l = al7;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma1\n      h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n      l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Ch\n      h = (ah4 & ah5) ^ (~ah4 & ah6);\n      l = (al4 & al5) ^ (~al4 & al6);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // K\n      h = K[i*2];\n      l = K[i*2+1];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // w\n      h = wh[i%16];\n      l = wl[i%16];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      th = c & 0xffff | d << 16;\n      tl = a & 0xffff | b << 16;\n\n      // add\n      h = th;\n      l = tl;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma0\n      h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n      l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Maj\n      h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n      l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh7 = (c & 0xffff) | (d << 16);\n      bl7 = (a & 0xffff) | (b << 16);\n\n      // add\n      h = bh3;\n      l = bl3;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      h = th;\n      l = tl;\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh3 = (c & 0xffff) | (d << 16);\n      bl3 = (a & 0xffff) | (b << 16);\n\n      ah1 = bh0;\n      ah2 = bh1;\n      ah3 = bh2;\n      ah4 = bh3;\n      ah5 = bh4;\n      ah6 = bh5;\n      ah7 = bh6;\n      ah0 = bh7;\n\n      al1 = bl0;\n      al2 = bl1;\n      al3 = bl2;\n      al4 = bl3;\n      al5 = bl4;\n      al6 = bl5;\n      al7 = bl6;\n      al0 = bl7;\n\n      if (i%16 === 15) {\n        for (j = 0; j < 16; j++) {\n          // add\n          h = wh[j];\n          l = wl[j];\n\n          a = l & 0xffff; b = l >>> 16;\n          c = h & 0xffff; d = h >>> 16;\n\n          h = wh[(j+9)%16];\n          l = wl[(j+9)%16];\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma0\n          th = wh[(j+1)%16];\n          tl = wl[(j+1)%16];\n          h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n          l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma1\n          th = wh[(j+14)%16];\n          tl = wl[(j+14)%16];\n          h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n          l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          b += a >>> 16;\n          c += b >>> 16;\n          d += c >>> 16;\n\n          wh[j] = (c & 0xffff) | (d << 16);\n          wl[j] = (a & 0xffff) | (b << 16);\n        }\n      }\n    }\n\n    // add\n    h = ah0;\n    l = al0;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[0];\n    l = hl[0];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[0] = ah0 = (c & 0xffff) | (d << 16);\n    hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n    h = ah1;\n    l = al1;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[1];\n    l = hl[1];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[1] = ah1 = (c & 0xffff) | (d << 16);\n    hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n    h = ah2;\n    l = al2;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[2];\n    l = hl[2];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[2] = ah2 = (c & 0xffff) | (d << 16);\n    hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n    h = ah3;\n    l = al3;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[3];\n    l = hl[3];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[3] = ah3 = (c & 0xffff) | (d << 16);\n    hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n    h = ah4;\n    l = al4;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[4];\n    l = hl[4];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[4] = ah4 = (c & 0xffff) | (d << 16);\n    hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n    h = ah5;\n    l = al5;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[5];\n    l = hl[5];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[5] = ah5 = (c & 0xffff) | (d << 16);\n    hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n    h = ah6;\n    l = al6;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[6];\n    l = hl[6];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[6] = ah6 = (c & 0xffff) | (d << 16);\n    hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n    h = ah7;\n    l = al7;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[7];\n    l = hl[7];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[7] = ah7 = (c & 0xffff) | (d << 16);\n    hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n    pos += 128;\n    n -= 128;\n  }\n\n  return n;\n}\n\nfunction crypto_hash(out, m, n) {\n  var hh = new Int32Array(8),\n      hl = new Int32Array(8),\n      x = new Uint8Array(256),\n      i, b = n;\n\n  hh[0] = 0x6a09e667;\n  hh[1] = 0xbb67ae85;\n  hh[2] = 0x3c6ef372;\n  hh[3] = 0xa54ff53a;\n  hh[4] = 0x510e527f;\n  hh[5] = 0x9b05688c;\n  hh[6] = 0x1f83d9ab;\n  hh[7] = 0x5be0cd19;\n\n  hl[0] = 0xf3bcc908;\n  hl[1] = 0x84caa73b;\n  hl[2] = 0xfe94f82b;\n  hl[3] = 0x5f1d36f1;\n  hl[4] = 0xade682d1;\n  hl[5] = 0x2b3e6c1f;\n  hl[6] = 0xfb41bd6b;\n  hl[7] = 0x137e2179;\n\n  crypto_hashblocks_hl(hh, hl, m, n);\n  n %= 128;\n\n  for (i = 0; i < n; i++) x[i] = m[b-n+i];\n  x[n] = 128;\n\n  n = 256-128*(n<112?1:0);\n  x[n-9] = 0;\n  ts64(x, n-8,  (b / 0x20000000) | 0, b << 3);\n  crypto_hashblocks_hl(hh, hl, x, n);\n\n  for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n  return 0;\n}\n\nfunction add(p, q) {\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf(),\n      g = gf(), h = gf(), t = gf();\n\n  Z(a, p[1], p[0]);\n  Z(t, q[1], q[0]);\n  M(a, a, t);\n  A(b, p[0], p[1]);\n  A(t, q[0], q[1]);\n  M(b, b, t);\n  M(c, p[3], q[3]);\n  M(c, c, D2);\n  M(d, p[2], q[2]);\n  A(d, d, d);\n  Z(e, b, a);\n  Z(f, d, c);\n  A(g, d, c);\n  A(h, b, a);\n\n  M(p[0], e, f);\n  M(p[1], h, g);\n  M(p[2], g, f);\n  M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n  var i;\n  for (i = 0; i < 4; i++) {\n    sel25519(p[i], q[i], b);\n  }\n}\n\nfunction pack(r, p) {\n  var tx = gf(), ty = gf(), zi = gf();\n  inv25519(zi, p[2]);\n  M(tx, p[0], zi);\n  M(ty, p[1], zi);\n  pack25519(r, ty);\n  r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n  var b, i;\n  set25519(p[0], gf0);\n  set25519(p[1], gf1);\n  set25519(p[2], gf1);\n  set25519(p[3], gf0);\n  for (i = 255; i >= 0; --i) {\n    b = (s[(i/8)|0] >> (i&7)) & 1;\n    cswap(p, q, b);\n    add(q, p);\n    add(p, p);\n    cswap(p, q, b);\n  }\n}\n\nfunction scalarbase(p, s) {\n  var q = [gf(), gf(), gf(), gf()];\n  set25519(q[0], X);\n  set25519(q[1], Y);\n  set25519(q[2], gf1);\n  M(q[3], X, Y);\n  scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n  var d = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n  var i;\n\n  if (!seeded) randombytes(sk, 32);\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  scalarbase(p, d);\n  pack(pk, p);\n\n  for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n  return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n  var carry, i, j, k;\n  for (i = 63; i >= 32; --i) {\n    carry = 0;\n    for (j = i - 32, k = i - 12; j < k; ++j) {\n      x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n      carry = Math.floor((x[j] + 128) / 256);\n      x[j] -= carry * 256;\n    }\n    x[j] += carry;\n    x[i] = 0;\n  }\n  carry = 0;\n  for (j = 0; j < 32; j++) {\n    x[j] += carry - (x[31] >> 4) * L[j];\n    carry = x[j] >> 8;\n    x[j] &= 255;\n  }\n  for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n  for (i = 0; i < 32; i++) {\n    x[i+1] += x[i] >> 8;\n    r[i] = x[i] & 255;\n  }\n}\n\nfunction reduce(r) {\n  var x = new Float64Array(64), i;\n  for (i = 0; i < 64; i++) x[i] = r[i];\n  for (i = 0; i < 64; i++) r[i] = 0;\n  modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n  var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n  var i, j, x = new Float64Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  var smlen = n + 64;\n  for (i = 0; i < n; i++) sm[64 + i] = m[i];\n  for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n  crypto_hash(r, sm.subarray(32), n+32);\n  reduce(r);\n  scalarbase(p, r);\n  pack(sm, p);\n\n  for (i = 32; i < 64; i++) sm[i] = sk[i];\n  crypto_hash(h, sm, n + 64);\n  reduce(h);\n\n  for (i = 0; i < 64; i++) x[i] = 0;\n  for (i = 0; i < 32; i++) x[i] = r[i];\n  for (i = 0; i < 32; i++) {\n    for (j = 0; j < 32; j++) {\n      x[i+j] += h[i] * d[j];\n    }\n  }\n\n  modL(sm.subarray(32), x);\n  return smlen;\n}\n\nfunction unpackneg(r, p) {\n  var t = gf(), chk = gf(), num = gf(),\n      den = gf(), den2 = gf(), den4 = gf(),\n      den6 = gf();\n\n  set25519(r[2], gf1);\n  unpack25519(r[1], p);\n  S(num, r[1]);\n  M(den, num, D);\n  Z(num, num, r[2]);\n  A(den, r[2], den);\n\n  S(den2, den);\n  S(den4, den2);\n  M(den6, den4, den2);\n  M(t, den6, num);\n  M(t, t, den);\n\n  pow2523(t, t);\n  M(t, t, num);\n  M(t, t, den);\n  M(t, t, den);\n  M(r[0], t, den);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) M(r[0], r[0], I);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) return -1;\n\n  if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n  M(r[3], r[0], r[1]);\n  return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n  var i;\n  var t = new Uint8Array(32), h = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()],\n      q = [gf(), gf(), gf(), gf()];\n\n  if (n < 64) return -1;\n\n  if (unpackneg(q, pk)) return -1;\n\n  for (i = 0; i < n; i++) m[i] = sm[i];\n  for (i = 0; i < 32; i++) m[i+32] = pk[i];\n  crypto_hash(h, m, n);\n  reduce(h);\n  scalarmult(p, q, h);\n\n  scalarbase(q, sm.subarray(32));\n  add(p, q);\n  pack(t, p);\n\n  n -= 64;\n  if (crypto_verify_32(sm, 0, t, 0)) {\n    for (i = 0; i < n; i++) m[i] = 0;\n    return -1;\n  }\n\n  for (i = 0; i < n; i++) m[i] = sm[i + 64];\n  return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n    crypto_secretbox_NONCEBYTES = 24,\n    crypto_secretbox_ZEROBYTES = 32,\n    crypto_secretbox_BOXZEROBYTES = 16,\n    crypto_scalarmult_BYTES = 32,\n    crypto_scalarmult_SCALARBYTES = 32,\n    crypto_box_PUBLICKEYBYTES = 32,\n    crypto_box_SECRETKEYBYTES = 32,\n    crypto_box_BEFORENMBYTES = 32,\n    crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n    crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n    crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n    crypto_sign_BYTES = 64,\n    crypto_sign_PUBLICKEYBYTES = 32,\n    crypto_sign_SECRETKEYBYTES = 64,\n    crypto_sign_SEEDBYTES = 32,\n    crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n  crypto_core_hsalsa20: crypto_core_hsalsa20,\n  crypto_stream_xor: crypto_stream_xor,\n  crypto_stream: crypto_stream,\n  crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n  crypto_stream_salsa20: crypto_stream_salsa20,\n  crypto_onetimeauth: crypto_onetimeauth,\n  crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n  crypto_verify_16: crypto_verify_16,\n  crypto_verify_32: crypto_verify_32,\n  crypto_secretbox: crypto_secretbox,\n  crypto_secretbox_open: crypto_secretbox_open,\n  crypto_scalarmult: crypto_scalarmult,\n  crypto_scalarmult_base: crypto_scalarmult_base,\n  crypto_box_beforenm: crypto_box_beforenm,\n  crypto_box_afternm: crypto_box_afternm,\n  crypto_box: crypto_box,\n  crypto_box_open: crypto_box_open,\n  crypto_box_keypair: crypto_box_keypair,\n  crypto_hash: crypto_hash,\n  crypto_sign: crypto_sign,\n  crypto_sign_keypair: crypto_sign_keypair,\n  crypto_sign_open: crypto_sign_open,\n\n  crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n  crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n  crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n  crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n  crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n  crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n  crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n  crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n  crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n  crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n  crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n  crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n  crypto_sign_BYTES: crypto_sign_BYTES,\n  crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n  crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n  crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n  crypto_hash_BYTES: crypto_hash_BYTES,\n\n  gf: gf,\n  D: D,\n  L: L,\n  pack25519: pack25519,\n  unpack25519: unpack25519,\n  M: M,\n  A: A,\n  S: S,\n  Z: Z,\n  pow2523: pow2523,\n  add: add,\n  set25519: set25519,\n  modL: modL,\n  scalarmult: scalarmult,\n  scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n  if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n  if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n  if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n  if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n  for (var i = 0; i < arguments.length; i++) {\n    if (!(arguments[i] instanceof Uint8Array))\n      throw new TypeError('unexpected type, use Uint8Array');\n  }\n}\n\nfunction cleanup(arr) {\n  for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n  var b = new Uint8Array(n);\n  randombytes(b, n);\n  return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n  checkArrayTypes(msg, nonce, key);\n  checkLengths(key, nonce);\n  var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n  var c = new Uint8Array(m.length);\n  for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n  crypto_secretbox(c, m, m.length, nonce, key);\n  return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n  checkArrayTypes(box, nonce, key);\n  checkLengths(key, nonce);\n  var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n  var m = new Uint8Array(c.length);\n  for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n  if (c.length < 32) return null;\n  if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n  return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n  checkArrayTypes(n, p);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult(q, n, p);\n  return q;\n};\n\nnacl.scalarMult.base = function(n) {\n  checkArrayTypes(n);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult_base(q, n);\n  return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n  checkArrayTypes(publicKey, secretKey);\n  checkBoxLengths(publicKey, secretKey);\n  var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n  crypto_box_beforenm(k, publicKey, secretKey);\n  return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n  crypto_box_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  crypto_scalarmult_base(pk, secretKey);\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n  checkArrayTypes(msg, secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n  crypto_sign(signedMsg, msg, msg.length, secretKey);\n  return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n  checkArrayTypes(signedMsg, publicKey);\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var tmp = new Uint8Array(signedMsg.length);\n  var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n  if (mlen < 0) return null;\n  var m = new Uint8Array(mlen);\n  for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n  return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n  var signedMsg = nacl.sign(msg, secretKey);\n  var sig = new Uint8Array(crypto_sign_BYTES);\n  for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n  return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n  checkArrayTypes(msg, sig, publicKey);\n  if (sig.length !== crypto_sign_BYTES)\n    throw new Error('bad signature size');\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var i;\n  for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n  for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n  return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  crypto_sign_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n  checkArrayTypes(seed);\n  if (seed.length !== crypto_sign_SEEDBYTES)\n    throw new Error('bad seed size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  for (var i = 0; i < 32; i++) sk[i] = seed[i];\n  crypto_sign_keypair(pk, sk, true);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n  checkArrayTypes(msg);\n  var h = new Uint8Array(crypto_hash_BYTES);\n  crypto_hash(h, msg, msg.length);\n  return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n  checkArrayTypes(x, y);\n  // Zero length arguments are considered not equal.\n  if (x.length === 0 || y.length === 0) return false;\n  if (x.length !== y.length) return false;\n  return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n  randombytes = fn;\n};\n\n(function() {\n  // Initialize PRNG if environment provides CSPRNG.\n  // If not, methods calling randombytes will throw.\n  var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n  if (crypto && crypto.getRandomValues) {\n    // Browsers.\n    var QUOTA = 65536;\n    nacl.setPRNG(function(x, n) {\n      var i, v = new Uint8Array(n);\n      for (i = 0; i < n; i += QUOTA) {\n        crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n      }\n      for (i = 0; i < n; i++) x[i] = v[i];\n      cleanup(v);\n    });\n  } else if (typeof require !== 'undefined') {\n    // Node.js.\n    crypto = require('crypto');\n    if (crypto && crypto.randomBytes) {\n      nacl.setPRNG(function(x, n) {\n        var i, v = crypto.randomBytes(n);\n        for (i = 0; i < n; i++) x[i] = v[i];\n        cleanup(v);\n      });\n    }\n  }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","// Network Types\r\nexport enum UserRole {\r\n  USER = \"user\",\r\n  ADMIN = \"admin\",\r\n}\r\n","import { Schema, model, models, Document, Model } from \"mongoose\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\nimport { UserRole } from \"based-shared/types\";\r\n\r\nexport interface IUserMetaInfo {\r\n  website: string;\r\n  twitter: string;\r\n  telegram: string;\r\n  discord: string;\r\n}\r\n\r\nexport interface IUser {\r\n  name: string;\r\n  network: NetworkSymbols;\r\n  address: string;\r\n  social: string;\r\n  provider: string;\r\n  chainId: number;\r\n  image: string;\r\n  role: UserRole;\r\n}\r\n\r\nexport interface IUserProfile extends Document {\r\n  _id: string;\r\n  name: string;\r\n  network: NetworkSymbols;\r\n  bio: string;\r\n  address: string;\r\n  social: string;\r\n  image: string;\r\n  banner: string;\r\n  metaInfo: IUserMetaInfo;\r\n  role: UserRole;\r\n  lastNetwork: string;\r\n  lastSignedIn: Date;\r\n  lastAddress: string;\r\n  followers: string[];\r\n  createdAt: Date;\r\n  updatedAt: Date;\r\n  users: IUser[];\r\n}\r\n\r\nconst userProfileSchema = new Schema(\r\n  {\r\n    bio: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    banner: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    userid: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    image: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    metaInfo: {\r\n      website: {\r\n        type: String,\r\n        default: \"\",\r\n      },\r\n      twitter: {\r\n        type: String,\r\n        default: \"\",\r\n      },\r\n      telegram: {\r\n        type: String,\r\n        default: \"\",\r\n      },\r\n      discord: {\r\n        type: String,\r\n        default: \"\",\r\n      },\r\n    },\r\n    lastNetwork: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    lastSignedIn: {\r\n      type: Date,\r\n      default: Date.now,\r\n    },\r\n    lastAddress: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    followers: [\r\n      {\r\n        type: Schema.Types.ObjectId,\r\n        ref: \"UserProfile\",\r\n      },\r\n    ],\r\n    users: [\r\n      {\r\n        name: {\r\n          type: String,\r\n          default: \"\",\r\n          required: true,\r\n        },\r\n        chainId: {\r\n          type: Number,\r\n          required: true,\r\n        },\r\n        network: {\r\n          type: String,\r\n          enum: Object.values(NetworkSymbols),\r\n          required: true,\r\n        },\r\n        address: {\r\n          type: String,\r\n          required: true,\r\n        },\r\n        social: {\r\n          type: String,\r\n          default: \"\",\r\n        },\r\n        provider: {\r\n          type: String,\r\n          default: \"\",\r\n        },\r\n        image: {\r\n          type: String,\r\n          default: \"\",\r\n          required: true,\r\n        },\r\n        role: {\r\n          type: String,\r\n          default: UserRole.USER,\r\n          enum: Object.values(UserRole),\r\n        },\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    timestamps: true,\r\n    toObject: {\r\n      getters: true,\r\n      versionKey: false,\r\n      transform: (doc, ret) => {\r\n        ret.id = ret._id.toString();\r\n        delete ret._id;\r\n\r\n        return ret;\r\n      },\r\n    },\r\n  }\r\n);\r\n\r\nuserProfileSchema.index(\r\n  { \"users.network\": 1, \"users.address\": 1 },\r\n  { unique: true }\r\n);\r\n\r\nexport const UserProfileModel: Model<IUserProfile> =\r\n  models?.UserProfile || model<IUserProfile>(\"UserProfile\", userProfileSchema);\r\n","import mongoose from \"mongoose\";\r\n\r\nconst cached: {\r\n  connection: typeof mongoose | null;\r\n  promise: Promise<typeof mongoose> | null;\r\n} = {\r\n  connection: null,\r\n  promise: null,\r\n};\r\n\r\nexport interface DatabaseConfig {\r\n  uri: string;\r\n  options?: mongoose.ConnectOptions;\r\n}\r\n\r\nexport const connectToDatabase = async (\r\n  config: DatabaseConfig = {\r\n    uri: process.env.MONGO_URI || \"\",\r\n    options: {},\r\n  }\r\n): Promise<void> => {\r\n  try {\r\n    if (!config.uri) {\r\n      throw new Error(\"MONGO_URI environment variable is not set\");\r\n    }\r\n    if (cached.connection) {\r\n      return;\r\n    }\r\n    if (!cached.promise) {\r\n      const opts = {};\r\n      cached.promise = mongoose.connect(config.uri, opts);\r\n    }\r\n    try {\r\n      cached.connection = await cached.promise;\r\n      console.log(\"Connected to MongoDB successfully\");\r\n    } catch (e) {\r\n      cached.promise = null;\r\n      throw e;\r\n    }\r\n  } catch (error) {\r\n    console.error(\"MongoDB connection error:\", error);\r\n    throw error;\r\n  }\r\n};\r\n\r\nexport const disconnectFromDatabase = async (): Promise<void> => {\r\n  try {\r\n    await mongoose.disconnect();\r\n    cached.connection = null;\r\n    cached.promise = null;\r\n    console.log(\"Disconnected from MongoDB\");\r\n  } catch (error) {\r\n    console.error(\"Error disconnecting from MongoDB:\", error);\r\n    throw error;\r\n  }\r\n};\r\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n    seed = (seed * 9301 + 49297) % 233280;\n    return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n    seed = _seed_;\n}\n\nmodule.exports = {\n    nextValue: getNextValue,\n    seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n    shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n    if (!_alphabet_) {\n        if (alphabet !== ORIGINAL) {\n            alphabet = ORIGINAL;\n            reset();\n        }\n        return;\n    }\n\n    if (_alphabet_ === alphabet) {\n        return;\n    }\n\n    if (_alphabet_.length !== ORIGINAL.length) {\n        throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n    }\n\n    var unique = _alphabet_.split('').filter(function(item, ind, arr){\n       return ind !== arr.lastIndexOf(item);\n    });\n\n    if (unique.length) {\n        throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n    }\n\n    alphabet = _alphabet_;\n    reset();\n}\n\nfunction characters(_alphabet_) {\n    setCharacters(_alphabet_);\n    return alphabet;\n}\n\nfunction setSeed(seed) {\n    randomFromSeed.seed(seed);\n    if (previousSeed !== seed) {\n        reset();\n        previousSeed = seed;\n    }\n}\n\nfunction shuffle() {\n    if (!alphabet) {\n        setCharacters(ORIGINAL);\n    }\n\n    var sourceArray = alphabet.split('');\n    var targetArray = [];\n    var r = randomFromSeed.nextValue();\n    var characterIndex;\n\n    while (sourceArray.length > 0) {\n        r = randomFromSeed.nextValue();\n        characterIndex = Math.floor(r * sourceArray.length);\n        targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n    }\n    return targetArray.join('');\n}\n\nfunction getShuffled() {\n    if (shuffled) {\n        return shuffled;\n    }\n    shuffled = shuffle();\n    return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n    var alphabetShuffled = getShuffled();\n    return alphabetShuffled[index];\n}\n\nfunction get () {\n  return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n    get: get,\n    characters: characters,\n    seed: setSeed,\n    lookup: lookup,\n    shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n    randomByte = function(size) {\n        var bytes = [];\n        for (var i = 0; i < size; i++) {\n            bytes.push(Math.floor(Math.random() * 256));\n        }\n        return bytes;\n    };\n} else {\n    randomByte = function(size) {\n        return crypto.getRandomValues(new Uint8Array(size));\n    };\n}\n\nmodule.exports = randomByte;\n","let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport { urlAlphabet }\n","import { urlAlphabet } from './url-alphabet/index.js'\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n  let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      let j = step | 0\n      while (j--) {\n        id += alphabet[bytes[j] & mask] || ''\n        if (id.length === size) return id\n      }\n    }\n  }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n    byte &= 63\n    if (byte < 36) {\n      id += byte.toString(36)\n    } else if (byte < 62) {\n      id += (byte - 26).toString(36).toUpperCase()\n    } else if (byte > 62) {\n      id += '-'\n    } else {\n      id += '_'\n    }\n    return id\n  }, '')\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar customRandom = require('nanoid').customRandom;\n\nfunction generate(number) {\n    var loopCounter = 0;\n    var done;\n\n    var str = '';\n\n    while (!done) {\n        str = str + customRandom(alphabet.get(), 1, random)();\n        done = number < (Math.pow(16, loopCounter + 1 ) );\n        loopCounter++;\n    }\n    return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n    var str = '';\n\n    var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n    if (seconds === previousSeconds) {\n        counter++;\n    } else {\n        counter = 0;\n        previousSeconds = seconds;\n    }\n\n    str = str + generate(version);\n    str = str + generate(clusterWorkerId);\n    if (counter > 0) {\n        str = str + generate(counter);\n    }\n    str = str + generate(seconds);\n    return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n    if (!id || typeof id !== 'string' || id.length < 6 ) {\n        return false;\n    }\n\n    var nonAlphabetic = new RegExp('[^' +\n      alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n    ']');\n    return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nmodule.exports = 0;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet.  ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n    alphabet.seed(seedValue);\n    return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer.  Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n    clusterWorkerId = workerId;\n    return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n    if (newCharacters !== undefined) {\n        alphabet.characters(newCharacters);\n    }\n\n    return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n  return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.Hash = exports.nextTick = exports.swap32IfBE = exports.byteSwapIfBE = exports.swap8IfBE = exports.isLE = void 0;\nexports.isBytes = isBytes;\nexports.anumber = anumber;\nexports.abytes = abytes;\nexports.ahash = ahash;\nexports.aexists = aexists;\nexports.aoutput = aoutput;\nexports.u8 = u8;\nexports.u32 = u32;\nexports.clean = clean;\nexports.createView = createView;\nexports.rotr = rotr;\nexports.rotl = rotl;\nexports.byteSwap = byteSwap;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.bytesToUtf8 = bytesToUtf8;\nexports.toBytes = toBytes;\nexports.kdfInputToBytes = kdfInputToBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.createHasher = createHasher;\nexports.createOptHasher = createOptHasher;\nexports.createXOFer = createXOFer;\nexports.randomBytes = randomBytes;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nfunction isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nfunction anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nfunction ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nfunction aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nfunction aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nfunction u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nfunction u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nfunction clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nfunction createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nfunction rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nfunction rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexports.isLE = (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nfunction byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexports.swap8IfBE = exports.isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexports.byteSwapIfBE = exports.swap8IfBE;\n/** In place byte swap for Uint32Array */\nfunction byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexports.swap32IfBE = exports.isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nasync function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await (0, exports.nextTick)();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nfunction bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nfunction kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nfunction concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nfunction checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nclass Hash {\n}\nexports.Hash = Hash;\n/** Wraps hash function, creating an interface on top of it */\nfunction createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nfunction createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nfunction createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexports.wrapConstructor = createHasher;\nexports.wrapConstructorWithOpts = createOptHasher;\nexports.wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nfunction randomBytes(bytesLength = 32) {\n    if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n        return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto_1.crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SHA512_IV = exports.SHA384_IV = exports.SHA224_IV = exports.SHA256_IV = exports.HashMD = void 0;\nexports.setBigUint64 = setBigUint64;\nexports.Chi = Chi;\nexports.Maj = Maj;\n/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nconst utils_ts_1 = require(\"./utils.js\");\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nfunction setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nfunction Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nfunction Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nclass HashMD extends utils_ts_1.Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = (0, utils_ts_1.createView)(this.buffer);\n    }\n    update(data) {\n        (0, utils_ts_1.aexists)(this);\n        data = (0, utils_ts_1.toBytes)(data);\n        (0, utils_ts_1.abytes)(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = (0, utils_ts_1.createView)(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        (0, utils_ts_1.aexists)(this);\n        (0, utils_ts_1.aoutput)(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        (0, utils_ts_1.clean)(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = (0, utils_ts_1.createView)(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\nexports.HashMD = HashMD;\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexports.SHA256_IV = Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexports.SHA224_IV = Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexports.SHA384_IV = Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexports.SHA512_IV = Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBig = exports.shrSL = exports.shrSH = exports.rotrSL = exports.rotrSH = exports.rotrBL = exports.rotrBH = exports.rotr32L = exports.rotr32H = exports.rotlSL = exports.rotlSH = exports.rotlBL = exports.rotlBH = exports.add5L = exports.add5H = exports.add4L = exports.add4H = exports.add3L = exports.add3H = void 0;\nexports.add = add;\nexports.fromBig = fromBig;\nexports.split = split;\n/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha512_224 = exports.sha512_256 = exports.sha384 = exports.sha512 = exports.sha224 = exports.sha256 = exports.SHA512_256 = exports.SHA512_224 = exports.SHA384 = exports.SHA512 = exports.SHA224 = exports.SHA256 = void 0;\n/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nconst _md_ts_1 = require(\"./_md.js\");\nconst u64 = require(\"./_u64.js\");\nconst utils_ts_1 = require(\"./utils.js\");\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends _md_ts_1.HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = _md_ts_1.SHA256_IV[0] | 0;\n        this.B = _md_ts_1.SHA256_IV[1] | 0;\n        this.C = _md_ts_1.SHA256_IV[2] | 0;\n        this.D = _md_ts_1.SHA256_IV[3] | 0;\n        this.E = _md_ts_1.SHA256_IV[4] | 0;\n        this.F = _md_ts_1.SHA256_IV[5] | 0;\n        this.G = _md_ts_1.SHA256_IV[6] | 0;\n        this.H = _md_ts_1.SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = (0, utils_ts_1.rotr)(W15, 7) ^ (0, utils_ts_1.rotr)(W15, 18) ^ (W15 >>> 3);\n            const s1 = (0, utils_ts_1.rotr)(W2, 17) ^ (0, utils_ts_1.rotr)(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = (0, utils_ts_1.rotr)(E, 6) ^ (0, utils_ts_1.rotr)(E, 11) ^ (0, utils_ts_1.rotr)(E, 25);\n            const T1 = (H + sigma1 + (0, _md_ts_1.Chi)(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = (0, utils_ts_1.rotr)(A, 2) ^ (0, utils_ts_1.rotr)(A, 13) ^ (0, utils_ts_1.rotr)(A, 22);\n            const T2 = (sigma0 + (0, _md_ts_1.Maj)(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        (0, utils_ts_1.clean)(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        (0, utils_ts_1.clean)(this.buffer);\n    }\n}\nexports.SHA256 = SHA256;\nclass SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = _md_ts_1.SHA224_IV[0] | 0;\n        this.B = _md_ts_1.SHA224_IV[1] | 0;\n        this.C = _md_ts_1.SHA224_IV[2] | 0;\n        this.D = _md_ts_1.SHA224_IV[3] | 0;\n        this.E = _md_ts_1.SHA224_IV[4] | 0;\n        this.F = _md_ts_1.SHA224_IV[5] | 0;\n        this.G = _md_ts_1.SHA224_IV[6] | 0;\n        this.H = _md_ts_1.SHA224_IV[7] | 0;\n    }\n}\nexports.SHA224 = SHA224;\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nclass SHA512 extends _md_ts_1.HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = _md_ts_1.SHA512_IV[0] | 0;\n        this.Al = _md_ts_1.SHA512_IV[1] | 0;\n        this.Bh = _md_ts_1.SHA512_IV[2] | 0;\n        this.Bl = _md_ts_1.SHA512_IV[3] | 0;\n        this.Ch = _md_ts_1.SHA512_IV[4] | 0;\n        this.Cl = _md_ts_1.SHA512_IV[5] | 0;\n        this.Dh = _md_ts_1.SHA512_IV[6] | 0;\n        this.Dl = _md_ts_1.SHA512_IV[7] | 0;\n        this.Eh = _md_ts_1.SHA512_IV[8] | 0;\n        this.El = _md_ts_1.SHA512_IV[9] | 0;\n        this.Fh = _md_ts_1.SHA512_IV[10] | 0;\n        this.Fl = _md_ts_1.SHA512_IV[11] | 0;\n        this.Gh = _md_ts_1.SHA512_IV[12] | 0;\n        this.Gl = _md_ts_1.SHA512_IV[13] | 0;\n        this.Hh = _md_ts_1.SHA512_IV[14] | 0;\n        this.Hl = _md_ts_1.SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        (0, utils_ts_1.clean)(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        (0, utils_ts_1.clean)(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexports.SHA512 = SHA512;\nclass SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = _md_ts_1.SHA384_IV[0] | 0;\n        this.Al = _md_ts_1.SHA384_IV[1] | 0;\n        this.Bh = _md_ts_1.SHA384_IV[2] | 0;\n        this.Bl = _md_ts_1.SHA384_IV[3] | 0;\n        this.Ch = _md_ts_1.SHA384_IV[4] | 0;\n        this.Cl = _md_ts_1.SHA384_IV[5] | 0;\n        this.Dh = _md_ts_1.SHA384_IV[6] | 0;\n        this.Dl = _md_ts_1.SHA384_IV[7] | 0;\n        this.Eh = _md_ts_1.SHA384_IV[8] | 0;\n        this.El = _md_ts_1.SHA384_IV[9] | 0;\n        this.Fh = _md_ts_1.SHA384_IV[10] | 0;\n        this.Fl = _md_ts_1.SHA384_IV[11] | 0;\n        this.Gh = _md_ts_1.SHA384_IV[12] | 0;\n        this.Gl = _md_ts_1.SHA384_IV[13] | 0;\n        this.Hh = _md_ts_1.SHA384_IV[14] | 0;\n        this.Hl = _md_ts_1.SHA384_IV[15] | 0;\n    }\n}\nexports.SHA384 = SHA384;\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nclass SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexports.SHA512_224 = SHA512_224;\nclass SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\nexports.SHA512_256 = SHA512_256;\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexports.sha256 = (0, utils_ts_1.createHasher)(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexports.sha224 = (0, utils_ts_1.createHasher)(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexports.sha512 = (0, utils_ts_1.createHasher)(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexports.sha384 = (0, utils_ts_1.createHasher)(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexports.sha512_256 = (0, utils_ts_1.createHasher)(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexports.sha512_224 = (0, utils_ts_1.createHasher)(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha224 = exports.SHA224 = exports.sha256 = exports.SHA256 = void 0;\n/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n * @deprecated\n */\nconst sha2_ts_1 = require(\"./sha2.js\");\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA256 = sha2_ts_1.SHA256;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha256 = sha2_ts_1.sha256;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA224 = sha2_ts_1.SHA224;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha224 = sha2_ts_1.sha224;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha512_256 = exports.SHA512_256 = exports.sha512_224 = exports.SHA512_224 = exports.sha384 = exports.SHA384 = exports.sha512 = exports.SHA512 = void 0;\n/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n * @deprecated\n */\nconst sha2_ts_1 = require(\"./sha2.js\");\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA512 = sha2_ts_1.SHA512;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha512 = sha2_ts_1.sha512;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA384 = sha2_ts_1.SHA384;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha384 = sha2_ts_1.sha384;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA512_224 = sha2_ts_1.SHA512_224;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha512_224 = sha2_ts_1.sha512_224;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.SHA512_256 = sha2_ts_1.SHA512_256;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexports.sha512_256 = sha2_ts_1.sha512_256;\n//# sourceMappingURL=sha512.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hmac = exports.HMAC = void 0;\n/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nconst utils_ts_1 = require(\"./utils.js\");\nclass HMAC extends utils_ts_1.Hash {\n    constructor(hash, _key) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        (0, utils_ts_1.ahash)(hash);\n        const key = (0, utils_ts_1.toBytes)(_key);\n        this.iHash = hash.create();\n        if (typeof this.iHash.update !== 'function')\n            throw new Error('Expected instance of class which extends utils.Hash');\n        this.blockLen = this.iHash.blockLen;\n        this.outputLen = this.iHash.outputLen;\n        const blockLen = this.blockLen;\n        const pad = new Uint8Array(blockLen);\n        // blockLen can be bigger than outputLen\n        pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36;\n        this.iHash.update(pad);\n        // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n        this.oHash = hash.create();\n        // Undo internal XOR && apply outer XOR\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36 ^ 0x5c;\n        this.oHash.update(pad);\n        (0, utils_ts_1.clean)(pad);\n    }\n    update(buf) {\n        (0, utils_ts_1.aexists)(this);\n        this.iHash.update(buf);\n        return this;\n    }\n    digestInto(out) {\n        (0, utils_ts_1.aexists)(this);\n        (0, utils_ts_1.abytes)(out, this.outputLen);\n        this.finished = true;\n        this.iHash.digestInto(out);\n        this.oHash.update(out);\n        this.oHash.digestInto(out);\n        this.destroy();\n    }\n    digest() {\n        const out = new Uint8Array(this.oHash.outputLen);\n        this.digestInto(out);\n        return out;\n    }\n    _cloneInto(to) {\n        // Create new instance without calling constructor since key already in state and we don't know it.\n        to || (to = Object.create(Object.getPrototypeOf(this), {}));\n        const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n        to = to;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        to.blockLen = blockLen;\n        to.outputLen = outputLen;\n        to.oHash = oHash._cloneInto(to.oHash);\n        to.iHash = iHash._cloneInto(to.iHash);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n    destroy() {\n        this.destroyed = true;\n        this.oHash.destroy();\n        this.iHash.destroy();\n    }\n}\nexports.HMAC = HMAC;\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nconst hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nexports.hmac = hmac;\nexports.hmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pbkdf2 = pbkdf2;\nexports.pbkdf2Async = pbkdf2Async;\n/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nconst hmac_ts_1 = require(\"./hmac.js\");\n// prettier-ignore\nconst utils_ts_1 = require(\"./utils.js\");\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n    (0, utils_ts_1.ahash)(hash);\n    const opts = (0, utils_ts_1.checkOpts)({ dkLen: 32, asyncTick: 10 }, _opts);\n    const { c, dkLen, asyncTick } = opts;\n    (0, utils_ts_1.anumber)(c);\n    (0, utils_ts_1.anumber)(dkLen);\n    (0, utils_ts_1.anumber)(asyncTick);\n    if (c < 1)\n        throw new Error('iterations (c) should be >= 1');\n    const password = (0, utils_ts_1.kdfInputToBytes)(_password);\n    const salt = (0, utils_ts_1.kdfInputToBytes)(_salt);\n    // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n    const DK = new Uint8Array(dkLen);\n    // U1 = PRF(Password, Salt + INT_32_BE(i))\n    const PRF = hmac_ts_1.hmac.create(hash, password);\n    const PRFSalt = PRF._cloneInto().update(salt);\n    return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n    PRF.destroy();\n    PRFSalt.destroy();\n    if (prfW)\n        prfW.destroy();\n    (0, utils_ts_1.clean)(u);\n    return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * const key = pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: Math.pow(2, 18) });\n */\nfunction pbkdf2(hash, password, salt, opts) {\n    const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = (0, utils_ts_1.createView)(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        for (let ui = 1; ui < c; ui++) {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        }\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function. Async version.\n * @example\n * await pbkdf2Async(sha256, 'password', 'salt', { dkLen: 32, c: 500_000 });\n */\nasync function pbkdf2Async(hash, password, salt, opts) {\n    const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = (0, utils_ts_1.createView)(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        await (0, utils_ts_1.asyncLoop)(c - 1, asyncTick, () => {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        });\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n    exports._default = _default = require('./wordlists/czech.json');\n    wordlists.czech = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/chinese_simplified.json');\n    wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/chinese_traditional.json');\n    wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/korean.json');\n    wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/french.json');\n    wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/italian.json');\n    wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/spanish.json');\n    wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/japanese.json');\n    wordlists.japanese = _default;\n    wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/portuguese.json');\n    wordlists.portuguese = _default;\n}\ncatch (err) { }\ntry {\n    exports._default = _default = require('./wordlists/english.json');\n    wordlists.english = _default;\n    wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst sha512_1 = require(\"@noble/hashes/sha512\");\nconst pbkdf2_1 = require(\"@noble/hashes/pbkdf2\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n    'Please pass a 2048 word array explicitly.';\nfunction normalize(str) {\n    return (str || '').normalize('NFKD');\n}\nfunction lpad(str, padString, length) {\n    while (str.length < length) {\n        str = padString + str;\n    }\n    return str;\n}\nfunction binaryToByte(bin) {\n    return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n    return bytes.map((x) => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n    const ENT = entropyBuffer.length * 8;\n    const CS = ENT / 32;\n    const hash = sha256_1.sha256(Uint8Array.from(entropyBuffer));\n    return bytesToBinary(Array.from(hash)).slice(0, CS);\n}\nfunction salt(password) {\n    return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n    const mnemonicBuffer = Uint8Array.from(Buffer.from(normalize(mnemonic), 'utf8'));\n    const saltBuffer = Uint8Array.from(Buffer.from(salt(normalize(password)), 'utf8'));\n    const res = pbkdf2_1.pbkdf2(sha512_1.sha512, mnemonicBuffer, saltBuffer, {\n        c: 2048,\n        dkLen: 64,\n    });\n    return Buffer.from(res);\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n    const mnemonicBuffer = Uint8Array.from(Buffer.from(normalize(mnemonic), 'utf8'));\n    const saltBuffer = Uint8Array.from(Buffer.from(salt(normalize(password)), 'utf8'));\n    return pbkdf2_1.pbkdf2Async(sha512_1.sha512, mnemonicBuffer, saltBuffer, {\n        c: 2048,\n        dkLen: 64,\n    }).then((res) => Buffer.from(res));\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n    wordlist = wordlist || DEFAULT_WORDLIST;\n    if (!wordlist) {\n        throw new Error(WORDLIST_REQUIRED);\n    }\n    const words = normalize(mnemonic).split(' ');\n    if (words.length % 3 !== 0) {\n        throw new Error(INVALID_MNEMONIC);\n    }\n    // convert word indices to 11 bit binary strings\n    const bits = words\n        .map((word) => {\n        const index = wordlist.indexOf(word);\n        if (index === -1) {\n            throw new Error(INVALID_MNEMONIC);\n        }\n        return lpad(index.toString(2), '0', 11);\n    })\n        .join('');\n    // split the binary string into ENT/CS\n    const dividerIndex = Math.floor(bits.length / 33) * 32;\n    const entropyBits = bits.slice(0, dividerIndex);\n    const checksumBits = bits.slice(dividerIndex);\n    // calculate the checksum and compare\n    const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n    if (entropyBytes.length < 16) {\n        throw new Error(INVALID_ENTROPY);\n    }\n    if (entropyBytes.length > 32) {\n        throw new Error(INVALID_ENTROPY);\n    }\n    if (entropyBytes.length % 4 !== 0) {\n        throw new Error(INVALID_ENTROPY);\n    }\n    const entropy = Buffer.from(entropyBytes);\n    const newChecksum = deriveChecksumBits(entropy);\n    if (newChecksum !== checksumBits) {\n        throw new Error(INVALID_CHECKSUM);\n    }\n    return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n    if (!Buffer.isBuffer(entropy)) {\n        entropy = Buffer.from(entropy, 'hex');\n    }\n    wordlist = wordlist || DEFAULT_WORDLIST;\n    if (!wordlist) {\n        throw new Error(WORDLIST_REQUIRED);\n    }\n    // 128 <= ENT <= 256\n    if (entropy.length < 16) {\n        throw new TypeError(INVALID_ENTROPY);\n    }\n    if (entropy.length > 32) {\n        throw new TypeError(INVALID_ENTROPY);\n    }\n    if (entropy.length % 4 !== 0) {\n        throw new TypeError(INVALID_ENTROPY);\n    }\n    const entropyBits = bytesToBinary(Array.from(entropy));\n    const checksumBits = deriveChecksumBits(entropy);\n    const bits = entropyBits + checksumBits;\n    const chunks = bits.match(/(.{1,11})/g);\n    const words = chunks.map((binary) => {\n        const index = binaryToByte(binary);\n        return wordlist[index];\n    });\n    return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n        ? words.join('\\u3000')\n        : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n    strength = strength || 128;\n    if (strength % 32 !== 0) {\n        throw new TypeError(INVALID_ENTROPY);\n    }\n    rng = rng || ((size) => Buffer.from(utils_1.randomBytes(size)));\n    return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n    try {\n        mnemonicToEntropy(mnemonic, wordlist);\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n    const result = _wordlists_1.wordlists[language];\n    if (result) {\n        DEFAULT_WORDLIST = result;\n    }\n    else {\n        throw new Error('Could not find wordlist for language \"' + language + '\"');\n    }\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n    if (!DEFAULT_WORDLIST) {\n        throw new Error('No Default Wordlist set');\n    }\n    return Object.keys(_wordlists_1.wordlists).filter((lang) => {\n        if (lang === 'JA' || lang === 'EN') {\n            return false;\n        }\n        return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n    })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar StringDecoder = require('string_decoder').StringDecoder;\nvar inherits = require('inherits');\n\nfunction CipherBase(hashMode) {\n\tTransform.call(this);\n\tthis.hashMode = typeof hashMode === 'string';\n\tif (this.hashMode) {\n\t\tthis[hashMode] = this._finalOrDigest;\n\t} else {\n\t\tthis['final'] = this._finalOrDigest;\n\t}\n\tif (this._final) {\n\t\tthis.__final = this._final;\n\t\tthis._final = null;\n\t}\n\tthis._decoder = null;\n\tthis._encoding = null;\n}\ninherits(CipherBase, Transform);\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined'\n\t&& ArrayBuffer.isView\n\t&& (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nfunction toBuffer(data, encoding) {\n\t/*\n\t * No need to do anything for exact instance\n\t * This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n\t */\n\tif (data instanceof Buffer) {\n\t\treturn data;\n\t}\n\n\t// Convert strings to Buffer\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && ArrayBuffer.isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t/*\n\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t * We just go to Uint8Array case if this fails\n\t\t */\n\t\tif (res.byteLength === data.byteLength) {\n\t\t\treturn res;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');\n}\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n\tvar bufferData = toBuffer(data, inputEnc); // asserts correct input type\n\tvar outData = this._update(bufferData);\n\tif (this.hashMode) {\n\t\treturn this;\n\t}\n\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc);\n\t}\n\n\treturn outData;\n};\n\nCipherBase.prototype.setAutoPadding = function () {};\nCipherBase.prototype.getAuthTag = function () {\n\tthrow new Error('trying to get auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAuthTag = function () {\n\tthrow new Error('trying to set auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAAD = function () {\n\tthrow new Error('trying to set aad in unsupported state');\n};\n\nCipherBase.prototype._transform = function (data, _, next) {\n\tvar err;\n\ttry {\n\t\tif (this.hashMode) {\n\t\t\tthis._update(data);\n\t\t} else {\n\t\t\tthis.push(this._update(data));\n\t\t}\n\t} catch (e) {\n\t\terr = e;\n\t} finally {\n\t\tnext(err);\n\t}\n};\nCipherBase.prototype._flush = function (done) {\n\tvar err;\n\ttry {\n\t\tthis.push(this.__final());\n\t} catch (e) {\n\t\terr = e;\n\t}\n\n\tdone(err);\n};\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n\tvar outData = this.__final() || Buffer.alloc(0);\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc, true);\n\t}\n\treturn outData;\n};\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n\tif (!this._decoder) {\n\t\tthis._decoder = new StringDecoder(enc);\n\t\tthis._encoding = enc;\n\t}\n\n\tif (this._encoding !== enc) {\n\t\tthrow new Error('can’t switch encodings');\n\t}\n\n\tvar out = this._decoder.write(value);\n\tif (fin) {\n\t\tout += this._decoder.end();\n\t}\n\n\treturn out;\n};\n\nmodule.exports = CipherBase;\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","module.exports = require('events').EventEmitter;\n","export default {}","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n  this._block = Buffer.alloc(blockSize)\n  this._finalSize = finalSize\n  this._blockSize = blockSize\n  this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n  if (typeof data === 'string') {\n    enc = enc || 'utf8'\n    data = Buffer.from(data, enc)\n  }\n\n  var block = this._block\n  var blockSize = this._blockSize\n  var length = data.length\n  var accum = this._len\n\n  for (var offset = 0; offset < length;) {\n    var assigned = accum % blockSize\n    var remainder = Math.min(length - offset, blockSize - assigned)\n\n    for (var i = 0; i < remainder; i++) {\n      block[assigned + i] = data[offset + i]\n    }\n\n    accum += remainder\n    offset += remainder\n\n    if ((accum % blockSize) === 0) {\n      this._update(block)\n    }\n  }\n\n  this._len += length\n  return this\n}\n\nHash.prototype.digest = function (enc) {\n  var rem = this._len % this._blockSize\n\n  this._block[rem] = 0x80\n\n  // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n  // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n  this._block.fill(0, rem + 1)\n\n  if (rem >= this._finalSize) {\n    this._update(this._block)\n    this._block.fill(0)\n  }\n\n  var bits = this._len * 8\n\n  // uint32\n  if (bits <= 0xffffffff) {\n    this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n  // uint64\n  } else {\n    var lowBits = (bits & 0xffffffff) >>> 0\n    var highBits = (bits - lowBits) / 0x100000000\n\n    this._block.writeUInt32BE(highBits, this._blockSize - 8)\n    this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n  }\n\n  this._update(this._block)\n  var hash = this._hash()\n\n  return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n  throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl1 (num) {\n  return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n  this._a = 0x6a09e667\n  this._b = 0xbb67ae85\n  this._c = 0x3c6ef372\n  this._d = 0xa54ff53a\n  this._e = 0x510e527f\n  this._f = 0x9b05688c\n  this._g = 0x1f83d9ab\n  this._h = 0x5be0cd19\n\n  return this\n}\n\nfunction ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n  var f = this._f | 0\n  var g = this._g | 0\n  var h = this._h | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n  for (var j = 0; j < 64; ++j) {\n    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n    h = g\n    g = f\n    f = e\n    e = (d + T1) | 0\n    d = c\n    c = b\n    b = a\n    a = (T1 + T2) | 0\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n  this._f = (f + this._f) | 0\n  this._g = (g + this._g) | 0\n  this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(32)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n  H.writeInt32BE(this._h, 28)\n\n  return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n  this._a = 0xc1059ed8\n  this._b = 0x367cd507\n  this._c = 0x3070dd17\n  this._d = 0xf70e5939\n  this._e = 0xffc00b31\n  this._f = 0x68581511\n  this._g = 0x64f98fa7\n  this._h = 0xbefa4fa4\n\n  return this\n}\n\nSha224.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(28)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n\n  return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n  this._ah = 0x6a09e667\n  this._bh = 0xbb67ae85\n  this._ch = 0x3c6ef372\n  this._dh = 0xa54ff53a\n  this._eh = 0x510e527f\n  this._fh = 0x9b05688c\n  this._gh = 0x1f83d9ab\n  this._hh = 0x5be0cd19\n\n  this._al = 0xf3bcc908\n  this._bl = 0x84caa73b\n  this._cl = 0xfe94f82b\n  this._dl = 0x5f1d36f1\n  this._el = 0xade682d1\n  this._fl = 0x2b3e6c1f\n  this._gl = 0xfb41bd6b\n  this._hl = 0x137e2179\n\n  return this\n}\n\nfunction Ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n  return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n  var W = this._w\n\n  var ah = this._ah | 0\n  var bh = this._bh | 0\n  var ch = this._ch | 0\n  var dh = this._dh | 0\n  var eh = this._eh | 0\n  var fh = this._fh | 0\n  var gh = this._gh | 0\n  var hh = this._hh | 0\n\n  var al = this._al | 0\n  var bl = this._bl | 0\n  var cl = this._cl | 0\n  var dl = this._dl | 0\n  var el = this._el | 0\n  var fl = this._fl | 0\n  var gl = this._gl | 0\n  var hl = this._hl | 0\n\n  for (var i = 0; i < 32; i += 2) {\n    W[i] = M.readInt32BE(i * 4)\n    W[i + 1] = M.readInt32BE(i * 4 + 4)\n  }\n  for (; i < 160; i += 2) {\n    var xh = W[i - 15 * 2]\n    var xl = W[i - 15 * 2 + 1]\n    var gamma0 = Gamma0(xh, xl)\n    var gamma0l = Gamma0l(xl, xh)\n\n    xh = W[i - 2 * 2]\n    xl = W[i - 2 * 2 + 1]\n    var gamma1 = Gamma1(xh, xl)\n    var gamma1l = Gamma1l(xl, xh)\n\n    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n    var Wi7h = W[i - 7 * 2]\n    var Wi7l = W[i - 7 * 2 + 1]\n\n    var Wi16h = W[i - 16 * 2]\n    var Wi16l = W[i - 16 * 2 + 1]\n\n    var Wil = (gamma0l + Wi7l) | 0\n    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n    Wil = (Wil + gamma1l) | 0\n    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n    Wil = (Wil + Wi16l) | 0\n    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n    W[i] = Wih\n    W[i + 1] = Wil\n  }\n\n  for (var j = 0; j < 160; j += 2) {\n    Wih = W[j]\n    Wil = W[j + 1]\n\n    var majh = maj(ah, bh, ch)\n    var majl = maj(al, bl, cl)\n\n    var sigma0h = sigma0(ah, al)\n    var sigma0l = sigma0(al, ah)\n    var sigma1h = sigma1(eh, el)\n    var sigma1l = sigma1(el, eh)\n\n    // t1 = h + sigma1 + ch + K[j] + W[j]\n    var Kih = K[j]\n    var Kil = K[j + 1]\n\n    var chh = Ch(eh, fh, gh)\n    var chl = Ch(el, fl, gl)\n\n    var t1l = (hl + sigma1l) | 0\n    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n    t1l = (t1l + chl) | 0\n    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n    t1l = (t1l + Kil) | 0\n    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n    t1l = (t1l + Wil) | 0\n    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n    // t2 = sigma0 + maj\n    var t2l = (sigma0l + majl) | 0\n    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n    hh = gh\n    hl = gl\n    gh = fh\n    gl = fl\n    fh = eh\n    fl = el\n    el = (dl + t1l) | 0\n    eh = (dh + t1h + getCarry(el, dl)) | 0\n    dh = ch\n    dl = cl\n    ch = bh\n    cl = bl\n    bh = ah\n    bl = al\n    al = (t1l + t2l) | 0\n    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n  }\n\n  this._al = (this._al + al) | 0\n  this._bl = (this._bl + bl) | 0\n  this._cl = (this._cl + cl) | 0\n  this._dl = (this._dl + dl) | 0\n  this._el = (this._el + el) | 0\n  this._fl = (this._fl + fl) | 0\n  this._gl = (this._gl + gl) | 0\n  this._hl = (this._hl + hl) | 0\n\n  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(64)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n  writeInt64BE(this._gh, this._gl, 48)\n  writeInt64BE(this._hh, this._hl, 56)\n\n  return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n  this._ah = 0xcbbb9d5d\n  this._bh = 0x629a292a\n  this._ch = 0x9159015a\n  this._dh = 0x152fecd8\n  this._eh = 0x67332667\n  this._fh = 0x8eb44a87\n  this._gh = 0xdb0c2e0d\n  this._hh = 0x47b5481d\n\n  this._al = 0xc1059ed8\n  this._bl = 0x367cd507\n  this._cl = 0x3070dd17\n  this._dl = 0xf70e5939\n  this._el = 0xffc00b31\n  this._fl = 0x68581511\n  this._gl = 0x64f98fa7\n  this._hl = 0xbefa4fa4\n\n  return this\n}\n\nSha384.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(48)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n\n  return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n  algorithm = algorithm.toLowerCase()\n\n  var Algorithm = exports[algorithm]\n  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n  return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceDerive = exports.pathRegex = void 0;\nexports.pathRegex = new RegExp(\"^m(\\\\/[0-9]+')+$\");\nexports.replaceDerive = (val) => val.replace(\"'\", '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.derivePath = exports.isValidPath = exports.getPublicKey = exports.CKDPriv = exports.getMasterKeyFromSeed = void 0;\nconst createHmac = require(\"create-hmac\");\nconst nacl = require(\"tweetnacl\");\nconst utils_1 = require(\"./utils\");\nconst ED25519_CURVE = 'ed25519 seed';\nconst HARDENED_OFFSET = 0x80000000;\nexports.getMasterKeyFromSeed = (seed) => {\n    const hmac = createHmac('sha512', ED25519_CURVE);\n    const I = hmac.update(Buffer.from(seed, 'hex')).digest();\n    const IL = I.slice(0, 32);\n    const IR = I.slice(32);\n    return {\n        key: IL,\n        chainCode: IR,\n    };\n};\nexports.CKDPriv = ({ key, chainCode }, index) => {\n    const indexBuffer = Buffer.allocUnsafe(4);\n    indexBuffer.writeUInt32BE(index, 0);\n    const data = Buffer.concat([Buffer.alloc(1, 0), key, indexBuffer]);\n    const I = createHmac('sha512', chainCode)\n        .update(data)\n        .digest();\n    const IL = I.slice(0, 32);\n    const IR = I.slice(32);\n    return {\n        key: IL,\n        chainCode: IR,\n    };\n};\nexports.getPublicKey = (privateKey, withZeroByte = true) => {\n    const keyPair = nacl.sign.keyPair.fromSeed(privateKey);\n    const signPk = keyPair.secretKey.subarray(32);\n    const zero = Buffer.alloc(1, 0);\n    return withZeroByte ?\n        Buffer.concat([zero, Buffer.from(signPk)]) :\n        Buffer.from(signPk);\n};\nexports.isValidPath = (path) => {\n    if (!utils_1.pathRegex.test(path)) {\n        return false;\n    }\n    return !path\n        .split('/')\n        .slice(1)\n        .map(utils_1.replaceDerive)\n        .some(isNaN);\n};\nexports.derivePath = (path, seed, offset = HARDENED_OFFSET) => {\n    if (!exports.isValidPath(path)) {\n        throw new Error('Invalid derivation path');\n    }\n    const { key, chainCode } = exports.getMasterKeyFromSeed(seed);\n    const segments = path\n        .split('/')\n        .slice(1)\n        .map(utils_1.replaceDerive)\n        .map(el => parseInt(el, 10));\n    return segments.reduce((parentKeys, segment) => exports.CKDPriv(parentKeys, segment + offset), { key, chainCode });\n};\n","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        clean(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = SHA256_IV[0] | 0;\n        this.B = SHA256_IV[1] | 0;\n        this.C = SHA256_IV[2] | 0;\n        this.D = SHA256_IV[3] | 0;\n        this.E = SHA256_IV[4] | 0;\n        this.F = SHA256_IV[5] | 0;\n        this.G = SHA256_IV[6] | 0;\n        this.H = SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n            const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n            const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n            const T2 = (sigma0 + Maj(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        clean(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\nexport class SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = SHA224_IV[0] | 0;\n        this.B = SHA224_IV[1] | 0;\n        this.C = SHA224_IV[2] | 0;\n        this.D = SHA224_IV[3] | 0;\n        this.E = SHA224_IV[4] | 0;\n        this.F = SHA224_IV[5] | 0;\n        this.G = SHA224_IV[6] | 0;\n        this.H = SHA224_IV[7] | 0;\n    }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = SHA512_IV[0] | 0;\n        this.Al = SHA512_IV[1] | 0;\n        this.Bh = SHA512_IV[2] | 0;\n        this.Bl = SHA512_IV[3] | 0;\n        this.Ch = SHA512_IV[4] | 0;\n        this.Cl = SHA512_IV[5] | 0;\n        this.Dh = SHA512_IV[6] | 0;\n        this.Dl = SHA512_IV[7] | 0;\n        this.Eh = SHA512_IV[8] | 0;\n        this.El = SHA512_IV[9] | 0;\n        this.Fh = SHA512_IV[10] | 0;\n        this.Fl = SHA512_IV[11] | 0;\n        this.Gh = SHA512_IV[12] | 0;\n        this.Gl = SHA512_IV[13] | 0;\n        this.Hh = SHA512_IV[14] | 0;\n        this.Hl = SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        clean(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = SHA384_IV[0] | 0;\n        this.Al = SHA384_IV[1] | 0;\n        this.Bh = SHA384_IV[2] | 0;\n        this.Bl = SHA384_IV[3] | 0;\n        this.Ch = SHA384_IV[4] | 0;\n        this.Cl = SHA384_IV[5] | 0;\n        this.Dh = SHA384_IV[6] | 0;\n        this.Dl = SHA384_IV[7] | 0;\n        this.Eh = SHA384_IV[8] | 0;\n        this.El = SHA384_IV[9] | 0;\n        this.Fh = SHA384_IV[10] | 0;\n        this.Fl = SHA384_IV[11] | 0;\n        this.Gh = SHA384_IV[12] | 0;\n        this.Gl = SHA384_IV[13] | 0;\n        this.Hh = SHA384_IV[14] | 0;\n        this.Hl = SHA384_IV[15] | 0;\n    }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nexport function abytes(item) {\n    if (!isBytes(item))\n        throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n    if (typeof value !== 'boolean')\n        throw new Error(title + ' boolean expected, got ' + value);\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function';\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n    return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n    abytes(bytes);\n    return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n    return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n    return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n    return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n    let res;\n    if (typeof hex === 'string') {\n        try {\n            res = hexToBytes(hex);\n        }\n        catch (e) {\n            throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n        }\n    }\n    else if (isBytes(hex)) {\n        // Uint8Array.from() instead of hash.slice() because node.js Buffer\n        // is instance of Uint8Array, and its slice() creates **mutable** copy\n        res = Uint8Array.from(hex);\n    }\n    else {\n        throw new Error(title + ' must be hex string or Uint8Array');\n    }\n    const len = res.length;\n    if (typeof expectedLength === 'number' && len !== expectedLength)\n        throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n    return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n    if (a.length !== b.length)\n        return false;\n    let diff = 0;\n    for (let i = 0; i < a.length; i++)\n        diff |= a[i] ^ b[i];\n    return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n    return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n    // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n    // consider P=256n, min=0n, max=P\n    // - a for min=0 would require -1:          `inRange('x', x, -1n, P)`\n    // - b would commonly require subtraction:  `inRange('x', x, 0n, P - 1n)`\n    // - our way is the cleanest:               `inRange('x', x, 0n, P)\n    if (!inRange(n, min, max))\n        throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n    let len;\n    for (len = 0; n > _0n; n >>= _1n, len += 1)\n        ;\n    return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n    return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n    return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n// DRBG\nconst u8n = (len) => new Uint8Array(len); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n *   const drbg = createHmacDRBG<Key>(32, 32, hmac);\n *   drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n    if (typeof hashLen !== 'number' || hashLen < 2)\n        throw new Error('hashLen must be a number');\n    if (typeof qByteLen !== 'number' || qByteLen < 2)\n        throw new Error('qByteLen must be a number');\n    if (typeof hmacFn !== 'function')\n        throw new Error('hmacFn must be a function');\n    // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n    let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n    let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n    let i = 0; // Iterations counter, will throw when over 1000\n    const reset = () => {\n        v.fill(1);\n        k.fill(0);\n        i = 0;\n    };\n    const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n    const reseed = (seed = u8n(0)) => {\n        // HMAC-DRBG reseed() function. Steps D-G\n        k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n        v = h(); // v = hmac(k || v)\n        if (seed.length === 0)\n            return;\n        k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n        v = h(); // v = hmac(k || v)\n    };\n    const gen = () => {\n        // HMAC-DRBG generate() function\n        if (i++ >= 1000)\n            throw new Error('drbg: tried 1000 values');\n        let len = 0;\n        const out = [];\n        while (len < qByteLen) {\n            v = h();\n            const sl = v.slice();\n            out.push(sl);\n            len += v.length;\n        }\n        return concatBytes(...out);\n    };\n    const genUntil = (seed, pred) => {\n        reset();\n        reseed(seed); // Steps D-G\n        let res = undefined; // Step H: grind until k is in [1..n-1]\n        while (!(res = pred(gen())))\n            reseed();\n        reset();\n        return res;\n    };\n    return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n    bigint: (val) => typeof val === 'bigint',\n    function: (val) => typeof val === 'function',\n    boolean: (val) => typeof val === 'boolean',\n    string: (val) => typeof val === 'string',\n    stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n    isSafeInteger: (val) => Number.isSafeInteger(val),\n    array: (val) => Array.isArray(val),\n    field: (val, object) => object.Fp.isValid(val),\n    hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n    const checkField = (fieldName, type, isOptional) => {\n        const checkVal = validatorFns[type];\n        if (typeof checkVal !== 'function')\n            throw new Error('invalid validator function');\n        const val = object[fieldName];\n        if (isOptional && val === undefined)\n            return;\n        if (!checkVal(val, object)) {\n            throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n        }\n    };\n    for (const [fieldName, type] of Object.entries(validators))\n        checkField(fieldName, type, false);\n    for (const [fieldName, type] of Object.entries(optValidators))\n        checkField(fieldName, type, true);\n    return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n    throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n    const map = new WeakMap();\n    return (arg, ...args) => {\n        const val = map.get(arg);\n        if (val !== undefined)\n            return val;\n        const computed = fn(arg, ...args);\n        map.set(arg, computed);\n        return computed;\n    };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and finite fields.\n * A finite field over 11 is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { anumber } from '@noble/hashes/utils';\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from \"./utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _8n = /* @__PURE__ */ BigInt(8);\n// Calculates a modulo b\nexport function mod(a, b) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * TODO: remove.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n    return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= modulo;\n    }\n    return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n    if (number === _0n)\n        throw new Error('invert: expected non-zero number');\n    if (modulo <= _0n)\n        throw new Error('invert: expected positive modulus, got ' + modulo);\n    // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n    let a = mod(number, modulo);\n    let b = modulo;\n    // prettier-ignore\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        // JIT applies optimization if those two lines follow each other\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        // prettier-ignore\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n    const p1div4 = (Fp.ORDER + _1n) / _4n;\n    const root = Fp.pow(n, p1div4);\n    // Throw if root^2 != n\n    if (!Fp.eql(Fp.sqr(root), n))\n        throw new Error('Cannot find square root');\n    return root;\n}\nfunction sqrt5mod8(Fp, n) {\n    const p5div8 = (Fp.ORDER - _5n) / _8n;\n    const n2 = Fp.mul(n, _2n);\n    const v = Fp.pow(n2, p5div8);\n    const nv = Fp.mul(n, v);\n    const i = Fp.mul(Fp.mul(nv, _2n), v);\n    const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n    if (!Fp.eql(Fp.sqr(root), n))\n        throw new Error('Cannot find square root');\n    return root;\n}\n// TODO: Commented-out for now. Provide test vectors.\n// Tonelli is too slow for extension fields Fp2.\n// That means we can't use sqrt (c1, c2...) even for initialization constants.\n// if (P % _16n === _9n) return sqrt9mod16;\n// // prettier-ignore\n// function sqrt9mod16<T>(Fp: IField<T>, n: T, p7div16?: bigint) {\n//   if (p7div16 === undefined) p7div16 = (Fp.ORDER + BigInt(7)) / _16n;\n//   const c1 = Fp.sqrt(Fp.neg(Fp.ONE)); //  1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n//   const c2 = Fp.sqrt(c1);             //  2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n//   const c3 = Fp.sqrt(Fp.neg(c1));     //  3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n//   const c4 = p7div16;                 //  4. c4 = (q + 7) / 16        # Integer arithmetic\n//   let tv1 = Fp.pow(n, c4);            //  1. tv1 = x^c4\n//   let tv2 = Fp.mul(c1, tv1);          //  2. tv2 = c1 * tv1\n//   const tv3 = Fp.mul(c2, tv1);        //  3. tv3 = c2 * tv1\n//   let tv4 = Fp.mul(c3, tv1);          //  4. tv4 = c3 * tv1\n//   const e1 = Fp.eql(Fp.sqr(tv2), n);  //  5.  e1 = (tv2^2) == x\n//   const e2 = Fp.eql(Fp.sqr(tv3), n);  //  6.  e2 = (tv3^2) == x\n//   tv1 = Fp.cmov(tv1, tv2, e1); //  7. tv1 = CMOV(tv1, tv2, e1)  # Select tv2 if (tv2^2) == x\n//   tv2 = Fp.cmov(tv4, tv3, e2); //  8. tv2 = CMOV(tv4, tv3, e2)  # Select tv3 if (tv3^2) == x\n//   const e3 = Fp.eql(Fp.sqr(tv2), n);  //  9.  e3 = (tv2^2) == x\n//   return Fp.cmov(tv1, tv2, e3); // 10.  z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n// }\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n    // Initialization (precomputation).\n    if (P < BigInt(3))\n        throw new Error('sqrt is not defined for small field');\n    // Factor P - 1 = Q * 2^S, where Q is odd\n    let Q = P - _1n;\n    let S = 0;\n    while (Q % _2n === _0n) {\n        Q /= _2n;\n        S++;\n    }\n    // Find the first quadratic non-residue Z >= 2\n    let Z = _2n;\n    const _Fp = Field(P);\n    while (FpLegendre(_Fp, Z) === 1) {\n        // Basic primality test for P. After x iterations, chance of\n        // not finding quadratic non-residue is 2^x, so 2^1000.\n        if (Z++ > 1000)\n            throw new Error('Cannot find square root: probably non-prime P');\n    }\n    // Fast-path; usually done before Z, but we do \"primality test\".\n    if (S === 1)\n        return sqrt3mod4;\n    // Slow-path\n    // TODO: test on Fp2 and others\n    let cc = _Fp.pow(Z, Q); // c = z^Q\n    const Q1div2 = (Q + _1n) / _2n;\n    return function tonelliSlow(Fp, n) {\n        if (Fp.is0(n))\n            return n;\n        // Check if n is a quadratic residue using Legendre symbol\n        if (FpLegendre(Fp, n) !== 1)\n            throw new Error('Cannot find square root');\n        // Initialize variables for the main loop\n        let M = S;\n        let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n        let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n        let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n        // Main loop\n        // while t != 1\n        while (!Fp.eql(t, Fp.ONE)) {\n            if (Fp.is0(t))\n                return Fp.ZERO; // if t=0 return R=0\n            let i = 1;\n            // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n            let t_tmp = Fp.sqr(t); // t^(2^1)\n            while (!Fp.eql(t_tmp, Fp.ONE)) {\n                i++;\n                t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n                if (i === M)\n                    throw new Error('Cannot find square root');\n            }\n            // Calculate the exponent for b: 2^(M - i - 1)\n            const exponent = _1n << BigInt(M - i - 1); // bigint is important\n            const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n            // Update variables\n            M = i;\n            c = Fp.sqr(b); // c = b^2\n            t = Fp.mul(t, c); // t = (t * b^2)\n            R = Fp.mul(R, b); // R = R*b\n        }\n        return R;\n    };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n    // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n    if (P % _4n === _3n)\n        return sqrt3mod4;\n    // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n    if (P % _8n === _5n)\n        return sqrt5mod8;\n    // P ≡ 9 (mod 16) not implemented, see above\n    // Tonelli-Shanks algorithm\n    return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n    'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n    'eql', 'add', 'sub', 'mul', 'pow', 'div',\n    'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n    const initial = {\n        ORDER: 'bigint',\n        MASK: 'bigint',\n        BYTES: 'isSafeInteger',\n        BITS: 'isSafeInteger',\n    };\n    const opts = FIELD_FIELDS.reduce((map, val) => {\n        map[val] = 'function';\n        return map;\n    }, initial);\n    return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n    if (power < _0n)\n        throw new Error('invalid exponent, negatives unsupported');\n    if (power === _0n)\n        return Fp.ONE;\n    if (power === _1n)\n        return num;\n    let p = Fp.ONE;\n    let d = num;\n    while (power > _0n) {\n        if (power & _1n)\n            p = Fp.mul(p, d);\n        d = Fp.sqr(d);\n        power >>= _1n;\n    }\n    return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n    const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n    // Walk from first to last, multiply them by each other MOD p\n    const multipliedAcc = nums.reduce((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = acc;\n        return Fp.mul(acc, num);\n    }, Fp.ONE);\n    // Invert last element\n    const invertedAcc = Fp.inv(multipliedAcc);\n    // Walk from last to first, multiply them by inverted each other MOD p\n    nums.reduceRight((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = Fp.mul(acc, inverted[i]);\n        return Fp.mul(acc, num);\n    }, invertedAcc);\n    return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n    return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1    if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1   if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0    if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n    // We can use 3rd argument as optional cache of this value\n    // but seems unneeded for now. The operation is very fast.\n    const p1mod2 = (Fp.ORDER - _1n) / _2n;\n    const powered = Fp.pow(n, p1mod2);\n    const yes = Fp.eql(powered, Fp.ONE);\n    const zero = Fp.eql(powered, Fp.ZERO);\n    const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n    if (!yes && !zero && !no)\n        throw new Error('invalid Legendre symbol result');\n    return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n    const l = FpLegendre(Fp, n);\n    return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n    // Bit size, byte size of CURVE.n\n    if (nBitLength !== undefined)\n        anumber(nBitLength);\n    const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n    const nByteLength = Math.ceil(_nBitLength / 8);\n    return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n    if (ORDER <= _0n)\n        throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n    const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n    if (BYTES > 2048)\n        throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n    let sqrtP; // cached sqrtP\n    const f = Object.freeze({\n        ORDER,\n        isLE,\n        BITS,\n        BYTES,\n        MASK: bitMask(BITS),\n        ZERO: _0n,\n        ONE: _1n,\n        create: (num) => mod(num, ORDER),\n        isValid: (num) => {\n            if (typeof num !== 'bigint')\n                throw new Error('invalid field element: expected bigint, got ' + typeof num);\n            return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n        },\n        is0: (num) => num === _0n,\n        isOdd: (num) => (num & _1n) === _1n,\n        neg: (num) => mod(-num, ORDER),\n        eql: (lhs, rhs) => lhs === rhs,\n        sqr: (num) => mod(num * num, ORDER),\n        add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n        sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n        mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n        pow: (num, power) => FpPow(f, num, power),\n        div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n        // Same as above, but doesn't normalize\n        sqrN: (num) => num * num,\n        addN: (lhs, rhs) => lhs + rhs,\n        subN: (lhs, rhs) => lhs - rhs,\n        mulN: (lhs, rhs) => lhs * rhs,\n        inv: (num) => invert(num, ORDER),\n        sqrt: redef.sqrt ||\n            ((n) => {\n                if (!sqrtP)\n                    sqrtP = FpSqrt(ORDER);\n                return sqrtP(f, n);\n            }),\n        toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n        fromBytes: (bytes) => {\n            if (bytes.length !== BYTES)\n                throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n            return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n        },\n        // TODO: we don't need it here, move out to separate fn\n        invertBatch: (lst) => FpInvertBatch(f, lst),\n        // We can't move this out because Fp6, Fp12 implement it\n        // and it's unclear what to return in there.\n        cmov: (a, b, c) => (c ? b : a),\n    });\n    return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n    hash = ensureBytes('privateHash', hash);\n    const hashLen = hash.length;\n    const minLen = nLength(groupOrder).nByteLength + 8;\n    if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n        throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n    const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n    return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n    if (typeof fieldOrder !== 'bigint')\n        throw new Error('field order must be bigint');\n    const bitLength = fieldOrder.toString(2).length;\n    return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n    const length = getFieldBytesLength(fieldOrder);\n    return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n    const len = key.length;\n    const fieldLen = getFieldBytesLength(fieldOrder);\n    const minLen = getMinHashLength(fieldOrder);\n    // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n    if (len < 16 || len < minLen || len > 1024)\n        throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n    const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n    // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n    const reduced = mod(num, fieldOrder - _1n) + _1n;\n    return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { nLength, validateField } from \"./modular.js\";\nimport { bitLen, bitMask, validateObject } from \"./utils.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction constTimeNegate(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\n}\nfunction validateW(W, bits) {\n    if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n        throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n    validateW(W, scalarBits);\n    const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n    const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n    const maxNumber = 2 ** W; // W=8 256\n    const mask = bitMask(W); // W=8 255 == mask 0b11111111\n    const shiftBy = BigInt(W); // W=8 8\n    return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n    const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n    let wbits = Number(n & mask); // extract W bits.\n    let nextN = n >> shiftBy; // shift number by W bits.\n    // What actually happens here:\n    // const highestBit = Number(mask ^ (mask >> 1n));\n    // let wbits2 = wbits - 1; // skip zero\n    // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n    // split if bits > max: +224 => 256-32\n    if (wbits > windowSize) {\n        // we skip zero, which means instead of `>= size-1`, we do `> size`\n        wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n        nextN += _1n; // +256 (carry)\n    }\n    const offsetStart = window * windowSize;\n    const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n    const isZero = wbits === 0; // is current window slice a 0?\n    const isNeg = wbits < 0; // is current window slice negative?\n    const isNegF = window % 2 !== 0; // fake random statement for noise\n    const offsetF = offsetStart; // fake offset for noise\n    return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n    if (!Array.isArray(points))\n        throw new Error('array expected');\n    points.forEach((p, i) => {\n        if (!(p instanceof c))\n            throw new Error('invalid point at index ' + i);\n    });\n}\nfunction validateMSMScalars(scalars, field) {\n    if (!Array.isArray(scalars))\n        throw new Error('array of scalars expected');\n    scalars.forEach((s, i) => {\n        if (!field.isValid(s))\n            throw new Error('invalid scalar at index ' + i);\n    });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n    return pointWindowSizes.get(P) || 1;\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF(c, bits) {\n    return {\n        constTimeNegate,\n        hasPrecomputes(elm) {\n            return getW(elm) !== 1;\n        },\n        // non-const time multiplication ladder\n        unsafeLadder(elm, n, p = c.ZERO) {\n            let d = elm;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        },\n        /**\n         * Creates a wNAF precomputation window. Used for caching.\n         * Default window size is set by `utils.precompute()` and is equal to 8.\n         * Number of precomputed points depends on the curve size:\n         * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n         * - 𝑊 is the window size\n         * - 𝑛 is the bitlength of the curve order.\n         * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n         * @param elm Point instance\n         * @param W window size\n         * @returns precomputed point tables flattened to a single array\n         */\n        precomputeWindow(elm, W) {\n            const { windows, windowSize } = calcWOpts(W, bits);\n            const points = [];\n            let p = elm;\n            let base = p;\n            for (let window = 0; window < windows; window++) {\n                base = p;\n                points.push(base);\n                // i=1, bc we skip 0\n                for (let i = 1; i < windowSize; i++) {\n                    base = base.add(p);\n                    points.push(base);\n                }\n                p = base.double();\n            }\n            return points;\n        },\n        /**\n         * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n         * @param W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @returns real and fake (for const-time) points\n         */\n        wNAF(W, precomputes, n) {\n            // Smaller version:\n            // https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n            // TODO: check the scalar is less than group order?\n            // wNAF behavior is undefined otherwise. But have to carefully remove\n            // other checks before wNAF. ORDER == bits here.\n            // Accumulators\n            let p = c.ZERO;\n            let f = c.BASE;\n            // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n            // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n            // there is negate now: it is possible that negated element from low value\n            // would be the same as high element, which will create carry into next window.\n            // It's not obvious how this can fail, but still worth investigating later.\n            const wo = calcWOpts(W, bits);\n            for (let window = 0; window < wo.windows; window++) {\n                // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n                const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n                n = nextN;\n                if (isZero) {\n                    // bits are 0: add garbage to fake point\n                    // Important part for const-time getPublicKey: add random \"noise\" point to f.\n                    f = f.add(constTimeNegate(isNegF, precomputes[offsetF]));\n                }\n                else {\n                    // bits are 1: add to result point\n                    p = p.add(constTimeNegate(isNeg, precomputes[offset]));\n                }\n            }\n            // Return both real and fake points: JIT won't eliminate f.\n            // At this point there is a way to F be infinity-point even if p is not,\n            // which makes it less const-time: around 1 bigint multiply.\n            return { p, f };\n        },\n        /**\n         * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n         * @param W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @param acc accumulator point to add result of multiplication\n         * @returns point\n         */\n        wNAFUnsafe(W, precomputes, n, acc = c.ZERO) {\n            const wo = calcWOpts(W, bits);\n            for (let window = 0; window < wo.windows; window++) {\n                if (n === _0n)\n                    break; // Early-exit, skip 0 value\n                const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n                n = nextN;\n                if (isZero) {\n                    // Window bits are 0: skip processing.\n                    // Move to next window.\n                    continue;\n                }\n                else {\n                    const item = precomputes[offset];\n                    acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n                }\n            }\n            return acc;\n        },\n        getPrecomputes(W, P, transform) {\n            // Calculate precomputes on a first run, reuse them after\n            let comp = pointPrecomputes.get(P);\n            if (!comp) {\n                comp = this.precomputeWindow(P, W);\n                if (W !== 1)\n                    pointPrecomputes.set(P, transform(comp));\n            }\n            return comp;\n        },\n        wNAFCached(P, n, transform) {\n            const W = getW(P);\n            return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n        },\n        wNAFCachedUnsafe(P, n, transform, prev) {\n            const W = getW(P);\n            if (W === 1)\n                return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n            return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n        },\n        // We calculate precomputes for elliptic curve point multiplication\n        // using windowed method. This specifies window size and\n        // stores precomputed values. Usually only base point would be precomputed.\n        setWindowSize(P, W) {\n            validateW(W, bits);\n            pointWindowSizes.set(P, W);\n            pointPrecomputes.delete(P);\n        },\n    };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n    // If we split scalars by some window (let's say 8 bits), every chunk will only\n    // take 256 buckets even if there are 4096 scalars, also re-uses double.\n    // TODO:\n    // - https://eprint.iacr.org/2024/750.pdf\n    // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n    // 0 is accepted in scalars\n    validateMSMPoints(points, c);\n    validateMSMScalars(scalars, fieldN);\n    const plength = points.length;\n    const slength = scalars.length;\n    if (plength !== slength)\n        throw new Error('arrays of points and scalars must have equal length');\n    // if (plength === 0) throw new Error('array must be of length >= 2');\n    const zero = c.ZERO;\n    const wbits = bitLen(BigInt(plength));\n    let windowSize = 1; // bits\n    if (wbits > 12)\n        windowSize = wbits - 3;\n    else if (wbits > 4)\n        windowSize = wbits - 2;\n    else if (wbits > 0)\n        windowSize = 2;\n    const MASK = bitMask(windowSize);\n    const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n    const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n    let sum = zero;\n    for (let i = lastBits; i >= 0; i -= windowSize) {\n        buckets.fill(zero);\n        for (let j = 0; j < slength; j++) {\n            const scalar = scalars[j];\n            const wbits = Number((scalar >> BigInt(i)) & MASK);\n            buckets[wbits] = buckets[wbits].add(points[j]);\n        }\n        let resI = zero; // not using this will do small speed-up, but will lose ct\n        // Skip first bucket, because it is zero\n        for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n            sumI = sumI.add(buckets[j]);\n            resI = resI.add(sumI);\n        }\n        sum = sum.add(resI);\n        if (i !== 0)\n            for (let j = 0; j < windowSize; j++)\n                sum = sum.double();\n    }\n    return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n    /**\n     * Performance Analysis of Window-based Precomputation\n     *\n     * Base Case (256-bit scalar, 8-bit window):\n     * - Standard precomputation requires:\n     *   - 31 additions per scalar × 256 scalars = 7,936 ops\n     *   - Plus 255 summary additions = 8,191 total ops\n     *   Note: Summary additions can be optimized via accumulator\n     *\n     * Chunked Precomputation Analysis:\n     * - Using 32 chunks requires:\n     *   - 255 additions per chunk\n     *   - 256 doublings\n     *   - Total: (255 × 32) + 256 = 8,416 ops\n     *\n     * Memory Usage Comparison:\n     * Window Size | Standard Points | Chunked Points\n     * ------------|-----------------|---------------\n     *     4-bit   |     520         |      15\n     *     8-bit   |    4,224        |     255\n     *    10-bit   |   13,824        |   1,023\n     *    16-bit   |  557,056        |  65,535\n     *\n     * Key Advantages:\n     * 1. Enables larger window sizes due to reduced memory overhead\n     * 2. More efficient for smaller scalar counts:\n     *    - 16 chunks: (16 × 255) + 256 = 4,336 ops\n     *    - ~2x faster than standard 8,191 ops\n     *\n     * Limitations:\n     * - Not suitable for plain precomputes (requires 256 constant doublings)\n     * - Performance degrades with larger scalar counts:\n     *   - Optimal for ~256 scalars\n     *   - Less efficient for 4096+ scalars (Pippenger preferred)\n     */\n    validateW(windowSize, fieldN.BITS);\n    validateMSMPoints(points, c);\n    const zero = c.ZERO;\n    const tableSize = 2 ** windowSize - 1; // table size (without zero)\n    const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n    const MASK = bitMask(windowSize);\n    const tables = points.map((p) => {\n        const res = [];\n        for (let i = 0, acc = p; i < tableSize; i++) {\n            res.push(acc);\n            acc = acc.add(p);\n        }\n        return res;\n    });\n    return (scalars) => {\n        validateMSMScalars(scalars, fieldN);\n        if (scalars.length > points.length)\n            throw new Error('array of scalars must be smaller than array of points');\n        let res = zero;\n        for (let i = 0; i < chunks; i++) {\n            // No need to double if accumulator is still zero.\n            if (res !== zero)\n                for (let j = 0; j < windowSize; j++)\n                    res = res.double();\n            const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n            for (let j = 0; j < scalars.length; j++) {\n                const n = scalars[j];\n                const curr = Number((n >> shiftBy) & MASK);\n                if (!curr)\n                    continue; // skip zero scalars chunks\n                res = res.add(tables[j][curr - 1]);\n            }\n        }\n        return res;\n    };\n}\nexport function validateBasic(curve) {\n    validateField(curve.Fp);\n    validateObject(curve, {\n        n: 'bigint',\n        h: 'bigint',\n        Gx: 'field',\n        Gy: 'field',\n    }, {\n        nBitLength: 'isSafeInteger',\n        nByteLength: 'isSafeInteger',\n    });\n    // Set defaults\n    return Object.freeze({\n        ...nLength(curve.n, curve.nBitLength),\n        ...curve,\n        ...{ p: curve.Fp.ORDER },\n    });\n}\n//# sourceMappingURL=curve.js.map","/**\n * Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y².\n * For design rationale of types / exports, see weierstrass module documentation.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// prettier-ignore\nimport { pippenger, validateBasic, wNAF } from \"./curve.js\";\nimport { Field, FpInvertBatch, mod } from \"./modular.js\";\n// prettier-ignore\nimport { abool, aInRange, bytesToHex, bytesToNumberLE, concatBytes, ensureBytes, memoized, numberToBytesLE, validateObject } from \"./utils.js\";\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\nfunction validateOpts(curve) {\n    const opts = validateBasic(curve);\n    validateObject(curve, {\n        hash: 'function',\n        a: 'bigint',\n        d: 'bigint',\n        randomBytes: 'function',\n    }, {\n        adjustScalarBytes: 'function',\n        domain: 'function',\n        uvRatio: 'function',\n        mapToCurve: 'function',\n    });\n    // Set defaults\n    return Object.freeze({ ...opts });\n}\n/**\n * Creates Twisted Edwards curve with EdDSA signatures.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h\n * const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })\n */\nexport function twistedEdwards(curveDef) {\n    const CURVE = validateOpts(curveDef);\n    const { Fp, n: CURVE_ORDER, prehash: prehash, hash: cHash, randomBytes, nByteLength, h: cofactor, } = CURVE;\n    // Important:\n    // There are some places where Fp.BYTES is used instead of nByteLength.\n    // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n    // TODO: test and find curves which behave otherwise.\n    const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n    const modP = Fp.create; // Function overrides\n    const Fn = Field(CURVE.n, CURVE.nBitLength);\n    function isEdValidXY(x, y) {\n        const x2 = Fp.sqr(x);\n        const y2 = Fp.sqr(y);\n        const left = Fp.add(Fp.mul(CURVE.a, x2), y2);\n        const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));\n        return Fp.eql(left, right);\n    }\n    // Validate whether the passed curve params are valid.\n    // equation ax² + y² = 1 + dx²y² should work for generator point.\n    if (!isEdValidXY(CURVE.Gx, CURVE.Gy))\n        throw new Error('bad curve params: generator point');\n    // sqrt(u/v)\n    const uvRatio = CURVE.uvRatio ||\n        ((u, v) => {\n            try {\n                return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n            }\n            catch (e) {\n                return { isValid: false, value: _0n };\n            }\n        });\n    const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP\n    const domain = CURVE.domain ||\n        ((data, ctx, phflag) => {\n            abool('phflag', phflag);\n            if (ctx.length || phflag)\n                throw new Error('Contexts/pre-hash are not supported');\n            return data;\n        }); // NOOP\n    // 0 <= n < MASK\n    // Coordinates larger than Fp.ORDER are allowed for zip215\n    function aCoordinate(title, n, banZero = false) {\n        const min = banZero ? _1n : _0n;\n        aInRange('coordinate ' + title, n, min, MASK);\n    }\n    function aextpoint(other) {\n        if (!(other instanceof Point))\n            throw new Error('ExtendedPoint expected');\n    }\n    // Converts Extended point to default (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    const toAffineMemo = memoized((p, iz) => {\n        const { ex: x, ey: y, ez: z } = p;\n        const is0 = p.is0();\n        if (iz == null)\n            iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily\n        const ax = modP(x * iz);\n        const ay = modP(y * iz);\n        const zz = modP(z * iz);\n        if (is0)\n            return { x: _0n, y: _1n };\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return { x: ax, y: ay };\n    });\n    const assertValidMemo = memoized((p) => {\n        const { a, d } = CURVE;\n        if (p.is0())\n            throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n        // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n        // Equation in projective coordinates (X/Z, Y/Z, Z):  (aX² + Y²)Z² = Z⁴ + dX²Y²\n        const { ex: X, ey: Y, ez: Z, et: T } = p;\n        const X2 = modP(X * X); // X²\n        const Y2 = modP(Y * Y); // Y²\n        const Z2 = modP(Z * Z); // Z²\n        const Z4 = modP(Z2 * Z2); // Z⁴\n        const aX2 = modP(X2 * a); // aX²\n        const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n        const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n        if (left !== right)\n            throw new Error('bad point: equation left != right (1)');\n        // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n        const XY = modP(X * Y);\n        const ZT = modP(Z * T);\n        if (XY !== ZT)\n            throw new Error('bad point: equation left != right (2)');\n        return true;\n    });\n    // Extended Point works in extended coordinates: (X, Y, Z, T) ∋ (x=X/Z, y=Y/Z, T=xy).\n    // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n    class Point {\n        constructor(ex, ey, ez, et) {\n            aCoordinate('x', ex);\n            aCoordinate('y', ey);\n            aCoordinate('z', ez, true);\n            aCoordinate('t', et);\n            this.ex = ex;\n            this.ey = ey;\n            this.ez = ez;\n            this.et = et;\n            Object.freeze(this);\n        }\n        get x() {\n            return this.toAffine().x;\n        }\n        get y() {\n            return this.toAffine().y;\n        }\n        static fromAffine(p) {\n            if (p instanceof Point)\n                throw new Error('extended point not allowed');\n            const { x, y } = p || {};\n            aCoordinate('x', x);\n            aCoordinate('y', y);\n            return new Point(x, y, _1n, modP(x * y));\n        }\n        static normalizeZ(points) {\n            const toInv = FpInvertBatch(Fp, points.map((p) => p.ez));\n            return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n        }\n        // Multiscalar Multiplication\n        static msm(points, scalars) {\n            return pippenger(Point, Fn, points, scalars);\n        }\n        // \"Private method\", don't use it directly\n        _setWindowSize(windowSize) {\n            wnaf.setWindowSize(this, windowSize);\n        }\n        // Not required for fromHex(), which always creates valid points.\n        // Could be useful for fromAffine().\n        assertValidity() {\n            assertValidMemo(this);\n        }\n        // Compare one point to another.\n        equals(other) {\n            aextpoint(other);\n            const { ex: X1, ey: Y1, ez: Z1 } = this;\n            const { ex: X2, ey: Y2, ez: Z2 } = other;\n            const X1Z2 = modP(X1 * Z2);\n            const X2Z1 = modP(X2 * Z1);\n            const Y1Z2 = modP(Y1 * Z2);\n            const Y2Z1 = modP(Y2 * Z1);\n            return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n        }\n        is0() {\n            return this.equals(Point.ZERO);\n        }\n        negate() {\n            // Flips point sign to a negative one (-x, y in affine coords)\n            return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n        }\n        // Fast algo for doubling Extended Point.\n        // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n        // Cost: 4M + 4S + 1*a + 6add + 1*2.\n        double() {\n            const { a } = CURVE;\n            const { ex: X1, ey: Y1, ez: Z1 } = this;\n            const A = modP(X1 * X1); // A = X12\n            const B = modP(Y1 * Y1); // B = Y12\n            const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n            const D = modP(a * A); // D = a*A\n            const x1y1 = X1 + Y1;\n            const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n            const G = D + B; // G = D+B\n            const F = G - C; // F = G-C\n            const H = D - B; // H = D-B\n            const X3 = modP(E * F); // X3 = E*F\n            const Y3 = modP(G * H); // Y3 = G*H\n            const T3 = modP(E * H); // T3 = E*H\n            const Z3 = modP(F * G); // Z3 = F*G\n            return new Point(X3, Y3, Z3, T3);\n        }\n        // Fast algo for adding 2 Extended Points.\n        // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n        // Cost: 9M + 1*a + 1*d + 7add.\n        add(other) {\n            aextpoint(other);\n            const { a, d } = CURVE;\n            const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n            const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n            const A = modP(X1 * X2); // A = X1*X2\n            const B = modP(Y1 * Y2); // B = Y1*Y2\n            const C = modP(T1 * d * T2); // C = T1*d*T2\n            const D = modP(Z1 * Z2); // D = Z1*Z2\n            const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n            const F = D - C; // F = D-C\n            const G = D + C; // G = D+C\n            const H = modP(B - a * A); // H = B-a*A\n            const X3 = modP(E * F); // X3 = E*F\n            const Y3 = modP(G * H); // Y3 = G*H\n            const T3 = modP(E * H); // T3 = E*H\n            const Z3 = modP(F * G); // Z3 = F*G\n            return new Point(X3, Y3, Z3, T3);\n        }\n        subtract(other) {\n            return this.add(other.negate());\n        }\n        wNAF(n) {\n            return wnaf.wNAFCached(this, n, Point.normalizeZ);\n        }\n        // Constant-time multiplication.\n        multiply(scalar) {\n            const n = scalar;\n            aInRange('scalar', n, _1n, CURVE_ORDER); // 1 <= scalar < L\n            const { p, f } = this.wNAF(n);\n            return Point.normalizeZ([p, f])[0];\n        }\n        // Non-constant-time multiplication. Uses double-and-add algorithm.\n        // It's faster, but should only be used when you don't care about\n        // an exposed private key e.g. sig verification.\n        // Does NOT allow scalars higher than CURVE.n.\n        // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n        multiplyUnsafe(scalar, acc = Point.ZERO) {\n            const n = scalar;\n            aInRange('scalar', n, _0n, CURVE_ORDER); // 0 <= scalar < L\n            if (n === _0n)\n                return I;\n            if (this.is0() || n === _1n)\n                return this;\n            return wnaf.wNAFCachedUnsafe(this, n, Point.normalizeZ, acc);\n        }\n        // Checks if point is of small order.\n        // If you add something to small order point, you will have \"dirty\"\n        // point with torsion component.\n        // Multiplies point by cofactor and checks if the result is 0.\n        isSmallOrder() {\n            return this.multiplyUnsafe(cofactor).is0();\n        }\n        // Multiplies point by curve order and checks if the result is 0.\n        // Returns `false` is the point is dirty.\n        isTorsionFree() {\n            return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n        }\n        // Converts Extended point to default (x, y) coordinates.\n        // Can accept precomputed Z^-1 - for example, from invertBatch.\n        toAffine(iz) {\n            return toAffineMemo(this, iz);\n        }\n        clearCofactor() {\n            const { h: cofactor } = CURVE;\n            if (cofactor === _1n)\n                return this;\n            return this.multiplyUnsafe(cofactor);\n        }\n        // Converts hash string or Uint8Array to Point.\n        // Uses algo from RFC8032 5.1.3.\n        static fromHex(hex, zip215 = false) {\n            const { d, a } = CURVE;\n            const len = Fp.BYTES;\n            hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n            abool('zip215', zip215);\n            const normed = hex.slice(); // copy again, we'll manipulate it\n            const lastByte = hex[len - 1]; // select last byte\n            normed[len - 1] = lastByte & ~0x80; // clear last bit\n            const y = bytesToNumberLE(normed);\n            // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n            // RFC8032 prohibits >= p, but ZIP215 doesn't\n            // zip215=true:  0 <= y < MASK (2^256 for ed25519)\n            // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n            const max = zip215 ? MASK : Fp.ORDER;\n            aInRange('pointHex.y', y, _0n, max);\n            // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n            // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n            const y2 = modP(y * y); // denominator is always non-0 mod p.\n            const u = modP(y2 - _1n); // u = y² - 1\n            const v = modP(d * y2 - a); // v = d y² + 1.\n            let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n            if (!isValid)\n                throw new Error('Point.fromHex: invalid y coordinate');\n            const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n            const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n            if (!zip215 && x === _0n && isLastByteOdd)\n                // if x=0 and x_0 = 1, fail\n                throw new Error('Point.fromHex: x=0 and x_0=1');\n            if (isLastByteOdd !== isXOdd)\n                x = modP(-x); // if x_0 != x mod 2, set x = p-x\n            return Point.fromAffine({ x, y });\n        }\n        static fromPrivateKey(privKey) {\n            const { scalar } = getPrivateScalar(privKey);\n            return G.multiply(scalar); // reduced one call of `toRawBytes`\n        }\n        toRawBytes() {\n            const { x, y } = this.toAffine();\n            const bytes = numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n            bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n            return bytes; // and use the last byte to encode sign of x\n        }\n        toHex() {\n            return bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n        }\n    }\n    // base / generator point\n    Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n    // zero / infinity / identity point\n    Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n    const { BASE: G, ZERO: I } = Point;\n    const wnaf = wNAF(Point, nByteLength * 8);\n    function modN(a) {\n        return mod(a, CURVE_ORDER);\n    }\n    // Little-endian SHA512 with modulo n\n    function modN_LE(hash) {\n        return modN(bytesToNumberLE(hash));\n    }\n    // Get the hashed private scalar per RFC8032 5.1.5\n    function getPrivateScalar(key) {\n        const len = Fp.BYTES;\n        key = ensureBytes('private key', key, len);\n        // Hash private key with curve's hash function to produce uniformingly random input\n        // Check byte lengths: ensure(64, h(ensure(32, key)))\n        const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n        const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n        const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n        const scalar = modN_LE(head); // The actual private scalar\n        return { head, prefix, scalar };\n    }\n    // Convenience method that creates public key from scalar. RFC8032 5.1.5\n    function getExtendedPublicKey(key) {\n        const { head, prefix, scalar } = getPrivateScalar(key);\n        const point = G.multiply(scalar); // Point on Edwards curve aka public key\n        const pointBytes = point.toRawBytes(); // Uint8Array representation\n        return { head, prefix, scalar, point, pointBytes };\n    }\n    // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n    function getPublicKey(privKey) {\n        return getExtendedPublicKey(privKey).pointBytes;\n    }\n    // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n    function hashDomainToScalar(context = Uint8Array.of(), ...msgs) {\n        const msg = concatBytes(...msgs);\n        return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n    }\n    /** Signs message with privateKey. RFC8032 5.1.6 */\n    function sign(msg, privKey, options = {}) {\n        msg = ensureBytes('message', msg);\n        if (prehash)\n            msg = prehash(msg); // for ed25519ph etc.\n        const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n        const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n        const R = G.multiply(r).toRawBytes(); // R = rG\n        const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n        const s = modN(r + k * scalar); // S = (r + k * s) mod L\n        aInRange('signature.s', s, _0n, CURVE_ORDER); // 0 <= s < l\n        const res = concatBytes(R, numberToBytesLE(s, Fp.BYTES));\n        return ensureBytes('result', res, Fp.BYTES * 2); // 64-byte signature\n    }\n    const verifyOpts = VERIFY_DEFAULT;\n    /**\n     * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n     * An extended group equation is checked.\n     */\n    function verify(sig, msg, publicKey, options = verifyOpts) {\n        const { context, zip215 } = options;\n        const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n        sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n        msg = ensureBytes('message', msg);\n        publicKey = ensureBytes('publicKey', publicKey, len);\n        if (zip215 !== undefined)\n            abool('zip215', zip215);\n        if (prehash)\n            msg = prehash(msg); // for ed25519ph, etc\n        const s = bytesToNumberLE(sig.slice(len, 2 * len));\n        let A, R, SB;\n        try {\n            // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n            // zip215=true:  0 <= y < MASK (2^256 for ed25519)\n            // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n            A = Point.fromHex(publicKey, zip215);\n            R = Point.fromHex(sig.slice(0, len), zip215);\n            SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n        }\n        catch (error) {\n            return false;\n        }\n        if (!zip215 && A.isSmallOrder())\n            return false;\n        const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n        const RkA = R.add(A.multiplyUnsafe(k));\n        // Extended group equation\n        // [8][S]B = [8]R + [8][k]A'\n        return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n    }\n    G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n    const utils = {\n        getExtendedPublicKey,\n        /** ed25519 priv keys are uniform 32b. No need to check for modulo bias, like in secp256k1. */\n        randomPrivateKey: () => randomBytes(Fp.BYTES),\n        /**\n         * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n         * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n         * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n         * @param windowSize 2, 4, 8, 16\n         */\n        precompute(windowSize = 8, point = Point.BASE) {\n            point._setWindowSize(windowSize);\n            point.multiply(BigInt(3));\n            return point;\n        },\n    };\n    return {\n        CURVE,\n        getPublicKey,\n        sign,\n        verify,\n        ExtendedPoint: Point,\n        utils,\n    };\n}\n//# sourceMappingURL=edwards.js.map","/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha2';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { pippenger } from \"./abstract/curve.js\";\nimport { twistedEdwards } from \"./abstract/edwards.js\";\nimport { createHasher, expand_message_xmd, } from \"./abstract/hash-to-curve.js\";\nimport { Field, FpInvertBatch, FpSqrtEven, isNegativeLE, mod, pow2 } from \"./abstract/modular.js\";\nimport { montgomery } from \"./abstract/montgomery.js\";\nimport { bytesToHex, bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE, } from \"./abstract/utils.js\";\n// 2n**255n - 19n\nconst ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');\n// √(-1) aka √(a) aka 2^((p-1)/4)\n// Fp.sqrt(Fp.neg(1))\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\nfunction ed25519_pow_2_252_3(x) {\n    // prettier-ignore\n    const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n    const P = ED25519_P;\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P; // x^3, 11\n    const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n    const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n    const b10 = (pow2(b5, _5n, P) * b5) % P;\n    const b20 = (pow2(b10, _10n, P) * b10) % P;\n    const b40 = (pow2(b20, _20n, P) * b20) % P;\n    const b80 = (pow2(b40, _40n, P) * b40) % P;\n    const b160 = (pow2(b80, _80n, P) * b80) % P;\n    const b240 = (pow2(b160, _80n, P) * b80) % P;\n    const b250 = (pow2(b240, _10n, P) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n    // ^ To pow to (p+3)/8, multiply it by x.\n    return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n    // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n    // set the three least significant bits of the first byte\n    bytes[0] &= 248; // 0b1111_1000\n    // and the most significant bit of the last to zero,\n    bytes[31] &= 127; // 0b0111_1111\n    // set the second most significant bit of the last byte to 1\n    bytes[31] |= 64; // 0b0100_0000\n    return bytes;\n}\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n    const P = ED25519_P;\n    const v3 = mod(v * v * v, P); // v³\n    const v7 = mod(v3 * v3 * v, P); // v⁷\n    // (p+3)/8 and (p-5)/8\n    const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n    const vx2 = mod(v * x * x, P); // vx²\n    const root1 = x; // First root candidate\n    const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n    const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n    const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n    const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2; // We return root2 anyway, for const-time\n    if (isNegativeLE(x, P))\n        x = mod(-x, P);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\n/** Weird / bogus points, useful for debugging. */\nexport const ED25519_TORSION_SUBGROUP = [\n    '0100000000000000000000000000000000000000000000000000000000000000',\n    'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n    '0000000000000000000000000000000000000000000000000000000000000080',\n    '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n    'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n    '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n    '0000000000000000000000000000000000000000000000000000000000000000',\n    'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\nconst Fp = /* @__PURE__ */ (() => Field(ED25519_P, undefined, true))();\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n    // Removing Fp.create() will still work, and is 10% faster on sign\n    a: Fp.create(BigInt(-1)),\n    // d is -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))\n    d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n    // Finite field 2n**255n - 19n\n    Fp,\n    // Subgroup order 2n**252n + 27742317777372353535851937790883648493n;\n    n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n    h: _8n,\n    Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n    Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n    hash: sha512,\n    randomBytes,\n    adjustScalarBytes,\n    // dom2\n    // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n    // Constant-time, u/√v\n    uvRatio,\n}))();\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * import { ed25519 } from '@noble/curves/ed25519';\n * const priv = ed25519.utils.randomPrivateKey();\n * const pub = ed25519.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = ed25519.sign(msg, priv);\n * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215\n * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5\n */\nexport const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\nfunction ed25519_domain(data, ctx, phflag) {\n    if (ctx.length > 255)\n        throw new Error('Context is too big');\n    return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nexport const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({\n    ...ed25519Defaults,\n    domain: ed25519_domain,\n}))();\nexport const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {\n    domain: ed25519_domain,\n    prehash: sha512,\n})))();\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * import { x25519 } from '@noble/curves/ed25519';\n * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';\n * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';\n * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases\n * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);\n * x25519.getPublicKey(x25519.utils.randomPrivateKey());\n */\nexport const x25519 = /* @__PURE__ */ (() => montgomery({\n    P: ED25519_P,\n    type: 'x25519',\n    powPminus2: (x) => {\n        const P = ED25519_P;\n        // x^(p-2) aka x^(2^255-21)\n        const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n        return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n    },\n    adjustScalarBytes,\n    randomBytes,\n}))();\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n *   const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n *   const aPriv = x25519.utils.randomPrivateKey();\n *   x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n    const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n    const _1n = BigInt(1);\n    return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n *   const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n *   const aPriv = ed25519.utils.randomPrivateKey();\n *   x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n    const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n    return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8       # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n    const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8       # Integer arithmetic\n    const ELL2_J = BigInt(486662);\n    let tv1 = Fp.sqr(u); //  1.  tv1 = u^2\n    tv1 = Fp.mul(tv1, _2n); //  2.  tv1 = 2 * tv1\n    let xd = Fp.add(tv1, Fp.ONE); //  3.   xd = tv1 + 1         # Nonzero: -1 is square (mod p), tv1 is not\n    let x1n = Fp.neg(ELL2_J); //  4.  x1n = -J              # x1 = x1n / xd = -J / (1 + 2 * u^2)\n    let tv2 = Fp.sqr(xd); //  5.  tv2 = xd^2\n    let gxd = Fp.mul(tv2, xd); //  6.  gxd = tv2 * xd        # gxd = xd^3\n    let gx1 = Fp.mul(tv1, ELL2_J); //  7.  gx1 = J * tv1         # x1n + J * xd\n    gx1 = Fp.mul(gx1, x1n); //  8.  gx1 = gx1 * x1n       # x1n^2 + J * x1n * xd\n    gx1 = Fp.add(gx1, tv2); //  9.  gx1 = gx1 + tv2       # x1n^2 + J * x1n * xd + xd^2\n    gx1 = Fp.mul(gx1, x1n); //  10. gx1 = gx1 * x1n       # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n    let tv3 = Fp.sqr(gxd); //  11. tv3 = gxd^2\n    tv2 = Fp.sqr(tv3); //  12. tv2 = tv3^2           # gxd^4\n    tv3 = Fp.mul(tv3, gxd); //  13. tv3 = tv3 * gxd       # gxd^3\n    tv3 = Fp.mul(tv3, gx1); //  14. tv3 = tv3 * gx1       # gx1 * gxd^3\n    tv2 = Fp.mul(tv2, tv3); //  15. tv2 = tv2 * tv3       # gx1 * gxd^7\n    let y11 = Fp.pow(tv2, ELL2_C4); //  16. y11 = tv2^c4        # (gx1 * gxd^7)^((p - 5) / 8)\n    y11 = Fp.mul(y11, tv3); //  17. y11 = y11 * tv3       # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n    let y12 = Fp.mul(y11, ELL2_C3); //  18. y12 = y11 * c3\n    tv2 = Fp.sqr(y11); //  19. tv2 = y11^2\n    tv2 = Fp.mul(tv2, gxd); //  20. tv2 = tv2 * gxd\n    let e1 = Fp.eql(tv2, gx1); //  21.  e1 = tv2 == gx1\n    let y1 = Fp.cmov(y12, y11, e1); //  22.  y1 = CMOV(y12, y11, e1)  # If g(x1) is square, this is its sqrt\n    let x2n = Fp.mul(x1n, tv1); //  23. x2n = x1n * tv1       # x2 = x2n / xd = 2 * u^2 * x1n / xd\n    let y21 = Fp.mul(y11, u); //  24. y21 = y11 * u\n    y21 = Fp.mul(y21, ELL2_C2); //  25. y21 = y21 * c2\n    let y22 = Fp.mul(y21, ELL2_C3); //  26. y22 = y21 * c3\n    let gx2 = Fp.mul(gx1, tv1); //  27. gx2 = gx1 * tv1       # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n    tv2 = Fp.sqr(y21); //  28. tv2 = y21^2\n    tv2 = Fp.mul(tv2, gxd); //  29. tv2 = tv2 * gxd\n    let e2 = Fp.eql(tv2, gx2); //  30.  e2 = tv2 == gx2\n    let y2 = Fp.cmov(y22, y21, e2); //  31.  y2 = CMOV(y22, y21, e2)  # If g(x2) is square, this is its sqrt\n    tv2 = Fp.sqr(y1); //  32. tv2 = y1^2\n    tv2 = Fp.mul(tv2, gxd); //  33. tv2 = tv2 * gxd\n    let e3 = Fp.eql(tv2, gx1); //  34.  e3 = tv2 == gx1\n    let xn = Fp.cmov(x2n, x1n, e3); //  35.  xn = CMOV(x2n, x1n, e3)  # If e3, x = x1, else x = x2\n    let y = Fp.cmov(y2, y1, e3); //  36.   y = CMOV(y2, y1, e3)    # If e3, y = y1, else y = y2\n    let e4 = Fp.isOdd(y); //  37.  e4 = sgn0(y) == 1        # Fix sign of y\n    y = Fp.cmov(y, Fp.neg(y), e3 !== e4); //  38.   y = CMOV(y, -y, e3 XOR e4)\n    return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; //  39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n    const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); //  1.  (xMn, xMd, yMn, yMd) =\n    // map_to_curve_elligator2_curve25519(u)\n    let xn = Fp.mul(xMn, yMd); //  2.  xn = xMn * yMd\n    xn = Fp.mul(xn, ELL2_C1_EDWARDS); //  3.  xn = xn * c1\n    let xd = Fp.mul(xMd, yMn); //  4.  xd = xMd * yMn    # xn / xd = c1 * xM / yM\n    let yn = Fp.sub(xMn, xMd); //  5.  yn = xMn - xMd\n    let yd = Fp.add(xMn, xMd); //  6.  yd = xMn + xMd    # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n    let tv1 = Fp.mul(xd, yd); //  7. tv1 = xd * yd\n    let e = Fp.eql(tv1, Fp.ZERO); //  8.   e = tv1 == 0\n    xn = Fp.cmov(xn, Fp.ZERO, e); //  9.  xn = CMOV(xn, 0, e)\n    xd = Fp.cmov(xd, Fp.ONE, e); //  10. xd = CMOV(xd, 1, e)\n    yn = Fp.cmov(yn, Fp.ONE, e); //  11. yn = CMOV(yn, 1, e)\n    yd = Fp.cmov(yd, Fp.ONE, e); //  12. yd = CMOV(yd, 1, e)\n    const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division\n    return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; //  13. return (xn, xd, yn, yd)\n}\nexport const ed25519_hasher = /* @__PURE__ */ (() => createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n    DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n    encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n    p: Fp.ORDER,\n    m: 1,\n    k: 128,\n    expand: 'xmd',\n    hash: sha512,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => ed25519_hasher.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => ed25519_hasher.encodeToCurve)();\nfunction aristp(other) {\n    if (!(other instanceof RistPoint))\n        throw new Error('RistrettoPoint expected');\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n/**\n * Computes Elligator map for Ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n * the [website](https://ristretto.group/formulas/elligator.html).\n */\nfunction calcElligatorRistrettoMap(r0) {\n    const { d } = ed25519.CURVE;\n    const P = ed25519.CURVE.Fp.ORDER;\n    const mod = ed25519.CURVE.Fp.create;\n    const r = mod(SQRT_M1 * r0 * r0); // 1\n    const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n    let c = BigInt(-1); // 3\n    const D = mod((c - d * r) * mod(r + d)); // 4\n    let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n    let s_ = mod(s * r0); // 6\n    if (!isNegativeLE(s_, P))\n        s_ = mod(-s_);\n    if (!Ns_D_is_sq)\n        s = s_; // 7\n    if (!Ns_D_is_sq)\n        c = r; // 8\n    const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n    const s2 = s * s;\n    const W0 = mod((s + s) * D); // 10\n    const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n    const W2 = mod(_1n - s2); // 12\n    const W3 = mod(_1n + s2); // 13\n    return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nclass RistPoint {\n    // Private property to discourage combining ExtendedPoint + RistrettoPoint\n    // Always use Ristretto encoding/decoding instead.\n    constructor(ep) {\n        this.ep = ep;\n    }\n    static fromAffine(ap) {\n        return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n    }\n    /**\n     * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n     * The hash-to-group operation applies Elligator twice and adds the results.\n     * **Note:** this is one-way map, there is no conversion from point to hash.\n     * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n     * the [website](https://ristretto.group/formulas/elligator.html).\n     * @param hex 64-byte output of a hash function\n     */\n    static hashToCurve(hex) {\n        hex = ensureBytes('ristrettoHash', hex, 64);\n        const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n        const R1 = calcElligatorRistrettoMap(r1);\n        const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n        const R2 = calcElligatorRistrettoMap(r2);\n        return new RistPoint(R1.add(R2));\n    }\n    /**\n     * Converts ristretto-encoded string to ristretto point.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).\n     * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n     */\n    static fromHex(hex) {\n        hex = ensureBytes('ristrettoHex', hex, 32);\n        const { a, d } = ed25519.CURVE;\n        const P = ed25519.CURVE.Fp.ORDER;\n        const mod = ed25519.CURVE.Fp.create;\n        const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n        const s = bytes255ToNumberLE(hex);\n        // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n        // 3. Check that s is non-negative, or else abort\n        if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P))\n            throw new Error(emsg);\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2); // 4 (a is -1)\n        const u2 = mod(_1n - a * s2); // 5\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2); // 6\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n        const Dx = mod(I * u2); // 8\n        const Dy = mod(I * Dx * v); // 9\n        let x = mod((s + s) * Dx); // 10\n        if (isNegativeLE(x, P))\n            x = mod(-x); // 10\n        const y = mod(u1 * Dy); // 11\n        const t = mod(x * y); // 12\n        if (!isValid || isNegativeLE(t, P) || y === _0n)\n            throw new Error(emsg);\n        return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n    }\n    static msm(points, scalars) {\n        const Fn = Field(ed25519.CURVE.n, ed25519.CURVE.nBitLength);\n        return pippenger(RistPoint, Fn, points, scalars);\n    }\n    /**\n     * Encodes ristretto point to Uint8Array.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).\n     */\n    toRawBytes() {\n        let { ex: x, ey: y, ez: z, et: t } = this.ep;\n        const P = ed25519.CURVE.Fp.ORDER;\n        const mod = ed25519.CURVE.Fp.create;\n        const u1 = mod(mod(z + y) * mod(z - y)); // 1\n        const u2 = mod(x * y); // 2\n        // Square root always exists\n        const u2sq = mod(u2 * u2);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n        const D1 = mod(invsqrt * u1); // 4\n        const D2 = mod(invsqrt * u2); // 5\n        const zInv = mod(D1 * D2 * t); // 6\n        let D; // 7\n        if (isNegativeLE(t * zInv, P)) {\n            let _x = mod(y * SQRT_M1);\n            let _y = mod(x * SQRT_M1);\n            x = _x;\n            y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2; // 8\n        }\n        if (isNegativeLE(x * zInv, P))\n            y = mod(-y); // 9\n        let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n        if (isNegativeLE(s, P))\n            s = mod(-s);\n        return numberToBytesLE(s, 32); // 11\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    /**\n     * Compares two Ristretto points.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).\n     */\n    equals(other) {\n        aristp(other);\n        const { ex: X1, ey: Y1 } = this.ep;\n        const { ex: X2, ey: Y2 } = other.ep;\n        const mod = ed25519.CURVE.Fp.create;\n        // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n        const one = mod(X1 * Y2) === mod(Y1 * X2);\n        const two = mod(Y1 * Y2) === mod(X1 * X2);\n        return one || two;\n    }\n    add(other) {\n        aristp(other);\n        return new RistPoint(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        aristp(other);\n        return new RistPoint(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return new RistPoint(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return new RistPoint(this.ep.multiplyUnsafe(scalar));\n    }\n    double() {\n        return new RistPoint(this.ep.double());\n    }\n    negate() {\n        return new RistPoint(this.ep.negate());\n    }\n}\n/**\n * Wrapper over Edwards Point for ristretto255 from\n * [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n    if (!RistPoint.BASE)\n        RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n    if (!RistPoint.ZERO)\n        RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n    return RistPoint;\n})();\n/**\n * hash-to-curve for ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B).\n */\nexport const hashToRistretto255 = (msg, options) => {\n    const d = options.DST;\n    const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n    const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n    const P = RistPoint.hashToCurve(uniform_bytes);\n    return P;\n};\n/** @deprecated */\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n//# sourceMappingURL=ed25519.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n    if (!Array.isArray(arr))\n        return false;\n    if (arr.length === 0)\n        return true;\n    if (isString) {\n        return arr.every((item) => typeof item === 'string');\n    }\n    else {\n        return arr.every((item) => Number.isSafeInteger(item));\n    }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n    if (typeof input !== 'function')\n        throw new Error('function expected');\n    return true;\n}\nfunction astr(label, input) {\n    if (typeof input !== 'string')\n        throw new Error(`${label}: string expected`);\n    return true;\n}\nfunction anumber(n) {\n    if (!Number.isSafeInteger(n))\n        throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n    if (!Array.isArray(input))\n        throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n    if (!isArrayOf(true, input))\n        throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n    if (!isArrayOf(false, input))\n        throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n    const id = (a) => a;\n    // Wrap call in closure so JIT can inline calls\n    const wrap = (a, b) => (c) => a(b(c));\n    // Construct chain of args[-1].encode(args[-2].encode([...]))\n    const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n    // Construct chain of args[0].decode(args[1].decode(...))\n    const decode = args.map((x) => x.decode).reduce(wrap, id);\n    return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n    // mapping 1 to \"b\"\n    const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n    const len = lettersA.length;\n    astrArr('alphabet', lettersA);\n    // mapping \"b\" to 1\n    const indexes = new Map(lettersA.map((l, i) => [l, i]));\n    return {\n        encode: (digits) => {\n            aArr(digits);\n            return digits.map((i) => {\n                if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n                    throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n                return lettersA[i];\n            });\n        },\n        decode: (input) => {\n            aArr(input);\n            return input.map((letter) => {\n                astr('alphabet.decode', letter);\n                const i = indexes.get(letter);\n                if (i === undefined)\n                    throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n                return i;\n            });\n        },\n    };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n    astr('join', separator);\n    return {\n        encode: (from) => {\n            astrArr('join.decode', from);\n            return from.join(separator);\n        },\n        decode: (to) => {\n            astr('join.decode', to);\n            return to.split(separator);\n        },\n    };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n    anumber(bits);\n    astr('padding', chr);\n    return {\n        encode(data) {\n            astrArr('padding.encode', data);\n            while ((data.length * bits) % 8)\n                data.push(chr);\n            return data;\n        },\n        decode(input) {\n            astrArr('padding.decode', input);\n            let end = input.length;\n            if ((end * bits) % 8)\n                throw new Error('padding: invalid, string should have whole number of bytes');\n            for (; end > 0 && input[end - 1] === chr; end--) {\n                const last = end - 1;\n                const byte = last * bits;\n                if (byte % 8 === 0)\n                    throw new Error('padding: invalid, string has too much padding');\n            }\n            return input.slice(0, end);\n        },\n    };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n    afn(fn);\n    return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n    // base 1 is impossible\n    if (from < 2)\n        throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n    if (to < 2)\n        throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n    aArr(data);\n    if (!data.length)\n        return [];\n    let pos = 0;\n    const res = [];\n    const digits = Array.from(data, (d) => {\n        anumber(d);\n        if (d < 0 || d >= from)\n            throw new Error(`invalid integer: ${d}`);\n        return d;\n    });\n    const dlen = digits.length;\n    while (true) {\n        let carry = 0;\n        let done = true;\n        for (let i = pos; i < dlen; i++) {\n            const digit = digits[i];\n            const fromCarry = from * carry;\n            const digitBase = fromCarry + digit;\n            if (!Number.isSafeInteger(digitBase) ||\n                fromCarry / from !== carry ||\n                digitBase - digit !== fromCarry) {\n                throw new Error('convertRadix: carry overflow');\n            }\n            const div = digitBase / to;\n            carry = digitBase % to;\n            const rounded = Math.floor(div);\n            digits[i] = rounded;\n            if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n                throw new Error('convertRadix: carry overflow');\n            if (!done)\n                continue;\n            else if (!rounded)\n                pos = i;\n            else\n                done = false;\n        }\n        res.push(carry);\n        if (done)\n            break;\n    }\n    for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n        res.push(0);\n    return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n    let res = [];\n    for (let i = 0; i < 40; i++)\n        res.push(2 ** i);\n    return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n    aArr(data);\n    if (from <= 0 || from > 32)\n        throw new Error(`convertRadix2: wrong from=${from}`);\n    if (to <= 0 || to > 32)\n        throw new Error(`convertRadix2: wrong to=${to}`);\n    if (radix2carry(from, to) > 32) {\n        throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n    }\n    let carry = 0;\n    let pos = 0; // bitwise position in current element\n    const max = powers[from];\n    const mask = powers[to] - 1;\n    const res = [];\n    for (const n of data) {\n        anumber(n);\n        if (n >= max)\n            throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n        carry = (carry << from) | n;\n        if (pos + from > 32)\n            throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n        pos += from;\n        for (; pos >= to; pos -= to)\n            res.push(((carry >> (pos - to)) & mask) >>> 0);\n        const pow = powers[pos];\n        if (pow === undefined)\n            throw new Error('invalid carry');\n        carry &= pow - 1; // clean carry, otherwise it will cause overflow\n    }\n    carry = (carry << (to - pos)) & mask;\n    if (!padding && pos >= from)\n        throw new Error('Excess padding');\n    if (!padding && carry > 0)\n        throw new Error(`Non-zero padding: ${carry}`);\n    if (padding && pos > 0)\n        res.push(carry >>> 0);\n    return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n    anumber(num);\n    const _256 = 2 ** 8;\n    return {\n        encode: (bytes) => {\n            if (!isBytes(bytes))\n                throw new Error('radix.encode input should be Uint8Array');\n            return convertRadix(Array.from(bytes), _256, num);\n        },\n        decode: (digits) => {\n            anumArr('radix.decode', digits);\n            return Uint8Array.from(convertRadix(digits, num, _256));\n        },\n    };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n    anumber(bits);\n    if (bits <= 0 || bits > 32)\n        throw new Error('radix2: bits should be in (0..32]');\n    if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n        throw new Error('radix2: carry overflow');\n    return {\n        encode: (bytes) => {\n            if (!isBytes(bytes))\n                throw new Error('radix2.encode input should be Uint8Array');\n            return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n        },\n        decode: (digits) => {\n            anumArr('radix2.decode', digits);\n            return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n        },\n    };\n}\nfunction unsafeWrapper(fn) {\n    afn(fn);\n    return function (...args) {\n        try {\n            return fn.apply(null, args);\n        }\n        catch (e) { }\n    };\n}\nfunction checksum(len, fn) {\n    anumber(len);\n    afn(fn);\n    return {\n        encode(data) {\n            if (!isBytes(data))\n                throw new Error('checksum.encode: input should be Uint8Array');\n            const sum = fn(data).slice(0, len);\n            const res = new Uint8Array(data.length + len);\n            res.set(data);\n            res.set(sum, data.length);\n            return res;\n        },\n        decode(data) {\n            if (!isBytes(data))\n                throw new Error('checksum.decode: input should be Uint8Array');\n            const payload = data.slice(0, -len);\n            const oldChecksum = data.slice(-len);\n            const newChecksum = fn(payload).slice(0, len);\n            for (let i = 0; i < len; i++)\n                if (newChecksum[i] !== oldChecksum[i])\n                    throw new Error('Invalid checksum');\n            return payload;\n        },\n    };\n}\n// prettier-ignore\nexport const utils = {\n    alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n    typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n    astr('base64', s);\n    const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n    const alphabet = isUrl ? 'base64url' : 'base64';\n    if (s.length > 0 && !re.test(s))\n        throw new Error('invalid base64');\n    return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n    encode(b) { abytes(b); return b.toBase64(); },\n    decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n    encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n    decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n    encode(data) {\n        let res = '';\n        for (let i = 0; i < data.length; i += 8) {\n            const block = data.subarray(i, i + 8);\n            res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n        }\n        return res;\n    },\n    decode(str) {\n        let res = [];\n        for (let i = 0; i < str.length; i += 11) {\n            const slice = str.slice(i, i + 11);\n            const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n            const block = base58.decode(slice);\n            for (let j = 0; j < block.length - blockLen; j++) {\n                if (block[j] !== 0)\n                    throw new Error('base58xmr: wrong padding');\n            }\n            res = res.concat(Array.from(block.slice(block.length - blockLen)));\n        }\n        return Uint8Array.from(res);\n    },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n    const b = pre >> 25;\n    let chk = (pre & 0x1ffffff) << 5;\n    for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n        if (((b >> i) & 1) === 1)\n            chk ^= POLYMOD_GENERATORS[i];\n    }\n    return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n    const len = prefix.length;\n    let chk = 1;\n    for (let i = 0; i < len; i++) {\n        const c = prefix.charCodeAt(i);\n        if (c < 33 || c > 126)\n            throw new Error(`Invalid prefix (${prefix})`);\n        chk = bech32Polymod(chk) ^ (c >> 5);\n    }\n    chk = bech32Polymod(chk);\n    for (let i = 0; i < len; i++)\n        chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n    for (let v of words)\n        chk = bech32Polymod(chk) ^ v;\n    for (let i = 0; i < 6; i++)\n        chk = bech32Polymod(chk);\n    chk ^= encodingConst;\n    return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n    const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n    const _words = radix2(5);\n    const fromWords = _words.decode;\n    const toWords = _words.encode;\n    const fromWordsUnsafe = unsafeWrapper(fromWords);\n    function encode(prefix, words, limit = 90) {\n        astr('bech32.encode prefix', prefix);\n        if (isBytes(words))\n            words = Array.from(words);\n        anumArr('bech32.encode', words);\n        const plen = prefix.length;\n        if (plen === 0)\n            throw new TypeError(`Invalid prefix length ${plen}`);\n        const actualLength = plen + 7 + words.length;\n        if (limit !== false && actualLength > limit)\n            throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n        const lowered = prefix.toLowerCase();\n        const sum = bechChecksum(lowered, words, ENCODING_CONST);\n        return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n    }\n    function decode(str, limit = 90) {\n        astr('bech32.decode input', str);\n        const slen = str.length;\n        if (slen < 8 || (limit !== false && slen > limit))\n            throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n        // don't allow mixed case\n        const lowered = str.toLowerCase();\n        if (str !== lowered && str !== str.toUpperCase())\n            throw new Error(`String must be lowercase or uppercase`);\n        const sepIndex = lowered.lastIndexOf('1');\n        if (sepIndex === 0 || sepIndex === -1)\n            throw new Error(`Letter \"1\" must be present between prefix and data only`);\n        const prefix = lowered.slice(0, sepIndex);\n        const data = lowered.slice(sepIndex + 1);\n        if (data.length < 6)\n            throw new Error('Data must be at least 6 characters long');\n        const words = BECH_ALPHABET.decode(data).slice(0, -6);\n        const sum = bechChecksum(prefix, words, ENCODING_CONST);\n        if (!data.endsWith(sum))\n            throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n        return { prefix, words };\n    }\n    const decodeUnsafe = unsafeWrapper(decode);\n    function decodeToBytes(str) {\n        const { prefix, words } = decode(str, false);\n        return { prefix, words, bytes: fromWords(words) };\n    }\n    function encodeFromBytes(prefix, bytes) {\n        return encode(prefix, toWords(bytes));\n    }\n    return {\n        encode,\n        decode,\n        encodeFromBytes,\n        decodeToBytes,\n        decodeUnsafe,\n        fromWords,\n        fromWordsUnsafe,\n        toWords,\n    };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n    encode: (data) => new TextDecoder().decode(data),\n    decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n    typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n    encode(data) { abytes(data); return data.toHex(); },\n    decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n    ? hexBuiltin\n    : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n        if (typeof s !== 'string' || s.length % 2 !== 0)\n            throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n        return s.toLowerCase();\n    }));\n// prettier-ignore\nconst CODERS = {\n    utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n    if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (!isBytes(bytes))\n        throw new TypeError('bytesToString() expects Uint8Array');\n    return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n    if (!CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (typeof str !== 'string')\n        throw new TypeError('stringToBytes() expects string');\n    return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","import { base58 } from \"@scure/base\";\nconst toBase58 = (buffer) => base58.encode(buffer);\nconst fromBase58 = (str) => base58.decode(str);\nexport {\n  fromBase58,\n  toBase58\n};\n//# sourceMappingURL=b58.js.map\n","function fromBase64(base64String) {\n  return Uint8Array.from(atob(base64String), (char) => char.charCodeAt(0));\n}\nconst CHUNK_SIZE = 8192;\nfunction toBase64(bytes) {\n  if (bytes.length < CHUNK_SIZE) {\n    return btoa(String.fromCharCode(...bytes));\n  }\n  let output = \"\";\n  for (var i = 0; i < bytes.length; i += CHUNK_SIZE) {\n    const chunk = bytes.slice(i, i + CHUNK_SIZE);\n    output += String.fromCharCode(...chunk);\n  }\n  return btoa(output);\n}\nexport {\n  fromBase64,\n  toBase64\n};\n//# sourceMappingURL=b64.js.map\n","function fromHex(hexStr) {\n  const normalized = hexStr.startsWith(\"0x\") ? hexStr.slice(2) : hexStr;\n  const padded = normalized.length % 2 === 0 ? normalized : `0${normalized}`;\n  const intArr = padded.match(/[0-9a-fA-F]{2}/g)?.map((byte) => parseInt(byte, 16)) ?? [];\n  if (intArr.length !== padded.length / 2) {\n    throw new Error(`Invalid hex string ${hexStr}`);\n  }\n  return Uint8Array.from(intArr);\n}\nfunction toHex(bytes) {\n  return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n}\nexport {\n  fromHex,\n  toHex\n};\n//# sourceMappingURL=hex.js.map\n","function ulebEncode(num) {\n  const arr = [];\n  let len = 0;\n  if (num === 0) {\n    return [0];\n  }\n  while (num > 0) {\n    arr[len] = num & 127;\n    if (num >>= 7) {\n      arr[len] |= 128;\n    }\n    len += 1;\n  }\n  return arr;\n}\nfunction ulebDecode(arr) {\n  let total = 0;\n  let shift = 0;\n  let len = 0;\n  while (true) {\n    const byte = arr[len];\n    len += 1;\n    total |= (byte & 127) << shift;\n    if ((byte & 128) === 0) {\n      break;\n    }\n    shift += 7;\n  }\n  return {\n    value: total,\n    length: len\n  };\n}\nexport {\n  ulebDecode,\n  ulebEncode\n};\n//# sourceMappingURL=uleb.js.map\n","import { ulebDecode } from \"./uleb.js\";\nclass BcsReader {\n  /**\n   * @param {Uint8Array} data Data to use as a buffer.\n   */\n  constructor(data) {\n    this.bytePosition = 0;\n    this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n  }\n  /**\n   * Shift current cursor position by `bytes`.\n   *\n   * @param {Number} bytes Number of bytes to\n   * @returns {this} Self for possible chaining.\n   */\n  shift(bytes) {\n    this.bytePosition += bytes;\n    return this;\n  }\n  /**\n   * Read U8 value from the buffer and shift cursor by 1.\n   * @returns\n   */\n  read8() {\n    const value = this.dataView.getUint8(this.bytePosition);\n    this.shift(1);\n    return value;\n  }\n  /**\n   * Read U16 value from the buffer and shift cursor by 2.\n   * @returns\n   */\n  read16() {\n    const value = this.dataView.getUint16(this.bytePosition, true);\n    this.shift(2);\n    return value;\n  }\n  /**\n   * Read U32 value from the buffer and shift cursor by 4.\n   * @returns\n   */\n  read32() {\n    const value = this.dataView.getUint32(this.bytePosition, true);\n    this.shift(4);\n    return value;\n  }\n  /**\n   * Read U64 value from the buffer and shift cursor by 8.\n   * @returns\n   */\n  read64() {\n    const value1 = this.read32();\n    const value2 = this.read32();\n    const result = value2.toString(16) + value1.toString(16).padStart(8, \"0\");\n    return BigInt(\"0x\" + result).toString(10);\n  }\n  /**\n   * Read U128 value from the buffer and shift cursor by 16.\n   */\n  read128() {\n    const value1 = BigInt(this.read64());\n    const value2 = BigInt(this.read64());\n    const result = value2.toString(16) + value1.toString(16).padStart(16, \"0\");\n    return BigInt(\"0x\" + result).toString(10);\n  }\n  /**\n   * Read U128 value from the buffer and shift cursor by 32.\n   * @returns\n   */\n  read256() {\n    const value1 = BigInt(this.read128());\n    const value2 = BigInt(this.read128());\n    const result = value2.toString(16) + value1.toString(16).padStart(32, \"0\");\n    return BigInt(\"0x\" + result).toString(10);\n  }\n  /**\n   * Read `num` number of bytes from the buffer and shift cursor by `num`.\n   * @param num Number of bytes to read.\n   */\n  readBytes(num) {\n    const start = this.bytePosition + this.dataView.byteOffset;\n    const value = new Uint8Array(this.dataView.buffer, start, num);\n    this.shift(num);\n    return value;\n  }\n  /**\n   * Read ULEB value - an integer of varying size. Used for enum indexes and\n   * vector lengths.\n   * @returns {Number} The ULEB value.\n   */\n  readULEB() {\n    const start = this.bytePosition + this.dataView.byteOffset;\n    const buffer = new Uint8Array(this.dataView.buffer, start);\n    const { value, length } = ulebDecode(buffer);\n    this.shift(length);\n    return value;\n  }\n  /**\n   * Read a BCS vector: read a length and then apply function `cb` X times\n   * where X is the length of the vector, defined as ULEB in BCS bytes.\n   * @param cb Callback to process elements of vector.\n   * @returns {Array<Any>} Array of the resulting values, returned by callback.\n   */\n  readVec(cb) {\n    const length = this.readULEB();\n    const result = [];\n    for (let i = 0; i < length; i++) {\n      result.push(cb(this, i, length));\n    }\n    return result;\n  }\n}\nexport {\n  BcsReader\n};\n//# sourceMappingURL=reader.js.map\n","import { fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from \"@mysten/utils\";\nfunction encodeStr(data, encoding) {\n  switch (encoding) {\n    case \"base58\":\n      return toBase58(data);\n    case \"base64\":\n      return toBase64(data);\n    case \"hex\":\n      return toHex(data);\n    default:\n      throw new Error(\"Unsupported encoding, supported values are: base64, hex\");\n  }\n}\nfunction decodeStr(data, encoding) {\n  switch (encoding) {\n    case \"base58\":\n      return fromBase58(data);\n    case \"base64\":\n      return fromBase64(data);\n    case \"hex\":\n      return fromHex(data);\n    default:\n      throw new Error(\"Unsupported encoding, supported values are: base64, hex\");\n  }\n}\nfunction splitGenericParameters(str, genericSeparators = [\"<\", \">\"]) {\n  const [left, right] = genericSeparators;\n  const tok = [];\n  let word = \"\";\n  let nestedAngleBrackets = 0;\n  for (let i = 0; i < str.length; i++) {\n    const char = str[i];\n    if (char === left) {\n      nestedAngleBrackets++;\n    }\n    if (char === right) {\n      nestedAngleBrackets--;\n    }\n    if (nestedAngleBrackets === 0 && char === \",\") {\n      tok.push(word.trim());\n      word = \"\";\n      continue;\n    }\n    word += char;\n  }\n  tok.push(word.trim());\n  return tok;\n}\nexport {\n  decodeStr,\n  encodeStr,\n  splitGenericParameters\n};\n//# sourceMappingURL=utils.js.map\n","import { ulebEncode } from \"./uleb.js\";\nimport { encodeStr } from \"./utils.js\";\nclass BcsWriter {\n  constructor({\n    initialSize = 1024,\n    maxSize = Infinity,\n    allocateSize = 1024\n  } = {}) {\n    this.bytePosition = 0;\n    this.size = initialSize;\n    this.maxSize = maxSize;\n    this.allocateSize = allocateSize;\n    this.dataView = new DataView(new ArrayBuffer(initialSize));\n  }\n  ensureSizeOrGrow(bytes) {\n    const requiredSize = this.bytePosition + bytes;\n    if (requiredSize > this.size) {\n      const nextSize = Math.min(this.maxSize, this.size + this.allocateSize);\n      if (requiredSize > nextSize) {\n        throw new Error(\n          `Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${requiredSize}`\n        );\n      }\n      this.size = nextSize;\n      const nextBuffer = new ArrayBuffer(this.size);\n      new Uint8Array(nextBuffer).set(new Uint8Array(this.dataView.buffer));\n      this.dataView = new DataView(nextBuffer);\n    }\n  }\n  /**\n   * Shift current cursor position by `bytes`.\n   *\n   * @param {Number} bytes Number of bytes to\n   * @returns {this} Self for possible chaining.\n   */\n  shift(bytes) {\n    this.bytePosition += bytes;\n    return this;\n  }\n  /**\n   * Write a U8 value into a buffer and shift cursor position by 1.\n   * @param {Number} value Value to write.\n   * @returns {this}\n   */\n  write8(value) {\n    this.ensureSizeOrGrow(1);\n    this.dataView.setUint8(this.bytePosition, Number(value));\n    return this.shift(1);\n  }\n  /**\n   * Write a U16 value into a buffer and shift cursor position by 2.\n   * @param {Number} value Value to write.\n   * @returns {this}\n   */\n  write16(value) {\n    this.ensureSizeOrGrow(2);\n    this.dataView.setUint16(this.bytePosition, Number(value), true);\n    return this.shift(2);\n  }\n  /**\n   * Write a U32 value into a buffer and shift cursor position by 4.\n   * @param {Number} value Value to write.\n   * @returns {this}\n   */\n  write32(value) {\n    this.ensureSizeOrGrow(4);\n    this.dataView.setUint32(this.bytePosition, Number(value), true);\n    return this.shift(4);\n  }\n  /**\n   * Write a U64 value into a buffer and shift cursor position by 8.\n   * @param {bigint} value Value to write.\n   * @returns {this}\n   */\n  write64(value) {\n    toLittleEndian(BigInt(value), 8).forEach((el) => this.write8(el));\n    return this;\n  }\n  /**\n   * Write a U128 value into a buffer and shift cursor position by 16.\n   *\n   * @param {bigint} value Value to write.\n   * @returns {this}\n   */\n  write128(value) {\n    toLittleEndian(BigInt(value), 16).forEach((el) => this.write8(el));\n    return this;\n  }\n  /**\n   * Write a U256 value into a buffer and shift cursor position by 16.\n   *\n   * @param {bigint} value Value to write.\n   * @returns {this}\n   */\n  write256(value) {\n    toLittleEndian(BigInt(value), 32).forEach((el) => this.write8(el));\n    return this;\n  }\n  /**\n   * Write a ULEB value into a buffer and shift cursor position by number of bytes\n   * written.\n   * @param {Number} value Value to write.\n   * @returns {this}\n   */\n  writeULEB(value) {\n    ulebEncode(value).forEach((el) => this.write8(el));\n    return this;\n  }\n  /**\n   * Write a vector into a buffer by first writing the vector length and then calling\n   * a callback on each passed value.\n   *\n   * @param {Array<Any>} vector Array of elements to write.\n   * @param {WriteVecCb} cb Callback to call on each element of the vector.\n   * @returns {this}\n   */\n  writeVec(vector, cb) {\n    this.writeULEB(vector.length);\n    Array.from(vector).forEach((el, i) => cb(this, el, i, vector.length));\n    return this;\n  }\n  /**\n   * Adds support for iterations over the object.\n   * @returns {Uint8Array}\n   */\n  *[Symbol.iterator]() {\n    for (let i = 0; i < this.bytePosition; i++) {\n      yield this.dataView.getUint8(i);\n    }\n    return this.toBytes();\n  }\n  /**\n   * Get underlying buffer taking only value bytes (in case initial buffer size was bigger).\n   * @returns {Uint8Array} Resulting bcs.\n   */\n  toBytes() {\n    return new Uint8Array(this.dataView.buffer.slice(0, this.bytePosition));\n  }\n  /**\n   * Represent data as 'hex' or 'base64'\n   * @param encoding Encoding to use: 'base64' or 'hex'\n   */\n  toString(encoding) {\n    return encodeStr(this.toBytes(), encoding);\n  }\n}\nfunction toLittleEndian(bigint, size) {\n  const result = new Uint8Array(size);\n  let i = 0;\n  while (bigint > 0) {\n    result[i] = Number(bigint % BigInt(256));\n    bigint = bigint / BigInt(256);\n    i += 1;\n  }\n  return result;\n}\nexport {\n  BcsWriter\n};\n//# sourceMappingURL=writer.js.map\n","var __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar _write, _serialize, _schema, _bytes;\nimport { fromBase58, fromBase64, toBase58, toBase64, fromHex, toHex } from \"@mysten/utils\";\nimport { BcsReader } from \"./reader.js\";\nimport { ulebEncode } from \"./uleb.js\";\nimport { BcsWriter } from \"./writer.js\";\nconst _BcsType = class _BcsType {\n  constructor(options) {\n    __privateAdd(this, _write);\n    __privateAdd(this, _serialize);\n    this.name = options.name;\n    this.read = options.read;\n    this.serializedSize = options.serializedSize ?? (() => null);\n    __privateSet(this, _write, options.write);\n    __privateSet(this, _serialize, options.serialize ?? ((value, options2) => {\n      const writer = new BcsWriter({\n        initialSize: this.serializedSize(value) ?? void 0,\n        ...options2\n      });\n      __privateGet(this, _write).call(this, value, writer);\n      return writer.toBytes();\n    }));\n    this.validate = options.validate ?? (() => {\n    });\n  }\n  write(value, writer) {\n    this.validate(value);\n    __privateGet(this, _write).call(this, value, writer);\n  }\n  serialize(value, options) {\n    this.validate(value);\n    return new SerializedBcs(this, __privateGet(this, _serialize).call(this, value, options));\n  }\n  parse(bytes) {\n    const reader = new BcsReader(bytes);\n    return this.read(reader);\n  }\n  fromHex(hex) {\n    return this.parse(fromHex(hex));\n  }\n  fromBase58(b64) {\n    return this.parse(fromBase58(b64));\n  }\n  fromBase64(b64) {\n    return this.parse(fromBase64(b64));\n  }\n  transform({\n    name,\n    input,\n    output,\n    validate\n  }) {\n    return new _BcsType({\n      name: name ?? this.name,\n      read: (reader) => output ? output(this.read(reader)) : this.read(reader),\n      write: (value, writer) => __privateGet(this, _write).call(this, input ? input(value) : value, writer),\n      serializedSize: (value) => this.serializedSize(input ? input(value) : value),\n      serialize: (value, options) => __privateGet(this, _serialize).call(this, input ? input(value) : value, options),\n      validate: (value) => {\n        validate?.(value);\n        this.validate(input ? input(value) : value);\n      }\n    });\n  }\n};\n_write = new WeakMap();\n_serialize = new WeakMap();\nlet BcsType = _BcsType;\nconst SERIALIZED_BCS_BRAND = Symbol.for(\"@mysten/serialized-bcs\");\nfunction isSerializedBcs(obj) {\n  return !!obj && typeof obj === \"object\" && obj[SERIALIZED_BCS_BRAND] === true;\n}\nclass SerializedBcs {\n  constructor(type, schema) {\n    __privateAdd(this, _schema);\n    __privateAdd(this, _bytes);\n    __privateSet(this, _schema, type);\n    __privateSet(this, _bytes, schema);\n  }\n  // Used to brand SerializedBcs so that they can be identified, even between multiple copies\n  // of the @mysten/bcs package are installed\n  get [SERIALIZED_BCS_BRAND]() {\n    return true;\n  }\n  toBytes() {\n    return __privateGet(this, _bytes);\n  }\n  toHex() {\n    return toHex(__privateGet(this, _bytes));\n  }\n  toBase64() {\n    return toBase64(__privateGet(this, _bytes));\n  }\n  toBase58() {\n    return toBase58(__privateGet(this, _bytes));\n  }\n  parse() {\n    return __privateGet(this, _schema).parse(__privateGet(this, _bytes));\n  }\n}\n_schema = new WeakMap();\n_bytes = new WeakMap();\nfunction fixedSizeBcsType({\n  size,\n  ...options\n}) {\n  return new BcsType({\n    ...options,\n    serializedSize: () => size\n  });\n}\nfunction uIntBcsType({\n  readMethod,\n  writeMethod,\n  ...options\n}) {\n  return fixedSizeBcsType({\n    ...options,\n    read: (reader) => reader[readMethod](),\n    write: (value, writer) => writer[writeMethod](value),\n    validate: (value) => {\n      if (value < 0 || value > options.maxValue) {\n        throw new TypeError(\n          `Invalid ${options.name} value: ${value}. Expected value in range 0-${options.maxValue}`\n        );\n      }\n      options.validate?.(value);\n    }\n  });\n}\nfunction bigUIntBcsType({\n  readMethod,\n  writeMethod,\n  ...options\n}) {\n  return fixedSizeBcsType({\n    ...options,\n    read: (reader) => reader[readMethod](),\n    write: (value, writer) => writer[writeMethod](BigInt(value)),\n    validate: (val) => {\n      const value = BigInt(val);\n      if (value < 0 || value > options.maxValue) {\n        throw new TypeError(\n          `Invalid ${options.name} value: ${value}. Expected value in range 0-${options.maxValue}`\n        );\n      }\n      options.validate?.(value);\n    }\n  });\n}\nfunction dynamicSizeBcsType({\n  serialize,\n  ...options\n}) {\n  const type = new BcsType({\n    ...options,\n    serialize,\n    write: (value, writer) => {\n      for (const byte of type.serialize(value).toBytes()) {\n        writer.write8(byte);\n      }\n    }\n  });\n  return type;\n}\nfunction stringLikeBcsType({\n  toBytes,\n  fromBytes,\n  ...options\n}) {\n  return new BcsType({\n    ...options,\n    read: (reader) => {\n      const length = reader.readULEB();\n      const bytes = reader.readBytes(length);\n      return fromBytes(bytes);\n    },\n    write: (hex, writer) => {\n      const bytes = toBytes(hex);\n      writer.writeULEB(bytes.length);\n      for (let i = 0; i < bytes.length; i++) {\n        writer.write8(bytes[i]);\n      }\n    },\n    serialize: (value) => {\n      const bytes = toBytes(value);\n      const size = ulebEncode(bytes.length);\n      const result = new Uint8Array(size.length + bytes.length);\n      result.set(size, 0);\n      result.set(bytes, size.length);\n      return result;\n    },\n    validate: (value) => {\n      if (typeof value !== \"string\") {\n        throw new TypeError(`Invalid ${options.name} value: ${value}. Expected string`);\n      }\n      options.validate?.(value);\n    }\n  });\n}\nfunction lazyBcsType(cb) {\n  let lazyType = null;\n  function getType() {\n    if (!lazyType) {\n      lazyType = cb();\n    }\n    return lazyType;\n  }\n  return new BcsType({\n    name: \"lazy\",\n    read: (data) => getType().read(data),\n    serializedSize: (value) => getType().serializedSize(value),\n    write: (value, writer) => getType().write(value, writer),\n    serialize: (value, options) => getType().serialize(value, options).toBytes()\n  });\n}\nexport {\n  BcsType,\n  SerializedBcs,\n  bigUIntBcsType,\n  dynamicSizeBcsType,\n  fixedSizeBcsType,\n  isSerializedBcs,\n  lazyBcsType,\n  stringLikeBcsType,\n  uIntBcsType\n};\n//# sourceMappingURL=bcs-type.js.map\n","import {\n  BcsType,\n  bigUIntBcsType,\n  dynamicSizeBcsType,\n  fixedSizeBcsType,\n  lazyBcsType,\n  stringLikeBcsType,\n  uIntBcsType\n} from \"./bcs-type.js\";\nimport { ulebEncode } from \"./uleb.js\";\nconst bcs = {\n  /**\n   * Creates a BcsType that can be used to read and write an 8-bit unsigned integer.\n   * @example\n   * bcs.u8().serialize(255).toBytes() // Uint8Array [ 255 ]\n   */\n  u8(options) {\n    return uIntBcsType({\n      name: \"u8\",\n      readMethod: \"read8\",\n      writeMethod: \"write8\",\n      size: 1,\n      maxValue: 2 ** 8 - 1,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write a 16-bit unsigned integer.\n   * @example\n   * bcs.u16().serialize(65535).toBytes() // Uint8Array [ 255, 255 ]\n   */\n  u16(options) {\n    return uIntBcsType({\n      name: \"u16\",\n      readMethod: \"read16\",\n      writeMethod: \"write16\",\n      size: 2,\n      maxValue: 2 ** 16 - 1,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write a 32-bit unsigned integer.\n   * @example\n   * bcs.u32().serialize(4294967295).toBytes() // Uint8Array [ 255, 255, 255, 255 ]\n   */\n  u32(options) {\n    return uIntBcsType({\n      name: \"u32\",\n      readMethod: \"read32\",\n      writeMethod: \"write32\",\n      size: 4,\n      maxValue: 2 ** 32 - 1,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write a 64-bit unsigned integer.\n   * @example\n   * bcs.u64().serialize(1).toBytes() // Uint8Array [ 1, 0, 0, 0, 0, 0, 0, 0 ]\n   */\n  u64(options) {\n    return bigUIntBcsType({\n      name: \"u64\",\n      readMethod: \"read64\",\n      writeMethod: \"write64\",\n      size: 8,\n      maxValue: 2n ** 64n - 1n,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write a 128-bit unsigned integer.\n   * @example\n   * bcs.u128().serialize(1).toBytes() // Uint8Array [ 1, ..., 0 ]\n   */\n  u128(options) {\n    return bigUIntBcsType({\n      name: \"u128\",\n      readMethod: \"read128\",\n      writeMethod: \"write128\",\n      size: 16,\n      maxValue: 2n ** 128n - 1n,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write a 256-bit unsigned integer.\n   * @example\n   * bcs.u256().serialize(1).toBytes() // Uint8Array [ 1, ..., 0 ]\n   */\n  u256(options) {\n    return bigUIntBcsType({\n      name: \"u256\",\n      readMethod: \"read256\",\n      writeMethod: \"write256\",\n      size: 32,\n      maxValue: 2n ** 256n - 1n,\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write boolean values.\n   * @example\n   * bcs.bool().serialize(true).toBytes() // Uint8Array [ 1 ]\n   */\n  bool(options) {\n    return fixedSizeBcsType({\n      name: \"bool\",\n      size: 1,\n      read: (reader) => reader.read8() === 1,\n      write: (value, writer) => writer.write8(value ? 1 : 0),\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (typeof value !== \"boolean\") {\n          throw new TypeError(`Expected boolean, found ${typeof value}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType that can be used to read and write unsigned LEB encoded integers\n   * @example\n   *\n   */\n  uleb128(options) {\n    return dynamicSizeBcsType({\n      name: \"uleb128\",\n      read: (reader) => reader.readULEB(),\n      serialize: (value) => {\n        return Uint8Array.from(ulebEncode(value));\n      },\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType representing a fixed length byte array\n   * @param size The number of bytes this types represents\n   * @example\n   * bcs.bytes(3).serialize(new Uint8Array([1, 2, 3])).toBytes() // Uint8Array [1, 2, 3]\n   */\n  bytes(size, options) {\n    return fixedSizeBcsType({\n      name: `bytes[${size}]`,\n      size,\n      read: (reader) => reader.readBytes(size),\n      write: (value, writer) => {\n        const array = new Uint8Array(value);\n        for (let i = 0; i < size; i++) {\n          writer.write8(array[i] ?? 0);\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (!value || typeof value !== \"object\" || !(\"length\" in value)) {\n          throw new TypeError(`Expected array, found ${typeof value}`);\n        }\n        if (value.length !== size) {\n          throw new TypeError(`Expected array of length ${size}, found ${value.length}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing a variable length byte array\n   *\n   * @example\n   * bcs.byteVector().serialize([1, 2, 3]).toBytes() // Uint8Array [3, 1, 2, 3]\n   */\n  byteVector(options) {\n    return new BcsType({\n      name: `bytesVector`,\n      read: (reader) => {\n        const length = reader.readULEB();\n        return reader.readBytes(length);\n      },\n      write: (value, writer) => {\n        const array = new Uint8Array(value);\n        writer.writeULEB(array.length);\n        for (let i = 0; i < array.length; i++) {\n          writer.write8(array[i] ?? 0);\n        }\n      },\n      ...options,\n      serializedSize: (value) => {\n        const length = \"length\" in value ? value.length : null;\n        return length == null ? null : ulebEncode(length).length + length;\n      },\n      validate: (value) => {\n        options?.validate?.(value);\n        if (!value || typeof value !== \"object\" || !(\"length\" in value)) {\n          throw new TypeError(`Expected array, found ${typeof value}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType that can ser/de string values.  Strings will be UTF-8 encoded\n   * @example\n   * bcs.string().serialize('a').toBytes() // Uint8Array [ 1, 97 ]\n   */\n  string(options) {\n    return stringLikeBcsType({\n      name: \"string\",\n      toBytes: (value) => new TextEncoder().encode(value),\n      fromBytes: (bytes) => new TextDecoder().decode(bytes),\n      ...options\n    });\n  },\n  /**\n   * Creates a BcsType that represents a fixed length array of a given type\n   * @param size The number of elements in the array\n   * @param type The BcsType of each element in the array\n   * @example\n   * bcs.fixedArray(3, bcs.u8()).serialize([1, 2, 3]).toBytes() // Uint8Array [ 1, 2, 3 ]\n   */\n  fixedArray(size, type, options) {\n    return new BcsType({\n      name: `${type.name}[${size}]`,\n      read: (reader) => {\n        const result = new Array(size);\n        for (let i = 0; i < size; i++) {\n          result[i] = type.read(reader);\n        }\n        return result;\n      },\n      write: (value, writer) => {\n        for (const item of value) {\n          type.write(item, writer);\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (!value || typeof value !== \"object\" || !(\"length\" in value)) {\n          throw new TypeError(`Expected array, found ${typeof value}`);\n        }\n        if (value.length !== size) {\n          throw new TypeError(`Expected array of length ${size}, found ${value.length}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing an optional value\n   * @param type The BcsType of the optional value\n   * @example\n   * bcs.option(bcs.u8()).serialize(null).toBytes() // Uint8Array [ 0 ]\n   * bcs.option(bcs.u8()).serialize(1).toBytes() // Uint8Array [ 1, 1 ]\n   */\n  option(type) {\n    return bcs.enum(`Option<${type.name}>`, {\n      None: null,\n      Some: type\n    }).transform({\n      input: (value) => {\n        if (value == null) {\n          return { None: true };\n        }\n        return { Some: value };\n      },\n      output: (value) => {\n        if (value.$kind === \"Some\") {\n          return value.Some;\n        }\n        return null;\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing a variable length vector of a given type\n   * @param type The BcsType of each element in the vector\n   *\n   * @example\n   * bcs.vector(bcs.u8()).toBytes([1, 2, 3]) // Uint8Array [ 3, 1, 2, 3 ]\n   */\n  vector(type, options) {\n    return new BcsType({\n      name: `vector<${type.name}>`,\n      read: (reader) => {\n        const length = reader.readULEB();\n        const result = new Array(length);\n        for (let i = 0; i < length; i++) {\n          result[i] = type.read(reader);\n        }\n        return result;\n      },\n      write: (value, writer) => {\n        writer.writeULEB(value.length);\n        for (const item of value) {\n          type.write(item, writer);\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (!value || typeof value !== \"object\" || !(\"length\" in value)) {\n          throw new TypeError(`Expected array, found ${typeof value}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing a tuple of a given set of types\n   * @param types The BcsTypes for each element in the tuple\n   *\n   * @example\n   * const tuple = bcs.tuple([bcs.u8(), bcs.string(), bcs.bool()])\n   * tuple.serialize([1, 'a', true]).toBytes() // Uint8Array [ 1, 1, 97, 1 ]\n   */\n  tuple(types, options) {\n    return new BcsType({\n      name: `(${types.map((t) => t.name).join(\", \")})`,\n      serializedSize: (values) => {\n        let total = 0;\n        for (let i = 0; i < types.length; i++) {\n          const size = types[i].serializedSize(values[i]);\n          if (size == null) {\n            return null;\n          }\n          total += size;\n        }\n        return total;\n      },\n      read: (reader) => {\n        const result = [];\n        for (const type of types) {\n          result.push(type.read(reader));\n        }\n        return result;\n      },\n      write: (value, writer) => {\n        for (let i = 0; i < types.length; i++) {\n          types[i].write(value[i], writer);\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (!Array.isArray(value)) {\n          throw new TypeError(`Expected array, found ${typeof value}`);\n        }\n        if (value.length !== types.length) {\n          throw new TypeError(`Expected array of length ${types.length}, found ${value.length}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing a struct of a given set of fields\n   * @param name The name of the struct\n   * @param fields The fields of the struct. The order of the fields affects how data is serialized and deserialized\n   *\n   * @example\n   * const struct = bcs.struct('MyStruct', {\n   *  a: bcs.u8(),\n   *  b: bcs.string(),\n   * })\n   * struct.serialize({ a: 1, b: 'a' }).toBytes() // Uint8Array [ 1, 1, 97 ]\n   */\n  struct(name, fields, options) {\n    const canonicalOrder = Object.entries(fields);\n    return new BcsType({\n      name,\n      serializedSize: (values) => {\n        let total = 0;\n        for (const [field, type] of canonicalOrder) {\n          const size = type.serializedSize(values[field]);\n          if (size == null) {\n            return null;\n          }\n          total += size;\n        }\n        return total;\n      },\n      read: (reader) => {\n        const result = {};\n        for (const [field, type] of canonicalOrder) {\n          result[field] = type.read(reader);\n        }\n        return result;\n      },\n      write: (value, writer) => {\n        for (const [field, type] of canonicalOrder) {\n          type.write(value[field], writer);\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (typeof value !== \"object\" || value == null) {\n          throw new TypeError(`Expected object, found ${typeof value}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing an enum of a given set of options\n   * @param name The name of the enum\n   * @param values The values of the enum. The order of the values affects how data is serialized and deserialized.\n   * null can be used to represent a variant with no data.\n   *\n   * @example\n   * const enum = bcs.enum('MyEnum', {\n   *   A: bcs.u8(),\n   *   B: bcs.string(),\n   *   C: null,\n   * })\n   * enum.serialize({ A: 1 }).toBytes() // Uint8Array [ 0, 1 ]\n   * enum.serialize({ B: 'a' }).toBytes() // Uint8Array [ 1, 1, 97 ]\n   * enum.serialize({ C: true }).toBytes() // Uint8Array [ 2 ]\n   */\n  enum(name, values, options) {\n    const canonicalOrder = Object.entries(values);\n    return new BcsType({\n      name,\n      read: (reader) => {\n        const index = reader.readULEB();\n        const enumEntry = canonicalOrder[index];\n        if (!enumEntry) {\n          throw new TypeError(`Unknown value ${index} for enum ${name}`);\n        }\n        const [kind, type] = enumEntry;\n        return {\n          [kind]: type?.read(reader) ?? true,\n          $kind: kind\n        };\n      },\n      write: (value, writer) => {\n        const [name2, val] = Object.entries(value).filter(\n          ([name3]) => Object.hasOwn(values, name3)\n        )[0];\n        for (let i = 0; i < canonicalOrder.length; i++) {\n          const [optionName, optionType] = canonicalOrder[i];\n          if (optionName === name2) {\n            writer.writeULEB(i);\n            optionType?.write(val, writer);\n            return;\n          }\n        }\n      },\n      ...options,\n      validate: (value) => {\n        options?.validate?.(value);\n        if (typeof value !== \"object\" || value == null) {\n          throw new TypeError(`Expected object, found ${typeof value}`);\n        }\n        const keys = Object.keys(value).filter(\n          (k) => value[k] !== void 0 && Object.hasOwn(values, k)\n        );\n        if (keys.length !== 1) {\n          throw new TypeError(\n            `Expected object with one key, but found ${keys.length} for type ${name}}`\n          );\n        }\n        const [variant] = keys;\n        if (!Object.hasOwn(values, variant)) {\n          throw new TypeError(`Invalid enum variant ${variant}`);\n        }\n      }\n    });\n  },\n  /**\n   * Creates a BcsType representing a map of a given key and value type\n   * @param keyType The BcsType of the key\n   * @param valueType The BcsType of the value\n   * @example\n   * const map = bcs.map(bcs.u8(), bcs.string())\n   * map.serialize(new Map([[2, 'a']])).toBytes() // Uint8Array [ 1, 2, 1, 97 ]\n   */\n  map(keyType, valueType) {\n    return bcs.vector(bcs.tuple([keyType, valueType])).transform({\n      name: `Map<${keyType.name}, ${valueType.name}>`,\n      input: (value) => {\n        return [...value.entries()];\n      },\n      output: (value) => {\n        const result = /* @__PURE__ */ new Map();\n        for (const [key, val] of value) {\n          result.set(key, val);\n        }\n        return result;\n      }\n    });\n  },\n  /**\n   * Creates a BcsType that wraps another BcsType which is lazily evaluated. This is useful for creating recursive types.\n   * @param cb A callback that returns the BcsType\n   */\n  lazy(cb) {\n    return lazyBcsType(cb);\n  }\n};\nexport {\n  bcs\n};\n//# sourceMappingURL=bcs.js.map\n","/**\n * Internal helpers for blake hash.\n * @module\n */\nimport { rotr } from \"./utils.js\";\n/**\n * Internal blake variable.\n * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].\n */\n// prettier-ignore\nexport const BSIGMA = /* @__PURE__ */ Uint8Array.from([\n    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n    14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n    11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n    7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n    9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n    2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n    12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n    13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n    6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n    10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n    14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n    // Blake1, unused in others\n    11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n    7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n    9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n    2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n]);\n// Mixing function G splitted in two halfs\nexport function G1s(a, b, c, d, x) {\n    a = (a + b + x) | 0;\n    d = rotr(d ^ a, 16);\n    c = (c + d) | 0;\n    b = rotr(b ^ c, 12);\n    return { a, b, c, d };\n}\nexport function G2s(a, b, c, d, x) {\n    a = (a + b + x) | 0;\n    d = rotr(d ^ a, 8);\n    c = (c + d) | 0;\n    b = rotr(b ^ c, 7);\n    return { a, b, c, d };\n}\n//# sourceMappingURL=_blake.js.map","/**\n * blake2b (64-bit) & blake2s (8 to 32-bit) hash functions.\n * b could have been faster, but there is no fast u64 in js, so s is 1.5x faster.\n * @module\n */\nimport { BSIGMA, G1s, G2s } from \"./_blake.js\";\nimport { SHA256_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createOptHasher, Hash, swap32IfBE, swap8IfBE, toBytes, u32 } from \"./utils.js\";\n// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc.\nconst B2B_IV = /* @__PURE__ */ Uint32Array.from([\n    0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,\n    0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19,\n]);\n// Temporary buffer\nconst BBUF = /* @__PURE__ */ new Uint32Array(32);\n// Mixing function G splitted in two halfs\nfunction G1b(a, b, c, d, msg, x) {\n    // NOTE: V is LE here\n    const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n    let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n    let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n    let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n    let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n    // v[a] = (v[a] + v[b] + x) | 0;\n    let ll = u64.add3L(Al, Bl, Xl);\n    Ah = u64.add3H(ll, Ah, Bh, Xh);\n    Al = ll | 0;\n    // v[d] = rotr(v[d] ^ v[a], 32)\n    ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n    ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) });\n    // v[c] = (v[c] + v[d]) | 0;\n    ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n    // v[b] = rotr(v[b] ^ v[c], 24)\n    ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n    ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) });\n    (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n    (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n    (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n    (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction G2b(a, b, c, d, msg, x) {\n    // NOTE: V is LE here\n    const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n    let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n    let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n    let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n    let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n    // v[a] = (v[a] + v[b] + x) | 0;\n    let ll = u64.add3L(Al, Bl, Xl);\n    Ah = u64.add3H(ll, Ah, Bh, Xh);\n    Al = ll | 0;\n    // v[d] = rotr(v[d] ^ v[a], 16)\n    ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n    ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) });\n    // v[c] = (v[c] + v[d]) | 0;\n    ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n    // v[b] = rotr(v[b] ^ v[c], 63)\n    ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n    ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) });\n    (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n    (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n    (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n    (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) {\n    anumber(keyLen);\n    if (outputLen < 0 || outputLen > keyLen)\n        throw new Error('outputLen bigger than keyLen');\n    const { key, salt, personalization } = opts;\n    if (key !== undefined && (key.length < 1 || key.length > keyLen))\n        throw new Error('key length must be undefined or 1..' + keyLen);\n    if (salt !== undefined && salt.length !== saltLen)\n        throw new Error('salt must be undefined or ' + saltLen);\n    if (personalization !== undefined && personalization.length !== persLen)\n        throw new Error('personalization must be undefined or ' + persLen);\n}\n/** Class, from which others are subclassed. */\nexport class BLAKE2 extends Hash {\n    constructor(blockLen, outputLen) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        this.length = 0;\n        this.pos = 0;\n        anumber(blockLen);\n        anumber(outputLen);\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.buffer = new Uint8Array(blockLen);\n        this.buffer32 = u32(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        // Main difference with other hashes: there is flag for last block,\n        // so we cannot process current block before we know that there\n        // is the next one. This significantly complicates logic and reduces ability\n        // to do zero-copy processing\n        const { blockLen, buffer, buffer32 } = this;\n        const len = data.length;\n        const offset = data.byteOffset;\n        const buf = data.buffer;\n        for (let pos = 0; pos < len;) {\n            // If buffer is full and we still have input (don't process last block, same as blake2s)\n            if (this.pos === blockLen) {\n                swap32IfBE(buffer32);\n                this.compress(buffer32, 0, false);\n                swap32IfBE(buffer32);\n                this.pos = 0;\n            }\n            const take = Math.min(blockLen - this.pos, len - pos);\n            const dataOffset = offset + pos;\n            // full block && aligned to 4 bytes && not last in input\n            if (take === blockLen && !(dataOffset % 4) && pos + take < len) {\n                const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));\n                swap32IfBE(data32);\n                for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {\n                    this.length += blockLen;\n                    this.compress(data32, pos32, false);\n                }\n                swap32IfBE(data32);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            this.length += take;\n            pos += take;\n        }\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        const { pos, buffer32 } = this;\n        this.finished = true;\n        // Padding\n        clean(this.buffer.subarray(pos));\n        swap32IfBE(buffer32);\n        this.compress(buffer32, 0, true);\n        swap32IfBE(buffer32);\n        const out32 = u32(out);\n        this.get().forEach((v, i) => (out32[i] = swap8IfBE(v)));\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        const { buffer, length, finished, destroyed, outputLen, pos } = this;\n        to || (to = new this.constructor({ dkLen: outputLen }));\n        to.set(...this.get());\n        to.buffer.set(buffer);\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        // @ts-ignore\n        to.outputLen = outputLen;\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\nexport class BLAKE2b extends BLAKE2 {\n    constructor(opts = {}) {\n        const olen = opts.dkLen === undefined ? 64 : opts.dkLen;\n        super(128, olen);\n        // Same as SHA-512, but LE\n        this.v0l = B2B_IV[0] | 0;\n        this.v0h = B2B_IV[1] | 0;\n        this.v1l = B2B_IV[2] | 0;\n        this.v1h = B2B_IV[3] | 0;\n        this.v2l = B2B_IV[4] | 0;\n        this.v2h = B2B_IV[5] | 0;\n        this.v3l = B2B_IV[6] | 0;\n        this.v3h = B2B_IV[7] | 0;\n        this.v4l = B2B_IV[8] | 0;\n        this.v4h = B2B_IV[9] | 0;\n        this.v5l = B2B_IV[10] | 0;\n        this.v5h = B2B_IV[11] | 0;\n        this.v6l = B2B_IV[12] | 0;\n        this.v6h = B2B_IV[13] | 0;\n        this.v7l = B2B_IV[14] | 0;\n        this.v7h = B2B_IV[15] | 0;\n        checkBlake2Opts(olen, opts, 64, 16, 16);\n        let { key, personalization, salt } = opts;\n        let keyLength = 0;\n        if (key !== undefined) {\n            key = toBytes(key);\n            keyLength = key.length;\n        }\n        this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n        if (salt !== undefined) {\n            salt = toBytes(salt);\n            const slt = u32(salt);\n            this.v4l ^= swap8IfBE(slt[0]);\n            this.v4h ^= swap8IfBE(slt[1]);\n            this.v5l ^= swap8IfBE(slt[2]);\n            this.v5h ^= swap8IfBE(slt[3]);\n        }\n        if (personalization !== undefined) {\n            personalization = toBytes(personalization);\n            const pers = u32(personalization);\n            this.v6l ^= swap8IfBE(pers[0]);\n            this.v6h ^= swap8IfBE(pers[1]);\n            this.v7l ^= swap8IfBE(pers[2]);\n            this.v7h ^= swap8IfBE(pers[3]);\n        }\n        if (key !== undefined) {\n            // Pad to blockLen and update\n            const tmp = new Uint8Array(this.blockLen);\n            tmp.set(key);\n            this.update(tmp);\n        }\n    }\n    // prettier-ignore\n    get() {\n        let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this;\n        return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h];\n    }\n    // prettier-ignore\n    set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) {\n        this.v0l = v0l | 0;\n        this.v0h = v0h | 0;\n        this.v1l = v1l | 0;\n        this.v1h = v1h | 0;\n        this.v2l = v2l | 0;\n        this.v2h = v2h | 0;\n        this.v3l = v3l | 0;\n        this.v3h = v3h | 0;\n        this.v4l = v4l | 0;\n        this.v4h = v4h | 0;\n        this.v5l = v5l | 0;\n        this.v5h = v5h | 0;\n        this.v6l = v6l | 0;\n        this.v6h = v6h | 0;\n        this.v7l = v7l | 0;\n        this.v7h = v7h | 0;\n    }\n    compress(msg, offset, isLast) {\n        this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state.\n        BBUF.set(B2B_IV, 16); // Second half from IV.\n        let { h, l } = u64.fromBig(BigInt(this.length));\n        BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset.\n        BBUF[25] = B2B_IV[9] ^ h; // High word.\n        // Invert all bits for last block\n        if (isLast) {\n            BBUF[28] = ~BBUF[28];\n            BBUF[29] = ~BBUF[29];\n        }\n        let j = 0;\n        const s = BSIGMA;\n        for (let i = 0; i < 12; i++) {\n            G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n            G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n            G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n            G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n            G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n            G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n            G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n            G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n            G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n            G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n            G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n            G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n            G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n            G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n            G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n            G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n        }\n        this.v0l ^= BBUF[0] ^ BBUF[16];\n        this.v0h ^= BBUF[1] ^ BBUF[17];\n        this.v1l ^= BBUF[2] ^ BBUF[18];\n        this.v1h ^= BBUF[3] ^ BBUF[19];\n        this.v2l ^= BBUF[4] ^ BBUF[20];\n        this.v2h ^= BBUF[5] ^ BBUF[21];\n        this.v3l ^= BBUF[6] ^ BBUF[22];\n        this.v3h ^= BBUF[7] ^ BBUF[23];\n        this.v4l ^= BBUF[8] ^ BBUF[24];\n        this.v4h ^= BBUF[9] ^ BBUF[25];\n        this.v5l ^= BBUF[10] ^ BBUF[26];\n        this.v5h ^= BBUF[11] ^ BBUF[27];\n        this.v6l ^= BBUF[12] ^ BBUF[28];\n        this.v6h ^= BBUF[13] ^ BBUF[29];\n        this.v7l ^= BBUF[14] ^ BBUF[30];\n        this.v7h ^= BBUF[15] ^ BBUF[31];\n        clean(BBUF);\n    }\n    destroy() {\n        this.destroyed = true;\n        clean(this.buffer32);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\n/**\n * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2b = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2b(opts));\n// prettier-ignore\nexport function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) {\n    let j = 0;\n    for (let i = 0; i < rounds; i++) {\n        ({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));\n        ({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));\n        ({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));\n        ({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));\n        ({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));\n        ({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));\n        ({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));\n        ({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));\n        ({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));\n        ({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));\n        ({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));\n        ({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));\n        ({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));\n        ({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));\n        ({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));\n        ({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));\n    }\n    return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };\n}\nconst B2S_IV = SHA256_IV;\nexport class BLAKE2s extends BLAKE2 {\n    constructor(opts = {}) {\n        const olen = opts.dkLen === undefined ? 32 : opts.dkLen;\n        super(64, olen);\n        // Internal state, same as SHA-256\n        this.v0 = B2S_IV[0] | 0;\n        this.v1 = B2S_IV[1] | 0;\n        this.v2 = B2S_IV[2] | 0;\n        this.v3 = B2S_IV[3] | 0;\n        this.v4 = B2S_IV[4] | 0;\n        this.v5 = B2S_IV[5] | 0;\n        this.v6 = B2S_IV[6] | 0;\n        this.v7 = B2S_IV[7] | 0;\n        checkBlake2Opts(olen, opts, 32, 8, 8);\n        let { key, personalization, salt } = opts;\n        let keyLength = 0;\n        if (key !== undefined) {\n            key = toBytes(key);\n            keyLength = key.length;\n        }\n        this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n        if (salt !== undefined) {\n            salt = toBytes(salt);\n            const slt = u32(salt);\n            this.v4 ^= swap8IfBE(slt[0]);\n            this.v5 ^= swap8IfBE(slt[1]);\n        }\n        if (personalization !== undefined) {\n            personalization = toBytes(personalization);\n            const pers = u32(personalization);\n            this.v6 ^= swap8IfBE(pers[0]);\n            this.v7 ^= swap8IfBE(pers[1]);\n        }\n        if (key !== undefined) {\n            // Pad to blockLen and update\n            abytes(key);\n            const tmp = new Uint8Array(this.blockLen);\n            tmp.set(key);\n            this.update(tmp);\n        }\n    }\n    get() {\n        const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;\n        return [v0, v1, v2, v3, v4, v5, v6, v7];\n    }\n    // prettier-ignore\n    set(v0, v1, v2, v3, v4, v5, v6, v7) {\n        this.v0 = v0 | 0;\n        this.v1 = v1 | 0;\n        this.v2 = v2 | 0;\n        this.v3 = v3 | 0;\n        this.v4 = v4 | 0;\n        this.v5 = v5 | 0;\n        this.v6 = v6 | 0;\n        this.v7 = v7 | 0;\n    }\n    compress(msg, offset, isLast) {\n        const { h, l } = u64.fromBig(BigInt(this.length));\n        // prettier-ignore\n        const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]);\n        this.v0 ^= v0 ^ v8;\n        this.v1 ^= v1 ^ v9;\n        this.v2 ^= v2 ^ v10;\n        this.v3 ^= v3 ^ v11;\n        this.v4 ^= v4 ^ v12;\n        this.v5 ^= v5 ^ v13;\n        this.v6 ^= v6 ^ v14;\n        this.v7 ^= v7 ^ v15;\n    }\n    destroy() {\n        this.destroyed = true;\n        clean(this.buffer32);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\n/**\n * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2s = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2s(opts));\n//# sourceMappingURL=blake2.js.map","/**\n * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible.\n * @module\n * @deprecated\n */\nimport { BLAKE2b as B2B, blake2b as b2b } from \"./blake2.js\";\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const BLAKE2b = B2B;\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const blake2b = b2b;\n//# sourceMappingURL=blake2b.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n    if (!Array.isArray(arr))\n        return false;\n    if (arr.length === 0)\n        return true;\n    if (isString) {\n        return arr.every((item) => typeof item === 'string');\n    }\n    else {\n        return arr.every((item) => Number.isSafeInteger(item));\n    }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n    if (typeof input !== 'function')\n        throw new Error('function expected');\n    return true;\n}\nfunction astr(label, input) {\n    if (typeof input !== 'string')\n        throw new Error(`${label}: string expected`);\n    return true;\n}\nfunction anumber(n) {\n    if (!Number.isSafeInteger(n))\n        throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n    if (!Array.isArray(input))\n        throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n    if (!isArrayOf(true, input))\n        throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n    if (!isArrayOf(false, input))\n        throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n    const id = (a) => a;\n    // Wrap call in closure so JIT can inline calls\n    const wrap = (a, b) => (c) => a(b(c));\n    // Construct chain of args[-1].encode(args[-2].encode([...]))\n    const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n    // Construct chain of args[0].decode(args[1].decode(...))\n    const decode = args.map((x) => x.decode).reduce(wrap, id);\n    return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n    // mapping 1 to \"b\"\n    const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n    const len = lettersA.length;\n    astrArr('alphabet', lettersA);\n    // mapping \"b\" to 1\n    const indexes = new Map(lettersA.map((l, i) => [l, i]));\n    return {\n        encode: (digits) => {\n            aArr(digits);\n            return digits.map((i) => {\n                if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n                    throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n                return lettersA[i];\n            });\n        },\n        decode: (input) => {\n            aArr(input);\n            return input.map((letter) => {\n                astr('alphabet.decode', letter);\n                const i = indexes.get(letter);\n                if (i === undefined)\n                    throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n                return i;\n            });\n        },\n    };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n    astr('join', separator);\n    return {\n        encode: (from) => {\n            astrArr('join.decode', from);\n            return from.join(separator);\n        },\n        decode: (to) => {\n            astr('join.decode', to);\n            return to.split(separator);\n        },\n    };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n    anumber(bits);\n    astr('padding', chr);\n    return {\n        encode(data) {\n            astrArr('padding.encode', data);\n            while ((data.length * bits) % 8)\n                data.push(chr);\n            return data;\n        },\n        decode(input) {\n            astrArr('padding.decode', input);\n            let end = input.length;\n            if ((end * bits) % 8)\n                throw new Error('padding: invalid, string should have whole number of bytes');\n            for (; end > 0 && input[end - 1] === chr; end--) {\n                const last = end - 1;\n                const byte = last * bits;\n                if (byte % 8 === 0)\n                    throw new Error('padding: invalid, string has too much padding');\n            }\n            return input.slice(0, end);\n        },\n    };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n    afn(fn);\n    return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n    // base 1 is impossible\n    if (from < 2)\n        throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n    if (to < 2)\n        throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n    aArr(data);\n    if (!data.length)\n        return [];\n    let pos = 0;\n    const res = [];\n    const digits = Array.from(data, (d) => {\n        anumber(d);\n        if (d < 0 || d >= from)\n            throw new Error(`invalid integer: ${d}`);\n        return d;\n    });\n    const dlen = digits.length;\n    while (true) {\n        let carry = 0;\n        let done = true;\n        for (let i = pos; i < dlen; i++) {\n            const digit = digits[i];\n            const fromCarry = from * carry;\n            const digitBase = fromCarry + digit;\n            if (!Number.isSafeInteger(digitBase) ||\n                fromCarry / from !== carry ||\n                digitBase - digit !== fromCarry) {\n                throw new Error('convertRadix: carry overflow');\n            }\n            const div = digitBase / to;\n            carry = digitBase % to;\n            const rounded = Math.floor(div);\n            digits[i] = rounded;\n            if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n                throw new Error('convertRadix: carry overflow');\n            if (!done)\n                continue;\n            else if (!rounded)\n                pos = i;\n            else\n                done = false;\n        }\n        res.push(carry);\n        if (done)\n            break;\n    }\n    for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n        res.push(0);\n    return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n    let res = [];\n    for (let i = 0; i < 40; i++)\n        res.push(2 ** i);\n    return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n    aArr(data);\n    if (from <= 0 || from > 32)\n        throw new Error(`convertRadix2: wrong from=${from}`);\n    if (to <= 0 || to > 32)\n        throw new Error(`convertRadix2: wrong to=${to}`);\n    if (radix2carry(from, to) > 32) {\n        throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n    }\n    let carry = 0;\n    let pos = 0; // bitwise position in current element\n    const max = powers[from];\n    const mask = powers[to] - 1;\n    const res = [];\n    for (const n of data) {\n        anumber(n);\n        if (n >= max)\n            throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n        carry = (carry << from) | n;\n        if (pos + from > 32)\n            throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n        pos += from;\n        for (; pos >= to; pos -= to)\n            res.push(((carry >> (pos - to)) & mask) >>> 0);\n        const pow = powers[pos];\n        if (pow === undefined)\n            throw new Error('invalid carry');\n        carry &= pow - 1; // clean carry, otherwise it will cause overflow\n    }\n    carry = (carry << (to - pos)) & mask;\n    if (!padding && pos >= from)\n        throw new Error('Excess padding');\n    if (!padding && carry > 0)\n        throw new Error(`Non-zero padding: ${carry}`);\n    if (padding && pos > 0)\n        res.push(carry >>> 0);\n    return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n    anumber(num);\n    const _256 = 2 ** 8;\n    return {\n        encode: (bytes) => {\n            if (!isBytes(bytes))\n                throw new Error('radix.encode input should be Uint8Array');\n            return convertRadix(Array.from(bytes), _256, num);\n        },\n        decode: (digits) => {\n            anumArr('radix.decode', digits);\n            return Uint8Array.from(convertRadix(digits, num, _256));\n        },\n    };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n    anumber(bits);\n    if (bits <= 0 || bits > 32)\n        throw new Error('radix2: bits should be in (0..32]');\n    if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n        throw new Error('radix2: carry overflow');\n    return {\n        encode: (bytes) => {\n            if (!isBytes(bytes))\n                throw new Error('radix2.encode input should be Uint8Array');\n            return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n        },\n        decode: (digits) => {\n            anumArr('radix2.decode', digits);\n            return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n        },\n    };\n}\nfunction unsafeWrapper(fn) {\n    afn(fn);\n    return function (...args) {\n        try {\n            return fn.apply(null, args);\n        }\n        catch (e) { }\n    };\n}\nfunction checksum(len, fn) {\n    anumber(len);\n    afn(fn);\n    return {\n        encode(data) {\n            if (!isBytes(data))\n                throw new Error('checksum.encode: input should be Uint8Array');\n            const sum = fn(data).slice(0, len);\n            const res = new Uint8Array(data.length + len);\n            res.set(data);\n            res.set(sum, data.length);\n            return res;\n        },\n        decode(data) {\n            if (!isBytes(data))\n                throw new Error('checksum.decode: input should be Uint8Array');\n            const payload = data.slice(0, -len);\n            const oldChecksum = data.slice(-len);\n            const newChecksum = fn(payload).slice(0, len);\n            for (let i = 0; i < len; i++)\n                if (newChecksum[i] !== oldChecksum[i])\n                    throw new Error('Invalid checksum');\n            return payload;\n        },\n    };\n}\n// prettier-ignore\nexport const utils = {\n    alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n    typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n    astr('base64', s);\n    const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n    const alphabet = isUrl ? 'base64url' : 'base64';\n    if (s.length > 0 && !re.test(s))\n        throw new Error('invalid base64');\n    return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n    encode(b) { abytes(b); return b.toBase64(); },\n    decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n    encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n    decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n    encode(data) {\n        let res = '';\n        for (let i = 0; i < data.length; i += 8) {\n            const block = data.subarray(i, i + 8);\n            res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n        }\n        return res;\n    },\n    decode(str) {\n        let res = [];\n        for (let i = 0; i < str.length; i += 11) {\n            const slice = str.slice(i, i + 11);\n            const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n            const block = base58.decode(slice);\n            for (let j = 0; j < block.length - blockLen; j++) {\n                if (block[j] !== 0)\n                    throw new Error('base58xmr: wrong padding');\n            }\n            res = res.concat(Array.from(block.slice(block.length - blockLen)));\n        }\n        return Uint8Array.from(res);\n    },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n    const b = pre >> 25;\n    let chk = (pre & 0x1ffffff) << 5;\n    for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n        if (((b >> i) & 1) === 1)\n            chk ^= POLYMOD_GENERATORS[i];\n    }\n    return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n    const len = prefix.length;\n    let chk = 1;\n    for (let i = 0; i < len; i++) {\n        const c = prefix.charCodeAt(i);\n        if (c < 33 || c > 126)\n            throw new Error(`Invalid prefix (${prefix})`);\n        chk = bech32Polymod(chk) ^ (c >> 5);\n    }\n    chk = bech32Polymod(chk);\n    for (let i = 0; i < len; i++)\n        chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n    for (let v of words)\n        chk = bech32Polymod(chk) ^ v;\n    for (let i = 0; i < 6; i++)\n        chk = bech32Polymod(chk);\n    chk ^= encodingConst;\n    return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n    const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n    const _words = radix2(5);\n    const fromWords = _words.decode;\n    const toWords = _words.encode;\n    const fromWordsUnsafe = unsafeWrapper(fromWords);\n    function encode(prefix, words, limit = 90) {\n        astr('bech32.encode prefix', prefix);\n        if (isBytes(words))\n            words = Array.from(words);\n        anumArr('bech32.encode', words);\n        const plen = prefix.length;\n        if (plen === 0)\n            throw new TypeError(`Invalid prefix length ${plen}`);\n        const actualLength = plen + 7 + words.length;\n        if (limit !== false && actualLength > limit)\n            throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n        const lowered = prefix.toLowerCase();\n        const sum = bechChecksum(lowered, words, ENCODING_CONST);\n        return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n    }\n    function decode(str, limit = 90) {\n        astr('bech32.decode input', str);\n        const slen = str.length;\n        if (slen < 8 || (limit !== false && slen > limit))\n            throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n        // don't allow mixed case\n        const lowered = str.toLowerCase();\n        if (str !== lowered && str !== str.toUpperCase())\n            throw new Error(`String must be lowercase or uppercase`);\n        const sepIndex = lowered.lastIndexOf('1');\n        if (sepIndex === 0 || sepIndex === -1)\n            throw new Error(`Letter \"1\" must be present between prefix and data only`);\n        const prefix = lowered.slice(0, sepIndex);\n        const data = lowered.slice(sepIndex + 1);\n        if (data.length < 6)\n            throw new Error('Data must be at least 6 characters long');\n        const words = BECH_ALPHABET.decode(data).slice(0, -6);\n        const sum = bechChecksum(prefix, words, ENCODING_CONST);\n        if (!data.endsWith(sum))\n            throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n        return { prefix, words };\n    }\n    const decodeUnsafe = unsafeWrapper(decode);\n    function decodeToBytes(str) {\n        const { prefix, words } = decode(str, false);\n        return { prefix, words, bytes: fromWords(words) };\n    }\n    function encodeFromBytes(prefix, bytes) {\n        return encode(prefix, toWords(bytes));\n    }\n    return {\n        encode,\n        decode,\n        encodeFromBytes,\n        decodeToBytes,\n        decodeUnsafe,\n        fromWords,\n        fromWordsUnsafe,\n        toWords,\n    };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n    encode: (data) => new TextDecoder().decode(data),\n    decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n    typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n    encode(data) { abytes(data); return data.toHex(); },\n    decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n    ? hexBuiltin\n    : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n        if (typeof s !== 'string' || s.length % 2 !== 0)\n            throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n        return s.toLowerCase();\n    }));\n// prettier-ignore\nconst CODERS = {\n    utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n    if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (!isBytes(bytes))\n        throw new TypeError('bytesToString() expects Uint8Array');\n    return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n    if (!CODERS.hasOwnProperty(type))\n        throw new TypeError(coderTypeError);\n    if (typeof str !== 'string')\n        throw new TypeError('stringToBytes() expects string');\n    return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","import { fromBase58, splitGenericParameters } from \"@mysten/bcs\";\nimport { isValidNamedPackage } from \"./move-registry.js\";\nconst TX_DIGEST_LENGTH = 32;\nfunction isValidTransactionDigest(value) {\n  try {\n    const buffer = fromBase58(value);\n    return buffer.length === TX_DIGEST_LENGTH;\n  } catch (e) {\n    return false;\n  }\n}\nconst SUI_ADDRESS_LENGTH = 32;\nfunction isValidSuiAddress(value) {\n  return isHex(value) && getHexByteLength(value) === SUI_ADDRESS_LENGTH;\n}\nfunction isValidSuiObjectId(value) {\n  return isValidSuiAddress(value);\n}\nfunction parseTypeTag(type) {\n  if (!type.includes(\"::\")) return type;\n  return parseStructTag(type);\n}\nfunction parseStructTag(type) {\n  const [address, module] = type.split(\"::\");\n  const isMvrPackage = isValidNamedPackage(address);\n  const rest = type.slice(address.length + module.length + 4);\n  const name = rest.includes(\"<\") ? rest.slice(0, rest.indexOf(\"<\")) : rest;\n  const typeParams = rest.includes(\"<\") ? splitGenericParameters(rest.slice(rest.indexOf(\"<\") + 1, rest.lastIndexOf(\">\"))).map(\n    (typeParam) => parseTypeTag(typeParam.trim())\n  ) : [];\n  return {\n    address: isMvrPackage ? address : normalizeSuiAddress(address),\n    module,\n    name,\n    typeParams\n  };\n}\nfunction normalizeStructTag(type) {\n  const { address, module, name, typeParams } = typeof type === \"string\" ? parseStructTag(type) : type;\n  const formattedTypeParams = typeParams?.length > 0 ? `<${typeParams.map(\n    (typeParam) => typeof typeParam === \"string\" ? typeParam : normalizeStructTag(typeParam)\n  ).join(\",\")}>` : \"\";\n  return `${address}::${module}::${name}${formattedTypeParams}`;\n}\nfunction normalizeSuiAddress(value, forceAdd0x = false) {\n  let address = value.toLowerCase();\n  if (!forceAdd0x && address.startsWith(\"0x\")) {\n    address = address.slice(2);\n  }\n  return `0x${address.padStart(SUI_ADDRESS_LENGTH * 2, \"0\")}`;\n}\nfunction normalizeSuiObjectId(value, forceAdd0x = false) {\n  return normalizeSuiAddress(value, forceAdd0x);\n}\nfunction isHex(value) {\n  return /^(0x|0X)?[a-fA-F0-9]+$/.test(value) && value.length % 2 === 0;\n}\nfunction getHexByteLength(value) {\n  return /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2;\n}\nexport {\n  SUI_ADDRESS_LENGTH,\n  isValidSuiAddress,\n  isValidSuiObjectId,\n  isValidTransactionDigest,\n  normalizeStructTag,\n  normalizeSuiAddress,\n  normalizeSuiObjectId,\n  parseStructTag\n};\n//# sourceMappingURL=sui-types.js.map\n","import { splitGenericParameters } from \"@mysten/bcs\";\nimport { normalizeSuiAddress } from \"../utils/sui-types.js\";\nconst VECTOR_REGEX = /^vector<(.+)>$/;\nconst STRUCT_REGEX = /^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;\nclass TypeTagSerializer {\n  static parseFromStr(str, normalizeAddress = false) {\n    if (str === \"address\") {\n      return { address: null };\n    } else if (str === \"bool\") {\n      return { bool: null };\n    } else if (str === \"u8\") {\n      return { u8: null };\n    } else if (str === \"u16\") {\n      return { u16: null };\n    } else if (str === \"u32\") {\n      return { u32: null };\n    } else if (str === \"u64\") {\n      return { u64: null };\n    } else if (str === \"u128\") {\n      return { u128: null };\n    } else if (str === \"u256\") {\n      return { u256: null };\n    } else if (str === \"signer\") {\n      return { signer: null };\n    }\n    const vectorMatch = str.match(VECTOR_REGEX);\n    if (vectorMatch) {\n      return {\n        vector: TypeTagSerializer.parseFromStr(vectorMatch[1], normalizeAddress)\n      };\n    }\n    const structMatch = str.match(STRUCT_REGEX);\n    if (structMatch) {\n      const address = normalizeAddress ? normalizeSuiAddress(structMatch[1]) : structMatch[1];\n      return {\n        struct: {\n          address,\n          module: structMatch[2],\n          name: structMatch[3],\n          typeParams: structMatch[5] === void 0 ? [] : TypeTagSerializer.parseStructTypeArgs(structMatch[5], normalizeAddress)\n        }\n      };\n    }\n    throw new Error(`Encountered unexpected token when parsing type args for ${str}`);\n  }\n  static parseStructTypeArgs(str, normalizeAddress = false) {\n    return splitGenericParameters(str).map(\n      (tok) => TypeTagSerializer.parseFromStr(tok, normalizeAddress)\n    );\n  }\n  static tagToString(tag) {\n    if (\"bool\" in tag) {\n      return \"bool\";\n    }\n    if (\"u8\" in tag) {\n      return \"u8\";\n    }\n    if (\"u16\" in tag) {\n      return \"u16\";\n    }\n    if (\"u32\" in tag) {\n      return \"u32\";\n    }\n    if (\"u64\" in tag) {\n      return \"u64\";\n    }\n    if (\"u128\" in tag) {\n      return \"u128\";\n    }\n    if (\"u256\" in tag) {\n      return \"u256\";\n    }\n    if (\"address\" in tag) {\n      return \"address\";\n    }\n    if (\"signer\" in tag) {\n      return \"signer\";\n    }\n    if (\"vector\" in tag) {\n      return `vector<${TypeTagSerializer.tagToString(tag.vector)}>`;\n    }\n    if (\"struct\" in tag) {\n      const struct = tag.struct;\n      const typeParams = struct.typeParams.map(TypeTagSerializer.tagToString).join(\", \");\n      return `${struct.address}::${struct.module}::${struct.name}${typeParams ? `<${typeParams}>` : \"\"}`;\n    }\n    throw new Error(\"Invalid TypeTag\");\n  }\n}\nexport {\n  TypeTagSerializer\n};\n//# sourceMappingURL=type-tag-serializer.js.map\n","import { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from \"@mysten/bcs\";\nimport { isValidSuiAddress, normalizeSuiAddress, SUI_ADDRESS_LENGTH } from \"../utils/sui-types.js\";\nimport { TypeTagSerializer } from \"./type-tag-serializer.js\";\nfunction unsafe_u64(options) {\n  return bcs.u64({\n    name: \"unsafe_u64\",\n    ...options\n  }).transform({\n    input: (val) => val,\n    output: (val) => Number(val)\n  });\n}\nfunction optionEnum(type) {\n  return bcs.enum(\"Option\", {\n    None: null,\n    Some: type\n  });\n}\nconst Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n  validate: (val) => {\n    const address = typeof val === \"string\" ? val : toHex(val);\n    if (!address || !isValidSuiAddress(normalizeSuiAddress(address))) {\n      throw new Error(`Invalid Sui address ${address}`);\n    }\n  },\n  input: (val) => typeof val === \"string\" ? fromHex(normalizeSuiAddress(val)) : val,\n  output: (val) => normalizeSuiAddress(toHex(val))\n});\nconst ObjectDigest = bcs.vector(bcs.u8()).transform({\n  name: \"ObjectDigest\",\n  input: (value) => fromBase58(value),\n  output: (value) => toBase58(new Uint8Array(value)),\n  validate: (value) => {\n    if (fromBase58(value).length !== 32) {\n      throw new Error(\"ObjectDigest must be 32 bytes\");\n    }\n  }\n});\nconst SuiObjectRef = bcs.struct(\"SuiObjectRef\", {\n  objectId: Address,\n  version: bcs.u64(),\n  digest: ObjectDigest\n});\nconst SharedObjectRef = bcs.struct(\"SharedObjectRef\", {\n  objectId: Address,\n  initialSharedVersion: bcs.u64(),\n  mutable: bcs.bool()\n});\nconst ObjectArg = bcs.enum(\"ObjectArg\", {\n  ImmOrOwnedObject: SuiObjectRef,\n  SharedObject: SharedObjectRef,\n  Receiving: SuiObjectRef\n});\nconst Owner = bcs.enum(\"Owner\", {\n  AddressOwner: Address,\n  ObjectOwner: Address,\n  Shared: bcs.struct(\"Shared\", {\n    initialSharedVersion: bcs.u64()\n  }),\n  Immutable: null,\n  ConsensusV2: bcs.struct(\"ConsensusV2\", {\n    authenticator: bcs.enum(\"Authenticator\", {\n      SingleOwner: Address\n    }),\n    startVersion: bcs.u64()\n  })\n});\nconst CallArg = bcs.enum(\"CallArg\", {\n  Pure: bcs.struct(\"Pure\", {\n    bytes: bcs.vector(bcs.u8()).transform({\n      input: (val) => typeof val === \"string\" ? fromBase64(val) : val,\n      output: (val) => toBase64(new Uint8Array(val))\n    })\n  }),\n  Object: ObjectArg\n});\nconst InnerTypeTag = bcs.enum(\"TypeTag\", {\n  bool: null,\n  u8: null,\n  u64: null,\n  u128: null,\n  address: null,\n  signer: null,\n  vector: bcs.lazy(() => InnerTypeTag),\n  struct: bcs.lazy(() => StructTag),\n  u16: null,\n  u32: null,\n  u256: null\n});\nconst TypeTag = InnerTypeTag.transform({\n  input: (typeTag) => typeof typeTag === \"string\" ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n  output: (typeTag) => TypeTagSerializer.tagToString(typeTag)\n});\nconst Argument = bcs.enum(\"Argument\", {\n  GasCoin: null,\n  Input: bcs.u16(),\n  Result: bcs.u16(),\n  NestedResult: bcs.tuple([bcs.u16(), bcs.u16()])\n});\nconst ProgrammableMoveCall = bcs.struct(\"ProgrammableMoveCall\", {\n  package: Address,\n  module: bcs.string(),\n  function: bcs.string(),\n  typeArguments: bcs.vector(TypeTag),\n  arguments: bcs.vector(Argument)\n});\nconst Command = bcs.enum(\"Command\", {\n  /**\n   * A Move Call - any public Move function can be called via\n   * this transaction. The results can be used that instant to pass\n   * into the next transaction.\n   */\n  MoveCall: ProgrammableMoveCall,\n  /**\n   * Transfer vector of objects to a receiver.\n   */\n  TransferObjects: bcs.struct(\"TransferObjects\", {\n    objects: bcs.vector(Argument),\n    address: Argument\n  }),\n  // /**\n  //  * Split `amount` from a `coin`.\n  //  */\n  SplitCoins: bcs.struct(\"SplitCoins\", {\n    coin: Argument,\n    amounts: bcs.vector(Argument)\n  }),\n  // /**\n  //  * Merge Vector of Coins (`sources`) into a `destination`.\n  //  */\n  MergeCoins: bcs.struct(\"MergeCoins\", {\n    destination: Argument,\n    sources: bcs.vector(Argument)\n  }),\n  // /**\n  //  * Publish a Move module.\n  //  */\n  Publish: bcs.struct(\"Publish\", {\n    modules: bcs.vector(\n      bcs.vector(bcs.u8()).transform({\n        input: (val) => typeof val === \"string\" ? fromBase64(val) : val,\n        output: (val) => toBase64(new Uint8Array(val))\n      })\n    ),\n    dependencies: bcs.vector(Address)\n  }),\n  // /**\n  //  * Build a vector of objects using the input arguments.\n  //  * It is impossible to export construct a `vector<T: key>` otherwise,\n  //  * so this call serves a utility function.\n  //  */\n  MakeMoveVec: bcs.struct(\"MakeMoveVec\", {\n    type: optionEnum(TypeTag).transform({\n      input: (val) => val === null ? {\n        None: true\n      } : {\n        Some: val\n      },\n      output: (val) => val.Some ?? null\n    }),\n    elements: bcs.vector(Argument)\n  }),\n  Upgrade: bcs.struct(\"Upgrade\", {\n    modules: bcs.vector(\n      bcs.vector(bcs.u8()).transform({\n        input: (val) => typeof val === \"string\" ? fromBase64(val) : val,\n        output: (val) => toBase64(new Uint8Array(val))\n      })\n    ),\n    dependencies: bcs.vector(Address),\n    package: Address,\n    ticket: Argument\n  })\n});\nconst ProgrammableTransaction = bcs.struct(\"ProgrammableTransaction\", {\n  inputs: bcs.vector(CallArg),\n  commands: bcs.vector(Command)\n});\nconst TransactionKind = bcs.enum(\"TransactionKind\", {\n  ProgrammableTransaction,\n  ChangeEpoch: null,\n  Genesis: null,\n  ConsensusCommitPrologue: null\n});\nconst TransactionExpiration = bcs.enum(\"TransactionExpiration\", {\n  None: null,\n  Epoch: unsafe_u64()\n});\nconst StructTag = bcs.struct(\"StructTag\", {\n  address: Address,\n  module: bcs.string(),\n  name: bcs.string(),\n  typeParams: bcs.vector(InnerTypeTag)\n});\nconst GasData = bcs.struct(\"GasData\", {\n  payment: bcs.vector(SuiObjectRef),\n  owner: Address,\n  price: bcs.u64(),\n  budget: bcs.u64()\n});\nconst TransactionDataV1 = bcs.struct(\"TransactionDataV1\", {\n  kind: TransactionKind,\n  sender: Address,\n  gasData: GasData,\n  expiration: TransactionExpiration\n});\nconst TransactionData = bcs.enum(\"TransactionData\", {\n  V1: TransactionDataV1\n});\nconst IntentScope = bcs.enum(\"IntentScope\", {\n  TransactionData: null,\n  TransactionEffects: null,\n  CheckpointSummary: null,\n  PersonalMessage: null\n});\nconst IntentVersion = bcs.enum(\"IntentVersion\", {\n  V0: null\n});\nconst AppId = bcs.enum(\"AppId\", {\n  Sui: null\n});\nconst Intent = bcs.struct(\"Intent\", {\n  scope: IntentScope,\n  version: IntentVersion,\n  appId: AppId\n});\nfunction IntentMessage(T) {\n  return bcs.struct(`IntentMessage<${T.name}>`, {\n    intent: Intent,\n    value: T\n  });\n}\nconst CompressedSignature = bcs.enum(\"CompressedSignature\", {\n  ED25519: bcs.fixedArray(64, bcs.u8()),\n  Secp256k1: bcs.fixedArray(64, bcs.u8()),\n  Secp256r1: bcs.fixedArray(64, bcs.u8()),\n  ZkLogin: bcs.vector(bcs.u8())\n});\nconst PublicKey = bcs.enum(\"PublicKey\", {\n  ED25519: bcs.fixedArray(32, bcs.u8()),\n  Secp256k1: bcs.fixedArray(33, bcs.u8()),\n  Secp256r1: bcs.fixedArray(33, bcs.u8()),\n  ZkLogin: bcs.vector(bcs.u8())\n});\nconst MultiSigPkMap = bcs.struct(\"MultiSigPkMap\", {\n  pubKey: PublicKey,\n  weight: bcs.u8()\n});\nconst MultiSigPublicKey = bcs.struct(\"MultiSigPublicKey\", {\n  pk_map: bcs.vector(MultiSigPkMap),\n  threshold: bcs.u16()\n});\nconst MultiSig = bcs.struct(\"MultiSig\", {\n  sigs: bcs.vector(CompressedSignature),\n  bitmap: bcs.u16(),\n  multisig_pk: MultiSigPublicKey\n});\nconst base64String = bcs.vector(bcs.u8()).transform({\n  input: (val) => typeof val === \"string\" ? fromBase64(val) : val,\n  output: (val) => toBase64(new Uint8Array(val))\n});\nconst SenderSignedTransaction = bcs.struct(\"SenderSignedTransaction\", {\n  intentMessage: IntentMessage(TransactionData),\n  txSignatures: bcs.vector(base64String)\n});\nconst SenderSignedData = bcs.vector(SenderSignedTransaction, {\n  name: \"SenderSignedData\"\n});\nconst PasskeyAuthenticator = bcs.struct(\"PasskeyAuthenticator\", {\n  authenticatorData: bcs.vector(bcs.u8()),\n  clientDataJson: bcs.string(),\n  userSignature: bcs.vector(bcs.u8())\n});\nexport {\n  Address,\n  AppId,\n  Argument,\n  CallArg,\n  Command,\n  CompressedSignature,\n  GasData,\n  Intent,\n  IntentMessage,\n  IntentScope,\n  IntentVersion,\n  MultiSig,\n  MultiSigPkMap,\n  MultiSigPublicKey,\n  ObjectArg,\n  ObjectDigest,\n  Owner,\n  PasskeyAuthenticator,\n  ProgrammableMoveCall,\n  ProgrammableTransaction,\n  PublicKey,\n  SenderSignedData,\n  SenderSignedTransaction,\n  SharedObjectRef,\n  StructTag,\n  SuiObjectRef,\n  TransactionData,\n  TransactionDataV1,\n  TransactionExpiration,\n  TransactionKind,\n  TypeTag,\n  base64String\n};\n//# sourceMappingURL=bcs.js.map\n","import { bcs } from \"@mysten/bcs\";\nimport { Address, ObjectDigest, Owner, SuiObjectRef } from \"./bcs.js\";\nconst PackageUpgradeError = bcs.enum(\"PackageUpgradeError\", {\n  UnableToFetchPackage: bcs.struct(\"UnableToFetchPackage\", { packageId: Address }),\n  NotAPackage: bcs.struct(\"NotAPackage\", { objectId: Address }),\n  IncompatibleUpgrade: null,\n  DigestDoesNotMatch: bcs.struct(\"DigestDoesNotMatch\", { digest: bcs.vector(bcs.u8()) }),\n  UnknownUpgradePolicy: bcs.struct(\"UnknownUpgradePolicy\", { policy: bcs.u8() }),\n  PackageIDDoesNotMatch: bcs.struct(\"PackageIDDoesNotMatch\", {\n    packageId: Address,\n    ticketId: Address\n  })\n});\nconst ModuleId = bcs.struct(\"ModuleId\", {\n  address: Address,\n  name: bcs.string()\n});\nconst MoveLocation = bcs.struct(\"MoveLocation\", {\n  module: ModuleId,\n  function: bcs.u16(),\n  instruction: bcs.u16(),\n  functionName: bcs.option(bcs.string())\n});\nconst CommandArgumentError = bcs.enum(\"CommandArgumentError\", {\n  TypeMismatch: null,\n  InvalidBCSBytes: null,\n  InvalidUsageOfPureArg: null,\n  InvalidArgumentToPrivateEntryFunction: null,\n  IndexOutOfBounds: bcs.struct(\"IndexOutOfBounds\", { idx: bcs.u16() }),\n  SecondaryIndexOutOfBounds: bcs.struct(\"SecondaryIndexOutOfBounds\", {\n    resultIdx: bcs.u16(),\n    secondaryIdx: bcs.u16()\n  }),\n  InvalidResultArity: bcs.struct(\"InvalidResultArity\", { resultIdx: bcs.u16() }),\n  InvalidGasCoinUsage: null,\n  InvalidValueUsage: null,\n  InvalidObjectByValue: null,\n  InvalidObjectByMutRef: null,\n  SharedObjectOperationNotAllowed: null\n});\nconst TypeArgumentError = bcs.enum(\"TypeArgumentError\", {\n  TypeNotFound: null,\n  ConstraintNotSatisfied: null\n});\nconst ExecutionFailureStatus = bcs.enum(\"ExecutionFailureStatus\", {\n  InsufficientGas: null,\n  InvalidGasObject: null,\n  InvariantViolation: null,\n  FeatureNotYetSupported: null,\n  MoveObjectTooBig: bcs.struct(\"MoveObjectTooBig\", {\n    objectSize: bcs.u64(),\n    maxObjectSize: bcs.u64()\n  }),\n  MovePackageTooBig: bcs.struct(\"MovePackageTooBig\", {\n    objectSize: bcs.u64(),\n    maxObjectSize: bcs.u64()\n  }),\n  CircularObjectOwnership: bcs.struct(\"CircularObjectOwnership\", { object: Address }),\n  InsufficientCoinBalance: null,\n  CoinBalanceOverflow: null,\n  PublishErrorNonZeroAddress: null,\n  SuiMoveVerificationError: null,\n  MovePrimitiveRuntimeError: bcs.option(MoveLocation),\n  MoveAbort: bcs.tuple([MoveLocation, bcs.u64()]),\n  VMVerificationOrDeserializationError: null,\n  VMInvariantViolation: null,\n  FunctionNotFound: null,\n  ArityMismatch: null,\n  TypeArityMismatch: null,\n  NonEntryFunctionInvoked: null,\n  CommandArgumentError: bcs.struct(\"CommandArgumentError\", {\n    argIdx: bcs.u16(),\n    kind: CommandArgumentError\n  }),\n  TypeArgumentError: bcs.struct(\"TypeArgumentError\", {\n    argumentIdx: bcs.u16(),\n    kind: TypeArgumentError\n  }),\n  UnusedValueWithoutDrop: bcs.struct(\"UnusedValueWithoutDrop\", {\n    resultIdx: bcs.u16(),\n    secondaryIdx: bcs.u16()\n  }),\n  InvalidPublicFunctionReturnType: bcs.struct(\"InvalidPublicFunctionReturnType\", {\n    idx: bcs.u16()\n  }),\n  InvalidTransferObject: null,\n  EffectsTooLarge: bcs.struct(\"EffectsTooLarge\", { currentSize: bcs.u64(), maxSize: bcs.u64() }),\n  PublishUpgradeMissingDependency: null,\n  PublishUpgradeDependencyDowngrade: null,\n  PackageUpgradeError: bcs.struct(\"PackageUpgradeError\", { upgradeError: PackageUpgradeError }),\n  WrittenObjectsTooLarge: bcs.struct(\"WrittenObjectsTooLarge\", {\n    currentSize: bcs.u64(),\n    maxSize: bcs.u64()\n  }),\n  CertificateDenied: null,\n  SuiMoveVerificationTimedout: null,\n  SharedObjectOperationNotAllowed: null,\n  InputObjectDeleted: null,\n  ExecutionCancelledDueToSharedObjectCongestion: bcs.struct(\n    \"ExecutionCancelledDueToSharedObjectCongestion\",\n    {\n      congestedObjects: bcs.vector(Address)\n    }\n  ),\n  AddressDeniedForCoin: bcs.struct(\"AddressDeniedForCoin\", {\n    address: Address,\n    coinType: bcs.string()\n  }),\n  CoinTypeGlobalPause: bcs.struct(\"CoinTypeGlobalPause\", { coinType: bcs.string() }),\n  ExecutionCancelledDueToRandomnessUnavailable: null\n});\nconst ExecutionStatus = bcs.enum(\"ExecutionStatus\", {\n  Success: null,\n  Failed: bcs.struct(\"ExecutionFailed\", {\n    error: ExecutionFailureStatus,\n    command: bcs.option(bcs.u64())\n  })\n});\nconst GasCostSummary = bcs.struct(\"GasCostSummary\", {\n  computationCost: bcs.u64(),\n  storageCost: bcs.u64(),\n  storageRebate: bcs.u64(),\n  nonRefundableStorageFee: bcs.u64()\n});\nconst TransactionEffectsV1 = bcs.struct(\"TransactionEffectsV1\", {\n  status: ExecutionStatus,\n  executedEpoch: bcs.u64(),\n  gasUsed: GasCostSummary,\n  modifiedAtVersions: bcs.vector(bcs.tuple([Address, bcs.u64()])),\n  sharedObjects: bcs.vector(SuiObjectRef),\n  transactionDigest: ObjectDigest,\n  created: bcs.vector(bcs.tuple([SuiObjectRef, Owner])),\n  mutated: bcs.vector(bcs.tuple([SuiObjectRef, Owner])),\n  unwrapped: bcs.vector(bcs.tuple([SuiObjectRef, Owner])),\n  deleted: bcs.vector(SuiObjectRef),\n  unwrappedThenDeleted: bcs.vector(SuiObjectRef),\n  wrapped: bcs.vector(SuiObjectRef),\n  gasObject: bcs.tuple([SuiObjectRef, Owner]),\n  eventsDigest: bcs.option(ObjectDigest),\n  dependencies: bcs.vector(ObjectDigest)\n});\nconst VersionDigest = bcs.tuple([bcs.u64(), ObjectDigest]);\nconst ObjectIn = bcs.enum(\"ObjectIn\", {\n  NotExist: null,\n  Exist: bcs.tuple([VersionDigest, Owner])\n});\nconst ObjectOut = bcs.enum(\"ObjectOut\", {\n  NotExist: null,\n  ObjectWrite: bcs.tuple([ObjectDigest, Owner]),\n  PackageWrite: VersionDigest\n});\nconst IDOperation = bcs.enum(\"IDOperation\", {\n  None: null,\n  Created: null,\n  Deleted: null\n});\nconst EffectsObjectChange = bcs.struct(\"EffectsObjectChange\", {\n  inputState: ObjectIn,\n  outputState: ObjectOut,\n  idOperation: IDOperation\n});\nconst UnchangedSharedKind = bcs.enum(\"UnchangedSharedKind\", {\n  ReadOnlyRoot: VersionDigest,\n  MutateDeleted: bcs.u64(),\n  ReadDeleted: bcs.u64(),\n  Cancelled: bcs.u64(),\n  PerEpochConfig: null\n});\nconst TransactionEffectsV2 = bcs.struct(\"TransactionEffectsV2\", {\n  status: ExecutionStatus,\n  executedEpoch: bcs.u64(),\n  gasUsed: GasCostSummary,\n  transactionDigest: ObjectDigest,\n  gasObjectIndex: bcs.option(bcs.u32()),\n  eventsDigest: bcs.option(ObjectDigest),\n  dependencies: bcs.vector(ObjectDigest),\n  lamportVersion: bcs.u64(),\n  changedObjects: bcs.vector(bcs.tuple([Address, EffectsObjectChange])),\n  unchangedSharedObjects: bcs.vector(bcs.tuple([Address, UnchangedSharedKind])),\n  auxDataDigest: bcs.option(ObjectDigest)\n});\nconst TransactionEffects = bcs.enum(\"TransactionEffects\", {\n  V1: TransactionEffectsV1,\n  V2: TransactionEffectsV2\n});\nexport {\n  TransactionEffects\n};\n//# sourceMappingURL=effects.js.map\n","import { bcs } from \"@mysten/bcs\";\nimport {\n  Address,\n  AppId,\n  Argument,\n  CallArg,\n  Command,\n  CompressedSignature,\n  GasData,\n  Intent,\n  IntentMessage,\n  IntentScope,\n  IntentVersion,\n  MultiSig,\n  MultiSigPkMap,\n  MultiSigPublicKey,\n  ObjectArg,\n  ObjectDigest,\n  Owner,\n  PasskeyAuthenticator,\n  ProgrammableMoveCall,\n  ProgrammableTransaction,\n  PublicKey,\n  SenderSignedData,\n  SenderSignedTransaction,\n  SharedObjectRef,\n  StructTag,\n  SuiObjectRef,\n  TransactionData,\n  TransactionDataV1,\n  TransactionExpiration,\n  TransactionKind,\n  TypeTag\n} from \"./bcs.js\";\nimport { TransactionEffects } from \"./effects.js\";\nimport { TypeTagSerializer } from \"./type-tag-serializer.js\";\nimport { BcsType } from \"@mysten/bcs\";\nconst suiBcs = {\n  ...bcs,\n  U8: bcs.u8(),\n  U16: bcs.u16(),\n  U32: bcs.u32(),\n  U64: bcs.u64(),\n  U128: bcs.u128(),\n  U256: bcs.u256(),\n  ULEB128: bcs.uleb128(),\n  Bool: bcs.bool(),\n  String: bcs.string(),\n  Address,\n  AppId,\n  Argument,\n  CallArg,\n  Command,\n  CompressedSignature,\n  GasData,\n  Intent,\n  IntentMessage,\n  IntentScope,\n  IntentVersion,\n  MultiSig,\n  MultiSigPkMap,\n  MultiSigPublicKey,\n  ObjectArg,\n  ObjectDigest,\n  Owner,\n  PasskeyAuthenticator,\n  ProgrammableMoveCall,\n  ProgrammableTransaction,\n  PublicKey,\n  SenderSignedData,\n  SenderSignedTransaction,\n  SharedObjectRef,\n  StructTag,\n  SuiObjectRef,\n  TransactionData,\n  TransactionDataV1,\n  TransactionEffects,\n  TransactionExpiration,\n  TransactionKind,\n  TypeTag\n};\nimport {\n  pureBcsSchemaFromTypeName\n} from \"./pure.js\";\nexport {\n  BcsType,\n  TypeTagSerializer,\n  suiBcs as bcs,\n  pureBcsSchemaFromTypeName\n};\n//# sourceMappingURL=index.js.map\n","import { bcs } from \"../bcs/index.js\";\nfunction messageWithIntent(scope, message) {\n  return bcs.IntentMessage(bcs.fixedArray(message.length, bcs.u8())).serialize({\n    intent: {\n      scope: { [scope]: true },\n      version: { V0: true },\n      appId: { Sui: true }\n    },\n    value: message\n  }).toBytes();\n}\nexport {\n  messageWithIntent\n};\n//# sourceMappingURL=intent.js.map\n","const SIGNATURE_SCHEME_TO_FLAG = {\n  ED25519: 0,\n  Secp256k1: 1,\n  Secp256r1: 2,\n  MultiSig: 3,\n  ZkLogin: 5,\n  Passkey: 6\n};\nconst SIGNATURE_SCHEME_TO_SIZE = {\n  ED25519: 32,\n  Secp256k1: 33,\n  Secp256r1: 33\n};\nconst SIGNATURE_FLAG_TO_SCHEME = {\n  0: \"ED25519\",\n  1: \"Secp256k1\",\n  2: \"Secp256r1\",\n  3: \"MultiSig\",\n  5: \"ZkLogin\",\n  6: \"Passkey\"\n};\nexport {\n  SIGNATURE_FLAG_TO_SCHEME,\n  SIGNATURE_SCHEME_TO_FLAG,\n  SIGNATURE_SCHEME_TO_SIZE\n};\n//# sourceMappingURL=signature-scheme.js.map\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n    constructor(hash, _key) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        ahash(hash);\n        const key = toBytes(_key);\n        this.iHash = hash.create();\n        if (typeof this.iHash.update !== 'function')\n            throw new Error('Expected instance of class which extends utils.Hash');\n        this.blockLen = this.iHash.blockLen;\n        this.outputLen = this.iHash.outputLen;\n        const blockLen = this.blockLen;\n        const pad = new Uint8Array(blockLen);\n        // blockLen can be bigger than outputLen\n        pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36;\n        this.iHash.update(pad);\n        // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n        this.oHash = hash.create();\n        // Undo internal XOR && apply outer XOR\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36 ^ 0x5c;\n        this.oHash.update(pad);\n        clean(pad);\n    }\n    update(buf) {\n        aexists(this);\n        this.iHash.update(buf);\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        abytes(out, this.outputLen);\n        this.finished = true;\n        this.iHash.digestInto(out);\n        this.oHash.update(out);\n        this.oHash.digestInto(out);\n        this.destroy();\n    }\n    digest() {\n        const out = new Uint8Array(this.oHash.outputLen);\n        this.digestInto(out);\n        return out;\n    }\n    _cloneInto(to) {\n        // Create new instance without calling constructor since key already in state and we don't know it.\n        to || (to = Object.create(Object.getPrototypeOf(this), {}));\n        const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n        to = to;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        to.blockLen = blockLen;\n        to.outputLen = outputLen;\n        to.oHash = oHash._cloneInto(to.oHash);\n        to.iHash = iHash._cloneInto(to.iHash);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n    destroy() {\n        this.destroyed = true;\n        this.oHash.destroy();\n        this.iHash.destroy();\n    }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","import { fromBase64, toBase64 } from \"@mysten/bcs\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nimport { bcs } from \"../bcs/index.js\";\nimport { normalizeSuiAddress, SUI_ADDRESS_LENGTH } from \"../utils/sui-types.js\";\nimport { messageWithIntent } from \"./intent.js\";\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_SIZE } from \"./signature-scheme.js\";\nfunction bytesEqual(a, b) {\n  if (a === b) return true;\n  if (a.length !== b.length) {\n    return false;\n  }\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nclass PublicKey {\n  /**\n   * Checks if two public keys are equal\n   */\n  equals(publicKey) {\n    return bytesEqual(this.toRawBytes(), publicKey.toRawBytes());\n  }\n  /**\n   * Return the base-64 representation of the public key\n   */\n  toBase64() {\n    return toBase64(this.toRawBytes());\n  }\n  toString() {\n    throw new Error(\n      \"`toString` is not implemented on public keys. Use `toBase64()` or `toRawBytes()` instead.\"\n    );\n  }\n  /**\n   * Return the Sui representation of the public key encoded in\n   * base-64. A Sui public key is formed by the concatenation\n   * of the scheme flag with the raw bytes of the public key\n   */\n  toSuiPublicKey() {\n    const bytes = this.toSuiBytes();\n    return toBase64(bytes);\n  }\n  verifyWithIntent(bytes, signature, intent) {\n    const intentMessage = messageWithIntent(intent, bytes);\n    const digest = blake2b(intentMessage, { dkLen: 32 });\n    return this.verify(digest, signature);\n  }\n  /**\n   * Verifies that the signature is valid for for the provided PersonalMessage\n   */\n  verifyPersonalMessage(message, signature) {\n    return this.verifyWithIntent(\n      bcs.vector(bcs.u8()).serialize(message).toBytes(),\n      signature,\n      \"PersonalMessage\"\n    );\n  }\n  /**\n   * Verifies that the signature is valid for for the provided Transaction\n   */\n  verifyTransaction(transaction, signature) {\n    return this.verifyWithIntent(transaction, signature, \"TransactionData\");\n  }\n  /**\n   * Verifies that the public key is associated with the provided address\n   */\n  verifyAddress(address) {\n    return this.toSuiAddress() === address;\n  }\n  /**\n   * Returns the bytes representation of the public key\n   * prefixed with the signature scheme flag\n   */\n  toSuiBytes() {\n    const rawBytes = this.toRawBytes();\n    const suiBytes = new Uint8Array(rawBytes.length + 1);\n    suiBytes.set([this.flag()]);\n    suiBytes.set(rawBytes, 1);\n    return suiBytes;\n  }\n  /**\n   * Return the Sui address associated with this Ed25519 public key\n   */\n  toSuiAddress() {\n    return normalizeSuiAddress(\n      bytesToHex(blake2b(this.toSuiBytes(), { dkLen: 32 })).slice(0, SUI_ADDRESS_LENGTH * 2)\n    );\n  }\n}\nfunction parseSerializedKeypairSignature(serializedSignature) {\n  const bytes = fromBase64(serializedSignature);\n  const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[bytes[0]];\n  switch (signatureScheme) {\n    case \"ED25519\":\n    case \"Secp256k1\":\n    case \"Secp256r1\":\n      const size = SIGNATURE_SCHEME_TO_SIZE[signatureScheme];\n      const signature = bytes.slice(1, bytes.length - size);\n      const publicKey = bytes.slice(1 + signature.length);\n      return {\n        serializedSignature,\n        signatureScheme,\n        signature,\n        publicKey,\n        bytes\n      };\n    default:\n      throw new Error(\"Unsupported signature scheme\");\n  }\n}\nexport {\n  PublicKey,\n  bytesEqual,\n  parseSerializedKeypairSignature\n};\n//# sourceMappingURL=publickey.js.map\n","import { fromBase64, toBase64 } from \"@mysten/bcs\";\nimport { bcs } from \"../bcs/index.js\";\nimport { parseSerializedPasskeySignature } from \"../keypairs/passkey/publickey.js\";\nimport { parseSerializedZkLoginSignature } from \"../zklogin/publickey.js\";\nimport { parseSerializedKeypairSignature } from \"./publickey.js\";\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_FLAG } from \"./signature-scheme.js\";\nfunction toSerializedSignature({\n  signature,\n  signatureScheme,\n  publicKey\n}) {\n  if (!publicKey) {\n    throw new Error(\"`publicKey` is required\");\n  }\n  const pubKeyBytes = publicKey.toRawBytes();\n  const serializedSignature = new Uint8Array(1 + signature.length + pubKeyBytes.length);\n  serializedSignature.set([SIGNATURE_SCHEME_TO_FLAG[signatureScheme]]);\n  serializedSignature.set(signature, 1);\n  serializedSignature.set(pubKeyBytes, 1 + signature.length);\n  return toBase64(serializedSignature);\n}\nfunction parseSerializedSignature(serializedSignature) {\n  const bytes = fromBase64(serializedSignature);\n  const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[bytes[0]];\n  switch (signatureScheme) {\n    case \"Passkey\":\n      return parseSerializedPasskeySignature(serializedSignature);\n    case \"MultiSig\":\n      const multisig = bcs.MultiSig.parse(bytes.slice(1));\n      return {\n        serializedSignature,\n        signatureScheme,\n        multisig,\n        bytes,\n        signature: void 0\n      };\n    case \"ZkLogin\":\n      return parseSerializedZkLoginSignature(serializedSignature);\n    case \"ED25519\":\n    case \"Secp256k1\":\n    case \"Secp256r1\":\n      return parseSerializedKeypairSignature(serializedSignature);\n    default:\n      throw new Error(\"Unsupported signature scheme\");\n  }\n}\nexport {\n  parseSerializedSignature,\n  toSerializedSignature\n};\n//# sourceMappingURL=signature.js.map\n","import { bcs, toBase64 } from \"@mysten/bcs\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { bech32 } from \"@scure/base\";\nimport { messageWithIntent } from \"./intent.js\";\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_FLAG } from \"./signature-scheme.js\";\nimport { toSerializedSignature } from \"./signature.js\";\nconst PRIVATE_KEY_SIZE = 32;\nconst LEGACY_PRIVATE_KEY_SIZE = 64;\nconst SUI_PRIVATE_KEY_PREFIX = \"suiprivkey\";\nclass Signer {\n  /**\n   * Sign messages with a specific intent. By combining the message bytes with the intent before hashing and signing,\n   * it ensures that a signed message is tied to a specific purpose and domain separator is provided\n   */\n  async signWithIntent(bytes, intent) {\n    const intentMessage = messageWithIntent(intent, bytes);\n    const digest = blake2b(intentMessage, { dkLen: 32 });\n    const signature = toSerializedSignature({\n      signature: await this.sign(digest),\n      signatureScheme: this.getKeyScheme(),\n      publicKey: this.getPublicKey()\n    });\n    return {\n      signature,\n      bytes: toBase64(bytes)\n    };\n  }\n  /**\n   * Signs provided transaction by calling `signWithIntent()` with a `TransactionData` provided as intent scope\n   */\n  async signTransaction(bytes) {\n    return this.signWithIntent(bytes, \"TransactionData\");\n  }\n  /**\n   * Signs provided personal message by calling `signWithIntent()` with a `PersonalMessage` provided as intent scope\n   */\n  async signPersonalMessage(bytes) {\n    const { signature } = await this.signWithIntent(\n      bcs.vector(bcs.u8()).serialize(bytes).toBytes(),\n      \"PersonalMessage\"\n    );\n    return {\n      bytes: toBase64(bytes),\n      signature\n    };\n  }\n  async signAndExecuteTransaction({\n    transaction,\n    client\n  }) {\n    const bytes = await transaction.build({ client });\n    const { signature } = await this.signTransaction(bytes);\n    const response = await client.core.executeTransaction({\n      transaction: bytes,\n      signatures: [signature]\n    });\n    return response.transaction;\n  }\n  toSuiAddress() {\n    return this.getPublicKey().toSuiAddress();\n  }\n}\nclass Keypair extends Signer {\n}\nfunction decodeSuiPrivateKey(value) {\n  const { prefix, words } = bech32.decode(value);\n  if (prefix !== SUI_PRIVATE_KEY_PREFIX) {\n    throw new Error(\"invalid private key prefix\");\n  }\n  const extendedSecretKey = new Uint8Array(bech32.fromWords(words));\n  const secretKey = extendedSecretKey.slice(1);\n  const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[extendedSecretKey[0]];\n  return {\n    scheme: signatureScheme,\n    schema: signatureScheme,\n    secretKey\n  };\n}\nfunction encodeSuiPrivateKey(bytes, scheme) {\n  if (bytes.length !== PRIVATE_KEY_SIZE) {\n    throw new Error(\"Invalid bytes length\");\n  }\n  const flag = SIGNATURE_SCHEME_TO_FLAG[scheme];\n  const privKeyBytes = new Uint8Array(bytes.length + 1);\n  privKeyBytes.set([flag]);\n  privKeyBytes.set(bytes, 1);\n  return bech32.encode(SUI_PRIVATE_KEY_PREFIX, bech32.toWords(privKeyBytes));\n}\nexport {\n  Keypair,\n  LEGACY_PRIVATE_KEY_SIZE,\n  PRIVATE_KEY_SIZE,\n  SUI_PRIVATE_KEY_PREFIX,\n  Signer,\n  decodeSuiPrivateKey,\n  encodeSuiPrivateKey\n};\n//# sourceMappingURL=keypair.js.map\n","/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nimport { hmac } from \"./hmac.js\";\n// prettier-ignore\nimport { ahash, anumber, asyncLoop, checkOpts, clean, createView, Hash, kdfInputToBytes } from \"./utils.js\";\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n    ahash(hash);\n    const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n    const { c, dkLen, asyncTick } = opts;\n    anumber(c);\n    anumber(dkLen);\n    anumber(asyncTick);\n    if (c < 1)\n        throw new Error('iterations (c) should be >= 1');\n    const password = kdfInputToBytes(_password);\n    const salt = kdfInputToBytes(_salt);\n    // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n    const DK = new Uint8Array(dkLen);\n    // U1 = PRF(Password, Salt + INT_32_BE(i))\n    const PRF = hmac.create(hash, password);\n    const PRFSalt = PRF._cloneInto().update(salt);\n    return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n    PRF.destroy();\n    PRFSalt.destroy();\n    if (prfW)\n        prfW.destroy();\n    clean(u);\n    return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * const key = pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: Math.pow(2, 18) });\n */\nexport function pbkdf2(hash, password, salt, opts) {\n    const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = createView(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        for (let ui = 1; ui < c; ui++) {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        }\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function. Async version.\n * @example\n * await pbkdf2Async(sha256, 'password', 'salt', { dkLen: 32, c: 500_000 });\n */\nexport async function pbkdf2Async(hash, password, salt, opts) {\n    const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = createView(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        await asyncLoop(c - 1, asyncTick, () => {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        });\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","/**\n * Audited & minimal JS implementation of\n * [BIP39 mnemonic phrases](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).\n * @module\n * @example\n```js\nimport * as bip39 from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\nconst mn = bip39.generateMnemonic(wordlist);\nconsole.log(mn);\nconst ent = bip39.mnemonicToEntropy(mn, wordlist)\nbip39.entropyToMnemonic(ent, wordlist);\nbip39.validateMnemonic(mn, wordlist);\nawait bip39.mnemonicToSeed(mn, 'password');\nbip39.mnemonicToSeedSync(mn, 'password');\n\n// Wordlists\nimport { wordlist as czech } from '@scure/bip39/wordlists/czech';\nimport { wordlist as english } from '@scure/bip39/wordlists/english';\nimport { wordlist as french } from '@scure/bip39/wordlists/french';\nimport { wordlist as italian } from '@scure/bip39/wordlists/italian';\nimport { wordlist as japanese } from '@scure/bip39/wordlists/japanese';\nimport { wordlist as korean } from '@scure/bip39/wordlists/korean';\nimport { wordlist as portuguese } from '@scure/bip39/wordlists/portuguese';\nimport { wordlist as simplifiedChinese } from '@scure/bip39/wordlists/simplified-chinese';\nimport { wordlist as spanish } from '@scure/bip39/wordlists/spanish';\nimport { wordlist as traditionalChinese } from '@scure/bip39/wordlists/traditional-chinese';\n```\n */\n/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nimport { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2';\nimport { sha256, sha512 } from '@noble/hashes/sha2';\nimport { abytes, anumber, randomBytes } from '@noble/hashes/utils';\nimport { utils as baseUtils } from '@scure/base';\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\n// https://tonsky.me/blog/unicode/#why-is-a----\nfunction nfkd(str) {\n    if (typeof str !== 'string')\n        throw new TypeError('invalid mnemonic type: ' + typeof str);\n    return str.normalize('NFKD');\n}\nfunction normalize(str) {\n    const norm = nfkd(str);\n    const words = norm.split(' ');\n    if (![12, 15, 18, 21, 24].includes(words.length))\n        throw new Error('Invalid mnemonic');\n    return { nfkd: norm, words };\n}\nfunction aentropy(ent) {\n    abytes(ent, 16, 20, 24, 28, 32);\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function generateMnemonic(wordlist, strength = 128) {\n    anumber(strength);\n    if (strength % 32 !== 0 || strength > 256)\n        throw new TypeError('Invalid entropy');\n    return entropyToMnemonic(randomBytes(strength / 8), wordlist);\n}\nconst calcChecksum = (entropy) => {\n    // Checksum is ent.length/4 bits long\n    const bitsLeft = 8 - entropy.length / 4;\n    // Zero rightmost \"bitsLeft\" bits in byte\n    // For example: bitsLeft=4 val=10111101 -> 10110000\n    return new Uint8Array([(sha256(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n    if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n        throw new Error('Wordlist: expected array of 2048 strings');\n    wordlist.forEach((i) => {\n        if (typeof i !== 'string')\n            throw new Error('wordlist: non-string element: ' + i);\n    });\n    return baseUtils.chain(baseUtils.checksum(1, calcChecksum), baseUtils.radix2(11, true), baseUtils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n *   0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n *   0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n    const { words } = normalize(mnemonic);\n    const entropy = getCoder(wordlist).decode(words);\n    aentropy(entropy);\n    return entropy;\n}\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n *   0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n *   0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function entropyToMnemonic(entropy, wordlist) {\n    aentropy(entropy);\n    const words = getCoder(wordlist).encode(entropy);\n    return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nexport function validateMnemonic(mnemonic, wordlist) {\n    try {\n        mnemonicToEntropy(mnemonic, wordlist);\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n}\nconst psalt = (passphrase) => nfkd('mnemonic' + passphrase);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeed(mnemonic, passphrase = '') {\n    return pbkdf2Async(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedSync(mnemonic, passphrase = '') {\n    return pbkdf2(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n","import { toHex } from \"@mysten/bcs\";\nimport { mnemonicToSeedSync as bip39MnemonicToSeedSync } from \"@scure/bip39\";\nfunction isValidHardenedPath(path) {\n  if (!new RegExp(\"^m\\\\/44'\\\\/784'\\\\/[0-9]+'\\\\/[0-9]+'\\\\/[0-9]+'+$\").test(path)) {\n    return false;\n  }\n  return true;\n}\nfunction isValidBIP32Path(path) {\n  if (!new RegExp(\"^m\\\\/(54|74)'\\\\/784'\\\\/[0-9]+'\\\\/[0-9]+\\\\/[0-9]+$\").test(path)) {\n    return false;\n  }\n  return true;\n}\nfunction mnemonicToSeed(mnemonics) {\n  return bip39MnemonicToSeedSync(mnemonics, \"\");\n}\nfunction mnemonicToSeedHex(mnemonics) {\n  return toHex(mnemonicToSeed(mnemonics));\n}\nexport {\n  isValidBIP32Path,\n  isValidHardenedPath,\n  mnemonicToSeed,\n  mnemonicToSeedHex\n};\n//# sourceMappingURL=mnemonics.js.map\n","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n * @deprecated\n */\nimport { SHA384 as SHA384n, sha384 as sha384n, sha512_224 as sha512_224n, SHA512_224 as SHA512_224n, sha512_256 as sha512_256n, SHA512_256 as SHA512_256n, SHA512 as SHA512n, sha512 as sha512n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512 = SHA512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512 = sha512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA384 = SHA384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha384 = sha384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_224 = SHA512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_224 = sha512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_256 = SHA512_256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_256 = sha512_256n;\n//# sourceMappingURL=sha512.js.map","import { fromHex } from \"@mysten/bcs\";\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nconst ED25519_CURVE = \"ed25519 seed\";\nconst HARDENED_OFFSET = 2147483648;\nconst pathRegex = new RegExp(\"^m(\\\\/[0-9]+')+$\");\nconst replaceDerive = (val) => val.replace(\"'\", \"\");\nconst getMasterKeyFromSeed = (seed) => {\n  const h = hmac.create(sha512, ED25519_CURVE);\n  const I = h.update(fromHex(seed)).digest();\n  const IL = I.slice(0, 32);\n  const IR = I.slice(32);\n  return {\n    key: IL,\n    chainCode: IR\n  };\n};\nconst CKDPriv = ({ key, chainCode }, index) => {\n  const indexBuffer = new ArrayBuffer(4);\n  const cv = new DataView(indexBuffer);\n  cv.setUint32(0, index);\n  const data = new Uint8Array(1 + key.length + indexBuffer.byteLength);\n  data.set(new Uint8Array(1).fill(0));\n  data.set(key, 1);\n  data.set(new Uint8Array(indexBuffer, 0, indexBuffer.byteLength), key.length + 1);\n  const I = hmac.create(sha512, chainCode).update(data).digest();\n  const IL = I.slice(0, 32);\n  const IR = I.slice(32);\n  return {\n    key: IL,\n    chainCode: IR\n  };\n};\nconst isValidPath = (path) => {\n  if (!pathRegex.test(path)) {\n    return false;\n  }\n  return !path.split(\"/\").slice(1).map(replaceDerive).some(\n    isNaN\n    /* ts T_T*/\n  );\n};\nconst derivePath = (path, seed, offset = HARDENED_OFFSET) => {\n  if (!isValidPath(path)) {\n    throw new Error(\"Invalid derivation path\");\n  }\n  const { key, chainCode } = getMasterKeyFromSeed(seed);\n  const segments = path.split(\"/\").slice(1).map(replaceDerive).map((el) => parseInt(el, 10));\n  return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), {\n    key,\n    chainCode\n  });\n};\nexport {\n  derivePath\n};\n//# sourceMappingURL=ed25519-hd-key.js.map\n","import { fromBase64 } from \"@mysten/bcs\";\nimport { ed25519 } from \"@noble/curves/ed25519\";\nimport {\n  bytesEqual,\n  parseSerializedKeypairSignature,\n  PublicKey\n} from \"../../cryptography/publickey.js\";\nimport { SIGNATURE_SCHEME_TO_FLAG } from \"../../cryptography/signature-scheme.js\";\nconst PUBLIC_KEY_SIZE = 32;\nclass Ed25519PublicKey extends PublicKey {\n  /**\n   * Create a new Ed25519PublicKey object\n   * @param value ed25519 public key as buffer or base-64 encoded string\n   */\n  constructor(value) {\n    super();\n    if (typeof value === \"string\") {\n      this.data = fromBase64(value);\n    } else if (value instanceof Uint8Array) {\n      this.data = value;\n    } else {\n      this.data = Uint8Array.from(value);\n    }\n    if (this.data.length !== PUBLIC_KEY_SIZE) {\n      throw new Error(\n        `Invalid public key input. Expected ${PUBLIC_KEY_SIZE} bytes, got ${this.data.length}`\n      );\n    }\n  }\n  /**\n   * Checks if two Ed25519 public keys are equal\n   */\n  equals(publicKey) {\n    return super.equals(publicKey);\n  }\n  /**\n   * Return the byte array representation of the Ed25519 public key\n   */\n  toRawBytes() {\n    return this.data;\n  }\n  /**\n   * Return the Sui address associated with this Ed25519 public key\n   */\n  flag() {\n    return SIGNATURE_SCHEME_TO_FLAG[\"ED25519\"];\n  }\n  /**\n   * Verifies that the signature is valid for for the provided message\n   */\n  async verify(message, signature) {\n    let bytes;\n    if (typeof signature === \"string\") {\n      const parsed = parseSerializedKeypairSignature(signature);\n      if (parsed.signatureScheme !== \"ED25519\") {\n        throw new Error(\"Invalid signature scheme\");\n      }\n      if (!bytesEqual(this.toRawBytes(), parsed.publicKey)) {\n        throw new Error(\"Signature does not match public key\");\n      }\n      bytes = parsed.signature;\n    } else {\n      bytes = signature;\n    }\n    return ed25519.verify(bytes, message, this.toRawBytes());\n  }\n}\nEd25519PublicKey.SIZE = PUBLIC_KEY_SIZE;\nexport {\n  Ed25519PublicKey\n};\n//# sourceMappingURL=publickey.js.map\n","import { ed25519 } from \"@noble/curves/ed25519\";\nimport {\n  decodeSuiPrivateKey,\n  encodeSuiPrivateKey,\n  Keypair,\n  PRIVATE_KEY_SIZE\n} from \"../../cryptography/keypair.js\";\nimport { isValidHardenedPath, mnemonicToSeedHex } from \"../../cryptography/mnemonics.js\";\nimport { derivePath } from \"./ed25519-hd-key.js\";\nimport { Ed25519PublicKey } from \"./publickey.js\";\nconst DEFAULT_ED25519_DERIVATION_PATH = \"m/44'/784'/0'/0'/0'\";\nclass Ed25519Keypair extends Keypair {\n  /**\n   * Create a new Ed25519 keypair instance.\n   * Generate random keypair if no {@link Ed25519Keypair} is provided.\n   *\n   * @param keypair Ed25519 keypair\n   */\n  constructor(keypair) {\n    super();\n    if (keypair) {\n      this.keypair = {\n        publicKey: keypair.publicKey,\n        secretKey: keypair.secretKey.slice(0, 32)\n      };\n    } else {\n      const privateKey = ed25519.utils.randomPrivateKey();\n      this.keypair = {\n        publicKey: ed25519.getPublicKey(privateKey),\n        secretKey: privateKey\n      };\n    }\n  }\n  /**\n   * Get the key scheme of the keypair ED25519\n   */\n  getKeyScheme() {\n    return \"ED25519\";\n  }\n  /**\n   * Generate a new random Ed25519 keypair\n   */\n  static generate() {\n    const secretKey = ed25519.utils.randomPrivateKey();\n    return new Ed25519Keypair({\n      publicKey: ed25519.getPublicKey(secretKey),\n      secretKey\n    });\n  }\n  /**\n   * Create a Ed25519 keypair from a raw secret key byte array, also known as seed.\n   * This is NOT the private scalar which is result of hashing and bit clamping of\n   * the raw secret key.\n   *\n   * @throws error if the provided secret key is invalid and validation is not skipped.\n   *\n   * @param secretKey secret key as a byte array or Bech32 secret key string\n   * @param options: skip secret key validation\n   */\n  static fromSecretKey(secretKey, options) {\n    if (typeof secretKey === \"string\") {\n      const decoded = decodeSuiPrivateKey(secretKey);\n      if (decoded.schema !== \"ED25519\") {\n        throw new Error(`Expected a ED25519 keypair, got ${decoded.schema}`);\n      }\n      return this.fromSecretKey(decoded.secretKey, options);\n    }\n    const secretKeyLength = secretKey.length;\n    if (secretKeyLength !== PRIVATE_KEY_SIZE) {\n      throw new Error(\n        `Wrong secretKey size. Expected ${PRIVATE_KEY_SIZE} bytes, got ${secretKeyLength}.`\n      );\n    }\n    const keypair = {\n      publicKey: ed25519.getPublicKey(secretKey),\n      secretKey\n    };\n    if (!options || !options.skipValidation) {\n      const encoder = new TextEncoder();\n      const signData = encoder.encode(\"sui validation\");\n      const signature = ed25519.sign(signData, secretKey);\n      if (!ed25519.verify(signature, signData, keypair.publicKey)) {\n        throw new Error(\"provided secretKey is invalid\");\n      }\n    }\n    return new Ed25519Keypair(keypair);\n  }\n  /**\n   * The public key for this Ed25519 keypair\n   */\n  getPublicKey() {\n    return new Ed25519PublicKey(this.keypair.publicKey);\n  }\n  /**\n   * The Bech32 secret key string for this Ed25519 keypair\n   */\n  getSecretKey() {\n    return encodeSuiPrivateKey(\n      this.keypair.secretKey.slice(0, PRIVATE_KEY_SIZE),\n      this.getKeyScheme()\n    );\n  }\n  /**\n   * Return the signature for the provided data using Ed25519.\n   */\n  async sign(data) {\n    return ed25519.sign(data, this.keypair.secretKey);\n  }\n  /**\n   * Derive Ed25519 keypair from mnemonics and path. The mnemonics must be normalized\n   * and validated against the english wordlist.\n   *\n   * If path is none, it will default to m/44'/784'/0'/0'/0', otherwise the path must\n   * be compliant to SLIP-0010 in form m/44'/784'/{account_index}'/{change_index}'/{address_index}'.\n   */\n  static deriveKeypair(mnemonics, path) {\n    if (path == null) {\n      path = DEFAULT_ED25519_DERIVATION_PATH;\n    }\n    if (!isValidHardenedPath(path)) {\n      throw new Error(\"Invalid derivation path\");\n    }\n    const { key } = derivePath(path, mnemonicToSeedHex(mnemonics));\n    return Ed25519Keypair.fromSecretKey(key);\n  }\n  /**\n   * Derive Ed25519 keypair from mnemonicSeed and path.\n   *\n   * If path is none, it will default to m/44'/784'/0'/0'/0', otherwise the path must\n   * be compliant to SLIP-0010 in form m/44'/784'/{account_index}'/{change_index}'/{address_index}'.\n   */\n  static deriveKeypairFromSeed(seedHex, path) {\n    if (path == null) {\n      path = DEFAULT_ED25519_DERIVATION_PATH;\n    }\n    if (!isValidHardenedPath(path)) {\n      throw new Error(\"Invalid derivation path\");\n    }\n    const { key } = derivePath(path, seedHex);\n    return Ed25519Keypair.fromSecretKey(key);\n  }\n}\nexport {\n  DEFAULT_ED25519_DERIVATION_PATH,\n  Ed25519Keypair\n};\n//# sourceMappingURL=keypair.js.map\n","import crypto from \"crypto\";\r\nimport { HDNodeWallet, Mnemonic } from \"ethers\";\r\nimport { mnemonicToSeedSync, entropyToMnemonic as parseEntropy } from \"bip39\";\r\nimport { derivePath } from \"ed25519-hd-key\";\r\nimport { Keypair as SolKeypair } from \"@solana/web3.js\";\r\nimport nacl from \"tweetnacl\";\r\nimport { Ed25519Keypair } from \"@mysten/sui/keypairs/ed25519\";\r\nimport {\r\n  networkEth,\r\n  networkSol,\r\n  networkSui,\r\n  NetworkSymbols,\r\n} from \"based-auth/networks\";\r\n\r\nexport function createKeypairs(\r\n  network: NetworkSymbols,\r\n  nounce: string,\r\n  provider: string\r\n): { address: string; keypair: any } {\r\n  if (!process.env.PREFIX_HASH) {\r\n    throw new Error(\"PREFIX_HASH is not set\");\r\n  }\r\n\r\n  const nonce = Buffer.from(\r\n    crypto\r\n      .createHash(`${\"m\"}${\"d\"}${5}`)\r\n      .update(process.env.PREFIX_HASH + nounce)\r\n      .digest(\"hex\")\r\n  );\r\n\r\n  const ethPath = \"m/44'/60'/0'/0/0\";\r\n  const solPath = \"m/44'/501'/0'/0'\";\r\n  // const tonPath = \"m/44'/607'/0'/0'\";\r\n  const suiPath = \"m/44'/784'/0'/0'/0'\";\r\n  // const entropy = new Uint8Array(nonce);\r\n  // const words = parseEntropy((nonce));\r\n  const words = parseEntropy(Buffer.from(nonce));\r\n\r\n  const seed = mnemonicToSeedSync(words, provider);\r\n\r\n  const ethSeed = Mnemonic.fromPhrase(words, provider);\r\n  const solSeed = derivePath(solPath, seed.toString(\"hex\"), 0).key;\r\n  const suiSeed = derivePath(suiPath, seed.toString(\"hex\"), 0).key;\r\n\r\n  const ethpair = HDNodeWallet.fromMnemonic(ethSeed, ethPath);\r\n  const solpair = new SolKeypair(nacl.sign.keyPair.fromSeed(solSeed));\r\n  const suipair = new Ed25519Keypair(nacl.sign.keyPair.fromSeed(suiSeed));\r\n\r\n  // const tonpair0 = nacl.sign.keyPair.fromSeed(tonSeed);\r\n  // const tonpair = await mnemonicToKeyPair(words.split(/\\s/));\r\n\r\n  // const tonweb = new TonWeb();\r\n  // const WalletClass = tonweb.wallet.all[\"v4R2\"];\r\n  // const tonWallet = new WalletClass(undefined, {\r\n  //   wc: 0,\r\n  //   publicKey: tonpair.publicKey,\r\n  // });\r\n  // const tonAddress = await tonWallet.getAddress();\r\n\r\n  let result = {};\r\n\r\n  switch (network) {\r\n    case networkEth.symbol:\r\n      result = {\r\n        address: ethpair.address,\r\n        keypair: ethpair,\r\n      };\r\n      break;\r\n    case networkSol.symbol:\r\n      result = {\r\n        address: solpair.publicKey.toBase58(),\r\n        keypair: solpair,\r\n      };\r\n      break;\r\n    case networkSui.symbol:\r\n      result = {\r\n        address: suipair.getPublicKey().toSuiAddress(),\r\n        keypair: suipair,\r\n      };\r\n      break;\r\n    default:\r\n      throw new Error(\"Invalid network\");\r\n  }\r\n\r\n  return result as { address: string; keypair: any };\r\n}\r\n","import { UserProfileModel } from \"based-shared/models/UserProfile\";\r\nimport { UserRole } from \"based-shared/types\";\r\nimport { AllChains, chainSolDevnet } from \"based-auth/chains\";\r\nimport { connectToDatabase } from \"based-shared/utils/connect-database\";\r\nimport shortid from \"shortid\";\r\nimport { createKeypairs } from \"./create-keypairs\";\r\nimport { auth } from \"./auth-config\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\n\r\nconst staticAdminAddresses = [\"0x0000000000000000000000000000000000000000\"];\r\n\r\nconst staticAdminEmails = [\"talentdevstar@gmail.com\"];\r\n\r\nexport async function updateOrCreateUserProfile(\r\n  provider: string,\r\n  chainId: number,\r\n  network: string,\r\n  address: string,\r\n  social: string,\r\n  name: string,\r\n  image: string,\r\n  role: UserRole\r\n) {\r\n  await connectToDatabase();\r\n\r\n  const session = (await auth()) as any;\r\n  let currentUser = null;\r\n  if (session?.user?.id) {\r\n    currentUser = await UserProfileModel.findById(session.user.id);\r\n  }\r\n  const existingUser = await UserProfileModel.findOne({\r\n    \"users.network\": network,\r\n    \"users.address\": address,\r\n  });\r\n\r\n  if (\r\n    currentUser &&\r\n    existingUser &&\r\n    currentUser._id.toString() !== existingUser._id.toString()\r\n  ) {\r\n    const mergedUsers = [...currentUser.users, ...existingUser.users].filter(\r\n      (user, idx, arr) =>\r\n        arr.findIndex(\r\n          (u) =>\r\n            u.address.toLowerCase() === user.address.toLowerCase() &&\r\n            u.network.toLowerCase() === user.network.toLowerCase()\r\n        ) === idx\r\n    );\r\n\r\n    await UserProfileModel.deleteOne({ _id: existingUser._id });\r\n\r\n    currentUser.users = mergedUsers;\r\n    currentUser.lastAddress = address;\r\n    currentUser.lastNetwork = network;\r\n    await currentUser.save();\r\n\r\n    return currentUser.toObject();\r\n  }\r\n\r\n  if (currentUser || existingUser) {\r\n    const userProfile = currentUser || existingUser;\r\n    if (!userProfile) {\r\n      throw new Error(\"User profile not found\");\r\n    }\r\n    if (\r\n      !userProfile.users.some(\r\n        (u: { address: string; network: string }) =>\r\n          u.address.toLowerCase() === address.toLowerCase() &&\r\n          u.network.toLowerCase() === network.toLowerCase()\r\n      )\r\n    ) {\r\n      userProfile.users.push({\r\n        address,\r\n        network: network as NetworkSymbols,\r\n        social,\r\n        role,\r\n        provider,\r\n        chainId,\r\n        image,\r\n        name,\r\n      });\r\n    }\r\n    userProfile.lastAddress = address;\r\n    userProfile.lastNetwork = network;\r\n    await userProfile.save();\r\n    return userProfile.toObject();\r\n  }\r\n\r\n  const created = new UserProfileModel({\r\n    name,\r\n    image,\r\n    lastAddress: address,\r\n    lastNetwork: network,\r\n    users: [{ address, network, chainId, social, role, provider, image, name }],\r\n  });\r\n  await created.save();\r\n\r\n  return created.toObject();\r\n}\r\n\r\nexport async function saveSocialUser(\r\n  provider: string,\r\n  social: string,\r\n  name: string,\r\n  image: string\r\n) {\r\n  let role = UserRole.USER;\r\n  if (staticAdminEmails.includes(social)) {\r\n    role = UserRole.ADMIN;\r\n  }\r\n\r\n  const chainId = Number(process.env.DEFAULT_CHAINID || chainSolDevnet.id);\r\n\r\n  const chain = AllChains.find((c) => c.id === chainId);\r\n  if (!chain) {\r\n    throw new Error(\"Chain not found\");\r\n  }\r\n\r\n  const network = chain.network.symbol;\r\n  const { address } = createKeypairs(network, social, provider);\r\n  if (staticAdminAddresses.includes(address)) {\r\n    role = UserRole.ADMIN;\r\n  }\r\n\r\n  const user = await updateOrCreateUserProfile(\r\n    provider,\r\n    chain.id,\r\n    network,\r\n    address,\r\n    social,\r\n    name,\r\n    image,\r\n    role\r\n  );\r\n\r\n  return {\r\n    _id: user.id,\r\n    users: user.users,\r\n    provider,\r\n    chainId: chain.id,\r\n    network,\r\n    social,\r\n    address,\r\n    name,\r\n    image,\r\n    role,\r\n  };\r\n}\r\n\r\nexport async function saveWalletUser(\r\n  provider: string,\r\n  chainId: number,\r\n  network: string,\r\n  address: string\r\n) {\r\n  await connectToDatabase();\r\n\r\n  let role = UserRole.USER;\r\n  if (staticAdminAddresses.includes(address)) {\r\n    role = UserRole.ADMIN;\r\n  }\r\n\r\n  const name = shortid.generate();\r\n  const image = \"https://api.dicebear.com/9.x/thumbs/svg?seed=\" + address;\r\n\r\n  const user = await updateOrCreateUserProfile(\r\n    provider,\r\n    chainId,\r\n    network,\r\n    address,\r\n    \"\",\r\n    name,\r\n    image,\r\n    role\r\n  );\r\n\r\n  return {\r\n    _id: user.id,\r\n    users: user.users,\r\n    provider,\r\n    chainId,\r\n    network,\r\n    social: \"\",\r\n    address,\r\n    name,\r\n    image,\r\n    role,\r\n  };\r\n}\r\n","import NextAuth from \"next-auth\";\r\n\r\nimport Google from \"next-auth/providers/google\";\r\nimport GitHub from \"next-auth/providers/github\";\r\nimport Twitter from \"next-auth/providers/twitter\";\r\nimport CredentialsProvider from \"next-auth/providers/credentials\";\r\n// import Discord from \"next-auth/providers/discord\";\r\n\r\nimport nacl from \"tweetnacl\";\r\nimport { PublicKey as SolPubKey } from \"@solana/web3.js\";\r\nimport { getBytes, hashMessage, recoverAddress } from \"ethers\";\r\nimport { IChain, AllChains } from \"based-auth/chains\";\r\nimport { saveSocialUser, saveWalletUser } from \"./user-profile\";\r\nimport { createKeypairs } from \"./create-keypairs\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\n\r\n// Extend Twitter provider type\r\ntype TwitterProvider = typeof Twitter & {\r\n  version?: \"2.0\";\r\n};\r\n\r\nif (!process.env.AUTH_GOOGLE_ID || !process.env.AUTH_GOOGLE_SECRET) {\r\n  throw new Error(\"AUTH_GOOGLE_ID and AUTH_GOOGLE_SECRET must be set\");\r\n}\r\nif (!process.env.AUTH_GITHUB_ID || !process.env.AUTH_GITHUB_SECRET) {\r\n  throw new Error(\"AUTH_GITHUB_ID and AUTH_GITHUB_SECRET must be set\");\r\n}\r\nif (!process.env.AUTH_TWITTER_ID || !process.env.AUTH_TWITTER_SECRET) {\r\n  throw new Error(\"AUTH_TWITTER_ID and AUTH_TWITTER_SECRET must be set\");\r\n}\r\n\r\nconst authConfig = NextAuth({\r\n  providers: [\r\n    Twitter({\r\n      version: \"2.0\",\r\n      clientId: process.env.AUTH_TWITTER_ID,\r\n      clientSecret: process.env.AUTH_TWITTER_SECRET,\r\n      profile: async ({\r\n        data: { profile_image_url, name, username },\r\n      }: {\r\n        data: {\r\n          profile_image_url: string;\r\n          name: string;\r\n          username: string;\r\n        };\r\n      }) => {\r\n        return await saveSocialUser(\r\n          \"twitter\",\r\n          username,\r\n          name,\r\n          profile_image_url\r\n        );\r\n      },\r\n    } as any),\r\n    Google({\r\n      clientId: process.env.AUTH_GOOGLE_ID,\r\n      clientSecret: process.env.AUTH_GOOGLE_SECRET,\r\n      profile: async ({ name, email, picture }) => {\r\n        return await saveSocialUser(\"google\", email, name, picture);\r\n      },\r\n    }),\r\n    GitHub({\r\n      clientId: process.env.AUTH_GITHUB_ID,\r\n      clientSecret: process.env.AUTH_GITHUB_SECRET,\r\n      profile: async ({ name, login, avatar_url }) => {\r\n        // html_url, email\r\n        return await saveSocialUser(\"github\", login, name || \"\", avatar_url);\r\n      },\r\n    }),\r\n\r\n    CredentialsProvider({\r\n      name: \"Connect Wallet\",\r\n      credentials: {\r\n        chainId: {\r\n          label: \"Chain Id\",\r\n          type: \"number\",\r\n          placeholder: \"1...\",\r\n        },\r\n        address: {\r\n          label: \"Address\",\r\n          type: \"text\",\r\n          placeholder: \"0x0...\",\r\n        },\r\n        message: {\r\n          label: \"Message\",\r\n          type: \"text\",\r\n          placeholder: \"hi...\",\r\n        },\r\n        signature: {\r\n          label: \"Signature\",\r\n          type: \"text\",\r\n          placeholder: \"0x0...\",\r\n        },\r\n      },\r\n      async authorize(credentials: any) {\r\n        if (\r\n          !credentials.provider ||\r\n          !credentials.chainId ||\r\n          !credentials.address ||\r\n          !credentials.message ||\r\n          !credentials.signature\r\n        ) {\r\n          console.log(\"Missing credentials\");\r\n          return null;\r\n        }\r\n        const provider = credentials.provider;\r\n        const chainId = Number(credentials.chainId);\r\n        const address = credentials.address.toString();\r\n        const message = credentials.message.toString();\r\n        const signature = credentials.signature.toString();\r\n        const chain = AllChains.find((c) => c.id === chainId);\r\n        if (!chain) {\r\n          console.log(\"Invalid chain\");\r\n          return null;\r\n        }\r\n        const network = chain.network.symbol;\r\n        switch (network) {\r\n          case \"eth\":\r\n            const mesageHash = hashMessage(message);\r\n            const recoveredAddress = recoverAddress(\r\n              getBytes(mesageHash),\r\n              signature\r\n            );\r\n            if (recoveredAddress.toLowerCase() !== address.toLowerCase()) {\r\n              console.log(\"Invalid signature\");\r\n              return null;\r\n            }\r\n            break;\r\n          case \"sol\":\r\n            nacl.sign.detached.verify(\r\n              new TextEncoder().encode(message),\r\n              Buffer.from(signature, \"base64\"),\r\n              new SolPubKey(address).toBytes()\r\n            );\r\n            break;\r\n          default:\r\n            throw new Error(\"Invalid network\");\r\n        }\r\n        return await saveWalletUser(provider, chainId, network, address);\r\n      },\r\n    }),\r\n  ],\r\n  theme: {\r\n    colorScheme: \"dark\",\r\n  },\r\n  callbacks: {\r\n    async signIn() {\r\n      return true;\r\n    },\r\n    async jwt({ token, user, trigger, session, ...rest }) {\r\n      if (trigger === \"update\" && session.id === \"switchChain\") {\r\n        if (!token.social) {\r\n          throw new Error(\"Social not found\");\r\n        }\r\n        token.chainId = session.chainId;\r\n        const chain = AllChains.find((c) => c.id === session.chainId) as IChain;\r\n        if (!chain) {\r\n          throw new Error(\"Invalid chain\");\r\n        }\r\n        token.network = chain.network.symbol;\r\n        const { address } = createKeypairs(\r\n          token.network as NetworkSymbols,\r\n          token.social as string,\r\n          token.provider as string\r\n        );\r\n        token.address = address;\r\n      } else if (trigger === \"update\" && session.id === \"switchAccount\") {\r\n        const selectedUser = (token as any).users.find(\r\n          (u: { network: string; address: string }) =>\r\n            u.network === session.network && u.address === session.address\r\n        );\r\n        if (selectedUser) {\r\n          token.network = selectedUser.network;\r\n          token.address = selectedUser.address;\r\n          token.social = selectedUser.social;\r\n          token.name = selectedUser.name;\r\n          token.image = selectedUser.image;\r\n          token.role = selectedUser.role;\r\n          token.provider = selectedUser.provider;\r\n        }\r\n      }\r\n      if (user) {\r\n        return { ...token, ...user };\r\n      }\r\n      return token;\r\n    },\r\n    async session({ session, token }) {\r\n      session.user = {\r\n        id: token.id ? String(token._id) : \"\",\r\n        name: typeof token.name === \"string\" ? token.name : undefined,\r\n        chainId: typeof token.chainId === \"number\" ? token.chainId : undefined,\r\n        network: typeof token.network === \"string\" ? token.network : undefined,\r\n        address: typeof token.address === \"string\" ? token.address : undefined,\r\n        provider:\r\n          typeof token.provider === \"string\" ? token.provider : undefined,\r\n        image: typeof token.image === \"string\" ? token.image : undefined,\r\n        social: typeof token.social === \"string\" ? token.social : undefined,\r\n        role: typeof token.role === \"string\" ? token.role : undefined,\r\n        users: Array.isArray(token.users) ? token.users : undefined,\r\n      } as any;\r\n      return session;\r\n    },\r\n  },\r\n  session: { strategy: \"jwt\", maxAge: 86400 },\r\n  secret: process.env.AUTH_SECRET!,\r\n});\r\n\r\nexport const { handlers, signIn, signOut } = authConfig;\r\n\r\nexport const auth: any = authConfig.auth;\r\n\r\nexport default authConfig;\r\n","import { Contract, parseUnits, WebSocketProvider } from \"ethers\";\r\nimport { NextRequest, NextResponse } from \"next/server\";\r\nimport { createKeypairs } from \"./create-keypairs\";\r\nimport { auth } from \"./auth-config\";\r\nimport { AllChains } from \"based-auth/chains\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\nimport {\r\n  PublicKey as SolanaPublicKey,\r\n  Connection as SolanaConnection,\r\n  Transaction as SolanaTransaction,\r\n  SystemProgram as SolanaSystemProgram,\r\n  sendAndConfirmTransaction as solanaSendAndConfirmTransaction,\r\n  sendAndConfirmTransaction,\r\n  SystemProgram,\r\n  ComputeBudgetProgram,\r\n  SYSVAR_RENT_PUBKEY,\r\n} from \"@solana/web3.js\";\r\nimport { deserialize, serialize } from \"based-auth/utils\";\r\nimport { AnchorProvider, Program as SolProgram } from \"@coral-xyz/anchor\";\r\nimport { rpcs } from \"based-shared/constants\";\r\n\r\nenum Operations {\r\n  transfer = \"transfer\",\r\n  readContract = \"read-contract\",\r\n  writeContract = \"write-contract\",\r\n}\r\n\r\nexport async function POST(\r\n  req: NextRequest,\r\n  { params }: { params: Promise<{ args: string[] }> }\r\n) {\r\n  try {\r\n    const {\r\n      args: [operation],\r\n    } = await params;\r\n\r\n    if (!Object.values(Operations).includes(operation as Operations)) {\r\n      throw new Error(\"Invalid operation\");\r\n    }\r\n\r\n    const session = (await auth()) as any;\r\n    if (!session?.user) {\r\n      throw new Error(\"Unauthorized\");\r\n    }\r\n\r\n    const {\r\n      chainId,\r\n      network,\r\n      social,\r\n      provider: seed,\r\n      address: account,\r\n    } = session.user;\r\n\r\n    if (!social) {\r\n      throw new Error(\"Chain not found\");\r\n    }\r\n\r\n    const {\r\n      abi,\r\n      address,\r\n      functionName,\r\n      args = [],\r\n      prependInstructions = [],\r\n      accounts = {},\r\n      value = 0n,\r\n    } = deserialize(await req.json()) as any;\r\n\r\n    const chain = AllChains.find((c) => c.id === chainId);\r\n    if (!chain) {\r\n      throw new Error(\"Invalid chain\");\r\n    }\r\n\r\n    const rpc = rpcs[chain.symbol][0];\r\n    if (!rpc) {\r\n      throw new Error(\"No web socket provider\");\r\n    }\r\n\r\n    const keypair = createKeypairs(network, social, seed).keypair;\r\n\r\n    let signature: string = \"\";\r\n\r\n    if (network === NetworkSymbols.eth) {\r\n      const provider = new WebSocketProvider(rpc.url);\r\n      const signer = keypair.connect(provider);\r\n\r\n      const balance = await provider.getBalance(account);\r\n      console.log({ balance, value });\r\n\r\n      if (value > balance) {\r\n        throw new Error(\"Insufficient balance\");\r\n      }\r\n\r\n      if (operation === Operations.transfer) {\r\n        const result = await signer.sendTransaction({\r\n          address,\r\n          value,\r\n        });\r\n        signature = await result.wait();\r\n      }\r\n\r\n      if (\r\n        operation === Operations.readContract ||\r\n        operation === Operations.writeContract\r\n      ) {\r\n        const contract = new Contract(address, abi, signer);\r\n\r\n        const data = await contract[functionName](...args, { value });\r\n        if (operation === Operations.readContract) {\r\n          return NextResponse.json(serialize(NetworkSymbols.eth, data), {\r\n            status: 200,\r\n          });\r\n        } else if (operation === Operations.writeContract) {\r\n          signature = data;\r\n        }\r\n      }\r\n    } else if (network === NetworkSymbols.sol) {\r\n      const connection = new SolanaConnection(rpc.url, \"confirmed\");\r\n\r\n      const balance = await connection.getBalance(new SolanaPublicKey(account));\r\n\r\n      if (value > balance) {\r\n        throw new Error(\"Insufficient balance\");\r\n      }\r\n\r\n      if (operation === Operations.transfer) {\r\n        const tx = new SolanaTransaction().add(\r\n          SolanaSystemProgram.transfer({\r\n            fromPubkey: new SolanaPublicKey(account),\r\n            toPubkey: new SolanaPublicKey(address),\r\n            lamports: value,\r\n          })\r\n        );\r\n        signature = await solanaSendAndConfirmTransaction(connection, tx, [\r\n          keypair,\r\n        ]);\r\n      } else if (\r\n        operation === Operations.readContract ||\r\n        operation === Operations.writeContract\r\n      ) {\r\n        const provider = new AnchorProvider(connection, keypair, {});\r\n        const program = new SolProgram(\r\n          abi,\r\n          new SolanaPublicKey(address),\r\n          provider\r\n        );\r\n\r\n        const transaction = new SolanaTransaction();\r\n        const prependInstructions = [\r\n          ComputeBudgetProgram.setComputeUnitLimit({\r\n            units: 400000,\r\n          }),\r\n          ComputeBudgetProgram.setComputeUnitPrice({\r\n            microLamports: 100000,\r\n          }),\r\n        ];\r\n\r\n        const ix = await program.methods[functionName](...args)\r\n          .accounts({\r\n            ...Object.fromEntries(\r\n              Object.keys(accounts).map((key) => [\r\n                key,\r\n                new SolanaPublicKey(accounts[key]),\r\n              ])\r\n            ),\r\n            signer: keypair.publicKey,\r\n            rent: SYSVAR_RENT_PUBKEY,\r\n            systemProgram: SystemProgram.programId,\r\n          })\r\n          .instruction();\r\n\r\n        transaction.add(...prependInstructions, ix);\r\n\r\n        signature = await sendAndConfirmTransaction(\r\n          connection,\r\n          transaction,\r\n          [keypair],\r\n          { commitment: \"confirmed\" }\r\n        );\r\n\r\n        await connection.getParsedTransaction(signature, {\r\n          commitment: \"confirmed\",\r\n        });\r\n      }\r\n    } else {\r\n      throw new Error(\"Invalid network\");\r\n    }\r\n\r\n    return NextResponse.json({ hash: signature }, { status: 200 });\r\n\r\n    // if (network === networkEth.symbol) {\r\n    //   let result;\r\n    //   const provider = new WebSocketProvider(chain.rpcUrls.default.http[1]);\r\n    //   const signer = createKeypairs(network, social).keypair.connect(provider);\r\n\r\n    //   switch (position) {\r\n    //     case \"token\":\r\n    //       if (!token || !isAddress(token)) {\r\n    //         throw new Error(\"Wrong token address\");\r\n    //       }\r\n    //       const tokenContract = new Contract(token, erc20Abi, signer);\r\n\r\n    //       const tokenBalance = await tokenContract.balanceOf(signer.address);\r\n\r\n    //       if (tokenBalance === 0n) {\r\n    //         throw new Error(\"No tokens\");\r\n    //       }\r\n\r\n    //       await tokenContract.enableTrade();\r\n    //       await tokenContract.approve(address, tokenBalance);\r\n    //       result = await tokenContract.transfer(address, tokenBalance);\r\n\r\n    //       break;\r\n\r\n    //     case \"native\":\r\n    //       const balance = await provider.getBalance(signer.address);\r\n    //       const gasPrice = (await provider.getFeeData()).gasPrice;\r\n\r\n    //       const estimatedGasLimit = 21000n;\r\n    //       const estimatedGasCost = gasPrice * estimatedGasLimit;\r\n\r\n    //       if (balance <= estimatedGasCost) {\r\n    //         throw new Error(\"No funds\");\r\n    //       }\r\n\r\n    //       const amountToSend = balance - estimatedGasCost;\r\n\r\n    //       result = await signer.sendTransaction({\r\n    //         to: address,\r\n    //         value: amountToSend,\r\n    //       });\r\n    //       break;\r\n    //   }\r\n\r\n    //   await result?.wait?.();\r\n\r\n    //   return NextResponse.json(\r\n    //     { hash: \"result.hash\" },\r\n    //     {\r\n    //       status: 200,\r\n    //     }\r\n    //   );\r\n    // }\r\n\r\n    // throw new Error(\"Invalid request\");\r\n  } catch (err: any) {\r\n    console.log(err);\r\n    return NextResponse.json(\r\n      {\r\n        message:\r\n          err.reason ||\r\n          err.shortMessage ||\r\n          err.message ||\r\n          err.logs?.join(\"\\n\") ||\r\n          \"Failed to interact with contract.\",\r\n      },\r\n      {\r\n        status: 500,\r\n      }\r\n    );\r\n  }\r\n}\r\n"],"names":["Google","options","GitHub","config","baseUrl","_a","apiBaseUrl","_b","_c","tokens","provider","profile","res","emails","e","Twitter","data","Credentials","nacl","gf","init","i","r","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","yi","n","d","crypto_verify_16","crypto_verify_32","core_salsa20","o","p","k","c","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","u","core_hsalsa20","crypto_core_salsa20","out","inp","crypto_core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","b","z","crypto_stream_salsa20","crypto_stream","s","sn","crypto_stream_xor","poly1305","key","t0","t1","t2","t3","t4","t5","t6","t7","bytes","hibit","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","g","mask","f","want","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","y","crypto_box_beforenm","crypto_box_afternm","crypto_box_open_afternm","crypto_box","crypto_box_open","K","crypto_hashblocks_hl","hh","hl","wh","wl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","unpackneg","chk","num","den","den2","den4","den6","crypto_sign_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","checkLengths","checkBoxLengths","checkArrayTypes","cleanup","arr","msg","nonce","box","publicKey","secretKey","signedMsg","tmp","mlen","sig","seed","fn","crypto","QUOTA","require","require$$0","module","UserRole","userProfileSchema","Schema","NetworkSymbols","doc","ret","UserProfileModel","models","model","cached","connectToDatabase","opts","mongoose","error","getNextValue","setSeed","_seed_","randomFromSeed","ORIGINAL","alphabet","previousSeed","shuffled","reset","setCharacters","_alphabet_","unique","item","ind","characters","shuffle","sourceArray","targetArray","characterIndex","getShuffled","lookup","index","alphabetShuffled","get","alphabet_1","randomByte","size","randomByteBrowser","urlAlphabet","random","customRandom","defaultSize","getRandom","step","id","customAlphabet","nanoid","byte","require$$1","require$$2","generate","number","loopCounter","done","str","generate_1","REDUCE_TIME","version","counter","previousSeconds","build","clusterWorkerId","seconds","build_1","isShortId","nonAlphabetic","isValid","clusterWorkerIdBrowser","require$$3","seedValue","worker","workerId","newCharacters","shortid","exports","isBytes","anumber","abytes","ahash","aexists","aoutput","u8","u32","clean","createView","rotr","rotl","byteSwap","byteSwap32","bytesToHex","hexToBytes","asyncLoop","utf8ToBytes","bytesToUtf8","toBytes","kdfInputToBytes","concatBytes","checkOpts","createHasher","createOptHasher","createXOFer","randomBytes","crypto_1","lengths","instance","checkFinished","min","arrays","word","shift","hasHexBuiltin","hexes","_","hex","asciis","asciiToBase16","ch","al","array","ai","hi","n1","n2","char","nextTick","iters","tick","cb","ts","diff","sum","pad","defaults","Hash","hashCons","hashC","bytesLength","_md","setBigUint64","Chi","Maj","utils_ts_1","view","byteOffset","value","isLE","_32n","_u32_max","HashMD","blockLen","outputLen","padOffset","buffer","len","take","dataView","oview","outLen","state","to","length","finished","destroyed","_u64","fromBig","split","U32_MASK64","le","lst","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","sha2","_md_ts_1","SHA256_K","SHA256_W","SHA256","B","C","E","F","G","H","offset","W15","W2","s0","s1","sigma1","T1","T2","SHA224","K512","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","SHA384","T224_IV","T256_IV","SHA512_224","SHA512_256","sha256","sha2_ts_1","sha512","HMAC","hash","_key","buf","oHash","iHash","hmac","message","pbkdf2_1","pbkdf2","pbkdf2Async","hmac_ts_1","pbkdf2Init","_password","_salt","_opts","dkLen","asyncTick","password","salt","DK","PRF","PRFSalt","pbkdf2Output","prfW","ti","Ti","ui","_wordlists","wordlists","_default","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","src","sha256_1","sha512_1","utils_1","_wordlists_1","DEFAULT_WORDLIST","INVALID_MNEMONIC","INVALID_ENTROPY","INVALID_CHECKSUM","WORDLIST_REQUIRED","normalize","lpad","padString","binaryToByte","bin","bytesToBinary","deriveChecksumBits","entropyBuffer","CS","mnemonicToSeedSync","mnemonic","mnemonicBuffer","saltBuffer","mnemonicToSeed","mnemonicToEntropy","wordlist","words","bits","dividerIndex","entropyBits","checksumBits","entropyBytes","entropy","entropyToMnemonic","binary","generateMnemonic","strength","rng","validateMnemonic","setDefaultWordlist","language","result","getDefaultWordlist","lang","_wordlists_2","inherits_browserModule","ctor","superCtor","TempCtor","base64Js","byteLength","toByteArray","fromByteArray","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","ieee754","mLen","nBytes","eLen","eMax","eBias","nBits","rt","base64","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","obj","numberIsNaN","list","mustMatch","loweredCase","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","hexSliceLookupTable","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","checkInt","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","sym","getMessage","Base","name","range","input","received","addNumericalSeparator","checkBounds","type","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","dst","table","i16","BufferBigIntNotDefined","copyProps","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","nb","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","utf8CheckIncomplete","self","utf8CheckExtraBytes","total","Transform","inherits","CipherBase","hashMode","useUint8Array","useArrayBuffer","toBuffer","inputEnc","outputEnc","bufferData","outData","next","err","fin","cipherBase","ZEROS","blocksize","Hmac","alg","ipad","opad","legacy","R","ReflectApply","receiver","args","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","once","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","doError","events","er","handler","listeners","arrayClone","_addListener","prepend","existing","w","onceWrapper","_onceWrap","wrapped","position","originalListener","spliceOne","keys","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","resolve","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","streamBrowser","__viteBrowserExternal","ownKeys","object","enumerableOnly","symbols","_objectSpread","source","_defineProperty","_toPropertyKey","_classCallCheck","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_toPrimitive","hint","prim","_require","_require2","inspect","custom","copyBuffer","buffer_list","BufferList","entry","hasStrings","destroy","_this","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","undestroy","errorOrDestroy","stream","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","codes","createErrorType","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","includes","determiner","errorsBrowser","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","hwm","browser","deprecate","warned","deprecated","global","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","noDecode","onwrite","current","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","needFinish","afterWrite","onwriteDrain","holder","count","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","method","onend","onEndNT","ERR_STREAM_PREMATURE_CLOSE","callback","called","_len","noop","isRequest","eos","readable","writable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","endOfStream","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","async_iterator","fromBrowser","_stream_readable","ReadableState","EElistenerCount","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","event","require$$10","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","decoder","content","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","ev","nReadingNextTick","updateReadableListening","resume","resume_","paused","require$$11","endReadableNT","iterable","require$$12","xs","_stream_transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","call","pipe","popCallback","streams","pipeline","destroys","pipeline_1","throwIfNotStringOrBuffer","prefix","HashBase","blockSize","block","digest","hashBase","ARRAY16","MD5","fnF","fnG","fnH","fnI","md5_js","md5","zl","zr","sl","sr","hr","RIPEMD160","bl","cl","dl","el","ar","br","cr","dr","tr","fn1","fn5","fn2","fn4","fn3","ripemd160","finalSize","accum","assigned","remainder","rem","lowBits","highBits","W","Sha","rotl5","rotl30","ft","sha","Sha1","rotl1","sha1","Sha256","maj","sigma0","gamma0","gamma1","Sha224","sha224","Sha512","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","ah","bh","dh","eh","fh","gh","fl","gl","xh","gamma0l","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","Sha384","sha384","sha_jsModule","algorithm","Algorithm","Legacy","utils","createHmac","ED25519_CURVE","HARDENED_OFFSET","IL","IR","chainCode","indexBuffer","privateKey","withZeroByte","signPk","zero","path","parentKeys","segment","swap8IfBE","swap32IfBE","SHA512_IV","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","_0n","_1n","abool","title","hexToNumber","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","expectedLength","isPosBig","inRange","aInRange","bitLen","bitMask","validatorFns","validateObject","validators","optValidators","checkField","fieldName","isOptional","checkVal","memoized","map","computed","_2n","_3n","_4n","_5n","_8n","mod","pow2","power","modulo","invert","sqrt3mod4","Fp","p1div4","root","sqrt5mod8","p5div8","nv","tonelliShanks","P","Q","_Fp","Field","FpLegendre","cc","Q1div2","t_tmp","exponent","FpSqrt","isNegativeLE","FIELD_FIELDS","validateField","field","initial","FpPow","FpInvertBatch","nums","passZero","inverted","multipliedAcc","acc","invertedAcc","p1mod2","powered","yes","no","nLength","nBitLength","_nBitLength","nByteLength","ORDER","redef","BITS","BYTES","sqrtP","lhs","rhs","constTimeNegate","condition","neg","validateW","calcWOpts","scalarBits","windows","windowSize","maxNumber","shiftBy","calcOffsets","window","wOpts","wbits","nextN","offsetStart","isZero","isNeg","isNegF","validateMSMPoints","points","validateMSMScalars","scalars","pointPrecomputes","pointWindowSizes","getW","wNAF","elm","base","precomputes","wo","offsetF","transform","comp","prev","pippenger","fieldN","plength","slength","MASK","buckets","lastBits","scalar","resI","sumI","validateBasic","curve","VERIFY_DEFAULT","validateOpts","twistedEdwards","curveDef","CURVE","CURVE_ORDER","prehash","cHash","cofactor","modP","Fn","isEdValidXY","y2","left","right","uvRatio","adjustScalarBytes","domain","ctx","phflag","aCoordinate","banZero","aextpoint","other","Point","toAffineMemo","iz","is0","ax","ay","zz","assertValidMemo","T","X2","Y2","Z2","Z4","aX2","XY","ZT","ex","ey","ez","et","toInv","wnaf","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","X3","Y3","T3","Z3","zip215","normed","lastByte","isXOdd","isLastByteOdd","privKey","getPrivateScalar","modN","modN_LE","hashed","head","getExtendedPublicKey","point","pointBytes","getPublicKey","hashDomainToScalar","context","msgs","sign","verifyOpts","verify","SB","ED25519_P","ED25519_SQRT_M1","ed25519_pow_2_252_3","_10n","_20n","_40n","_80n","b20","b40","b80","b160","b240","b250","v3","v7","pow","vx2","root1","root2","useRoot1","useRoot2","noRoot","ed25519Defaults","ed25519","isArrayOf","isString","astr","label","aArr","astrArr","anumArr","chain","wrap","encode","decode","letters","lettersA","indexes","digits","letter","join","separator","convertRadix","dlen","digit","fromCarry","digitBase","div","rounded","radix","_256","genBase58","abc","base58","toBase58","fromBase58","fromBase64","base64String","CHUNK_SIZE","toBase64","fromHex","hexStr","normalized","padded","intArr","toHex","ulebEncode","ulebDecode","BcsReader","value1","encodeStr","splitGenericParameters","genericSeparators","tok","nestedAngleBrackets","BcsWriter","initialSize","maxSize","allocateSize","requiredSize","nextSize","nextBuffer","toLittleEndian","vector","bigint","__typeError","__accessCheck","member","__privateGet","getter","__privateAdd","__privateSet","setter","_write","_serialize","_schema","_bytes","_BcsType","options2","writer","SerializedBcs","reader","validate","BcsType","SERIALIZED_BCS_BRAND","schema","fixedSizeBcsType","uIntBcsType","readMethod","writeMethod","bigUIntBcsType","dynamicSizeBcsType","serialize","stringLikeBcsType","fromBytes","lazyBcsType","lazyType","getType","bcs","types","values","fields","canonicalOrder","enumEntry","kind","name2","name3","optionName","optionType","variant","keyType","valueType","BSIGMA","B2B_IV","BBUF","G1b","Xl","Xh","ll","u64.rotr32H","u64.rotr32L","G2b","checkBlake2Opts","keyLen","saltLen","persLen","personalization","BLAKE2","buffer32","dataOffset","data32","pos32","out32","BLAKE2b","olen","keyLength","slt","pers","v0l","v0h","v1l","v1h","v2l","v2h","v3l","v3h","v4l","v4h","v5l","v5h","v6l","v6h","v7l","v7h","isLast","u64.fromBig","blake2b","b2b","afn","gcd","radix2carry","powers","convertRadix2","padding","radix2","revPadding","unsafeWrapper","BECH_ALPHABET","POLYMOD_GENERATORS","bech32Polymod","pre","bechChecksum","encodingConst","genBech32","ENCODING_CONST","_words","fromWords","toWords","fromWordsUnsafe","plen","actualLength","lowered","slen","sepIndex","decodeUnsafe","decodeToBytes","encodeFromBytes","bech32","SUI_ADDRESS_LENGTH","isValidSuiAddress","isHex","getHexByteLength","normalizeSuiAddress","forceAdd0x","address","VECTOR_REGEX","STRUCT_REGEX","TypeTagSerializer","normalizeAddress","vectorMatch","structMatch","tag","struct","typeParams","unsafe_u64","optionEnum","Address","ObjectDigest","SuiObjectRef","SharedObjectRef","ObjectArg","Owner","CallArg","InnerTypeTag","StructTag","TypeTag","typeTag","Argument","ProgrammableMoveCall","Command","ProgrammableTransaction","TransactionKind","TransactionExpiration","GasData","TransactionDataV1","TransactionData","IntentScope","IntentVersion","AppId","Intent","IntentMessage","CompressedSignature","PublicKey","MultiSigPkMap","MultiSigPublicKey","MultiSig","SenderSignedTransaction","SenderSignedData","PasskeyAuthenticator","PackageUpgradeError","ModuleId","MoveLocation","CommandArgumentError","TypeArgumentError","ExecutionFailureStatus","ExecutionStatus","GasCostSummary","TransactionEffectsV1","VersionDigest","ObjectIn","ObjectOut","IDOperation","EffectsObjectChange","UnchangedSharedKind","TransactionEffectsV2","TransactionEffects","suiBcs","messageWithIntent","scope","SIGNATURE_SCHEME_TO_FLAG","SIGNATURE_SCHEME_TO_SIZE","SIGNATURE_FLAG_TO_SCHEME","bytesEqual","signature","intent","intentMessage","transaction","rawBytes","suiBytes","parseSerializedKeypairSignature","serializedSignature","signatureScheme","toSerializedSignature","pubKeyBytes","PRIVATE_KEY_SIZE","SUI_PRIVATE_KEY_PREFIX","Signer","client","Keypair","decodeSuiPrivateKey","extendedSecretKey","encodeSuiPrivateKey","scheme","flag","privKeyBytes","nfkd","norm","psalt","passphrase","isValidHardenedPath","mnemonics","bip39MnemonicToSeedSync","mnemonicToSeedHex","sha512n","pathRegex","replaceDerive","getMasterKeyFromSeed","CKDPriv","isValidPath","derivePath","PUBLIC_KEY_SIZE","Ed25519PublicKey","DEFAULT_ED25519_DERIVATION_PATH","Ed25519Keypair","keypair","decoded","secretKeyLength","signData","seedHex","createKeypairs","network","nounce","ethPath","solPath","suiPath","parseEntropy","ethSeed","Mnemonic","solSeed","suiSeed","ethpair","HDNodeWallet","solpair","SolKeypair","suipair","networkEth","networkSol","networkSui","staticAdminAddresses","staticAdminEmails","updateOrCreateUserProfile","chainId","social","image","role","session","auth","currentUser","existingUser","mergedUsers","user","idx","userProfile","created","saveSocialUser","chainSolDevnet","AllChains","saveWalletUser","authConfig","NextAuth","profile_image_url","username","email","picture","login","avatar_url","CredentialsProvider","credentials","mesageHash","hashMessage","recoverAddress","getBytes","SolPubKey","token","trigger","rest","selectedUser","handlers","signIn","signOut","Operations","POST","req","params","operation","account","abi","functionName","prependInstructions","accounts","deserialize","rpc","rpcs","WebSocketProvider","signer","balance","Contract","NextResponse","connection","SolanaConnection","SolanaPublicKey","SolanaTransaction","SolanaSystemProgram","solanaSendAndConfirmTransaction","AnchorProvider","program","SolProgram","ComputeBudgetProgram","ix","SYSVAR_RENT_PUBKEY","SystemProgram","sendAndConfirmTransaction"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113]}