kizlo 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-CLhrQwOs.js","names":["parse","serialize","decode","name","isDate","e","name","getType","isUndefined","isNull","isPlainObject","isArray","isString","isError","isUndefined","isError","e","flags","s","a","isArray","type","n","type","isArray","isPlainObject","isArray","walker","type","isPlainObject","a","transformed","result","a","e","s","meta","serialize","parse","name","parse","type","value","_a","result","char","prefix","encode","pathToRegexp","decode","i","e","random","e","t","r","o","s","a","version","match","map","itemType","uaCH","rgxMap","parse","ua","s","decode","exports","a","e","Hash","HMAC","t","define","r","raw","name","parse","serialize","message","a","s","itty.seconds","base64.decode","encoder","version","base64.encode","sha256","message","name","types","isObject","decodeBase64URL","toCryptoKey","s","isObject","importJWK","jwk.isJWK","jwk.isSecretJWK","isKeyLike","invalidKeyInput","jwk.isPrivateJWK","jwk.isPublicJWK","invalidKeyInput","getVerifyKey","subtleAlgorithm","isObject","b64u","isDisjoint","validateCrit","validateAlgorithms","normalizeKey","verify","date","isObject","secs","epoch","isObject","#jwks","jwk","error","#cached","cache","OrderInvoice","OrderTaxLine","OrderLineItemTotals","OrderLineItemImage","OrderLineItem","OrderCouponLine","OrderShippingLine","OrderFeeLine","OrderTotals","OrderShippingAddress","Order","config: KizloBaseConfig","headers: HeadersLike","body: string | undefined","a","version","error","error","isError","error","paymentType: OrderPaymentType","error","error","url: URL","isError","decoder","match","endIndex","name","#matchResult","#validatedData","#getDecodedParam","#getAllDecodedParams","#getParamValue","name","raw","#cachedBody","#rawRequest","#executionCtx","#notFoundHandler","#path","#matchResult","#req","#res","#preparedHeaders","#renderer","#layout","name","#status","#var","#newResponse","Hono","#path","#addRoute","#notFoundHandler","app","r","#clone","#dispatch","#handleError","match","#routes","HonoBase","error","z"],"sources":["../../shared/dist/telephone-country-codes-y2h4A5zW.js","../../../node_modules/cookie/dist/index.js","../../../node_modules/superjson/dist/double-indexed-kv.js","../../../node_modules/superjson/dist/registry.js","../../../node_modules/superjson/dist/class-registry.js","../../../node_modules/superjson/dist/util.js","../../../node_modules/superjson/dist/custom-transformer-registry.js","../../../node_modules/superjson/dist/is.js","../../../node_modules/superjson/dist/pathstringifier.js","../../../node_modules/superjson/dist/transformer.js","../../../node_modules/superjson/dist/accessDeep.js","../../../node_modules/superjson/dist/plainer.js","../../../node_modules/is-what/dist/index.js","../../../node_modules/copy-anything/dist/index.js","../../../node_modules/superjson/dist/index.js","../../../node_modules/path-to-regexp/dist/index.js","../../../node_modules/@oslojs/binary/dist/uint.js","../../../node_modules/@oslojs/binary/dist/big.js","../../../node_modules/@oslojs/crypto/dist/random/index.js","../../../node_modules/itty-time/index.mjs","../../../node_modules/ua-parser-js/src/main/ua-parser.mjs","../../../node_modules/@stablelib/base64/lib/base64.js","../../../node_modules/fast-sha256/sha256.js","../../shared/dist/common-BpZpqdB4.js","../../../node_modules/jose/dist/webapi/lib/buffer_utils.js","../../../node_modules/jose/dist/webapi/lib/base64.js","../../../node_modules/jose/dist/webapi/util/base64url.js","../../../node_modules/jose/dist/webapi/util/errors.js","../../../node_modules/jose/dist/webapi/lib/crypto_key.js","../../../node_modules/jose/dist/webapi/lib/invalid_key_input.js","../../../node_modules/jose/dist/webapi/lib/is_key_like.js","../../../node_modules/jose/dist/webapi/lib/is_disjoint.js","../../../node_modules/jose/dist/webapi/lib/is_object.js","../../../node_modules/jose/dist/webapi/lib/check_key_length.js","../../../node_modules/jose/dist/webapi/lib/jwk_to_key.js","../../../node_modules/jose/dist/webapi/key/import.js","../../../node_modules/jose/dist/webapi/lib/validate_crit.js","../../../node_modules/jose/dist/webapi/lib/validate_algorithms.js","../../../node_modules/jose/dist/webapi/lib/is_jwk.js","../../../node_modules/jose/dist/webapi/lib/normalize_key.js","../../../node_modules/jose/dist/webapi/lib/check_key_type.js","../../../node_modules/jose/dist/webapi/lib/subtle_dsa.js","../../../node_modules/jose/dist/webapi/lib/get_sign_verify_key.js","../../../node_modules/jose/dist/webapi/lib/verify.js","../../../node_modules/jose/dist/webapi/jws/flattened/verify.js","../../../node_modules/jose/dist/webapi/jws/compact/verify.js","../../../node_modules/jose/dist/webapi/lib/epoch.js","../../../node_modules/jose/dist/webapi/lib/secs.js","../../../node_modules/jose/dist/webapi/lib/jwt_claims_set.js","../../../node_modules/jose/dist/webapi/jwt/verify.js","../../../node_modules/jose/dist/webapi/jwks/local.js","../../shared/dist/data-D1JR5eYJ.js","../../shared/dist/internal-BA8ESJq3.js","../../shared/dist/api.js","../src/_internal/base.ts","../src/_internal/result.ts","../src/_internal/auth.ts","../src/_internal/cart.ts","../src/_internal/checkout.ts","../src/_internal/customer.ts","../src/_internal/payment.ts","../src/_internal/product.ts","../src/_internal/client.ts","../package.json","../src/_internal/config.ts","../src/_internal/middleware.ts","../../../node_modules/hono/dist/compose.js","../../../node_modules/hono/dist/request/constants.js","../../../node_modules/hono/dist/utils/body.js","../../../node_modules/hono/dist/utils/url.js","../../../node_modules/hono/dist/request.js","../../../node_modules/hono/dist/utils/html.js","../../../node_modules/hono/dist/context.js","../../../node_modules/hono/dist/router.js","../../../node_modules/hono/dist/utils/constants.js","../../../node_modules/hono/dist/hono-base.js","../../../node_modules/hono/dist/router/pattern-router/router.js","../../../node_modules/hono/dist/preset/tiny.js","../src/_internal/serve.ts"],"sourcesContent":["//#region src/data/country-codes.ts\nconst COUNTRY_CODES = [\n\t\"AF\",\n\t\"AX\",\n\t\"AL\",\n\t\"DZ\",\n\t\"AS\",\n\t\"AD\",\n\t\"AO\",\n\t\"AI\",\n\t\"AQ\",\n\t\"AG\",\n\t\"AR\",\n\t\"AM\",\n\t\"AW\",\n\t\"AU\",\n\t\"AT\",\n\t\"AZ\",\n\t\"BS\",\n\t\"BH\",\n\t\"BD\",\n\t\"BB\",\n\t\"BY\",\n\t\"PW\",\n\t\"BE\",\n\t\"BZ\",\n\t\"BJ\",\n\t\"BM\",\n\t\"BT\",\n\t\"BO\",\n\t\"BQ\",\n\t\"BA\",\n\t\"BW\",\n\t\"BV\",\n\t\"BR\",\n\t\"IO\",\n\t\"BN\",\n\t\"BG\",\n\t\"BF\",\n\t\"BI\",\n\t\"KH\",\n\t\"CM\",\n\t\"CA\",\n\t\"CV\",\n\t\"KY\",\n\t\"CF\",\n\t\"TD\",\n\t\"CL\",\n\t\"CN\",\n\t\"CX\",\n\t\"CC\",\n\t\"CO\",\n\t\"KM\",\n\t\"CG\",\n\t\"CD\",\n\t\"CK\",\n\t\"CR\",\n\t\"HR\",\n\t\"CU\",\n\t\"CW\",\n\t\"CY\",\n\t\"CZ\",\n\t\"DK\",\n\t\"DJ\",\n\t\"DM\",\n\t\"DO\",\n\t\"EC\",\n\t\"EG\",\n\t\"SV\",\n\t\"GQ\",\n\t\"ER\",\n\t\"EE\",\n\t\"SZ\",\n\t\"ET\",\n\t\"FK\",\n\t\"FO\",\n\t\"FJ\",\n\t\"FI\",\n\t\"FR\",\n\t\"GF\",\n\t\"PF\",\n\t\"TF\",\n\t\"GA\",\n\t\"GM\",\n\t\"GE\",\n\t\"DE\",\n\t\"GH\",\n\t\"GI\",\n\t\"GR\",\n\t\"GL\",\n\t\"GD\",\n\t\"GP\",\n\t\"GU\",\n\t\"GT\",\n\t\"GG\",\n\t\"GN\",\n\t\"GW\",\n\t\"GY\",\n\t\"HT\",\n\t\"HM\",\n\t\"HN\",\n\t\"HK\",\n\t\"HU\",\n\t\"IS\",\n\t\"IN\",\n\t\"ID\",\n\t\"IR\",\n\t\"IQ\",\n\t\"IE\",\n\t\"IM\",\n\t\"IL\",\n\t\"IT\",\n\t\"CI\",\n\t\"JM\",\n\t\"JP\",\n\t\"JE\",\n\t\"JO\",\n\t\"KZ\",\n\t\"KE\",\n\t\"KI\",\n\t\"KW\",\n\t\"KG\",\n\t\"LA\",\n\t\"LV\",\n\t\"LB\",\n\t\"LS\",\n\t\"LR\",\n\t\"LY\",\n\t\"LI\",\n\t\"LT\",\n\t\"LU\",\n\t\"MO\",\n\t\"MG\",\n\t\"MW\",\n\t\"MY\",\n\t\"MV\",\n\t\"ML\",\n\t\"MT\",\n\t\"MH\",\n\t\"MQ\",\n\t\"MR\",\n\t\"MU\",\n\t\"YT\",\n\t\"MX\",\n\t\"FM\",\n\t\"MD\",\n\t\"MC\",\n\t\"MN\",\n\t\"ME\",\n\t\"MS\",\n\t\"MA\",\n\t\"MZ\",\n\t\"MM\",\n\t\"NA\",\n\t\"NR\",\n\t\"NP\",\n\t\"NL\",\n\t\"NC\",\n\t\"NZ\",\n\t\"NI\",\n\t\"NE\",\n\t\"NG\",\n\t\"NU\",\n\t\"NF\",\n\t\"KP\",\n\t\"MK\",\n\t\"MP\",\n\t\"NO\",\n\t\"OM\",\n\t\"PK\",\n\t\"PS\",\n\t\"PA\",\n\t\"PG\",\n\t\"PY\",\n\t\"PE\",\n\t\"PH\",\n\t\"PN\",\n\t\"PL\",\n\t\"PT\",\n\t\"PR\",\n\t\"QA\",\n\t\"RE\",\n\t\"RO\",\n\t\"RU\",\n\t\"RW\",\n\t\"ST\",\n\t\"BL\",\n\t\"SH\",\n\t\"KN\",\n\t\"LC\",\n\t\"SX\",\n\t\"MF\",\n\t\"PM\",\n\t\"VC\",\n\t\"WS\",\n\t\"SM\",\n\t\"SA\",\n\t\"SN\",\n\t\"RS\",\n\t\"SC\",\n\t\"SL\",\n\t\"SG\",\n\t\"SK\",\n\t\"SI\",\n\t\"SB\",\n\t\"SO\",\n\t\"ZA\",\n\t\"GS\",\n\t\"KR\",\n\t\"SS\",\n\t\"ES\",\n\t\"LK\",\n\t\"SD\",\n\t\"SR\",\n\t\"SJ\",\n\t\"SE\",\n\t\"CH\",\n\t\"SY\",\n\t\"TW\",\n\t\"TJ\",\n\t\"TZ\",\n\t\"TH\",\n\t\"TL\",\n\t\"TG\",\n\t\"TK\",\n\t\"TO\",\n\t\"TT\",\n\t\"TN\",\n\t\"TR\",\n\t\"TM\",\n\t\"TC\",\n\t\"TV\",\n\t\"UG\",\n\t\"UA\",\n\t\"AE\",\n\t\"GB\",\n\t\"US\",\n\t\"UM\",\n\t\"UY\",\n\t\"UZ\",\n\t\"VU\",\n\t\"VA\",\n\t\"VE\",\n\t\"VN\",\n\t\"VG\",\n\t\"VI\",\n\t\"WF\",\n\t\"EH\",\n\t\"YE\",\n\t\"ZM\",\n\t\"ZW\"\n];\n\n//#endregion\n//#region src/data/telephone-country-codes.ts\nconst TELEPHONE_COUNTRY_CODES = [\n\t\"93\",\n\t\"358\",\n\t\"355\",\n\t\"213\",\n\t\"1684\",\n\t\"376\",\n\t\"244\",\n\t\"1264\",\n\t\"672\",\n\t\"1268\",\n\t\"54\",\n\t\"374\",\n\t\"297\",\n\t\"61\",\n\t\"43\",\n\t\"994\",\n\t\"1242\",\n\t\"973\",\n\t\"880\",\n\t\"1246\",\n\t\"375\",\n\t\"680\",\n\t\"32\",\n\t\"501\",\n\t\"229\",\n\t\"1441\",\n\t\"975\",\n\t\"591\",\n\t\"599\",\n\t\"387\",\n\t\"267\",\n\t\"47\",\n\t\"55\",\n\t\"246\",\n\t\"673\",\n\t\"359\",\n\t\"226\",\n\t\"257\",\n\t\"855\",\n\t\"237\",\n\t\"1\",\n\t\"238\",\n\t\"1345\",\n\t\"236\",\n\t\"235\",\n\t\"56\",\n\t\"86\",\n\t\"61\",\n\t\"61\",\n\t\"57\",\n\t\"269\",\n\t\"242\",\n\t\"243\",\n\t\"682\",\n\t\"506\",\n\t\"385\",\n\t\"53\",\n\t\"537\",\n\t\"357\",\n\t\"420\",\n\t\"45\",\n\t\"253\",\n\t\"1767\",\n\t\"1\",\n\t\"593\",\n\t\"20\",\n\t\"503\",\n\t\"240\",\n\t\"291\",\n\t\"372\",\n\t\"268\",\n\t\"251\",\n\t\"500\",\n\t\"298\",\n\t\"679\",\n\t\"358\",\n\t\"33\",\n\t\"594\",\n\t\"689\",\n\t\"262\",\n\t\"241\",\n\t\"220\",\n\t\"995\",\n\t\"49\",\n\t\"233\",\n\t\"350\",\n\t\"30\",\n\t\"299\",\n\t\"1473\",\n\t\"590\",\n\t\"1671\",\n\t\"502\",\n\t\"44\",\n\t\"224\",\n\t\"245\",\n\t\"592\",\n\t\"509\",\n\t\"672\",\n\t\"504\",\n\t\"852\",\n\t\"36\",\n\t\"354\",\n\t\"91\",\n\t\"62\",\n\t\"98\",\n\t\"964\",\n\t\"353\",\n\t\"44\",\n\t\"972\",\n\t\"39\",\n\t\"225\",\n\t\"1876\",\n\t\"81\",\n\t\"44\",\n\t\"962\",\n\t\"7\",\n\t\"254\",\n\t\"686\",\n\t\"965\",\n\t\"996\",\n\t\"856\",\n\t\"371\",\n\t\"961\",\n\t\"266\",\n\t\"231\",\n\t\"218\",\n\t\"423\",\n\t\"370\",\n\t\"352\",\n\t\"853\",\n\t\"261\",\n\t\"265\",\n\t\"60\",\n\t\"960\",\n\t\"223\",\n\t\"356\",\n\t\"692\",\n\t\"596\",\n\t\"222\",\n\t\"230\",\n\t\"262\",\n\t\"52\",\n\t\"691\",\n\t\"373\",\n\t\"377\",\n\t\"976\",\n\t\"382\",\n\t\"1664\",\n\t\"212\",\n\t\"258\",\n\t\"95\",\n\t\"264\",\n\t\"674\",\n\t\"977\",\n\t\"31\",\n\t\"687\",\n\t\"64\",\n\t\"505\",\n\t\"227\",\n\t\"234\",\n\t\"683\",\n\t\"672\",\n\t\"850\",\n\t\"389\",\n\t\"1\",\n\t\"47\",\n\t\"968\",\n\t\"92\",\n\t\"970\",\n\t\"507\",\n\t\"675\",\n\t\"595\",\n\t\"51\",\n\t\"63\",\n\t\"64\",\n\t\"48\",\n\t\"351\",\n\t\"1\",\n\t\"974\",\n\t\"262\",\n\t\"40\",\n\t\"7\",\n\t\"250\",\n\t\"590\",\n\t\"290\",\n\t\"1869\",\n\t\"1758\",\n\t\"1721\",\n\t\"590\",\n\t\"508\",\n\t\"1784\",\n\t\"685\",\n\t\"378\",\n\t\"239\",\n\t\"966\",\n\t\"221\",\n\t\"381\",\n\t\"248\",\n\t\"232\",\n\t\"65\",\n\t\"421\",\n\t\"386\",\n\t\"677\",\n\t\"252\",\n\t\"27\",\n\t\"500\",\n\t\"82\",\n\t\"211\",\n\t\"34\",\n\t\"94\",\n\t\"249\",\n\t\"597\",\n\t\"47\",\n\t\"46\",\n\t\"41\",\n\t\"963\",\n\t\"886\",\n\t\"992\",\n\t\"255\",\n\t\"66\",\n\t\"670\",\n\t\"228\",\n\t\"690\",\n\t\"676\",\n\t\"1868\",\n\t\"216\",\n\t\"90\",\n\t\"993\",\n\t\"1649\",\n\t\"688\",\n\t\"256\",\n\t\"380\",\n\t\"971\",\n\t\"44\",\n\t\"1\",\n\t\"1\",\n\t\"598\",\n\t\"998\",\n\t\"678\",\n\t\"379\",\n\t\"58\",\n\t\"84\",\n\t\"1284\",\n\t\"1340\",\n\t\"681\",\n\t\"212\",\n\t\"967\",\n\t\"260\",\n\t\"263\"\n];\n\n//#endregion\nexport { COUNTRY_CODES, TELEPHONE_COUNTRY_CODES };\n//# sourceMappingURL=telephone-country-codes-y2h4A5zW.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\nexports.serialize = serialize;\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n * \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n * \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n * ; US-ASCII characters excluding CTLs,\n * ; whitespace DQUOTE, comma, semicolon,\n * ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value = <subdomain>\n * ; defined in [RFC1034], Section 3.5, as\n * ; enhanced by [RFC1123], Section 2.1\n * <subdomain> = <label> | <subdomain> \".\" <label>\n * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n * Labels must be 63 characters or less.\n * 'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp> = <let-dig> | \"-\"\n * <let-dig> = <letter> | <digit>\n * <letter> = any one of the 52 alphabetic characters A through Z in\n * upper case and a through z in lower case\n * <digit> = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value = <any CHAR except CTLs or \";\">\n * CHAR = %x01-7F\n * ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\nconst __toString = Object.prototype.toString;\nconst NullObject = /* @__PURE__ */ (() => {\n const C = function () { };\n C.prototype = Object.create(null);\n return C;\n})();\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nfunction parse(str, options) {\n const obj = new NullObject();\n const len = str.length;\n // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n if (len < 2)\n return obj;\n const dec = options?.decode || decode;\n let index = 0;\n do {\n const eqIdx = str.indexOf(\"=\", index);\n if (eqIdx === -1)\n break; // No more cookie pairs.\n const colonIdx = str.indexOf(\";\", index);\n const endIdx = colonIdx === -1 ? len : colonIdx;\n if (eqIdx > endIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n const keyStartIdx = startIndex(str, index, eqIdx);\n const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n const key = str.slice(keyStartIdx, keyEndIdx);\n // only assign once\n if (obj[key] === undefined) {\n let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n let valEndIdx = endIndex(str, endIdx, valStartIdx);\n const value = dec(str.slice(valStartIdx, valEndIdx));\n obj[key] = value;\n }\n index = endIdx + 1;\n } while (index < len);\n return obj;\n}\nfunction startIndex(str, index, max) {\n do {\n const code = str.charCodeAt(index);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n return index;\n } while (++index < max);\n return max;\n}\nfunction endIndex(str, index, min) {\n while (index > min) {\n const code = str.charCodeAt(--index);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n return index + 1;\n }\n return min;\n}\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n */\nfunction serialize(name, val, options) {\n const enc = options?.encode || encodeURIComponent;\n if (!cookieNameRegExp.test(name)) {\n throw new TypeError(`argument name is invalid: ${name}`);\n }\n const value = enc(val);\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`argument val is invalid: ${val}`);\n }\n let str = name + \"=\" + value;\n if (!options)\n return str;\n if (options.maxAge !== undefined) {\n if (!Number.isInteger(options.maxAge)) {\n throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n }\n str += \"; Max-Age=\" + options.maxAge;\n }\n if (options.domain) {\n if (!domainValueRegExp.test(options.domain)) {\n throw new TypeError(`option domain is invalid: ${options.domain}`);\n }\n str += \"; Domain=\" + options.domain;\n }\n if (options.path) {\n if (!pathValueRegExp.test(options.path)) {\n throw new TypeError(`option path is invalid: ${options.path}`);\n }\n str += \"; Path=\" + options.path;\n }\n if (options.expires) {\n if (!isDate(options.expires) ||\n !Number.isFinite(options.expires.valueOf())) {\n throw new TypeError(`option expires is invalid: ${options.expires}`);\n }\n str += \"; Expires=\" + options.expires.toUTCString();\n }\n if (options.httpOnly) {\n str += \"; HttpOnly\";\n }\n if (options.secure) {\n str += \"; Secure\";\n }\n if (options.partitioned) {\n str += \"; Partitioned\";\n }\n if (options.priority) {\n const priority = typeof options.priority === \"string\"\n ? options.priority.toLowerCase()\n : undefined;\n switch (priority) {\n case \"low\":\n str += \"; Priority=Low\";\n break;\n case \"medium\":\n str += \"; Priority=Medium\";\n break;\n case \"high\":\n str += \"; Priority=High\";\n break;\n default:\n throw new TypeError(`option priority is invalid: ${options.priority}`);\n }\n }\n if (options.sameSite) {\n const sameSite = typeof options.sameSite === \"string\"\n ? options.sameSite.toLowerCase()\n : options.sameSite;\n switch (sameSite) {\n case true:\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n }\n }\n return str;\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n if (str.indexOf(\"%\") === -1)\n return str;\n try {\n return decodeURIComponent(str);\n }\n catch (e) {\n return str;\n }\n}\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val) {\n return __toString.call(val) === \"[object Date]\";\n}\n//# sourceMappingURL=index.js.map","export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message);\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nfunction traverse(tree, walker, origin = []) {\n if (!tree) {\n return;\n }\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, [...origin, ...parsePath(key)]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, [...origin, ...parsePath(key)]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n });\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations) {\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path));\n identicalPaths.map(parsePath).forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[index] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n\nfunction isAnyObject(payload) {\n return getType(payload) === \"Object\";\n}\n\nfunction isArray(payload) {\n return getType(payload) === \"Array\";\n}\n\nfunction isBlob(payload) {\n return getType(payload) === \"Blob\";\n}\n\nfunction isBoolean(payload) {\n return getType(payload) === \"Boolean\";\n}\n\nfunction isDate(payload) {\n return getType(payload) === \"Date\" && !isNaN(payload);\n}\n\nfunction isEmptyArray(payload) {\n return isArray(payload) && payload.length === 0;\n}\n\nfunction isPlainObject(payload) {\n if (getType(payload) !== \"Object\")\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n\nfunction isEmptyObject(payload) {\n return isPlainObject(payload) && Object.keys(payload).length === 0;\n}\n\nfunction isEmptyString(payload) {\n return payload === \"\";\n}\n\nfunction isError(payload) {\n return getType(payload) === \"Error\" || payload instanceof Error;\n}\n\nfunction isFile(payload) {\n return getType(payload) === \"File\";\n}\n\nfunction isFullArray(payload) {\n return isArray(payload) && payload.length > 0;\n}\n\nfunction isFullObject(payload) {\n return isPlainObject(payload) && Object.keys(payload).length > 0;\n}\n\nfunction isString(payload) {\n return getType(payload) === \"String\";\n}\n\nfunction isFullString(payload) {\n return isString(payload) && payload !== \"\";\n}\n\nfunction isFunction(payload) {\n return typeof payload === \"function\";\n}\n\nfunction isType(payload, type) {\n if (!(type instanceof Function)) {\n throw new TypeError(\"Type must be a function\");\n }\n if (!Object.prototype.hasOwnProperty.call(type, \"prototype\")) {\n throw new TypeError(\"Type is not a class\");\n }\n const name = type.name;\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\n}\n\nfunction isInstanceOf(value, classOrClassName) {\n if (typeof classOrClassName === \"function\") {\n for (let p = value; p; p = Object.getPrototypeOf(p)) {\n if (isType(p, classOrClassName)) {\n return true;\n }\n }\n return false;\n } else {\n for (let p = value; p; p = Object.getPrototypeOf(p)) {\n if (getType(p) === classOrClassName) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction isMap(payload) {\n return getType(payload) === \"Map\";\n}\n\nfunction isNaNValue(payload) {\n return getType(payload) === \"Number\" && isNaN(payload);\n}\n\nfunction isNumber(payload) {\n return getType(payload) === \"Number\" && !isNaN(payload);\n}\n\nfunction isNegativeNumber(payload) {\n return isNumber(payload) && payload < 0;\n}\n\nfunction isNull(payload) {\n return getType(payload) === \"Null\";\n}\n\nfunction isOneOf(a, b, c, d, e) {\n return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);\n}\n\nfunction isUndefined(payload) {\n return getType(payload) === \"Undefined\";\n}\n\nconst isNullOrUndefined = isOneOf(isNull, isUndefined);\n\nfunction isObject(payload) {\n return isPlainObject(payload);\n}\n\nfunction isObjectLike(payload) {\n return isAnyObject(payload);\n}\n\nfunction isPositiveNumber(payload) {\n return isNumber(payload) && payload > 0;\n}\n\nfunction isSymbol(payload) {\n return getType(payload) === \"Symbol\";\n}\n\nfunction isPrimitive(payload) {\n return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\n}\n\nfunction isPromise(payload) {\n return getType(payload) === \"Promise\";\n}\n\nfunction isRegExp(payload) {\n return getType(payload) === \"RegExp\";\n}\n\nfunction isSet(payload) {\n return getType(payload) === \"Set\";\n}\n\nfunction isWeakMap(payload) {\n return getType(payload) === \"WeakMap\";\n}\n\nfunction isWeakSet(payload) {\n return getType(payload) === \"WeakSet\";\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isInstanceOf, isMap, isNaNValue, isNegativeNumber, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPositiveNumber, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n","import { isArray, isPlainObject } from 'is-what';\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n if (propType === \"enumerable\")\n carry[key] = newVal;\n if (includeNonenumerable && propType === \"nonenumerable\") {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n}\nfunction copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n\nexport { copy };\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nexport default class SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n return res;\n }\n deserialize(payload) {\n const { json, meta } = payload;\n let result = copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string));\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pathToRegexp = exports.tokensToRegexp = exports.regexpToFunction = exports.match = exports.tokensToFunction = exports.compile = exports.parse = void 0;\n/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nfunction parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a, _b = options.delimiter, delimiter = _b === void 0 ? \"/#?\" : _b;\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n var isSafe = function (value) {\n for (var _i = 0, delimiter_1 = delimiter; _i < delimiter_1.length; _i++) {\n var char = delimiter_1[_i];\n if (value.indexOf(char) > -1)\n return true;\n }\n return false;\n };\n var safePattern = function (prefix) {\n var prev = result[result.length - 1];\n var prevText = prefix || (prev && typeof prev === \"string\" ? prev : \"\");\n if (prev && !prevText) {\n throw new TypeError(\"Must have text between two parameters, missing text after \\\"\".concat(prev.name, \"\\\"\"));\n }\n if (!prevText || isSafe(prevText))\n return \"[^\".concat(escapeString(delimiter), \"]+?\");\n return \"(?:(?!\".concat(escapeString(prevText), \")[^\").concat(escapeString(delimiter), \"])+?\");\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || safePattern(prefix),\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? safePattern(prefix) : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\nexports.parse = parse;\n/**\n * Compile a string to a template function for the path.\n */\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\nexports.compile = compile;\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\nexports.tokensToFunction = tokensToFunction;\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\nexports.match = match;\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\nexports.regexpToFunction = regexpToFunction;\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nfunction tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n throw new TypeError(\"Can not repeat \\\"\".concat(token.name, \"\\\" without a prefix and suffix\"));\n }\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\nexports.tokensToRegexp = tokensToRegexp;\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nfunction pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\nexports.pathToRegexp = pathToRegexp;\n//# sourceMappingURL=index.js.map","class BigEndian {\n uint8(data, offset) {\n if (data.byteLength < offset + 1) {\n throw new TypeError(\"Insufficient bytes\");\n }\n return data[offset];\n }\n uint16(data, offset) {\n if (data.byteLength < offset + 2) {\n throw new TypeError(\"Insufficient bytes\");\n }\n return (data[offset] << 8) | data[offset + 1];\n }\n uint32(data, offset) {\n if (data.byteLength < offset + 4) {\n throw new TypeError(\"Insufficient bytes\");\n }\n let result = 0;\n for (let i = 0; i < 4; i++) {\n result |= data[offset + i] << (24 - i * 8);\n }\n return result;\n }\n uint64(data, offset) {\n if (data.byteLength < offset + 8) {\n throw new TypeError(\"Insufficient bytes\");\n }\n let result = 0n;\n for (let i = 0; i < 8; i++) {\n result |= BigInt(data[offset + i]) << BigInt(56 - i * 8);\n }\n return result;\n }\n putUint8(target, value, offset) {\n if (target.length < offset + 1) {\n throw new TypeError(\"Not enough space\");\n }\n if (value < 0 || value > 255) {\n throw new TypeError(\"Invalid uint8 value\");\n }\n target[offset] = value;\n }\n putUint16(target, value, offset) {\n if (target.length < offset + 2) {\n throw new TypeError(\"Not enough space\");\n }\n if (value < 0 || value > 65535) {\n throw new TypeError(\"Invalid uint16 value\");\n }\n target[offset] = value >> 8;\n target[offset + 1] = value & 0xff;\n }\n putUint32(target, value, offset) {\n if (target.length < offset + 4) {\n throw new TypeError(\"Not enough space\");\n }\n if (value < 0 || value > 4294967295) {\n throw new TypeError(\"Invalid uint32 value\");\n }\n for (let i = 0; i < 4; i++) {\n target[offset + i] = (value >> ((3 - i) * 8)) & 0xff;\n }\n }\n putUint64(target, value, offset) {\n if (target.length < offset + 8) {\n throw new TypeError(\"Not enough space\");\n }\n if (value < 0 || value > 18446744073709551615n) {\n throw new TypeError(\"Invalid uint64 value\");\n }\n for (let i = 0; i < 8; i++) {\n target[offset + i] = Number((value >> BigInt((7 - i) * 8)) & 0xffn);\n }\n }\n}\nclass LittleEndian {\n uint8(data, offset) {\n if (data.byteLength < offset + 1) {\n throw new TypeError(\"Insufficient bytes\");\n }\n return data[offset];\n }\n uint16(data, offset) {\n if (data.byteLength < offset + 2) {\n throw new TypeError(\"Insufficient bytes\");\n }\n return data[offset] | (data[offset + 1] << 8);\n }\n uint32(data, offset) {\n if (data.byteLength < offset + 4) {\n throw new TypeError(\"Insufficient bytes\");\n }\n let result = 0;\n for (let i = 0; i < 4; i++) {\n result |= data[offset + i] << (i * 8);\n }\n return result;\n }\n uint64(data, offset) {\n if (data.byteLength < offset + 8) {\n throw new TypeError(\"Insufficient bytes\");\n }\n let result = 0n;\n for (let i = 0; i < 8; i++) {\n result |= BigInt(data[offset + i]) << BigInt(i * 8);\n }\n return result;\n }\n putUint8(target, value, offset) {\n if (target.length < 1 + offset) {\n throw new TypeError(\"Insufficient space\");\n }\n if (value < 0 || value > 255) {\n throw new TypeError(\"Invalid uint8 value\");\n }\n target[offset] = value;\n }\n putUint16(target, value, offset) {\n if (target.length < 2 + offset) {\n throw new TypeError(\"Insufficient space\");\n }\n if (value < 0 || value > 65535) {\n throw new TypeError(\"Invalid uint16 value\");\n }\n target[offset + 1] = value >> 8;\n target[offset] = value & 0xff;\n }\n putUint32(target, value, offset) {\n if (target.length < 4 + offset) {\n throw new TypeError(\"Insufficient space\");\n }\n if (value < 0 || value > 4294967295) {\n throw new TypeError(\"Invalid uint32 value\");\n }\n for (let i = 0; i < 4; i++) {\n target[offset + i] = (value >> (i * 8)) & 0xff;\n }\n }\n putUint64(target, value, offset) {\n if (target.length < 8 + offset) {\n throw new TypeError(\"Insufficient space\");\n }\n if (value < 0 || value > 18446744073709551615n) {\n throw new TypeError(\"Invalid uint64 value\");\n }\n for (let i = 0; i < 8; i++) {\n target[offset + i] = Number((value >> BigInt(i * 8)) & 0xffn);\n }\n }\n}\nexport const bigEndian = new BigEndian();\nexport const littleEndian = new LittleEndian();\n","export function bigIntBytes(value) {\n if (value < 0n) {\n value = value * -1n;\n }\n let byteLength = 1;\n while (value > 2n ** BigInt(byteLength * 8) - 1n) {\n byteLength++;\n }\n const encoded = new Uint8Array(byteLength);\n for (let i = 0; i < encoded.byteLength; i++) {\n encoded[i] = Number((value >> BigInt((encoded.byteLength - i - 1) * 8)) & 0xffn);\n }\n return encoded;\n}\nexport function bigIntFromBytes(bytes) {\n if (bytes.byteLength < 1) {\n throw new TypeError(\"Empty Uint8Array\");\n }\n let decoded = 0n;\n for (let i = 0; i < bytes.byteLength; i++) {\n decoded += BigInt(bytes[i]) << BigInt((bytes.byteLength - 1 - i) * 8);\n }\n return decoded;\n}\n","import { bigIntFromBytes } from \"@oslojs/binary\";\nexport function generateRandomInteger(random, max) {\n if (max < 2) {\n throw new Error(\"Argument 'max' must be a positive integer larger than 1\");\n }\n const inclusiveMaxBitLength = (max - 1n).toString(2).length;\n const shift = inclusiveMaxBitLength % 8;\n const bytes = new Uint8Array(Math.ceil(inclusiveMaxBitLength / 8));\n try {\n random.read(bytes);\n }\n catch (e) {\n throw new Error(\"Failed to retrieve random bytes\", {\n cause: e\n });\n }\n // This zeroes bits that can be ignored to increase the chance `result` < `max`.\n // For example, if `max` can be represented with 10 bits, the leading 6 bits of the random 16 bits (2 bytes) can be ignored.\n if (shift !== 0) {\n bytes[0] &= (1 << shift) - 1;\n }\n let result = bigIntFromBytes(bytes);\n while (result >= max) {\n try {\n random.read(bytes);\n }\n catch (e) {\n throw new Error(\"Failed to retrieve random bytes\", {\n cause: e\n });\n }\n if (shift !== 0) {\n bytes[0] &= (1 << shift) - 1;\n }\n result = bigIntFromBytes(bytes);\n }\n return result;\n}\nexport function generateRandomIntegerNumber(random, max) {\n if (max < 2 || max > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Argument 'max' must be a positive integer larger than 1\");\n }\n return Number(generateRandomInteger(random, BigInt(max)));\n}\nexport function generateRandomString(random, alphabet, length) {\n let result = \"\";\n for (let i = 0; i < length; i++) {\n result += alphabet[generateRandomIntegerNumber(random, alphabet.length)];\n }\n return result;\n}\n","const e=36e5,t=24*e,n={year:315576e5,month:30*t,week:7*t,day:t,hour:e,minute:6e4,second:1e3,m:1},r=e=>{if(!isNaN(+e))return+e;const[,t,r]=e.match(/^([^ ]+) +(\\w\\w*?)s?$/)||[,e];return+t*(n[r]||1)},o=(e,t=new Date)=>new Date(t.getTime()+r(e)),s=(e,{parts:t=9,join:r=\", \"}={})=>{let o,s=[];for(let[a,i]of Object.entries(n))e>=i&&t-- >0&&(e-=(o=e/i|0)*i,t||(o+=e/i),1==o&&\"m\"!=a||(a+=\"s\"),s.push(r?o+\" \"+a:[a,o]));return r?s.join(r):s},a=e=>r(e)/1e3;export{o as datePlus,s as duration,r as ms,a as seconds};\n","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.5\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.5',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length >= 3) {\n // Check whether q[1] FUNCTION or REGEX\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n /(zalo(?:app)?)[\\/\\sa-z]*([\\w\\.-]+)/i // Zalo \n ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i,\n /((ppc|powerpc)(64)?)( mac|;|\\))/i, // PowerPC\n /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i // Alpha\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n /winnt.+\\[axp/i\n ], [[ARCHITECTURE, 'alpha']]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-k]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \n\n // Vivo\n /; vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i, // OPPO\n /droid[^;]+; (philips)[_ ]([sv-x][\\d]{3,4}[xz]?)/i // Philips\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /(philips)[\\w ]+tv/i, // Philips\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i // Retroid Pocket\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) ([\\w ]+) os\\d/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid.+; ([\\w- ]+) (4k|android|smart|google)[- ]?tv/i // Unidentifiable SmartTV\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i=0; i<brands.length; i++) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && \n !/not.a.brand/i.test(brandName) && \n (!prevName || \n (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n (prevName == EDGE && /WebView2/.test(brandName))\n )) {\n brandName = strMapper(brandName, browserHintsMap);\n prevName = this.get(NAME);\n if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n }\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n if (headers) {\n if (typeof headers.append === FUNC_TYPE) {\n // Convert Headers object into a plain object\n var kv = {};\n headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });\n headers = kv;\n } else {\n // Normalize headers field name into lowercase\n var normalized = {};\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n normalized[String(header).toLowerCase()] = headers[header];\n }\n }\n headers = normalized;\n }\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n export {UAParser};","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nconst INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nexport class Coder {\n _paddingCharacter;\n // TODO(dchest): methods to encode chunk-by-chunk.\n constructor(_paddingCharacter = \"=\") {\n this._paddingCharacter = _paddingCharacter;\n }\n encodedLength(length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n }\n encode(data) {\n let out = \"\";\n let i = 0;\n for (; i < data.length - 2; i += 3) {\n let c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n const left = data.length - i;\n if (left > 0) {\n let c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n }\n maxDecodedLength(length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n }\n decodedLength(s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n }\n decode(s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n const paddingLength = this._getPaddingLength(s);\n const length = s.length - paddingLength;\n const out = new Uint8Array(this.maxDecodedLength(length));\n let op = 0;\n let i = 0;\n let haveBad = 0;\n let v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n }\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n _encodeByte(b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n let result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n }\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n _decodeChar(c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n let result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n }\n _getPaddingLength(s) {\n let paddingLength = 0;\n if (this._paddingCharacter) {\n for (let i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n }\n}\nconst stdCoder = new Coder();\nexport function encode(data) {\n return stdCoder.encode(data);\n}\nexport function decode(s) {\n return stdCoder.decode(s);\n}\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nexport class URLSafeCoder extends Coder {\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n _encodeByte(b) {\n let result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n }\n _decodeChar(c) {\n let result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n }\n}\nconst urlSafeCoder = new URLSafeCoder();\nexport function encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexport function decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexport const encodedLength = (length) => stdCoder.encodedLength(length);\nexport const maxDecodedLength = (length) => stdCoder.maxDecodedLength(length);\nexport const decodedLength = (s) => stdCoder.decodedLength(s);\n//# sourceMappingURL=base64.js.map","(function (root, factory) {\n // Hack to make all exports of this module sha256 function object properties.\n var exports = {};\n factory(exports);\n var sha256 = exports[\"default\"];\n for (var k in exports) {\n sha256[k] = exports[k];\n }\n \n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = sha256;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return sha256; }); \n } else {\n root.sha256 = sha256;\n }\n})(this, function(exports) {\n\"use strict\";\nexports.__esModule = true;\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexports.digestLength = 32;\nexports.blockSize = 64;\n// SHA-256 constants\nvar K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n var a, b, c, d, e, f, g, h, u, i, j, t1, t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (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 v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nvar Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = exports.digestLength;\n this.blockSize = exports.blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n var bytesHashed = this.bytesHashed;\n var left = this.bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (var i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nexports.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nvar HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n }\n else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (var i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n }\n else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n var h = (new Hash()).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n// Function hash is both available as module.hash and as default export.\nexports[\"default\"] = hash;\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n var h = (new HMAC(key)).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n var num = counter[0];\n if (num === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nvar hkdfSalt = new Uint8Array(exports.digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n var counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n var hmac_ = new HMAC(okm);\n // Allocate buffer.\n var buffer = new Uint8Array(hmac_.digestLength);\n var bufpos = buffer.length;\n var out = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nexports.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n var prf = new HMAC(password);\n var len = prf.digestLength;\n var ctr = new Uint8Array(4);\n var t = new Uint8Array(len);\n var u = new Uint8Array(len);\n var dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n var c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (var k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nexports.pbkdf2 = pbkdf2;\n});\n","import { COUNTRY_CODES, TELEPHONE_COUNTRY_CODES } from \"./telephone-country-codes-y2h4A5zW.js\";\nimport z$1, { z } from \"zod/v4\";\nimport { parse, serialize } from \"cookie\";\nimport superjson from \"superjson\";\nimport { pathToRegexp } from \"path-to-regexp\";\nimport { generateRandomString } from \"@oslojs/crypto/random\";\nimport * as itty from \"itty-time\";\nimport { UAParser } from \"ua-parser-js\";\nimport * as base64 from \"@stablelib/base64\";\nimport * as sha256 from \"fast-sha256\";\n\n//#region src/common/address.ts\nfunction toAddressString(address) {\n\tconst parts = [\n\t\taddress.address1,\n\t\taddress.address_1,\n\t\taddress.address2,\n\t\taddress.address_2,\n\t\taddress.city\n\t];\n\tif (address.province && address.postcode) parts.push(`${address.province} ${address.postcode}`);\n\telse {\n\t\tparts.push(address.province);\n\t\tparts.push(address.postcode);\n\t}\n\treturn parts.filter(Boolean).join(\", \");\n}\n\n//#endregion\n//#region src/common/api.ts\nlet Api;\n(function(_Api) {\n\tconst status = _Api.status = {\n\t\tok: 200,\n\t\tcreated: 201,\n\t\tbadRequest: 400,\n\t\tunauthorized: 401,\n\t\tforbidden: 403,\n\t\tnotFound: 404,\n\t\tunprocessable: 422,\n\t\ttooManyRequests: 429,\n\t\tinternalServerError: 500,\n\t\tpermanentRedirect: 301,\n\t\ttemporaryRedirect: 302\n\t};\n\tconst errorPreset = _Api.errorPreset = (_Api.defineErrorPreset = (define) => define)({\n\t\ttoo_many_requests: {\n\t\t\tcode: `KIZLO_TOO_MANY_REQUESTS`,\n\t\t\tstatus: \"tooManyRequests\",\n\t\t\tmessage: \"Too many requests, please try again later.\"\n\t\t},\n\t\tforbidden: {\n\t\t\tcode: `KIZLO_FORBIDDEN`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Access denied\"\n\t\t},\n\t\tnot_found: {\n\t\t\tcode: `KIZLO_NOT_FOUND`,\n\t\t\tstatus: \"notFound\",\n\t\t\tmessage: \"Resource you are looking for doesn't exist.\"\n\t\t},\n\t\tunauthorized: {\n\t\t\tcode: `KIZLO_UNAUTHORIZED`,\n\t\t\tstatus: \"unauthorized\",\n\t\t\tmessage: \"You are not authorized to access route.\"\n\t\t},\n\t\tvalidation_error: {\n\t\t\tcode: `KIZLO_VALIDATION_ERROR`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Invalid parameters passed, please recheck and try again.\"\n\t\t},\n\t\tunsupported_host: {\n\t\t\tcode: `KIZLO_UNSUPPORTED_HOST`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Host not allowed\"\n\t\t},\n\t\tinternal_server_error: {\n\t\t\tcode: `KIZLO_INTERNAL_ERROR`,\n\t\t\tstatus: \"internalServerError\",\n\t\t\tmessage: \"Internal server error, The issue has been reported and will be fixed asap. Sorry for the inconvenienced caused.\"\n\t\t},\n\t\tmissing_api_key: {\n\t\t\tcode: `KIZLO_MISSING_API_KEY`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Missing api key.\"\n\t\t},\n\t\tmissing_api_source: {\n\t\t\tcode: `KIZLO_MISSING_API_SOURCE`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Missing api source.\"\n\t\t},\n\t\tmissing_api_tenant_id: {\n\t\t\tcode: `KIZLO_MISSING_API_TENANT_ID`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Missing api tenant id\"\n\t\t},\n\t\tinvalid_api_key: {\n\t\t\tcode: `KIZLO_INVALID_API_KEY`,\n\t\t\tstatus: \"forbidden\",\n\t\t\tmessage: \"Invalid api key.\"\n\t\t},\n\t\tinvalid_auth_token: {\n\t\t\tcode: `KIZLO_INVALID_AUTH_TOKEN`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Authorization token is invalid\"\n\t\t},\n\t\tmissing_auth_token: {\n\t\t\tcode: `KIZLO_MISSING_AUTH_TOKEN`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Authorization token is missing\"\n\t\t},\n\t\tsession_not_found: {\n\t\t\tcode: `KIZLO_SESSION_NOT_FOUND`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Session not found\"\n\t\t},\n\t\tsession_expired: {\n\t\t\tcode: `KIZLO_SESSION_EXPIRED`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Session expired\"\n\t\t},\n\t\tinvalid_password: {\n\t\t\tcode: \"KIZLO_INVALID_PASSWORD\",\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Invalid password.\"\n\t\t},\n\t\tuser_not_found: {\n\t\t\tcode: `KIZLO_USER_NOT_FOUND`,\n\t\t\tstatus: \"notFound\",\n\t\t\tmessage: \"User don't exist\"\n\t\t},\n\t\tuser_already_exist: {\n\t\t\tcode: `KIZLO_USER_ALREADY_EXIST`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"User already exists.\"\n\t\t},\n\t\tcustomer_not_found: {\n\t\t\tcode: `KIZLO_CUSTOMER_NOT_FOUND`,\n\t\t\tstatus: \"notFound\",\n\t\t\tmessage: \"Customer don't exist\"\n\t\t},\n\t\taccount_not_found: {\n\t\t\tcode: `KIZLO_USER_ACCOUNT_NOT_FOUND`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"User account not found\"\n\t\t},\n\t\taccount_already_exist: {\n\t\t\tcode: \"KIZLO_ACCOUNT_ALREADY_EXIST\",\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"User account already exist or linked.\"\n\t\t},\n\t\talready_signed_in: {\n\t\t\tcode: `KIZLO_ALREADY_SIGNED_IN`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"The user is signed in already.\"\n\t\t},\n\t\talready_signed_out: {\n\t\t\tcode: `KIZLO_ALREADY_SIGNED_OUT`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"The user is signed out already.\"\n\t\t},\n\t\tauthentication_required: {\n\t\t\tcode: `KIZLO_AUTHENTICATION_REQUIRED`,\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Authentication is required in order to perform this action.\"\n\t\t},\n\t\tfeature_coming_soon: {\n\t\t\tcode: \"KIZLO_FEATURE_COMING_SOON\",\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"This feature is currently under development\"\n\t\t},\n\t\tweak_password: {\n\t\t\tcode: \"KIZLO_WEAK_PASSWORD\",\n\t\t\tstatus: \"unprocessable\",\n\t\t\tmessage: \"Password must be at least 8 characters long and contain one uppercase letter, one lowercase letter, one number, and one special character (@$!%*?&)\"\n\t\t},\n\t\ttenant_not_found: {\n\t\t\tcode: \"KIZLO_TENANT_NOT_FOUND\",\n\t\t\tstatus: \"unauthorized\",\n\t\t\tmessage: \"Tenant not found.\"\n\t\t}\n\t});\n\t_Api.error = (error$1, override) => {\n\t\tconst preset = typeof error$1 === \"string\" ? errorPreset[error$1] : error$1;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tsuccess: false,\n\t\t\t\tcode: preset.code,\n\t\t\t\tmessage: override?.message ?? preset.message,\n\t\t\t\tcause: override?.cause ?? null\n\t\t\t},\n\t\t\tstatus: status[preset.status]\n\t\t};\n\t};\n\t_Api.isError = (response) => {\n\t\tif (typeof response !== \"object\" || response === null) return false;\n\t\tconst r = response;\n\t\treturn r.success === false && typeof r.code === \"string\" && typeof r.message === \"string\" && \"cause\" in r;\n\t};\n\tclass Exception$1 extends Error {\n\t\tdata;\n\t\tstatus;\n\t\tconstructor(error$1, override) {\n\t\t\tconst preset = typeof error$1 === \"string\" ? errorPreset[error$1] : error$1;\n\t\t\tsuper(preset.message);\n\t\t\tthis.stack = void 0;\n\t\t\tthis.status = status[preset.status];\n\t\t\tthis.data = {\n\t\t\t\tsuccess: false,\n\t\t\t\tcode: preset.code,\n\t\t\t\tmessage: override?.message ?? preset.message,\n\t\t\t\tcause: override?.cause ?? null\n\t\t\t};\n\t\t}\n\t}\n\t_Api.Exception = Exception$1;\n\t_Api.isException = (error$1) => error$1 instanceof Exception$1;\n\tclass Fetch {\n\t\tasync fetch(url, init) {\n\t\t\tconst response = await fetch(url, init);\n\t\t\tlet raw;\n\t\t\ttry {\n\t\t\t\traw = await response.text();\n\t\t\t} catch {\n\t\t\t\traw = \"\";\n\t\t\t}\n\t\t\tlet data;\n\t\t\ttry {\n\t\t\t\tdata = raw ? JSON.parse(raw) : null;\n\t\t\t} catch {\n\t\t\t\tdata = null;\n\t\t\t}\n\t\t\tif (Api.isError(data)) return {\n\t\t\t\tdata: null,\n\t\t\t\terror: data,\n\t\t\t\traw,\n\t\t\t\tstatus: response.status\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tdata,\n\t\t\t\terror: null,\n\t\t\t\traw,\n\t\t\t\tstatus: response.status\n\t\t\t};\n\t\t}\n\t}\n\t_Api.Fetch = Fetch;\n})(Api || (Api = {}));\n\n//#endregion\n//#region src/common/cookies.ts\nvar RequestCookies = class {\n\tcookies = {};\n\tsetCookies = [];\n\tconstructor(value) {\n\t\tthis.value = value;\n\t\tconst cookieHeader = typeof this.value === \"string\" ? this.value : this.value?.get(\"Cookie\");\n\t\tif (cookieHeader) {\n\t\t\tconst parsedCookies = parse(cookieHeader);\n\t\t\tthis.cookies = Object.fromEntries(Object.entries(parsedCookies).filter(([_, value$1]) => value$1 !== void 0));\n\t\t}\n\t}\n\tget(name) {\n\t\treturn this.cookies[name];\n\t}\n\tgetAll() {\n\t\treturn Object.entries(this.cookies).map(([name, value]) => ({\n\t\t\tname,\n\t\t\tvalue\n\t\t}));\n\t}\n\tgetSetCookieHeaders() {\n\t\treturn [...this.setCookies];\n\t}\n\tset(params) {\n\t\tthis.cookies[params.name] = params.value;\n\t\tconst serialized = serialize(params.name, params.value, params.options);\n\t\tthis.setCookies.push(serialized);\n\t}\n\tdelete(name, options) {\n\t\tdelete this.cookies[name];\n\t\tconst serialized = serialize(name, \"\", {\n\t\t\t...options,\n\t\t\texpires: /* @__PURE__ */ new Date(0),\n\t\t\tmaxAge: 0\n\t\t});\n\t\tthis.setCookies.push(serialized);\n\t}\n\tmerge(other) {\n\t\tother.getAll().forEach(({ name, value }) => this.cookies[name] = value);\n\t\tconst otherSetCookies = other.getSetCookieHeaders();\n\t\tthis.setCookies.push(...otherSetCookies);\n\t}\n\ttoString() {\n\t\treturn Object.entries(this.cookies).map(([name, value]) => `${name}=${value}`).join(\"; \");\n\t}\n\tstatic parse = parse;\n\tstatic serialize = serialize;\n};\n\n//#endregion\n//#region src/common/handlebars.ts\nfunction handlebars(str) {\n\treturn {\n\t\tcompile(data) {\n\t\t\tconst lowerData = Object.fromEntries(Object.entries(data).map(([k, v]) => [k.toLowerCase(), v]));\n\t\t\treturn str.replace(/{{(.*?)}}/g, (_, key) => lowerData[key.toLowerCase()] ?? \"\");\n\t\t},\n\t\thasPlaceholders(placeholders) {\n\t\t\tconst lowerStr = str.toLowerCase();\n\t\t\tconst result = {};\n\t\t\tfor (const ph of placeholders) result[ph] = lowerStr.includes(`{{${ph.toLowerCase()}}}`);\n\t\t\treturn result;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/common/header.ts\nfunction parseHeaders(headers) {\n\tconst parsedHeaders = {};\n\tfor (const [key, value] of headers.entries()) parsedHeaders[key] = value;\n\treturn parsedHeaders;\n}\n\n//#endregion\n//#region src/common/metadata.ts\nconst defineMetadata = (f) => {\n\treturn f({\n\t\ttext(name) {\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: {},\n\t\t\t\tdefault: (defaultValue) => ({\n\t\t\t\t\tname,\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tdefaultValue\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tenum(name) {\n\t\t\treturn { $type() {\n\t\t\t\treturn {\n\t\t\t\t\tname,\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tdefault: (defaultValue) => ({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\tdefaultValue\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t} };\n\t\t},\n\t\tnumber(name) {\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\ttype: \"number\",\n\t\t\t\tvalue: {},\n\t\t\t\tdefault: (defaultValue) => ({\n\t\t\t\t\tname,\n\t\t\t\t\ttype: \"number\",\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tdefaultValue\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tobject(name) {\n\t\t\treturn { $type() {\n\t\t\t\treturn {\n\t\t\t\t\tname,\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tdefault: (defaultValue) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t\tdefaultValue\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} };\n\t\t},\n\t\tarray(name) {\n\t\t\treturn { $type() {\n\t\t\t\treturn {\n\t\t\t\t\tname,\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\tvalue: {},\n\t\t\t\t\tdefault: (defaultValue) => ({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\tdefaultValue\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t} };\n\t\t}\n\t});\n};\nconst meta = (schema) => {\n\treturn {\n\t\tcreate: (values) => {\n\t\t\tconst data = [];\n\t\t\tfor (const [_key, field] of Object.entries(schema)) for (const [__key, value] of Object.entries(values)) {\n\t\t\t\tif (_key !== __key) continue;\n\t\t\t\tdata.push({\n\t\t\t\t\tkey: field.name,\n\t\t\t\t\tvalue: field.type !== \"string\" ? superjson.stringify(value) : value\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn data;\n\t\t},\n\t\tretrieveFrom: (data) => {\n\t\t\tconst parseValue = (field, value) => {\n\t\t\t\tswitch (field.type) {\n\t\t\t\t\tcase \"string\": return !value ? field.defaultValue ?? null : value;\n\t\t\t\t\tcase \"number\": return Number(value);\n\t\t\t\t\tcase \"object\": return superjson.parse(value);\n\t\t\t\t\tcase \"array\": return superjson.parse(value);\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst fields = {};\n\t\t\tfor (const [key, field] of Object.entries(schema)) {\n\t\t\t\tconst match = data.find((meta$1) => meta$1.key === field.name);\n\t\t\t\tif (!match) {\n\t\t\t\t\tif (field.type === \"array\") {\n\t\t\t\t\t\tfields[key] = field.defaultValue ?? [];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfields[key] = field.defaultValue ?? null;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = parseValue(field, match.value);\n\t\t\t\tif (field.type === \"array\") {\n\t\t\t\t\tfields[key] = value ?? field.defaultValue ?? [];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfields[key] = value ?? field.defaultValue ?? null;\n\t\t\t}\n\t\t\treturn fields;\n\t\t}\n\t};\n};\n\n//#endregion\n//#region src/common/path-matcher.ts\n/**\n* Creates a path matcher function that tests if a pathname matches any of the provided patterns.\n*\n* @param patterns - Single pattern or array of patterns to match against\n* @returns A function that takes a pathname and returns true if it matches any pattern\n*\n* @example\n* ```typescript\n* // Single pattern\n* const apiMatcher = createPathMatcher(\"/api/**\");\n* apiMatcher(\"/api/users\"); // true\n*\n* // Multiple patterns\n* const matcher = createPathMatcher([\n* \"/api/users/:id\",\n* \"/api/posts/(.*)\",\n* /^\\/admin/\n* ]);\n*\n* matcher(\"/api/users/123\"); // true\n* matcher(\"/api/posts/recent\"); // true\n* matcher(\"/admin/dashboard\"); // true\n* matcher(\"/public/page\"); // false\n* ```\n*/\nfunction createPathMatcher(patterns) {\n\tconst routePatterns = [patterns].flat().filter((p) => Boolean(p));\n\tif (routePatterns.length === 0) return () => false;\n\tconst matchers = _precomputePathRegex(routePatterns);\n\treturn (source) => {\n\t\tconst pathname = typeof source === \"string\" ? source : new URL(source.url).pathname;\n\t\treturn matchers.some((matcher) => matcher.test(pathname));\n\t};\n}\nfunction _pathToRegex(path) {\n\ttry {\n\t\treturn pathToRegexp(path);\n\t} catch (error$1) {\n\t\tthrow new Error(`Invalid path \"${path}\": ${error$1.message}\\nSee: https://github.com/pillarjs/path-to-regexp/tree/6.x`);\n\t}\n}\nfunction _precomputePathRegex(patterns) {\n\treturn patterns.map((pattern) => pattern instanceof RegExp ? pattern : _pathToRegex(pattern));\n}\nfunction trimLeadingSlash(path) {\n\treturn path.replace(/^\\/+/, \"\");\n}\nfunction trimTrailingSlash(value) {\n\treturn value.replace(/\\/+$/, \"\");\n}\n\n//#endregion\n//#region src/common/random.ts\nconst STANDARD_ID_LENGTH = 32;\nconst ALPHABET_NUMBERS = \"0123456789\";\nconst ALPHABET_HEXADECIMAL = \"0123456789abcdef\";\nconst REGEX_HEXADECIMAL = /* @__PURE__ */ new RegExp(`^[${ALPHABET_HEXADECIMAL}]{${STANDARD_ID_LENGTH}}$`);\n/**\n* Remove the prefix (everything before the first underscore) from an ID string.\n*\n* @param id - The input string that may contain a prefix separated by an underscore.\n*\n* @returns The string without the prefix. If no underscore is present,\n* the original string is returned unchanged.\n*\n* @example\n* trimRandomPrefix(\"user_a3f92bc4\");\n* // => \"a3f92bc4\"\n*\n* @example\n* trimRandomPrefix(\"abc_def_ghi\");\n* // => \"def_ghi\" // only the first prefix is removed\n*\n* @example\n* trimRandomPrefix(\"noprefix\");\n* // => \"noprefix\"\n*/\nconst trimRandomPrefix = (id) => id.replace(/^[^_]+_/, \"\");\nfunction makeRandomReader() {\n\tif (typeof globalThis !== \"undefined\") return { read(bytes) {\n\t\tglobalThis.crypto.getRandomValues(bytes);\n\t} };\n\treturn { read(bytes) {\n\t\tfor (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);\n\t} };\n}\nfunction customAlphabet(alphabet, size) {\n\tif (!alphabet || alphabet.length === 0) throw new Error(\"alphabet must not be empty\");\n\tif (!Number.isFinite(size) || size < 1) throw new Error(\"size must be a positive integer\");\n\tconst random$1 = makeRandomReader();\n\treturn () => generateRandomString(random$1, alphabet, size);\n}\n/**\n* Generate a random ID string with optional prefix and custom alphabet.\n*\n* @param length [options] - The number of characters in the random ID (excluding prefix and separator), default is 32.\n* @param [options] - Optional settings for customizing the output.\n* @param [options.prefix] - An optional prefix to prepend to the ID. If provided, the final result\n* will be formatted as: `prefix_randomId`.\n* @param [options.alphabet] - A custom alphabet to generate the random ID from.\n* Defaults to `ALPHABET_HEXADECIMAL` if not specified.\n*\n* @returns A random ID string. If a prefix is provided, the output will be `\"prefix_randomId\"`,\n* otherwise just `\"randomId\"`.\n*\n* @example\n* // Default: hex alphabet, 16 characters\n* random(16);\n* // => \"a3f92bc4d81e9f7c\"\n*\n* @example\n* // With a prefix\n* random(8, { prefix: \"user\" });\n* // => \"user_d3fa7c2b\"\n*\n* @example\n* // With custom alphabet\n* random(10, { alphabet: \"01\" });\n* // => \"0110011010\"\n*/\nconst random = (length = STANDARD_ID_LENGTH, options) => {\n\tconst core = customAlphabet(options?.alphabet ?? ALPHABET_HEXADECIMAL, length)();\n\treturn [options?.prefix, core].filter(Boolean).join(\"_\");\n};\n\n//#endregion\n//#region src/common/result.ts\nconst error = (error$1) => {\n\treturn typeof error$1 === \"string\" ? {\n\t\tisError: true,\n\t\ttype: error$1,\n\t\tmessage: \"\"\n\t} : {\n\t\tisError: true,\n\t\ttype: error$1.type,\n\t\tmessage: error$1.message\n\t};\n};\nconst success = (value) => {\n\treturn {\n\t\ttype: \"SUCCESS\",\n\t\tvalue,\n\t\tisError: false\n\t};\n};\nvar Exception = class extends Error {\n\tresult;\n\tconstructor(error$1) {\n\t\tsuper(\"Result Exception\");\n\t\tthis.result = error$1;\n\t}\n};\nconst tryCatch = async (promise) => {\n\ttry {\n\t\treturn {\n\t\t\tisError: false,\n\t\t\tvalue: await promise\n\t\t};\n\t} catch (err) {\n\t\treturn {\n\t\t\tisError: true,\n\t\t\terror: err\n\t\t};\n\t}\n};\nconst tryCatchSync = (fn) => {\n\ttry {\n\t\treturn {\n\t\t\tisError: false,\n\t\t\tvalue: fn()\n\t\t};\n\t} catch (err) {\n\t\treturn {\n\t\t\tisError: true,\n\t\t\terror: err\n\t\t};\n\t}\n};\nconst isSuccess = (result) => {\n\treturn !result.isError;\n};\nconst isError = (result) => {\n\treturn result.isError;\n};\nconst chain = (result, fn) => {\n\tif (result.isError) return result;\n\treturn fn(result.value);\n};\nconst map = (result, fn) => {\n\tif (result.isError) return result;\n\treturn success(fn(result.value));\n};\nconst mapError = (result, map$1) => {\n\treturn Result.error(map$1[result.type]);\n};\nconst unwrapOr = (result, defaultValue) => {\n\treturn result.isError ? defaultValue : result.value;\n};\nconst unwrap = (result) => {\n\tif (result.isError) throw new Error(`Result unwrap failed: ${result.type} - ${result.message}`);\n\treturn result.value;\n};\nconst TODO_ERROR = \"This is a note from past me, I added this error constant to remind myself to add proper error handing :>\";\nconst UNHANDLED_ERROR = \"This error is thrown after catching known error cases, but it's possible to get unforeseen errors. This is the one we are talking about.\";\nconst getErrorMessage = (error$1, message) => {\n\treturn typeof error$1 === \"object\" && error$1 !== null && \"message\" in error$1 && typeof error$1.message === \"string\" ? error$1.message : message ?? \"Unknown error\";\n};\nconst toErrorString = (error$1) => {\n\treturn error$1.message ? `[${error$1.type}]: ${error$1.message}` : error$1.type;\n};\nconst voidReturn = () => {};\nconst Result = {\n\terror,\n\tsuccess,\n\ttryCatch,\n\ttryCatchSync,\n\tisSuccess,\n\tisError,\n\tchain,\n\tmap,\n\tmapError,\n\tunwrapOr,\n\tunwrap,\n\tException,\n\tgetErrorMessage,\n\tvoidReturn,\n\ttoErrorString\n};\n\n//#endregion\n//#region src/data/utils.ts\nconst codePattern = [...TELEPHONE_COUNTRY_CODES].sort((a, b) => b.length - a.length).join(\"|\");\nconst phoneRegex = /* @__PURE__ */ new RegExp(`^\\\\+(?:${codePattern})[0-9]+$`);\n/**\n* Checks whether a phone number is E.164-compliant:\n* - starts with '+'\n* - matches one of the COUNTRY_CALLING_CODES\n* - only digits after the country code\n* - total length ≤ 15\n*\n* @param phone The phone number string to validate.\n* @returns True if valid, false otherwise.\n*/\nfunction isValidPhone(phone) {\n\tif (phone.length > 15) return false;\n\treturn phoneRegex.test(phone);\n}\n\n//#endregion\n//#region src/common/schema.ts\nconst isZodError = (error$1) => error$1 instanceof z.ZodError;\nconst isParseSuccess = (schema, input) => schema.safeParse(input).success;\n/**\n* Date/timestamp validation\n*\n* @valid new Date()\n* @invalid \"invalid-date\", null, undefined\n*/\nconst TimestampSchema = z.date();\n/**\n* Unix timestamp validation for API communication\n* Validates milliseconds since epoch (JavaScript standard)\n*\n* @valid 1719882505655, Date.now()\n* @invalid \"invalid-date\", null, undefined, new Date(), \"2025-07-01T01:28:25.655Z\", -1, NaN\n*/\nconst UnixTimestampSchema = z.number().int().positive();\n/**\n* Integer ID for database auto-increment, random numeric IDs, or array indices\n* Non-negative since database IDs start from 1 and array indices start from 0\n*\n* @valid 0, 1, 12345, 999999\n* @invalid -1, 1.5, \"123\"\n*/\nconst NumericIdSchema = z.number().int().nonnegative();\n/**\n* String-based ID with length constraints (external IDs, slugs, etc.)\n*\n* @valid \"user_123\", \"prod-abc-xyz\", \"a\"\n* @invalid \"\", \"very-long-string-over-255-chars...\"\n*/\nconst StringIdSchema = z.string().min(1).max(255);\n/**\n* Email string validation\n*\n* @valid \"bro@gmail.com\"\n* @invalid \"bro@.com\", \"bro@bogus\"\n*/\nconst EmailSchema = z.email();\n/**\n* Price validation - must be positive (greater than 0)\n* Business controls decimal precision dynamically\n*\n* @valid 19.99, 100, 0.01, 1000.5555\n* @invalid 0, -10, -0.01\n*/\nconst PriceSchema = z.number().positive();\n/**\n* Amount validation - allows zero and positive values\n* For subtotals, totals, discounts, refunds, etc.\n* Business controls decimal precision dynamically\n*\n* @valid 100, 10.02, 0, 0.001\n* @invalid -200, -0.01\n*/\nconst AmountSchema = z.number().nonnegative();\n/**\n* Quantity validation for order items, cart items, inventory\n* Integer between 1-99 (adjust max as needed)\n*\n* @valid 1, 5, 99\n* @invalid 0, 100, 1.5, -1\n*/\nconst QuantitySchema = z.number().int().positive();\n/**\n* Percentage validation (0-100%)\n* For discounts, completion rates, tax rates (if expressed as %)\n*\n* @valid 0, 15.5, 100, 50\n* @invalid -5, 101, 150\n*/\nconst PercentageSchema = z.number().min(0).max(100);\n/**\n* URL validation for external links, images, webhooks, etc.\n* Accepts http/https protocols only for security\n*\n* @valid \"https://example.com\", \"http://shop.com/product/123\"\n* @invalid \"ftp://example.com\", \"javascript:alert(1)\", \"not-a-url\"\n*/\nconst UrlSchema = z.url();\n/**\n* Flexible slug validation - allows hyphens and underscores\n* For cases where you need more compatibility with existing systems\n*\n* @valid \"iphone-15_pro\", \"summer_sale-2024\", \"electronics\"\n* @invalid \"iPhone 15\", \"sale!\", \"product--name\", \"_invalid\", \"invalid_\"\n*/\nconst SlugSchema = z.string().min(1).max(100).regex(/^[a-z0-9]+(?:[-_][a-z0-9]+)*$/);\n/**\n* Meta data schema\n*/\nconst MetadataSchema = z.object({\n\tkey: z.string(),\n\tvalue: z.string()\n});\n/**\n* General string validation with reasonable max length\n* For most common string fields like names, titles, descriptions and can be empty\n*\n* @valid \"Product name\", \"Short description\", \"\"\n* @invalid null, undefined, strings over 255 chars\n*/\nconst StringSchema = z.string().max(255);\n/**\n* Required string validation - cannot be empty\n* For mandatory fields that must have content\n*\n* @valid \"Product name\", \"Required field\", \"a\"\n* @invalid \"\", null, undefined, strings over 255 chars\n*/\nconst RequiredStringSchema = z.string().min(1).max(255);\n/**\n* Large string validation for detailed content\n* For product descriptions, blog posts, detailed notes\n*\n* @valid \"Long product description...\", \"Detailed content\"\n* @invalid strings over 5000 chars\n*/\nconst BigStringSchema = z.string().max(1e4);\n/**\n* Large string validation for detailed content\n* For product descriptions, blog posts, detailed notes - cannot be empty\n* For mandatory fields that must have content\n*\n* @valid \"Long product description...\", \"Detailed content\"\n* @invalid strings over 5000 chars\n*/\nconst RequiredBigStringSchema = z.string().min(1).max(5e3);\n/**\n* Very large string validation - use with caution!\n* For rich text content, legal documents, massive descriptions\n* WARNING: Can impact database performance and memory usage\n*\n* @valid \"Extremely long content...\", \"Rich text with HTML\"\n* @invalid strings over 50000 chars\n*/\nconst DangerouslyBigStringSchema = z.string().max(5e4);\n/**\n* Very large string validation - use with caution!\n* For rich text content, legal documents, massive descriptions\n* WARNING: Can impact database performance and memory usage\n*\n* @valid \"Extremely long content...\", \"Rich text with HTML\"\n* @invalid strings over 50000 chars\n*/\nconst RequiredDangerouslyBigStringSchema = z.string().min(1).max(5e4);\n/**\n* City name validation\n* For city names in addresses and location data\n*\n* @valid \"New York\", \"São Paulo\", \"München\"\n* @invalid \"\", \" \", strings over 100 chars\n*/\nconst CitySchema = z.string().min(1).max(100);\n/**\n* Province/state code validation\n* For standardized province/state codes (typically 2-3 characters)\n*\n* @valid \"CA\", \"ON\", \"NY\", \"QC\", \"BC\"\n* @invalid \"\", \"California\", \" \", single chars, strings over 3 chars\n*/\nconst ProvinceCodeSchema = z.string().min(2).max(2);\n/**\n* Postal/ZIP code validation\n* For postal codes, ZIP codes, and similar location identifiers\n* Flexible format to accommodate international variations\n*\n* @valid \"12345\", \"K1A 0A6\", \"SW1A 1AA\", \"100-0001\"\n* @invalid \"\", \" \", strings over 20 chars\n*/\nconst PostcodeSchema = z.string().min(1).max(20);\n/**\n* ISO country code validation\n* Two-letter country codes (ISO 3166-1 alpha-2)\n*\n* @valid \"US\", \"CA\", \"GB\", \"DE\", \"JP\"\n* @invalid \"\", \"USA\", \"United States\", single chars, strings over 2 chars\n*/\nconst CountryCodeSchema = z.enum(COUNTRY_CODES);\n/**\n* Phone number validation\n* Flexible phone number format for international use\n* Accepts various formats with optional country codes\n*\n* @valid \"+1-555-123-4567\", \"(555) 123-4567\", \"555.123.4567\", \"+44 20 7946 0958\"\n* @invalid \"\", strings over 20 chars, non-numeric/formatting chars\n*/\nconst PhoneSchema = z.string().max(15, \"Phone number must be at most 15 characters long\").refine(isValidPhone, { message: \"Phone must start with +, contain a valid country calling code, and only digits thereafter\" });\n/**\n* Phone number validation\n* Flexible phone number format for international use\n* Accepts various formats with optional country codes\n*\n* @valid \"+1-555-123-4567\", \"+44 20 7946 0958\"\n* @invalid \"(555) 123-4567\", \"555.123.4567\", \"\", strings over 20 chars, non-numeric/formatting chars\n*/\nconst PhoneWithCodeSchema = z.string().min(1).max(20);\n/**\n* Password validation\n* Secure password requirements for user accounts\n* Must contain at least one uppercase, lowercase, number, and special character\n*\n* @valid \"MyPass123!\", \"SecureP@ssw0rd\", \"Strong#Password1\"\n* @invalid \"password\", \"PASSWORD\", \"12345678\", \"Pass123\" (no special char)\n*/\nconst PasswordSchema = z.string().min(8, \"Password must be at least 8 characters long\").max(128, \"Password must be less than 128 characters\").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]/, \"Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character (@$!%*?&)\");\n/**\n* Hex color validation\n* Validates 3- or 6-digit hex color codes, with an optional leading '#'.\n* Trims input and **normalizes** the output to the canonical `#rrggbb` format\n* (lowercased; short form `#abc` is expanded to `#aabbcc`).\n*\n* @valid \"#fff\", \"fff\", \"#A1B2C3\", \"a1b2c3\"\n* @invalid \"zzzzzz\", \"#12\", \"12345\", \"ggg\", \"blue\"\n*/\nconst HexCodeSchema = z.string().trim().regex(/^#?(?:[0-9a-f]{3}|[0-9a-f]{6})$/i, \"Invalid hex color\").transform((val) => {\n\tconst s = val.replace(/^#/, \"\").toLowerCase();\n\treturn `#${s.length === 3 ? s.split(\"\").map((ch) => ch + ch).join(\"\") : s}`;\n});\n\n//#endregion\n//#region src/common/time.ts\nconst DURATION_REGEX = /^([+-]?(?:\\d+)(?:\\.\\d+)?) (second|minute|hour|day|week|month|year)s?$/;\nconst duration = (milliseconds$1, parts) => itty.duration(milliseconds$1, { parts });\nconst milliseconds = (duration$1) => itty.ms(duration$1);\nconst seconds = (duration$1) => itty.seconds(duration$1);\nconst date = (duration$1, from) => itty.datePlus(duration$1, from);\nconst DurationSchema = z$1.union([z$1.number(), z$1.string().regex(DURATION_REGEX, { message: \"Expected string of form \\\"<number> <unit>\\\" where <unit> is one of: second, minute, hour, day, week, month, year — case-sensitive and exactly one space; optional trailing \\\"s\\\". Example: \\\"1.5 hour\\\" or \\\"3 days\\\"\" })]).pipe(z$1.custom());\n\n//#endregion\n//#region src/common/user-agent.ts\nfunction parseUserAgent(userAgent) {\n\tconst parser = new UAParser(userAgent);\n\treturn {\n\t\tbrowser() {\n\t\t\tconst value = parser.getBrowser();\n\t\t\treturn {\n\t\t\t\tname: value.name,\n\t\t\t\tversion: value.version,\n\t\t\t\tmajorVersion: value.major\n\t\t\t};\n\t\t},\n\t\tdevice() {\n\t\t\treturn parser.getDevice().type;\n\t\t},\n\t\tos() {\n\t\t\tconst value = parser.getOS();\n\t\t\treturn {\n\t\t\t\tname: value.name,\n\t\t\t\tversion: value.version\n\t\t\t};\n\t\t},\n\t\tresult() {\n\t\t\treturn {\n\t\t\t\tos: this.os(),\n\t\t\t\tdevice: this.device(),\n\t\t\t\tbrowser: this.browser()\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/common/webhook/constants.ts\nconst WEBHOOK_HEADER_KEY_MESSAGE_ID = \"message-id\";\nconst WEBHOOK_HEADER_KEY_MESSAGE_SIGNATURE = \"message-signature\";\nconst WEBHOOK_HEADER_KEY_MESSAGE_TIMESTAMP = \"message-timestamp\";\nconst WEBHOOK_SECRET_PREFIX = \"whsec_\";\nconst WEBHOOK_SECRET_LENGTH = 32;\n\n//#endregion\n//#region src/common/webhook/webhook.ts\nvar Webhook = class {\n\tkey;\n\tconstructor(secret, options) {\n\t\tthis.secret = secret;\n\t\tthis.options = options;\n\t\tthis.key = base64.decode(Buffer.from(this.secret.replace(`${WEBHOOK_SECRET_PREFIX}_`, \"\"), \"utf8\").toString(\"base64\"));\n\t}\n\tsign(id, payload) {\n\t\tconst timestamp = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);\n\t\tconst body = this.stringifyPayload(payload);\n\t\tconst signature = this.computeSignature(id, timestamp, body);\n\t\treturn {\n\t\t\theaders: {\n\t\t\t\t[WEBHOOK_HEADER_KEY_MESSAGE_ID]: id,\n\t\t\t\t[WEBHOOK_HEADER_KEY_MESSAGE_SIGNATURE]: signature,\n\t\t\t\t[WEBHOOK_HEADER_KEY_MESSAGE_TIMESTAMP]: timestamp.toString()\n\t\t\t},\n\t\t\tbody\n\t\t};\n\t}\n\tasync verify(request) {\n\t\tconst messageId = request.headers.get(WEBHOOK_HEADER_KEY_MESSAGE_ID);\n\t\tconst messageSignature = request.headers.get(WEBHOOK_HEADER_KEY_MESSAGE_SIGNATURE);\n\t\tconst messageTimestamp = request.headers.get(WEBHOOK_HEADER_KEY_MESSAGE_TIMESTAMP);\n\t\tif (!messageId) return Result.error({\n\t\t\ttype: \"MISSING_MESSAGE_ID\",\n\t\t\tmessage: \".\"\n\t\t});\n\t\tif (!messageSignature) return Result.error({\n\t\t\ttype: \"MISSING_SIGNATURE\",\n\t\t\tmessage: \".\"\n\t\t});\n\t\tif (!messageTimestamp) return Result.error({\n\t\t\ttype: \"MISSING_TIMESTAMP\",\n\t\t\tmessage: \".\"\n\t\t});\n\t\tconst timestamp = this.verifyTimestamp(messageTimestamp);\n\t\tif (timestamp.isError) return timestamp;\n\t\tconst payload = await request.text();\n\t\tconst expectedSignature = this.computeSignature(messageId, timestamp.value, payload).split(\",\")[1];\n\t\tconst passedSignatures = messageSignature.split(\" \");\n\t\tconst encoder = new TextEncoder();\n\t\tfor (const versionedSignature of passedSignatures) {\n\t\t\tconst [version, signature] = versionedSignature.split(\",\");\n\t\t\tif (version !== \"v1\") continue;\n\t\t\tif (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) return Result.success(this.parsePayload(payload));\n\t\t}\n\t\treturn Result.error({\n\t\t\ttype: \"VERIFICATION_FAILED\",\n\t\t\tmessage: \".\"\n\t\t});\n\t}\n\tcomputeSignature(id, timestamp, payload) {\n\t\tconst toSign = new TextEncoder().encode(`${id}.${timestamp}.${payload}`);\n\t\treturn `v1,${base64.encode(sha256.hmac(this.key, toSign))}`;\n\t}\n\tstatic computeSecret() {\n\t\treturn `${WEBHOOK_SECRET_PREFIX}${random(WEBHOOK_SECRET_LENGTH)}`;\n\t}\n\tstatic validateWebhookSecret(secret) {\n\t\treturn /^whsec_[A-Za-z0-9\\-_]+$/.test(secret) && secret.length === 38;\n\t}\n\tparsePayload(payload) {\n\t\treturn this.options?.payload?.parse(payload) ?? JSON.parse(payload);\n\t}\n\tstringifyPayload(payload) {\n\t\treturn this.options?.payload?.stringify(payload) ?? JSON.stringify(payload);\n\t}\n\tverifyTimestamp(timestampHeader) {\n\t\tconst now = Math.floor(Date.now() / 1e3);\n\t\tconst timestamp = parseInt(timestampHeader, 10);\n\t\tconst webhookToleranceInSec = seconds(this.options?.tolerance ?? \"5 minutes\");\n\t\tif (now - timestamp > webhookToleranceInSec) return Result.error({\n\t\t\ttype: \"MESSAGE_TOO_OLD\",\n\t\t\tmessage: \".\"\n\t\t});\n\t\tif (timestamp > now + webhookToleranceInSec) return Result.error({\n\t\t\ttype: \"MESSAGE_TOO_NEW\",\n\t\t\tmessage: \".\"\n\t\t});\n\t\treturn Result.success(timestamp);\n\t}\n\ttimingSafeEqual(a, b) {\n\t\tif (a.byteLength !== b.byteLength) return false;\n\t\tif (!(a instanceof DataView)) a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);\n\t\tif (!(b instanceof DataView)) b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);\n\t\tthis.assert(a instanceof DataView);\n\t\tthis.assert(b instanceof DataView);\n\t\tconst length = a.byteLength;\n\t\tlet out = 0;\n\t\tlet i = -1;\n\t\twhile (++i < length) out |= a.getUint8(i) ^ b.getUint8(i);\n\t\treturn out === 0;\n\t}\n\tassert(expr, msg = \"\") {\n\t\tif (!expr) throw new Error(msg);\n\t}\n};\n\n//#endregion\nexport { ALPHABET_HEXADECIMAL, ALPHABET_NUMBERS, AmountSchema, Api, BigStringSchema, CitySchema, CountryCodeSchema, DangerouslyBigStringSchema, DurationSchema, EmailSchema, Exception, HexCodeSchema, MetadataSchema, NumericIdSchema, PasswordSchema, PercentageSchema, PhoneSchema, PhoneWithCodeSchema, PostcodeSchema, PriceSchema, ProvinceCodeSchema, QuantitySchema, REGEX_HEXADECIMAL, RequestCookies, RequiredBigStringSchema, RequiredDangerouslyBigStringSchema, RequiredStringSchema, Result, STANDARD_ID_LENGTH, SlugSchema, StringIdSchema, StringSchema, TODO_ERROR, TimestampSchema, UNHANDLED_ERROR, UnixTimestampSchema, UrlSchema, WEBHOOK_HEADER_KEY_MESSAGE_ID, WEBHOOK_HEADER_KEY_MESSAGE_SIGNATURE, WEBHOOK_HEADER_KEY_MESSAGE_TIMESTAMP, WEBHOOK_SECRET_LENGTH, WEBHOOK_SECRET_PREFIX, Webhook, createPathMatcher, customAlphabet, date, defineMetadata, duration, handlebars, isParseSuccess, isZodError, meta, milliseconds, parseHeaders, parseUserAgent, random, seconds, toAddressString, trimLeadingSlash, trimRandomPrefix, trimTrailingSlash };\n//# sourceMappingURL=common-BpZpqdB4.js.map","export const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\n","export function encodeBase64(input) {\n if (Uint8Array.prototype.toBase64) {\n return input.toBase64();\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < input.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n}\nexport function decodeBase64(encoded) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(encoded);\n }\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nimport { encodeBase64, decodeBase64 } from '../lib/base64.js';\nexport function decode(input) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), {\n alphabet: 'base64url',\n });\n }\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n}\nexport function encode(input) {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n if (Uint8Array.prototype.toBase64) {\n return unencoded.toBase64({ alphabet: 'base64url', omitPadding: true });\n }\n return encodeBase64(unencoded).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","export class JOSEError extends Error {\n static code = 'ERR_JOSE_GENERIC';\n code = 'ERR_JOSE_GENERIC';\n constructor(message, options) {\n super(message, options);\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n static code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n claim;\n reason;\n payload;\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JWTExpired extends JOSEError {\n static code = 'ERR_JWT_EXPIRED';\n code = 'ERR_JWT_EXPIRED';\n claim;\n reason;\n payload;\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n static code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n}\nexport class JOSENotSupported extends JOSEError {\n static code = 'ERR_JOSE_NOT_SUPPORTED';\n code = 'ERR_JOSE_NOT_SUPPORTED';\n}\nexport class JWEDecryptionFailed extends JOSEError {\n static code = 'ERR_JWE_DECRYPTION_FAILED';\n code = 'ERR_JWE_DECRYPTION_FAILED';\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n }\n}\nexport class JWEInvalid extends JOSEError {\n static code = 'ERR_JWE_INVALID';\n code = 'ERR_JWE_INVALID';\n}\nexport class JWSInvalid extends JOSEError {\n static code = 'ERR_JWS_INVALID';\n code = 'ERR_JWS_INVALID';\n}\nexport class JWTInvalid extends JOSEError {\n static code = 'ERR_JWT_INVALID';\n code = 'ERR_JWT_INVALID';\n}\nexport class JWKInvalid extends JOSEError {\n static code = 'ERR_JWK_INVALID';\n code = 'ERR_JWK_INVALID';\n}\nexport class JWKSInvalid extends JOSEError {\n static code = 'ERR_JWKS_INVALID';\n code = 'ERR_JWKS_INVALID';\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n static code = 'ERR_JWKS_NO_MATCHING_KEY';\n code = 'ERR_JWKS_NO_MATCHING_KEY';\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n [Symbol.asyncIterator];\n static code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n }\n}\nexport class JWKSTimeout extends JOSEError {\n static code = 'ERR_JWKS_TIMEOUT';\n code = 'ERR_JWKS_TIMEOUT';\n constructor(message = 'request timed out', options) {\n super(message, options);\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n static code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n }\n}\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usage) {\n if (usage && !key.usages.includes(usage)) {\n throw new TypeError(`CryptoKey does not support this operation, its usages must include ${usage}.`);\n }\n}\nexport function checkSigCryptoKey(key, alg, usage) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'Ed25519':\n case 'EdDSA': {\n if (!isAlgorithm(key.algorithm, 'Ed25519'))\n throw unusable('Ed25519');\n break;\n }\n case 'ML-DSA-44':\n case 'ML-DSA-65':\n case 'ML-DSA-87': {\n if (!isAlgorithm(key.algorithm, alg))\n throw unusable(alg);\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usage);\n}\nexport function checkEncCryptoKey(key, alg, usage) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n break;\n default:\n throw unusable('ECDH or X25519');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usage);\n}\n","function message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","export function assertCryptoKey(key) {\n if (!isCryptoKey(key)) {\n throw new Error('CryptoKey instance expected');\n }\n}\nexport function isCryptoKey(key) {\n return key?.[Symbol.toStringTag] === 'CryptoKey';\n}\nexport function isKeyObject(key) {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n}\nexport default (key) => {\n return isCryptoKey(key) || isKeyObject(key);\n};\n","export default (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default (input) => {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n};\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'AKP': {\n switch (jwk.alg) {\n case 'ML-DSA-44':\n case 'ML-DSA-65':\n case 'ML-DSA-87':\n algorithm = { name: jwk.alg };\n keyUsages = jwk.priv ? ['sign'] : ['verify'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n case 'EdDSA':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nexport default async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const keyData = { ...jwk };\n if (keyData.kty !== 'AKP') {\n delete keyData.alg;\n }\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, algorithm, jwk.ext ?? (jwk.d || jwk.priv ? false : true), jwk.key_ops ?? keyUsages);\n};\n","import { decode as decodeBase64URL } from '../util/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../lib/asn1.js';\nimport toCryptoKey from '../lib/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg, options) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n let ext;\n alg ??= jwk.alg;\n ext ??= options?.extractable ?? jwk.ext;\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n return toCryptoKey({ ...jwk, alg, ext });\n case 'AKP': {\n if (typeof jwk.alg !== 'string' || !jwk.alg) {\n throw new TypeError('missing \"alg\" (Algorithm) Parameter value');\n }\n if (alg !== undefined && alg !== jwk.alg) {\n throw new TypeError('JWK alg and alg option value mismatch');\n }\n return toCryptoKey({ ...jwk, ext });\n }\n case 'EC':\n case 'OKP':\n return toCryptoKey({ ...jwk, alg, ext });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js';\nexport default (Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) => {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n};\n","export default (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return (key.kty !== 'oct' &&\n ((key.kty === 'AKP' && typeof key.priv === 'string') || typeof key.d === 'string'));\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined' && typeof key.priv === 'undefined';\n}\nexport function isSecretJWK(key) {\n return key.kty === 'oct' && typeof key.k === 'string';\n}\n","import { isJWK } from './is_jwk.js';\nimport { decode } from '../util/base64url.js';\nimport importJWK from './jwk_to_key.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nlet cache;\nconst handleJWK = async (key, jwk, alg, freeze = false) => {\n cache ||= new WeakMap();\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst handleKeyObject = (keyObject, alg) => {\n cache ||= new WeakMap();\n let cached = cache.get(keyObject);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const isPublic = keyObject.type === 'public';\n const extractable = isPublic ? true : false;\n let cryptoKey;\n if (keyObject.asymmetricKeyType === 'x25519') {\n switch (alg) {\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n break;\n default:\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : ['deriveBits']);\n }\n if (keyObject.asymmetricKeyType === 'ed25519') {\n if (alg !== 'EdDSA' && alg !== 'Ed25519') {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n isPublic ? 'verify' : 'sign',\n ]);\n }\n switch (keyObject.asymmetricKeyType) {\n case 'ml-dsa-44':\n case 'ml-dsa-65':\n case 'ml-dsa-87': {\n if (alg !== keyObject.asymmetricKeyType.toUpperCase()) {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n isPublic ? 'verify' : 'sign',\n ]);\n }\n }\n if (keyObject.asymmetricKeyType === 'rsa') {\n let hash;\n switch (alg) {\n case 'RSA-OAEP':\n hash = 'SHA-1';\n break;\n case 'RS256':\n case 'PS256':\n case 'RSA-OAEP-256':\n hash = 'SHA-256';\n break;\n case 'RS384':\n case 'PS384':\n case 'RSA-OAEP-384':\n hash = 'SHA-384';\n break;\n case 'RS512':\n case 'PS512':\n case 'RSA-OAEP-512':\n hash = 'SHA-512';\n break;\n default:\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (alg.startsWith('RSA-OAEP')) {\n return keyObject.toCryptoKey({\n name: 'RSA-OAEP',\n hash,\n }, extractable, isPublic ? ['encrypt'] : ['decrypt']);\n }\n cryptoKey = keyObject.toCryptoKey({\n name: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n hash,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (keyObject.asymmetricKeyType === 'ec') {\n const nist = new Map([\n ['prime256v1', 'P-256'],\n ['secp384r1', 'P-384'],\n ['secp521r1', 'P-521'],\n ]);\n const namedCurve = nist.get(keyObject.asymmetricKeyDetails?.namedCurve);\n if (!namedCurve) {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (alg === 'ES256' && namedCurve === 'P-256') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg === 'ES384' && namedCurve === 'P-384') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg === 'ES512' && namedCurve === 'P-521') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg.startsWith('ECDH-ES')) {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDH',\n namedCurve,\n }, extractable, isPublic ? [] : ['deriveBits']);\n }\n }\n if (!cryptoKey) {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (!cached) {\n cache.set(keyObject, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nexport default async (key, alg) => {\n if (key instanceof Uint8Array) {\n return key;\n }\n if (isCryptoKey(key)) {\n return key;\n }\n if (isKeyObject(key)) {\n if (key.type === 'secret') {\n return key.export();\n }\n if ('toCryptoKey' in key && typeof key.toCryptoKey === 'function') {\n try {\n return handleKeyObject(key, alg);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n }\n }\n let jwk = key.export({ format: 'jwk' });\n return handleJWK(key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k) {\n return decode(key.k);\n }\n return handleJWK(key, key, alg, true);\n }\n throw new Error('unreachable');\n};\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike from './is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined) {\n let expected;\n switch (usage) {\n case 'sign':\n case 'verify':\n expected = 'sig';\n break;\n case 'encrypt':\n case 'decrypt':\n expected = 'enc';\n break;\n }\n if (key.use !== expected) {\n throw new TypeError(`Invalid key for this operation, its \"use\" must be \"${expected}\" when present`);\n }\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, its \"alg\" must be \"${alg}\" when present`);\n }\n if (Array.isArray(key.key_ops)) {\n let expectedKeyOp;\n switch (true) {\n case usage === 'sign' || usage === 'verify':\n case alg === 'dir':\n case alg.includes('CBC-HS'):\n expectedKeyOp = usage;\n break;\n case alg.startsWith('PBES2'):\n expectedKeyOp = 'deriveBits';\n break;\n case /^A\\d{3}(?:GCM)?(?:KW)?$/.test(alg):\n if (!alg.includes('GCM') && alg.endsWith('KW')) {\n expectedKeyOp = usage === 'encrypt' ? 'wrapKey' : 'unwrapKey';\n }\n else {\n expectedKeyOp = usage;\n }\n break;\n case usage === 'encrypt' && alg.startsWith('RSA'):\n expectedKeyOp = 'wrapKey';\n break;\n case usage === 'decrypt':\n expectedKeyOp = alg.startsWith('RSA') ? 'unwrapKey' : 'deriveBits';\n break;\n }\n if (expectedKeyOp && key.key_ops?.includes?.(expectedKeyOp) === false) {\n throw new TypeError(`Invalid key for this operation, its \"key_ops\" must include \"${expectedKeyOp}\" when present`);\n }\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage) => {\n if (key instanceof Uint8Array)\n return;\n if (jwk.isJWK(key)) {\n if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key', 'Uint8Array'));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n if (jwk.isJWK(key)) {\n switch (usage) {\n case 'decrypt':\n case 'sign':\n if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'encrypt':\n case 'verify':\n if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (key.type === 'public') {\n switch (usage) {\n case 'sign':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n case 'decrypt':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n default:\n break;\n }\n }\n if (key.type === 'private') {\n switch (usage) {\n case 'verify':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n case 'encrypt':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n default:\n break;\n }\n }\n};\nexport default (alg, key, usage) => {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A(?:128|192|256)(?:GCM)?(?:KW)?$/.test(alg) ||\n /^A(?:128|192|256)CBC-HS(?:256|384|512)$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage);\n }\n else {\n asymmetricTypeCheck(alg, key, usage);\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default (alg, algorithm) => {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: parseInt(alg.slice(-3), 10) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n case 'EdDSA':\n return { name: 'Ed25519' };\n case 'ML-DSA-44':\n case 'ML-DSA-65':\n case 'ML-DSA-87':\n return { name: alg };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n};\n","import { checkSigCryptoKey } from './crypto_key.js';\nimport invalidKeyInput from './invalid_key_input.js';\nexport default async (alg, key, usage) => {\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n checkSigCryptoKey(key, alg, usage);\n return key;\n};\n","import subtleAlgorithm from './subtle_dsa.js';\nimport checkKeyLength from './check_key_length.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nexport default async (alg, key, signature, data) => {\n const cryptoKey = await getVerifyKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n try {\n return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\n","import { decode as b64u } from '../../util/base64url.js';\nimport verify from '../../lib/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport checkKeyType from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nimport normalizeKey from '../../lib/normalize_key.js';\nexport async function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = b64u(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n }\n checkKeyType(alg, key, 'verify');\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = b64u(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const k = await normalizeKey(key, alg);\n const verified = await verify(alg, k, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = b64u(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key: k };\n }\n return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nimport { encoder } from './buffer_utils.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nconst normalizeTyp = (value) => {\n if (value.includes('/')) {\n return value.toLowerCase();\n }\n return `application/${value.toLowerCase()}`;\n};\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport function validateClaimsSet(protectedHeader, encodedPayload, options = {}) {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n}\nexport class JWTClaimsBuilder {\n #payload;\n constructor(payload) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this.#payload = structuredClone(payload);\n }\n data() {\n return encoder.encode(JSON.stringify(this.#payload));\n }\n get iss() {\n return this.#payload.iss;\n }\n set iss(value) {\n this.#payload.iss = value;\n }\n get sub() {\n return this.#payload.sub;\n }\n set sub(value) {\n this.#payload.sub = value;\n }\n get aud() {\n return this.#payload.aud;\n }\n set aud(value) {\n this.#payload.aud = value;\n }\n set jti(value) {\n this.#payload.jti = value;\n }\n set nbf(value) {\n if (typeof value === 'number') {\n this.#payload.nbf = validateInput('setNotBefore', value);\n }\n else if (value instanceof Date) {\n this.#payload.nbf = validateInput('setNotBefore', epoch(value));\n }\n else {\n this.#payload.nbf = epoch(new Date()) + secs(value);\n }\n }\n set exp(value) {\n if (typeof value === 'number') {\n this.#payload.exp = validateInput('setExpirationTime', value);\n }\n else if (value instanceof Date) {\n this.#payload.exp = validateInput('setExpirationTime', epoch(value));\n }\n else {\n this.#payload.exp = epoch(new Date()) + secs(value);\n }\n }\n set iat(value) {\n if (typeof value === 'undefined') {\n this.#payload.iat = epoch(new Date());\n }\n else if (value instanceof Date) {\n this.#payload.iat = validateInput('setIssuedAt', epoch(value));\n }\n else if (typeof value === 'string') {\n this.#payload.iat = validateInput('setIssuedAt', epoch(new Date()) + secs(value));\n }\n else {\n this.#payload.iat = validateInput('setIssuedAt', value);\n }\n }\n}\n","import { compactVerify } from '../jws/compact/verify.js';\nimport { validateClaimsSet } from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import { importJWK } from '../key/import.js';\nimport { JWKSInvalid, JOSENotSupported, JWKSNoMatchingKey, JWKSMultipleMatchingKeys, } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nfunction getKtyFromAlg(alg) {\n switch (typeof alg === 'string' && alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n case 'ML':\n return 'AKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKSLike(jwks) {\n return (jwks &&\n typeof jwks === 'object' &&\n Array.isArray(jwks.keys) &&\n jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nclass LocalJWKSet {\n #jwks;\n #cached = new WeakMap();\n constructor(jwks) {\n if (!isJWKSLike(jwks)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this.#jwks = structuredClone(jwks);\n }\n jwks() {\n return this.#jwks;\n }\n async getKey(protectedHeader, token) {\n const { alg, kid } = { ...protectedHeader, ...token?.header };\n const kty = getKtyFromAlg(alg);\n const candidates = this.#jwks.keys.filter((jwk) => {\n let candidate = kty === jwk.kty;\n if (candidate && typeof kid === 'string') {\n candidate = kid === jwk.kid;\n }\n if (candidate && (typeof jwk.alg === 'string' || kty === 'AKP')) {\n candidate = alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate) {\n switch (alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n case 'Ed25519':\n case 'EdDSA':\n candidate = jwk.crv === 'Ed25519';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n throw new JWKSNoMatchingKey();\n }\n if (length !== 1) {\n const error = new JWKSMultipleMatchingKeys();\n const _cached = this.#cached;\n error[Symbol.asyncIterator] = async function* () {\n for (const jwk of candidates) {\n try {\n yield await importWithAlgCache(_cached, jwk, alg);\n }\n catch { }\n }\n };\n throw error;\n }\n return importWithAlgCache(this.#cached, jwk, alg);\n }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n if (cached[alg] === undefined) {\n const key = await importJWK({ ...jwk, ext: true }, alg);\n if (key instanceof Uint8Array || key.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[alg] = key;\n }\n return cached[alg];\n}\nexport function createLocalJWKSet(jwks) {\n const set = new LocalJWKSet(jwks);\n const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(localJWKSet, {\n jwks: {\n value: () => structuredClone(set.jwks()),\n enumerable: false,\n configurable: false,\n writable: false,\n },\n });\n return localJWKSet;\n}\n","//#region src/data/countries.ts\nconst COUNTRIES = [\n\t{\n\t\tiso: \"AF\",\n\t\tname: \"Afghanistan\",\n\t\tcode: \"93\"\n\t},\n\t{\n\t\tiso: \"AX\",\n\t\tname: \"Åland Islands\",\n\t\tcode: \"358\"\n\t},\n\t{\n\t\tiso: \"AL\",\n\t\tname: \"Albania\",\n\t\tcode: \"355\"\n\t},\n\t{\n\t\tiso: \"DZ\",\n\t\tname: \"Algeria\",\n\t\tcode: \"213\"\n\t},\n\t{\n\t\tiso: \"AS\",\n\t\tname: \"American Samoa\",\n\t\tcode: \"1684\"\n\t},\n\t{\n\t\tiso: \"AD\",\n\t\tname: \"Andorra\",\n\t\tcode: \"376\"\n\t},\n\t{\n\t\tiso: \"AO\",\n\t\tname: \"Angola\",\n\t\tcode: \"244\"\n\t},\n\t{\n\t\tiso: \"AI\",\n\t\tname: \"Anguilla\",\n\t\tcode: \"1264\"\n\t},\n\t{\n\t\tiso: \"AQ\",\n\t\tname: \"Antarctica\",\n\t\tcode: \"672\"\n\t},\n\t{\n\t\tiso: \"AG\",\n\t\tname: \"Antigua and Barbuda\",\n\t\tcode: \"1268\"\n\t},\n\t{\n\t\tiso: \"AR\",\n\t\tname: \"Argentina\",\n\t\tcode: \"54\"\n\t},\n\t{\n\t\tiso: \"AM\",\n\t\tname: \"Armenia\",\n\t\tcode: \"374\"\n\t},\n\t{\n\t\tiso: \"AW\",\n\t\tname: \"Aruba\",\n\t\tcode: \"297\"\n\t},\n\t{\n\t\tiso: \"AU\",\n\t\tname: \"Australia\",\n\t\tcode: \"61\"\n\t},\n\t{\n\t\tiso: \"AT\",\n\t\tname: \"Austria\",\n\t\tcode: \"43\"\n\t},\n\t{\n\t\tiso: \"AZ\",\n\t\tname: \"Azerbaijan\",\n\t\tcode: \"994\"\n\t},\n\t{\n\t\tiso: \"BS\",\n\t\tname: \"Bahamas\",\n\t\tcode: \"1242\"\n\t},\n\t{\n\t\tiso: \"BH\",\n\t\tname: \"Bahrain\",\n\t\tcode: \"973\"\n\t},\n\t{\n\t\tiso: \"BD\",\n\t\tname: \"Bangladesh\",\n\t\tcode: \"880\"\n\t},\n\t{\n\t\tiso: \"BB\",\n\t\tname: \"Barbados\",\n\t\tcode: \"1246\"\n\t},\n\t{\n\t\tiso: \"BY\",\n\t\tname: \"Belarus\",\n\t\tcode: \"375\"\n\t},\n\t{\n\t\tiso: \"PW\",\n\t\tname: \"Belau\",\n\t\tcode: \"680\"\n\t},\n\t{\n\t\tiso: \"BE\",\n\t\tname: \"Belgium\",\n\t\tcode: \"32\"\n\t},\n\t{\n\t\tiso: \"BZ\",\n\t\tname: \"Belize\",\n\t\tcode: \"501\"\n\t},\n\t{\n\t\tiso: \"BJ\",\n\t\tname: \"Benin\",\n\t\tcode: \"229\"\n\t},\n\t{\n\t\tiso: \"BM\",\n\t\tname: \"Bermuda\",\n\t\tcode: \"1441\"\n\t},\n\t{\n\t\tiso: \"BT\",\n\t\tname: \"Bhutan\",\n\t\tcode: \"975\"\n\t},\n\t{\n\t\tiso: \"BO\",\n\t\tname: \"Bolivia\",\n\t\tcode: \"591\"\n\t},\n\t{\n\t\tiso: \"BQ\",\n\t\tname: \"Bonaire, Saint Eustatius and Saba\",\n\t\tcode: \"599\"\n\t},\n\t{\n\t\tiso: \"BA\",\n\t\tname: \"Bosnia and Herzegovina\",\n\t\tcode: \"387\"\n\t},\n\t{\n\t\tiso: \"BW\",\n\t\tname: \"Botswana\",\n\t\tcode: \"267\"\n\t},\n\t{\n\t\tiso: \"BV\",\n\t\tname: \"Bouvet Island\",\n\t\tcode: \"47\"\n\t},\n\t{\n\t\tiso: \"BR\",\n\t\tname: \"Brazil\",\n\t\tcode: \"55\"\n\t},\n\t{\n\t\tiso: \"IO\",\n\t\tname: \"British Indian Ocean Territory\",\n\t\tcode: \"246\"\n\t},\n\t{\n\t\tiso: \"BN\",\n\t\tname: \"Brunei\",\n\t\tcode: \"673\"\n\t},\n\t{\n\t\tiso: \"BG\",\n\t\tname: \"Bulgaria\",\n\t\tcode: \"359\"\n\t},\n\t{\n\t\tiso: \"BF\",\n\t\tname: \"Burkina Faso\",\n\t\tcode: \"226\"\n\t},\n\t{\n\t\tiso: \"BI\",\n\t\tname: \"Burundi\",\n\t\tcode: \"257\"\n\t},\n\t{\n\t\tiso: \"KH\",\n\t\tname: \"Cambodia\",\n\t\tcode: \"855\"\n\t},\n\t{\n\t\tiso: \"CM\",\n\t\tname: \"Cameroon\",\n\t\tcode: \"237\"\n\t},\n\t{\n\t\tiso: \"CA\",\n\t\tname: \"Canada\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"CV\",\n\t\tname: \"Cape Verde\",\n\t\tcode: \"238\"\n\t},\n\t{\n\t\tiso: \"KY\",\n\t\tname: \"Cayman Islands\",\n\t\tcode: \"1345\"\n\t},\n\t{\n\t\tiso: \"CF\",\n\t\tname: \"Central African Republic\",\n\t\tcode: \"236\"\n\t},\n\t{\n\t\tiso: \"TD\",\n\t\tname: \"Chad\",\n\t\tcode: \"235\"\n\t},\n\t{\n\t\tiso: \"CL\",\n\t\tname: \"Chile\",\n\t\tcode: \"56\"\n\t},\n\t{\n\t\tiso: \"CN\",\n\t\tname: \"China\",\n\t\tcode: \"86\"\n\t},\n\t{\n\t\tiso: \"CX\",\n\t\tname: \"Christmas Island\",\n\t\tcode: \"61\"\n\t},\n\t{\n\t\tiso: \"CC\",\n\t\tname: \"Cocos (Keeling) Islands\",\n\t\tcode: \"61\"\n\t},\n\t{\n\t\tiso: \"CO\",\n\t\tname: \"Colombia\",\n\t\tcode: \"57\"\n\t},\n\t{\n\t\tiso: \"KM\",\n\t\tname: \"Comoros\",\n\t\tcode: \"269\"\n\t},\n\t{\n\t\tiso: \"CG\",\n\t\tname: \"Congo (Brazzaville)\",\n\t\tcode: \"242\"\n\t},\n\t{\n\t\tiso: \"CD\",\n\t\tname: \"Congo (Kinshasa)\",\n\t\tcode: \"243\"\n\t},\n\t{\n\t\tiso: \"CK\",\n\t\tname: \"Cook Islands\",\n\t\tcode: \"682\"\n\t},\n\t{\n\t\tiso: \"CR\",\n\t\tname: \"Costa Rica\",\n\t\tcode: \"506\"\n\t},\n\t{\n\t\tiso: \"HR\",\n\t\tname: \"Croatia\",\n\t\tcode: \"385\"\n\t},\n\t{\n\t\tiso: \"CU\",\n\t\tname: \"Cuba\",\n\t\tcode: \"53\"\n\t},\n\t{\n\t\tiso: \"CW\",\n\t\tname: \"Curaçao\",\n\t\tcode: \"537\"\n\t},\n\t{\n\t\tiso: \"CY\",\n\t\tname: \"Cyprus\",\n\t\tcode: \"357\"\n\t},\n\t{\n\t\tiso: \"CZ\",\n\t\tname: \"Czech Republic\",\n\t\tcode: \"420\"\n\t},\n\t{\n\t\tiso: \"DK\",\n\t\tname: \"Denmark\",\n\t\tcode: \"45\"\n\t},\n\t{\n\t\tiso: \"DJ\",\n\t\tname: \"Djibouti\",\n\t\tcode: \"253\"\n\t},\n\t{\n\t\tiso: \"DM\",\n\t\tname: \"Dominica\",\n\t\tcode: \"1767\"\n\t},\n\t{\n\t\tiso: \"DO\",\n\t\tname: \"Dominican Republic\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"EC\",\n\t\tname: \"Ecuador\",\n\t\tcode: \"593\"\n\t},\n\t{\n\t\tiso: \"EG\",\n\t\tname: \"Egypt\",\n\t\tcode: \"20\"\n\t},\n\t{\n\t\tiso: \"SV\",\n\t\tname: \"El Salvador\",\n\t\tcode: \"503\"\n\t},\n\t{\n\t\tiso: \"GQ\",\n\t\tname: \"Equatorial Guinea\",\n\t\tcode: \"240\"\n\t},\n\t{\n\t\tiso: \"ER\",\n\t\tname: \"Eritrea\",\n\t\tcode: \"291\"\n\t},\n\t{\n\t\tiso: \"EE\",\n\t\tname: \"Estonia\",\n\t\tcode: \"372\"\n\t},\n\t{\n\t\tiso: \"SZ\",\n\t\tname: \"Eswatini\",\n\t\tcode: \"268\"\n\t},\n\t{\n\t\tiso: \"ET\",\n\t\tname: \"Ethiopia\",\n\t\tcode: \"251\"\n\t},\n\t{\n\t\tiso: \"FK\",\n\t\tname: \"Falkland Islands\",\n\t\tcode: \"500\"\n\t},\n\t{\n\t\tiso: \"FO\",\n\t\tname: \"Faroe Islands\",\n\t\tcode: \"298\"\n\t},\n\t{\n\t\tiso: \"FJ\",\n\t\tname: \"Fiji\",\n\t\tcode: \"679\"\n\t},\n\t{\n\t\tiso: \"FI\",\n\t\tname: \"Finland\",\n\t\tcode: \"358\"\n\t},\n\t{\n\t\tiso: \"FR\",\n\t\tname: \"France\",\n\t\tcode: \"33\"\n\t},\n\t{\n\t\tiso: \"GF\",\n\t\tname: \"French Guiana\",\n\t\tcode: \"594\"\n\t},\n\t{\n\t\tiso: \"PF\",\n\t\tname: \"French Polynesia\",\n\t\tcode: \"689\"\n\t},\n\t{\n\t\tiso: \"TF\",\n\t\tname: \"French Southern Territories\",\n\t\tcode: \"262\"\n\t},\n\t{\n\t\tiso: \"GA\",\n\t\tname: \"Gabon\",\n\t\tcode: \"241\"\n\t},\n\t{\n\t\tiso: \"GM\",\n\t\tname: \"Gambia\",\n\t\tcode: \"220\"\n\t},\n\t{\n\t\tiso: \"GE\",\n\t\tname: \"Georgia\",\n\t\tcode: \"995\"\n\t},\n\t{\n\t\tiso: \"DE\",\n\t\tname: \"Germany\",\n\t\tcode: \"49\"\n\t},\n\t{\n\t\tiso: \"GH\",\n\t\tname: \"Ghana\",\n\t\tcode: \"233\"\n\t},\n\t{\n\t\tiso: \"GI\",\n\t\tname: \"Gibraltar\",\n\t\tcode: \"350\"\n\t},\n\t{\n\t\tiso: \"GR\",\n\t\tname: \"Greece\",\n\t\tcode: \"30\"\n\t},\n\t{\n\t\tiso: \"GL\",\n\t\tname: \"Greenland\",\n\t\tcode: \"299\"\n\t},\n\t{\n\t\tiso: \"GD\",\n\t\tname: \"Grenada\",\n\t\tcode: \"1473\"\n\t},\n\t{\n\t\tiso: \"GP\",\n\t\tname: \"Guadeloupe\",\n\t\tcode: \"590\"\n\t},\n\t{\n\t\tiso: \"GU\",\n\t\tname: \"Guam\",\n\t\tcode: \"1671\"\n\t},\n\t{\n\t\tiso: \"GT\",\n\t\tname: \"Guatemala\",\n\t\tcode: \"502\"\n\t},\n\t{\n\t\tiso: \"GG\",\n\t\tname: \"Guernsey\",\n\t\tcode: \"44\"\n\t},\n\t{\n\t\tiso: \"GN\",\n\t\tname: \"Guinea\",\n\t\tcode: \"224\"\n\t},\n\t{\n\t\tiso: \"GW\",\n\t\tname: \"Guinea-Bissau\",\n\t\tcode: \"245\"\n\t},\n\t{\n\t\tiso: \"GY\",\n\t\tname: \"Guyana\",\n\t\tcode: \"592\"\n\t},\n\t{\n\t\tiso: \"HT\",\n\t\tname: \"Haiti\",\n\t\tcode: \"509\"\n\t},\n\t{\n\t\tiso: \"HM\",\n\t\tname: \"Heard Island and McDonald Islands\",\n\t\tcode: \"672\"\n\t},\n\t{\n\t\tiso: \"HN\",\n\t\tname: \"Honduras\",\n\t\tcode: \"504\"\n\t},\n\t{\n\t\tiso: \"HK\",\n\t\tname: \"Hong Kong\",\n\t\tcode: \"852\"\n\t},\n\t{\n\t\tiso: \"HU\",\n\t\tname: \"Hungary\",\n\t\tcode: \"36\"\n\t},\n\t{\n\t\tiso: \"IS\",\n\t\tname: \"Iceland\",\n\t\tcode: \"354\"\n\t},\n\t{\n\t\tiso: \"IN\",\n\t\tname: \"India\",\n\t\tcode: \"91\"\n\t},\n\t{\n\t\tiso: \"ID\",\n\t\tname: \"Indonesia\",\n\t\tcode: \"62\"\n\t},\n\t{\n\t\tiso: \"IR\",\n\t\tname: \"Iran\",\n\t\tcode: \"98\"\n\t},\n\t{\n\t\tiso: \"IQ\",\n\t\tname: \"Iraq\",\n\t\tcode: \"964\"\n\t},\n\t{\n\t\tiso: \"IE\",\n\t\tname: \"Ireland\",\n\t\tcode: \"353\"\n\t},\n\t{\n\t\tiso: \"IM\",\n\t\tname: \"Isle of Man\",\n\t\tcode: \"44\"\n\t},\n\t{\n\t\tiso: \"IL\",\n\t\tname: \"Israel\",\n\t\tcode: \"972\"\n\t},\n\t{\n\t\tiso: \"IT\",\n\t\tname: \"Italy\",\n\t\tcode: \"39\"\n\t},\n\t{\n\t\tiso: \"CI\",\n\t\tname: \"Ivory Coast\",\n\t\tcode: \"225\"\n\t},\n\t{\n\t\tiso: \"JM\",\n\t\tname: \"Jamaica\",\n\t\tcode: \"1876\"\n\t},\n\t{\n\t\tiso: \"JP\",\n\t\tname: \"Japan\",\n\t\tcode: \"81\"\n\t},\n\t{\n\t\tiso: \"JE\",\n\t\tname: \"Jersey\",\n\t\tcode: \"44\"\n\t},\n\t{\n\t\tiso: \"JO\",\n\t\tname: \"Jordan\",\n\t\tcode: \"962\"\n\t},\n\t{\n\t\tiso: \"KZ\",\n\t\tname: \"Kazakhstan\",\n\t\tcode: \"7\"\n\t},\n\t{\n\t\tiso: \"KE\",\n\t\tname: \"Kenya\",\n\t\tcode: \"254\"\n\t},\n\t{\n\t\tiso: \"KI\",\n\t\tname: \"Kiribati\",\n\t\tcode: \"686\"\n\t},\n\t{\n\t\tiso: \"KW\",\n\t\tname: \"Kuwait\",\n\t\tcode: \"965\"\n\t},\n\t{\n\t\tiso: \"KG\",\n\t\tname: \"Kyrgyzstan\",\n\t\tcode: \"996\"\n\t},\n\t{\n\t\tiso: \"LA\",\n\t\tname: \"Laos\",\n\t\tcode: \"856\"\n\t},\n\t{\n\t\tiso: \"LV\",\n\t\tname: \"Latvia\",\n\t\tcode: \"371\"\n\t},\n\t{\n\t\tiso: \"LB\",\n\t\tname: \"Lebanon\",\n\t\tcode: \"961\"\n\t},\n\t{\n\t\tiso: \"LS\",\n\t\tname: \"Lesotho\",\n\t\tcode: \"266\"\n\t},\n\t{\n\t\tiso: \"LR\",\n\t\tname: \"Liberia\",\n\t\tcode: \"231\"\n\t},\n\t{\n\t\tiso: \"LY\",\n\t\tname: \"Libya\",\n\t\tcode: \"218\"\n\t},\n\t{\n\t\tiso: \"LI\",\n\t\tname: \"Liechtenstein\",\n\t\tcode: \"423\"\n\t},\n\t{\n\t\tiso: \"LT\",\n\t\tname: \"Lithuania\",\n\t\tcode: \"370\"\n\t},\n\t{\n\t\tiso: \"LU\",\n\t\tname: \"Luxembourg\",\n\t\tcode: \"352\"\n\t},\n\t{\n\t\tiso: \"MO\",\n\t\tname: \"Macao\",\n\t\tcode: \"853\"\n\t},\n\t{\n\t\tiso: \"MG\",\n\t\tname: \"Madagascar\",\n\t\tcode: \"261\"\n\t},\n\t{\n\t\tiso: \"MW\",\n\t\tname: \"Malawi\",\n\t\tcode: \"265\"\n\t},\n\t{\n\t\tiso: \"MY\",\n\t\tname: \"Malaysia\",\n\t\tcode: \"60\"\n\t},\n\t{\n\t\tiso: \"MV\",\n\t\tname: \"Maldives\",\n\t\tcode: \"960\"\n\t},\n\t{\n\t\tiso: \"ML\",\n\t\tname: \"Mali\",\n\t\tcode: \"223\"\n\t},\n\t{\n\t\tiso: \"MT\",\n\t\tname: \"Malta\",\n\t\tcode: \"356\"\n\t},\n\t{\n\t\tiso: \"MH\",\n\t\tname: \"Marshall Islands\",\n\t\tcode: \"692\"\n\t},\n\t{\n\t\tiso: \"MQ\",\n\t\tname: \"Martinique\",\n\t\tcode: \"596\"\n\t},\n\t{\n\t\tiso: \"MR\",\n\t\tname: \"Mauritania\",\n\t\tcode: \"222\"\n\t},\n\t{\n\t\tiso: \"MU\",\n\t\tname: \"Mauritius\",\n\t\tcode: \"230\"\n\t},\n\t{\n\t\tiso: \"YT\",\n\t\tname: \"Mayotte\",\n\t\tcode: \"262\"\n\t},\n\t{\n\t\tiso: \"MX\",\n\t\tname: \"Mexico\",\n\t\tcode: \"52\"\n\t},\n\t{\n\t\tiso: \"FM\",\n\t\tname: \"Micronesia\",\n\t\tcode: \"691\"\n\t},\n\t{\n\t\tiso: \"MD\",\n\t\tname: \"Moldova\",\n\t\tcode: \"373\"\n\t},\n\t{\n\t\tiso: \"MC\",\n\t\tname: \"Monaco\",\n\t\tcode: \"377\"\n\t},\n\t{\n\t\tiso: \"MN\",\n\t\tname: \"Mongolia\",\n\t\tcode: \"976\"\n\t},\n\t{\n\t\tiso: \"ME\",\n\t\tname: \"Montenegro\",\n\t\tcode: \"382\"\n\t},\n\t{\n\t\tiso: \"MS\",\n\t\tname: \"Montserrat\",\n\t\tcode: \"1664\"\n\t},\n\t{\n\t\tiso: \"MA\",\n\t\tname: \"Morocco\",\n\t\tcode: \"212\"\n\t},\n\t{\n\t\tiso: \"MZ\",\n\t\tname: \"Mozambique\",\n\t\tcode: \"258\"\n\t},\n\t{\n\t\tiso: \"MM\",\n\t\tname: \"Myanmar\",\n\t\tcode: \"95\"\n\t},\n\t{\n\t\tiso: \"NA\",\n\t\tname: \"Namibia\",\n\t\tcode: \"264\"\n\t},\n\t{\n\t\tiso: \"NR\",\n\t\tname: \"Nauru\",\n\t\tcode: \"674\"\n\t},\n\t{\n\t\tiso: \"NP\",\n\t\tname: \"Nepal\",\n\t\tcode: \"977\"\n\t},\n\t{\n\t\tiso: \"NL\",\n\t\tname: \"Netherlands\",\n\t\tcode: \"31\"\n\t},\n\t{\n\t\tiso: \"NC\",\n\t\tname: \"New Caledonia\",\n\t\tcode: \"687\"\n\t},\n\t{\n\t\tiso: \"NZ\",\n\t\tname: \"New Zealand\",\n\t\tcode: \"64\"\n\t},\n\t{\n\t\tiso: \"NI\",\n\t\tname: \"Nicaragua\",\n\t\tcode: \"505\"\n\t},\n\t{\n\t\tiso: \"NE\",\n\t\tname: \"Niger\",\n\t\tcode: \"227\"\n\t},\n\t{\n\t\tiso: \"NG\",\n\t\tname: \"Nigeria\",\n\t\tcode: \"234\"\n\t},\n\t{\n\t\tiso: \"NU\",\n\t\tname: \"Niue\",\n\t\tcode: \"683\"\n\t},\n\t{\n\t\tiso: \"NF\",\n\t\tname: \"Norfolk Island\",\n\t\tcode: \"672\"\n\t},\n\t{\n\t\tiso: \"KP\",\n\t\tname: \"North Korea\",\n\t\tcode: \"850\"\n\t},\n\t{\n\t\tiso: \"MK\",\n\t\tname: \"North Macedonia\",\n\t\tcode: \"389\"\n\t},\n\t{\n\t\tiso: \"MP\",\n\t\tname: \"Northern Mariana Islands\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"NO\",\n\t\tname: \"Norway\",\n\t\tcode: \"47\"\n\t},\n\t{\n\t\tiso: \"OM\",\n\t\tname: \"Oman\",\n\t\tcode: \"968\"\n\t},\n\t{\n\t\tiso: \"PK\",\n\t\tname: \"Pakistan\",\n\t\tcode: \"92\"\n\t},\n\t{\n\t\tiso: \"PS\",\n\t\tname: \"Palestinian Territory\",\n\t\tcode: \"970\"\n\t},\n\t{\n\t\tiso: \"PA\",\n\t\tname: \"Panama\",\n\t\tcode: \"507\"\n\t},\n\t{\n\t\tiso: \"PG\",\n\t\tname: \"Papua New Guinea\",\n\t\tcode: \"675\"\n\t},\n\t{\n\t\tiso: \"PY\",\n\t\tname: \"Paraguay\",\n\t\tcode: \"595\"\n\t},\n\t{\n\t\tiso: \"PE\",\n\t\tname: \"Peru\",\n\t\tcode: \"51\"\n\t},\n\t{\n\t\tiso: \"PH\",\n\t\tname: \"Philippines\",\n\t\tcode: \"63\"\n\t},\n\t{\n\t\tiso: \"PN\",\n\t\tname: \"Pitcairn\",\n\t\tcode: \"64\"\n\t},\n\t{\n\t\tiso: \"PL\",\n\t\tname: \"Poland\",\n\t\tcode: \"48\"\n\t},\n\t{\n\t\tiso: \"PT\",\n\t\tname: \"Portugal\",\n\t\tcode: \"351\"\n\t},\n\t{\n\t\tiso: \"PR\",\n\t\tname: \"Puerto Rico\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"QA\",\n\t\tname: \"Qatar\",\n\t\tcode: \"974\"\n\t},\n\t{\n\t\tiso: \"RE\",\n\t\tname: \"Reunion\",\n\t\tcode: \"262\"\n\t},\n\t{\n\t\tiso: \"RO\",\n\t\tname: \"Romania\",\n\t\tcode: \"40\"\n\t},\n\t{\n\t\tiso: \"RU\",\n\t\tname: \"Russia\",\n\t\tcode: \"7\"\n\t},\n\t{\n\t\tiso: \"RW\",\n\t\tname: \"Rwanda\",\n\t\tcode: \"250\"\n\t},\n\t{\n\t\tiso: \"BL\",\n\t\tname: \"Saint Barthélemy\",\n\t\tcode: \"590\"\n\t},\n\t{\n\t\tiso: \"SH\",\n\t\tname: \"Saint Helena\",\n\t\tcode: \"290\"\n\t},\n\t{\n\t\tiso: \"KN\",\n\t\tname: \"Saint Kitts and Nevis\",\n\t\tcode: \"1869\"\n\t},\n\t{\n\t\tiso: \"LC\",\n\t\tname: \"Saint Lucia\",\n\t\tcode: \"1758\"\n\t},\n\t{\n\t\tiso: \"SX\",\n\t\tname: \"Sint Maarten (Dutch part)\",\n\t\tcode: \"1721\"\n\t},\n\t{\n\t\tiso: \"MF\",\n\t\tname: \"Saint Martin (French part)\",\n\t\tcode: \"590\"\n\t},\n\t{\n\t\tiso: \"PM\",\n\t\tname: \"Saint Pierre and Miquelon\",\n\t\tcode: \"508\"\n\t},\n\t{\n\t\tiso: \"VC\",\n\t\tname: \"Saint Vincent and the Grenadines\",\n\t\tcode: \"1784\"\n\t},\n\t{\n\t\tiso: \"WS\",\n\t\tname: \"Samoa\",\n\t\tcode: \"685\"\n\t},\n\t{\n\t\tiso: \"SM\",\n\t\tname: \"San Marino\",\n\t\tcode: \"378\"\n\t},\n\t{\n\t\tiso: \"ST\",\n\t\tname: \"Sao Tome and Principe\",\n\t\tcode: \"239\"\n\t},\n\t{\n\t\tiso: \"SA\",\n\t\tname: \"Saudi Arabia\",\n\t\tcode: \"966\"\n\t},\n\t{\n\t\tiso: \"SN\",\n\t\tname: \"Senegal\",\n\t\tcode: \"221\"\n\t},\n\t{\n\t\tiso: \"RS\",\n\t\tname: \"Serbia\",\n\t\tcode: \"381\"\n\t},\n\t{\n\t\tiso: \"SC\",\n\t\tname: \"Seychelles\",\n\t\tcode: \"248\"\n\t},\n\t{\n\t\tiso: \"SL\",\n\t\tname: \"Sierra Leone\",\n\t\tcode: \"232\"\n\t},\n\t{\n\t\tiso: \"SG\",\n\t\tname: \"Singapore\",\n\t\tcode: \"65\"\n\t},\n\t{\n\t\tiso: \"SK\",\n\t\tname: \"Slovakia\",\n\t\tcode: \"421\"\n\t},\n\t{\n\t\tiso: \"SI\",\n\t\tname: \"Slovenia\",\n\t\tcode: \"386\"\n\t},\n\t{\n\t\tiso: \"SB\",\n\t\tname: \"Solomon Islands\",\n\t\tcode: \"677\"\n\t},\n\t{\n\t\tiso: \"SO\",\n\t\tname: \"Somalia\",\n\t\tcode: \"252\"\n\t},\n\t{\n\t\tiso: \"ZA\",\n\t\tname: \"South Africa\",\n\t\tcode: \"27\"\n\t},\n\t{\n\t\tiso: \"GS\",\n\t\tname: \"South Georgia/Sandwich Islands\",\n\t\tcode: \"500\"\n\t},\n\t{\n\t\tiso: \"KR\",\n\t\tname: \"South Korea\",\n\t\tcode: \"82\"\n\t},\n\t{\n\t\tiso: \"SS\",\n\t\tname: \"South Sudan\",\n\t\tcode: \"211\"\n\t},\n\t{\n\t\tiso: \"ES\",\n\t\tname: \"Spain\",\n\t\tcode: \"34\"\n\t},\n\t{\n\t\tiso: \"LK\",\n\t\tname: \"Sri Lanka\",\n\t\tcode: \"94\"\n\t},\n\t{\n\t\tiso: \"SD\",\n\t\tname: \"Sudan\",\n\t\tcode: \"249\"\n\t},\n\t{\n\t\tiso: \"SR\",\n\t\tname: \"Suriname\",\n\t\tcode: \"597\"\n\t},\n\t{\n\t\tiso: \"SJ\",\n\t\tname: \"Svalbard and Jan Mayen\",\n\t\tcode: \"47\"\n\t},\n\t{\n\t\tiso: \"SE\",\n\t\tname: \"Sweden\",\n\t\tcode: \"46\"\n\t},\n\t{\n\t\tiso: \"CH\",\n\t\tname: \"Switzerland\",\n\t\tcode: \"41\"\n\t},\n\t{\n\t\tiso: \"SY\",\n\t\tname: \"Syria\",\n\t\tcode: \"963\"\n\t},\n\t{\n\t\tiso: \"TW\",\n\t\tname: \"Taiwan\",\n\t\tcode: \"886\"\n\t},\n\t{\n\t\tiso: \"TJ\",\n\t\tname: \"Tajikistan\",\n\t\tcode: \"992\"\n\t},\n\t{\n\t\tiso: \"TZ\",\n\t\tname: \"Tanzania\",\n\t\tcode: \"255\"\n\t},\n\t{\n\t\tiso: \"TH\",\n\t\tname: \"Thailand\",\n\t\tcode: \"66\"\n\t},\n\t{\n\t\tiso: \"TL\",\n\t\tname: \"Timor-Leste\",\n\t\tcode: \"670\"\n\t},\n\t{\n\t\tiso: \"TG\",\n\t\tname: \"Togo\",\n\t\tcode: \"228\"\n\t},\n\t{\n\t\tiso: \"TK\",\n\t\tname: \"Tokelau\",\n\t\tcode: \"690\"\n\t},\n\t{\n\t\tiso: \"TO\",\n\t\tname: \"Tonga\",\n\t\tcode: \"676\"\n\t},\n\t{\n\t\tiso: \"TT\",\n\t\tname: \"Trinidad and Tobago\",\n\t\tcode: \"1868\"\n\t},\n\t{\n\t\tiso: \"TN\",\n\t\tname: \"Tunisia\",\n\t\tcode: \"216\"\n\t},\n\t{\n\t\tiso: \"TR\",\n\t\tname: \"Turkey\",\n\t\tcode: \"90\"\n\t},\n\t{\n\t\tiso: \"TM\",\n\t\tname: \"Turkmenistan\",\n\t\tcode: \"993\"\n\t},\n\t{\n\t\tiso: \"TC\",\n\t\tname: \"Turks and Caicos Islands\",\n\t\tcode: \"1649\"\n\t},\n\t{\n\t\tiso: \"TV\",\n\t\tname: \"Tuvalu\",\n\t\tcode: \"688\"\n\t},\n\t{\n\t\tiso: \"UG\",\n\t\tname: \"Uganda\",\n\t\tcode: \"256\"\n\t},\n\t{\n\t\tiso: \"UA\",\n\t\tname: \"Ukraine\",\n\t\tcode: \"380\"\n\t},\n\t{\n\t\tiso: \"AE\",\n\t\tname: \"United Arab Emirates\",\n\t\tcode: \"971\"\n\t},\n\t{\n\t\tiso: \"GB\",\n\t\tname: \"United Kingdom\",\n\t\tcode: \"44\"\n\t},\n\t{\n\t\tiso: \"US\",\n\t\tname: \"United States\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"UM\",\n\t\tname: \"United States Minor Outlying Islands\",\n\t\tcode: \"1\"\n\t},\n\t{\n\t\tiso: \"UY\",\n\t\tname: \"Uruguay\",\n\t\tcode: \"598\"\n\t},\n\t{\n\t\tiso: \"UZ\",\n\t\tname: \"Uzbekistan\",\n\t\tcode: \"998\"\n\t},\n\t{\n\t\tiso: \"VU\",\n\t\tname: \"Vanuatu\",\n\t\tcode: \"678\"\n\t},\n\t{\n\t\tiso: \"VA\",\n\t\tname: \"Vatican\",\n\t\tcode: \"379\"\n\t},\n\t{\n\t\tiso: \"VE\",\n\t\tname: \"Venezuela\",\n\t\tcode: \"58\"\n\t},\n\t{\n\t\tiso: \"VN\",\n\t\tname: \"Vietnam\",\n\t\tcode: \"84\"\n\t},\n\t{\n\t\tiso: \"VG\",\n\t\tname: \"Virgin Islands (British)\",\n\t\tcode: \"1284\"\n\t},\n\t{\n\t\tiso: \"VI\",\n\t\tname: \"Virgin Islands (US)\",\n\t\tcode: \"1340\"\n\t},\n\t{\n\t\tiso: \"WF\",\n\t\tname: \"Wallis and Futuna\",\n\t\tcode: \"681\"\n\t},\n\t{\n\t\tiso: \"EH\",\n\t\tname: \"Western Sahara\",\n\t\tcode: \"212\"\n\t},\n\t{\n\t\tiso: \"YE\",\n\t\tname: \"Yemen\",\n\t\tcode: \"967\"\n\t},\n\t{\n\t\tiso: \"ZM\",\n\t\tname: \"Zambia\",\n\t\tcode: \"260\"\n\t},\n\t{\n\t\tiso: \"ZW\",\n\t\tname: \"Zimbabwe\",\n\t\tcode: \"263\"\n\t}\n];\n\n//#endregion\n//#region src/data/countries-with-states.ts\nconst COUNTRIES_WITH_PROVINCES = [\n\t{\n\t\tcode: \"AF\",\n\t\tname: \"Afghanistan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AX\",\n\t\tname: \"Åland Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AL\",\n\t\tname: \"Albania\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AL-01\",\n\t\t\t\tname: \"Berat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-09\",\n\t\t\t\tname: \"Dibër\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-02\",\n\t\t\t\tname: \"Durrës\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-03\",\n\t\t\t\tname: \"Elbasan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-04\",\n\t\t\t\tname: \"Fier\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-05\",\n\t\t\t\tname: \"Gjirokastër\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-06\",\n\t\t\t\tname: \"Korçë\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-07\",\n\t\t\t\tname: \"Kukës\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-08\",\n\t\t\t\tname: \"Lezhë\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-10\",\n\t\t\t\tname: \"Shkodër\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-11\",\n\t\t\t\tname: \"Tirana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL-12\",\n\t\t\t\tname: \"Vlorë\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"DZ\",\n\t\tname: \"Algeria\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"DZ-01\",\n\t\t\t\tname: \"Adrar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-02\",\n\t\t\t\tname: \"Chlef\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-03\",\n\t\t\t\tname: \"Laghouat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-04\",\n\t\t\t\tname: \"Oum El Bouaghi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-05\",\n\t\t\t\tname: \"Batna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-06\",\n\t\t\t\tname: \"Béjaïa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-07\",\n\t\t\t\tname: \"Biskra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-08\",\n\t\t\t\tname: \"Béchar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-09\",\n\t\t\t\tname: \"Blida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-10\",\n\t\t\t\tname: \"Bouira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-11\",\n\t\t\t\tname: \"Tamanghasset\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-12\",\n\t\t\t\tname: \"Tébessa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-13\",\n\t\t\t\tname: \"Tlemcen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-14\",\n\t\t\t\tname: \"Tiaret\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-15\",\n\t\t\t\tname: \"Tizi Ouzou\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-16\",\n\t\t\t\tname: \"Algiers\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-17\",\n\t\t\t\tname: \"Djelfa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-18\",\n\t\t\t\tname: \"Jijel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-19\",\n\t\t\t\tname: \"Sétif\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-20\",\n\t\t\t\tname: \"Saïda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-21\",\n\t\t\t\tname: \"Skikda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-22\",\n\t\t\t\tname: \"Sidi Bel Abbès\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-23\",\n\t\t\t\tname: \"Annaba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-24\",\n\t\t\t\tname: \"Guelma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-25\",\n\t\t\t\tname: \"Constantine\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-26\",\n\t\t\t\tname: \"Médéa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-27\",\n\t\t\t\tname: \"Mostaganem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-28\",\n\t\t\t\tname: \"M’Sila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-29\",\n\t\t\t\tname: \"Mascara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-30\",\n\t\t\t\tname: \"Ouargla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-31\",\n\t\t\t\tname: \"Oran\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-32\",\n\t\t\t\tname: \"El Bayadh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-33\",\n\t\t\t\tname: \"Illizi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-34\",\n\t\t\t\tname: \"Bordj Bou Arréridj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-35\",\n\t\t\t\tname: \"Boumerdès\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-36\",\n\t\t\t\tname: \"El Tarf\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-37\",\n\t\t\t\tname: \"Tindouf\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-38\",\n\t\t\t\tname: \"Tissemsilt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-39\",\n\t\t\t\tname: \"El Oued\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-40\",\n\t\t\t\tname: \"Khenchela\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-41\",\n\t\t\t\tname: \"Souk Ahras\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-42\",\n\t\t\t\tname: \"Tipasa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-43\",\n\t\t\t\tname: \"Mila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-44\",\n\t\t\t\tname: \"Aïn Defla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-45\",\n\t\t\t\tname: \"Naama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-46\",\n\t\t\t\tname: \"Aïn Témouchent\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-47\",\n\t\t\t\tname: \"Ghardaïa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DZ-48\",\n\t\t\t\tname: \"Relizane\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"AS\",\n\t\tname: \"American Samoa\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AD\",\n\t\tname: \"Andorra\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AO\",\n\t\tname: \"Angola\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BGO\",\n\t\t\t\tname: \"Bengo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BLU\",\n\t\t\t\tname: \"Benguela\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BIE\",\n\t\t\t\tname: \"Bié\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAB\",\n\t\t\t\tname: \"Cabinda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CNN\",\n\t\t\t\tname: \"Cunene\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HUA\",\n\t\t\t\tname: \"Huambo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HUI\",\n\t\t\t\tname: \"Huíla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CCU\",\n\t\t\t\tname: \"Kuando Kubango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CNO\",\n\t\t\t\tname: \"Kwanza-Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CUS\",\n\t\t\t\tname: \"Kwanza-Sul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LUA\",\n\t\t\t\tname: \"Luanda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LNO\",\n\t\t\t\tname: \"Lunda-Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LSU\",\n\t\t\t\tname: \"Lunda-Sul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MAL\",\n\t\t\t\tname: \"Malanje\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MOX\",\n\t\t\t\tname: \"Moxico\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NAM\",\n\t\t\t\tname: \"Namibe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UIG\",\n\t\t\t\tname: \"Uíge\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZAI\",\n\t\t\t\tname: \"Zaire\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"AI\",\n\t\tname: \"Anguilla\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AQ\",\n\t\tname: \"Antarctica\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AG\",\n\t\tname: \"Antigua and Barbuda\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AR\",\n\t\tname: \"Argentina\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"C\",\n\t\t\t\tname: \"Ciudad Autónoma de Buenos Aires\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"B\",\n\t\t\t\tname: \"Buenos Aires\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"K\",\n\t\t\t\tname: \"Catamarca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"H\",\n\t\t\t\tname: \"Chaco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"U\",\n\t\t\t\tname: \"Chubut\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"X\",\n\t\t\t\tname: \"Córdoba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"W\",\n\t\t\t\tname: \"Corrientes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"E\",\n\t\t\t\tname: \"Entre Ríos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"P\",\n\t\t\t\tname: \"Formosa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"Y\",\n\t\t\t\tname: \"Jujuy\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"L\",\n\t\t\t\tname: \"La Pampa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"F\",\n\t\t\t\tname: \"La Rioja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"M\",\n\t\t\t\tname: \"Mendoza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"N\",\n\t\t\t\tname: \"Misiones\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"Q\",\n\t\t\t\tname: \"Neuquén\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"R\",\n\t\t\t\tname: \"Río Negro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"A\",\n\t\t\t\tname: \"Salta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"J\",\n\t\t\t\tname: \"San Juan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"D\",\n\t\t\t\tname: \"San Luis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"Z\",\n\t\t\t\tname: \"Santa Cruz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"S\",\n\t\t\t\tname: \"Santa Fe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"G\",\n\t\t\t\tname: \"Santiago del Estero\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"V\",\n\t\t\t\tname: \"Tierra del Fuego\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"T\",\n\t\t\t\tname: \"Tucumán\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"AM\",\n\t\tname: \"Armenia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AW\",\n\t\tname: \"Aruba\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AU\",\n\t\tname: \"Australia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"ACT\",\n\t\t\t\tname: \"Australian Capital Territory\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NSW\",\n\t\t\t\tname: \"New South Wales\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NT\",\n\t\t\t\tname: \"Northern Territory\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QLD\",\n\t\t\t\tname: \"Queensland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SA\",\n\t\t\t\tname: \"South Australia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TAS\",\n\t\t\t\tname: \"Tasmania\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VIC\",\n\t\t\t\tname: \"Victoria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WA\",\n\t\t\t\tname: \"Western Australia\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"AT\",\n\t\tname: \"Austria\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"AZ\",\n\t\tname: \"Azerbaijan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BS\",\n\t\tname: \"Bahamas\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BH\",\n\t\tname: \"Bahrain\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BD\",\n\t\tname: \"Bangladesh\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BD-05\",\n\t\t\t\tname: \"Bagerhat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-01\",\n\t\t\t\tname: \"Bandarban\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-02\",\n\t\t\t\tname: \"Barguna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-06\",\n\t\t\t\tname: \"Barishal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-07\",\n\t\t\t\tname: \"Bhola\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-03\",\n\t\t\t\tname: \"Bogura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-04\",\n\t\t\t\tname: \"Brahmanbaria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-09\",\n\t\t\t\tname: \"Chandpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-10\",\n\t\t\t\tname: \"Chattogram\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-12\",\n\t\t\t\tname: \"Chuadanga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-11\",\n\t\t\t\tname: \"Cox's Bazar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-08\",\n\t\t\t\tname: \"Cumilla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-13\",\n\t\t\t\tname: \"Dhaka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-14\",\n\t\t\t\tname: \"Dinajpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-15\",\n\t\t\t\tname: \"Faridpur \"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-16\",\n\t\t\t\tname: \"Feni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-19\",\n\t\t\t\tname: \"Gaibandha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-18\",\n\t\t\t\tname: \"Gazipur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-17\",\n\t\t\t\tname: \"Gopalganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-20\",\n\t\t\t\tname: \"Habiganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-21\",\n\t\t\t\tname: \"Jamalpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-22\",\n\t\t\t\tname: \"Jashore\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-25\",\n\t\t\t\tname: \"Jhalokati\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-23\",\n\t\t\t\tname: \"Jhenaidah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-24\",\n\t\t\t\tname: \"Joypurhat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-29\",\n\t\t\t\tname: \"Khagrachhari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-27\",\n\t\t\t\tname: \"Khulna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-26\",\n\t\t\t\tname: \"Kishoreganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-28\",\n\t\t\t\tname: \"Kurigram\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-30\",\n\t\t\t\tname: \"Kushtia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-31\",\n\t\t\t\tname: \"Lakshmipur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-32\",\n\t\t\t\tname: \"Lalmonirhat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-36\",\n\t\t\t\tname: \"Madaripur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-37\",\n\t\t\t\tname: \"Magura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-33\",\n\t\t\t\tname: \"Manikganj \"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-39\",\n\t\t\t\tname: \"Meherpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-38\",\n\t\t\t\tname: \"Moulvibazar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-35\",\n\t\t\t\tname: \"Munshiganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-34\",\n\t\t\t\tname: \"Mymensingh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-48\",\n\t\t\t\tname: \"Naogaon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-43\",\n\t\t\t\tname: \"Narail\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-40\",\n\t\t\t\tname: \"Narayanganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-42\",\n\t\t\t\tname: \"Narsingdi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-44\",\n\t\t\t\tname: \"Natore\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-45\",\n\t\t\t\tname: \"Nawabganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-41\",\n\t\t\t\tname: \"Netrakona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-46\",\n\t\t\t\tname: \"Nilphamari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-47\",\n\t\t\t\tname: \"Noakhali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-49\",\n\t\t\t\tname: \"Pabna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-52\",\n\t\t\t\tname: \"Panchagarh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-51\",\n\t\t\t\tname: \"Patuakhali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-50\",\n\t\t\t\tname: \"Pirojpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-53\",\n\t\t\t\tname: \"Rajbari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-54\",\n\t\t\t\tname: \"Rajshahi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-56\",\n\t\t\t\tname: \"Rangamati\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-55\",\n\t\t\t\tname: \"Rangpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-58\",\n\t\t\t\tname: \"Satkhira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-62\",\n\t\t\t\tname: \"Shariatpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-57\",\n\t\t\t\tname: \"Sherpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-59\",\n\t\t\t\tname: \"Sirajganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-61\",\n\t\t\t\tname: \"Sunamganj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-60\",\n\t\t\t\tname: \"Sylhet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-63\",\n\t\t\t\tname: \"Tangail\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BD-64\",\n\t\t\t\tname: \"Thakurgaon\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"BB\",\n\t\tname: \"Barbados\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BY\",\n\t\tname: \"Belarus\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PW\",\n\t\tname: \"Belau\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BE\",\n\t\tname: \"Belgium\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BZ\",\n\t\tname: \"Belize\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BJ\",\n\t\tname: \"Benin\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AL\",\n\t\t\t\tname: \"Alibori\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AK\",\n\t\t\t\tname: \"Atakora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AQ\",\n\t\t\t\tname: \"Atlantique\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO\",\n\t\t\t\tname: \"Borgou\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Collines\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KO\",\n\t\t\t\tname: \"Kouffo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO\",\n\t\t\t\tname: \"Donga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LI\",\n\t\t\t\tname: \"Littoral\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Mono\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OU\",\n\t\t\t\tname: \"Ouémé\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PL\",\n\t\t\t\tname: \"Plateau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZO\",\n\t\t\t\tname: \"Zou\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"BM\",\n\t\tname: \"Bermuda\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BT\",\n\t\tname: \"Bhutan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BO\",\n\t\tname: \"Bolivia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BO-B\",\n\t\t\t\tname: \"Beni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-H\",\n\t\t\t\tname: \"Chuquisaca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-C\",\n\t\t\t\tname: \"Cochabamba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-L\",\n\t\t\t\tname: \"La Paz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-O\",\n\t\t\t\tname: \"Oruro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-N\",\n\t\t\t\tname: \"Pando\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-P\",\n\t\t\t\tname: \"Potosí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-S\",\n\t\t\t\tname: \"Santa Cruz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO-T\",\n\t\t\t\tname: \"Tarija\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"BQ\",\n\t\tname: \"Bonaire, Saint Eustatius and Saba\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BA\",\n\t\tname: \"Bosnia and Herzegovina\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BW\",\n\t\tname: \"Botswana\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BV\",\n\t\tname: \"Bouvet Island\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BR\",\n\t\tname: \"Brazil\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AC\",\n\t\t\t\tname: \"Acre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL\",\n\t\t\t\tname: \"Alagoas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AP\",\n\t\t\t\tname: \"Amapá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AM\",\n\t\t\t\tname: \"Amazonas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Bahia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CE\",\n\t\t\t\tname: \"Ceará\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DF\",\n\t\t\t\tname: \"Distrito Federal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ES\",\n\t\t\t\tname: \"Espírito Santo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GO\",\n\t\t\t\tname: \"Goiás\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MA\",\n\t\t\t\tname: \"Maranhão\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MT\",\n\t\t\t\tname: \"Mato Grosso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MS\",\n\t\t\t\tname: \"Mato Grosso do Sul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MG\",\n\t\t\t\tname: \"Minas Gerais\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA\",\n\t\t\t\tname: \"Pará\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PB\",\n\t\t\t\tname: \"Paraíba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PR\",\n\t\t\t\tname: \"Paraná\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PE\",\n\t\t\t\tname: \"Pernambuco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PI\",\n\t\t\t\tname: \"Piauí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RJ\",\n\t\t\t\tname: \"Rio de Janeiro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RN\",\n\t\t\t\tname: \"Rio Grande do Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS\",\n\t\t\t\tname: \"Rio Grande do Sul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RO\",\n\t\t\t\tname: \"Rondônia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RR\",\n\t\t\t\tname: \"Roraima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SC\",\n\t\t\t\tname: \"Santa Catarina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SP\",\n\t\t\t\tname: \"São Paulo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SE\",\n\t\t\t\tname: \"Sergipe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TO\",\n\t\t\t\tname: \"Tocantins\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"IO\",\n\t\tname: \"British Indian Ocean Territory\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BN\",\n\t\tname: \"Brunei\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BG\",\n\t\tname: \"Bulgaria\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BG-01\",\n\t\t\t\tname: \"Blagoevgrad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-02\",\n\t\t\t\tname: \"Burgas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-08\",\n\t\t\t\tname: \"Dobrich\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-07\",\n\t\t\t\tname: \"Gabrovo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-26\",\n\t\t\t\tname: \"Haskovo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-09\",\n\t\t\t\tname: \"Kardzhali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-10\",\n\t\t\t\tname: \"Kyustendil\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-11\",\n\t\t\t\tname: \"Lovech\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-12\",\n\t\t\t\tname: \"Montana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-13\",\n\t\t\t\tname: \"Pazardzhik\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-14\",\n\t\t\t\tname: \"Pernik\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-15\",\n\t\t\t\tname: \"Pleven\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-16\",\n\t\t\t\tname: \"Plovdiv\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-17\",\n\t\t\t\tname: \"Razgrad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-18\",\n\t\t\t\tname: \"Ruse\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-27\",\n\t\t\t\tname: \"Shumen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-19\",\n\t\t\t\tname: \"Silistra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-20\",\n\t\t\t\tname: \"Sliven\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-21\",\n\t\t\t\tname: \"Smolyan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-23\",\n\t\t\t\tname: \"Sofia District\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-22\",\n\t\t\t\tname: \"Sofia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-24\",\n\t\t\t\tname: \"Stara Zagora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-25\",\n\t\t\t\tname: \"Targovishte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-03\",\n\t\t\t\tname: \"Varna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-04\",\n\t\t\t\tname: \"Veliko Tarnovo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-05\",\n\t\t\t\tname: \"Vidin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-06\",\n\t\t\t\tname: \"Vratsa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG-28\",\n\t\t\t\tname: \"Yambol\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"BF\",\n\t\tname: \"Burkina Faso\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BI\",\n\t\tname: \"Burundi\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KH\",\n\t\tname: \"Cambodia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CM\",\n\t\tname: \"Cameroon\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CA\",\n\t\tname: \"Canada\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AB\",\n\t\t\t\tname: \"Alberta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BC\",\n\t\t\t\tname: \"British Columbia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MB\",\n\t\t\t\tname: \"Manitoba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NB\",\n\t\t\t\tname: \"New Brunswick\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NL\",\n\t\t\t\tname: \"Newfoundland and Labrador\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NT\",\n\t\t\t\tname: \"Northwest Territories\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NS\",\n\t\t\t\tname: \"Nova Scotia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NU\",\n\t\t\t\tname: \"Nunavut\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ON\",\n\t\t\t\tname: \"Ontario\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PE\",\n\t\t\t\tname: \"Prince Edward Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QC\",\n\t\t\t\tname: \"Quebec\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SK\",\n\t\t\t\tname: \"Saskatchewan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"YT\",\n\t\t\t\tname: \"Yukon Territory\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"CV\",\n\t\tname: \"Cape Verde\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KY\",\n\t\tname: \"Cayman Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CF\",\n\t\tname: \"Central African Republic\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TD\",\n\t\tname: \"Chad\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CL\",\n\t\tname: \"Chile\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CL-AI\",\n\t\t\t\tname: \"Aisén del General Carlos Ibañez del Campo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-AN\",\n\t\t\t\tname: \"Antofagasta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-AP\",\n\t\t\t\tname: \"Arica y Parinacota\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-AR\",\n\t\t\t\tname: \"La Araucanía\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-AT\",\n\t\t\t\tname: \"Atacama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-BI\",\n\t\t\t\tname: \"Biobío\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-CO\",\n\t\t\t\tname: \"Coquimbo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-LI\",\n\t\t\t\tname: \"Libertador General Bernardo O'Higgins\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-LL\",\n\t\t\t\tname: \"Los Lagos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-LR\",\n\t\t\t\tname: \"Los Ríos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-MA\",\n\t\t\t\tname: \"Magallanes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-ML\",\n\t\t\t\tname: \"Maule\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-NB\",\n\t\t\t\tname: \"Ñuble\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-RM\",\n\t\t\t\tname: \"Región Metropolitana de Santiago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-TA\",\n\t\t\t\tname: \"Tarapacá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL-VS\",\n\t\t\t\tname: \"Valparaíso\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"CN\",\n\t\tname: \"China\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CN1\",\n\t\t\t\tname: \"Yunnan / 云南\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN2\",\n\t\t\t\tname: \"Beijing / 北京\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN3\",\n\t\t\t\tname: \"Tianjin / 天津\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN4\",\n\t\t\t\tname: \"Hebei / 河北\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN5\",\n\t\t\t\tname: \"Shanxi / 山西\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN6\",\n\t\t\t\tname: \"Inner Mongolia / 內蒙古\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN7\",\n\t\t\t\tname: \"Liaoning / 辽宁\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN8\",\n\t\t\t\tname: \"Jilin / 吉林\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN9\",\n\t\t\t\tname: \"Heilongjiang / 黑龙江\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN10\",\n\t\t\t\tname: \"Shanghai / 上海\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN11\",\n\t\t\t\tname: \"Jiangsu / 江苏\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN12\",\n\t\t\t\tname: \"Zhejiang / 浙江\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN13\",\n\t\t\t\tname: \"Anhui / 安徽\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN14\",\n\t\t\t\tname: \"Fujian / 福建\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN15\",\n\t\t\t\tname: \"Jiangxi / 江西\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN16\",\n\t\t\t\tname: \"Shandong / 山东\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN17\",\n\t\t\t\tname: \"Henan / 河南\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN18\",\n\t\t\t\tname: \"Hubei / 湖北\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN19\",\n\t\t\t\tname: \"Hunan / 湖南\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN20\",\n\t\t\t\tname: \"Guangdong / 广东\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN21\",\n\t\t\t\tname: \"Guangxi Zhuang / 广西壮族\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN22\",\n\t\t\t\tname: \"Hainan / 海南\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN23\",\n\t\t\t\tname: \"Chongqing / 重庆\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN24\",\n\t\t\t\tname: \"Sichuan / 四川\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN25\",\n\t\t\t\tname: \"Guizhou / 贵州\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN26\",\n\t\t\t\tname: \"Shaanxi / 陕西\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN27\",\n\t\t\t\tname: \"Gansu / 甘肃\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN28\",\n\t\t\t\tname: \"Qinghai / 青海\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN29\",\n\t\t\t\tname: \"Ningxia Hui / 宁夏\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN30\",\n\t\t\t\tname: \"Macao / 澳门\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN31\",\n\t\t\t\tname: \"Tibet / 西藏\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN32\",\n\t\t\t\tname: \"Xinjiang / 新疆\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"CX\",\n\t\tname: \"Christmas Island\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CC\",\n\t\tname: \"Cocos (Keeling) Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CO\",\n\t\tname: \"Colombia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CO-AMA\",\n\t\t\t\tname: \"Amazonas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-ANT\",\n\t\t\t\tname: \"Antioquia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-ARA\",\n\t\t\t\tname: \"Arauca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-ATL\",\n\t\t\t\tname: \"Atlántico\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-BOL\",\n\t\t\t\tname: \"Bolívar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-BOY\",\n\t\t\t\tname: \"Boyacá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CAL\",\n\t\t\t\tname: \"Caldas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CAQ\",\n\t\t\t\tname: \"Caquetá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CAS\",\n\t\t\t\tname: \"Casanare\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CAU\",\n\t\t\t\tname: \"Cauca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CES\",\n\t\t\t\tname: \"Cesar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CHO\",\n\t\t\t\tname: \"Chocó\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-COR\",\n\t\t\t\tname: \"Córdoba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-CUN\",\n\t\t\t\tname: \"Cundinamarca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-DC\",\n\t\t\t\tname: \"Capital District\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-GUA\",\n\t\t\t\tname: \"Guainía\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-GUV\",\n\t\t\t\tname: \"Guaviare\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-HUI\",\n\t\t\t\tname: \"Huila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-LAG\",\n\t\t\t\tname: \"La Guajira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-MAG\",\n\t\t\t\tname: \"Magdalena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-MET\",\n\t\t\t\tname: \"Meta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-NAR\",\n\t\t\t\tname: \"Nariño\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-NSA\",\n\t\t\t\tname: \"Norte de Santander\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-PUT\",\n\t\t\t\tname: \"Putumayo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-QUI\",\n\t\t\t\tname: \"Quindío\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-RIS\",\n\t\t\t\tname: \"Risaralda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-SAN\",\n\t\t\t\tname: \"Santander\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-SAP\",\n\t\t\t\tname: \"San Andrés & Providencia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-SUC\",\n\t\t\t\tname: \"Sucre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-TOL\",\n\t\t\t\tname: \"Tolima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-VAC\",\n\t\t\t\tname: \"Valle del Cauca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-VAU\",\n\t\t\t\tname: \"Vaupés\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO-VID\",\n\t\t\t\tname: \"Vichada\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"KM\",\n\t\tname: \"Comoros\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CG\",\n\t\tname: \"Congo (Brazzaville)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CD\",\n\t\tname: \"Congo (Kinshasa)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CK\",\n\t\tname: \"Cook Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CR\",\n\t\tname: \"Costa Rica\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CR-A\",\n\t\t\t\tname: \"Alajuela\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-C\",\n\t\t\t\tname: \"Cartago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-G\",\n\t\t\t\tname: \"Guanacaste\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-H\",\n\t\t\t\tname: \"Heredia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-L\",\n\t\t\t\tname: \"Limón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-P\",\n\t\t\t\tname: \"Puntarenas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR-SJ\",\n\t\t\t\tname: \"San José\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"HR\",\n\t\tname: \"Croatia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"HR-01\",\n\t\t\t\tname: \"Zagreb County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-02\",\n\t\t\t\tname: \"Krapina-Zagorje County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-03\",\n\t\t\t\tname: \"Sisak-Moslavina County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-04\",\n\t\t\t\tname: \"Karlovac County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-05\",\n\t\t\t\tname: \"Varaždin County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-06\",\n\t\t\t\tname: \"Koprivnica-Križevci County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-07\",\n\t\t\t\tname: \"Bjelovar-Bilogora County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-08\",\n\t\t\t\tname: \"Primorje-Gorski Kotar County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-09\",\n\t\t\t\tname: \"Lika-Senj County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-10\",\n\t\t\t\tname: \"Virovitica-Podravina County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-11\",\n\t\t\t\tname: \"Požega-Slavonia County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-12\",\n\t\t\t\tname: \"Brod-Posavina County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-13\",\n\t\t\t\tname: \"Zadar County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-14\",\n\t\t\t\tname: \"Osijek-Baranja County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-15\",\n\t\t\t\tname: \"Šibenik-Knin County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-16\",\n\t\t\t\tname: \"Vukovar-Srijem County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-17\",\n\t\t\t\tname: \"Split-Dalmatia County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-18\",\n\t\t\t\tname: \"Istria County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-19\",\n\t\t\t\tname: \"Dubrovnik-Neretva County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-20\",\n\t\t\t\tname: \"Međimurje County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR-21\",\n\t\t\t\tname: \"Zagreb City\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"CU\",\n\t\tname: \"Cuba\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CW\",\n\t\tname: \"Cura&ccedil;ao\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CY\",\n\t\tname: \"Cyprus\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CZ\",\n\t\tname: \"Czech Republic\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"DK\",\n\t\tname: \"Denmark\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"DJ\",\n\t\tname: \"Djibouti\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"DM\",\n\t\tname: \"Dominica\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"DO\",\n\t\tname: \"Dominican Republic\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"DO-01\",\n\t\t\t\tname: \"Distrito Nacional\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-02\",\n\t\t\t\tname: \"Azua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-03\",\n\t\t\t\tname: \"Baoruco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-04\",\n\t\t\t\tname: \"Barahona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-33\",\n\t\t\t\tname: \"Cibao Nordeste\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-34\",\n\t\t\t\tname: \"Cibao Noroeste\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-35\",\n\t\t\t\tname: \"Cibao Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-36\",\n\t\t\t\tname: \"Cibao Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-05\",\n\t\t\t\tname: \"Dajabón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-06\",\n\t\t\t\tname: \"Duarte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-08\",\n\t\t\t\tname: \"El Seibo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-37\",\n\t\t\t\tname: \"El Valle\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-07\",\n\t\t\t\tname: \"Elías Piña\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-38\",\n\t\t\t\tname: \"Enriquillo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-09\",\n\t\t\t\tname: \"Espaillat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-30\",\n\t\t\t\tname: \"Hato Mayor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-19\",\n\t\t\t\tname: \"Hermanas Mirabal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-39\",\n\t\t\t\tname: \"Higüamo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-10\",\n\t\t\t\tname: \"Independencia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-11\",\n\t\t\t\tname: \"La Altagracia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-12\",\n\t\t\t\tname: \"La Romana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-13\",\n\t\t\t\tname: \"La Vega\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-14\",\n\t\t\t\tname: \"María Trinidad Sánchez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-28\",\n\t\t\t\tname: \"Monseñor Nouel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-15\",\n\t\t\t\tname: \"Monte Cristi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-29\",\n\t\t\t\tname: \"Monte Plata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-40\",\n\t\t\t\tname: \"Ozama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-16\",\n\t\t\t\tname: \"Pedernales\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-17\",\n\t\t\t\tname: \"Peravia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-18\",\n\t\t\t\tname: \"Puerto Plata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-20\",\n\t\t\t\tname: \"Samaná\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-21\",\n\t\t\t\tname: \"San Cristóbal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-31\",\n\t\t\t\tname: \"San José de Ocoa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-22\",\n\t\t\t\tname: \"San Juan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-23\",\n\t\t\t\tname: \"San Pedro de Macorís\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-24\",\n\t\t\t\tname: \"Sánchez Ramírez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-25\",\n\t\t\t\tname: \"Santiago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-26\",\n\t\t\t\tname: \"Santiago Rodríguez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-32\",\n\t\t\t\tname: \"Santo Domingo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-41\",\n\t\t\t\tname: \"Valdesia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-27\",\n\t\t\t\tname: \"Valverde\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DO-42\",\n\t\t\t\tname: \"Yuma\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"EC\",\n\t\tname: \"Ecuador\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"EC-A\",\n\t\t\t\tname: \"Azuay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-B\",\n\t\t\t\tname: \"Bolívar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-F\",\n\t\t\t\tname: \"Cañar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-C\",\n\t\t\t\tname: \"Carchi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-H\",\n\t\t\t\tname: \"Chimborazo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-X\",\n\t\t\t\tname: \"Cotopaxi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-O\",\n\t\t\t\tname: \"El Oro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-E\",\n\t\t\t\tname: \"Esmeraldas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-W\",\n\t\t\t\tname: \"Galápagos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-G\",\n\t\t\t\tname: \"Guayas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-I\",\n\t\t\t\tname: \"Imbabura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-L\",\n\t\t\t\tname: \"Loja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-R\",\n\t\t\t\tname: \"Los Ríos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-M\",\n\t\t\t\tname: \"Manabí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-S\",\n\t\t\t\tname: \"Morona-Santiago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-N\",\n\t\t\t\tname: \"Napo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-D\",\n\t\t\t\tname: \"Orellana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-Y\",\n\t\t\t\tname: \"Pastaza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-P\",\n\t\t\t\tname: \"Pichincha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-SE\",\n\t\t\t\tname: \"Santa Elena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-SD\",\n\t\t\t\tname: \"Santo Domingo de los Tsáchilas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-U\",\n\t\t\t\tname: \"Sucumbíos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-T\",\n\t\t\t\tname: \"Tungurahua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EC-Z\",\n\t\t\t\tname: \"Zamora-Chinchipe\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"EG\",\n\t\tname: \"Egypt\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"EGALX\",\n\t\t\t\tname: \"Alexandria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGASN\",\n\t\t\t\tname: \"Aswan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGAST\",\n\t\t\t\tname: \"Asyut\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGBA\",\n\t\t\t\tname: \"Red Sea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGBH\",\n\t\t\t\tname: \"Beheira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGBNS\",\n\t\t\t\tname: \"Beni Suef\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGC\",\n\t\t\t\tname: \"Cairo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGDK\",\n\t\t\t\tname: \"Dakahlia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGDT\",\n\t\t\t\tname: \"Damietta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGFYM\",\n\t\t\t\tname: \"Faiyum\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGGH\",\n\t\t\t\tname: \"Gharbia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGGZ\",\n\t\t\t\tname: \"Giza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGIS\",\n\t\t\t\tname: \"Ismailia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGJS\",\n\t\t\t\tname: \"South Sinai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGKB\",\n\t\t\t\tname: \"Qalyubia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGKFS\",\n\t\t\t\tname: \"Kafr el-Sheikh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGKN\",\n\t\t\t\tname: \"Qena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGLX\",\n\t\t\t\tname: \"Luxor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGMN\",\n\t\t\t\tname: \"Minya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGMNF\",\n\t\t\t\tname: \"Monufia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGMT\",\n\t\t\t\tname: \"Matrouh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGPTS\",\n\t\t\t\tname: \"Port Said\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGSHG\",\n\t\t\t\tname: \"Sohag\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGSHR\",\n\t\t\t\tname: \"Al Sharqia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGSIN\",\n\t\t\t\tname: \"North Sinai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGSUZ\",\n\t\t\t\tname: \"Suez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EGWAD\",\n\t\t\t\tname: \"New Valley\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"SV\",\n\t\tname: \"El Salvador\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"SV-AH\",\n\t\t\t\tname: \"Ahuachapán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-CA\",\n\t\t\t\tname: \"Cabañas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-CH\",\n\t\t\t\tname: \"Chalatenango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-CU\",\n\t\t\t\tname: \"Cuscatlán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-LI\",\n\t\t\t\tname: \"La Libertad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-MO\",\n\t\t\t\tname: \"Morazán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-PA\",\n\t\t\t\tname: \"La Paz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-SA\",\n\t\t\t\tname: \"Santa Ana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-SM\",\n\t\t\t\tname: \"San Miguel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-SO\",\n\t\t\t\tname: \"Sonsonate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-SS\",\n\t\t\t\tname: \"San Salvador\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-SV\",\n\t\t\t\tname: \"San Vicente\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-UN\",\n\t\t\t\tname: \"La Unión\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV-US\",\n\t\t\t\tname: \"Usulután\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GQ\",\n\t\tname: \"Equatorial Guinea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ER\",\n\t\tname: \"Eritrea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"EE\",\n\t\tname: \"Estonia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SZ\",\n\t\tname: \"Eswatini\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ET\",\n\t\tname: \"Ethiopia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"FK\",\n\t\tname: \"Falkland Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"FO\",\n\t\tname: \"Faroe Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"FJ\",\n\t\tname: \"Fiji\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"FI\",\n\t\tname: \"Finland\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"FR\",\n\t\tname: \"France\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GF\",\n\t\tname: \"French Guiana\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PF\",\n\t\tname: \"French Polynesia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TF\",\n\t\tname: \"French Southern Territories\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GA\",\n\t\tname: \"Gabon\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GM\",\n\t\tname: \"Gambia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GE\",\n\t\tname: \"Georgia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"DE\",\n\t\tname: \"Germany\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"DE-BW\",\n\t\t\t\tname: \"Baden-Württemberg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-BY\",\n\t\t\t\tname: \"Bavaria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-BE\",\n\t\t\t\tname: \"Berlin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-BB\",\n\t\t\t\tname: \"Brandenburg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-HB\",\n\t\t\t\tname: \"Bremen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-HH\",\n\t\t\t\tname: \"Hamburg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-HE\",\n\t\t\t\tname: \"Hesse\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-MV\",\n\t\t\t\tname: \"Mecklenburg-Vorpommern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-NI\",\n\t\t\t\tname: \"Lower Saxony\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-NW\",\n\t\t\t\tname: \"North Rhine-Westphalia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-RP\",\n\t\t\t\tname: \"Rhineland-Palatinate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-SL\",\n\t\t\t\tname: \"Saarland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-SN\",\n\t\t\t\tname: \"Saxony\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-ST\",\n\t\t\t\tname: \"Saxony-Anhalt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-SH\",\n\t\t\t\tname: \"Schleswig-Holstein\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE-TH\",\n\t\t\t\tname: \"Thuringia\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GH\",\n\t\tname: \"Ghana\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AF\",\n\t\t\t\tname: \"Ahafo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AH\",\n\t\t\t\tname: \"Ashanti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Brong-Ahafo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO\",\n\t\t\t\tname: \"Bono\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BE\",\n\t\t\t\tname: \"Bono East\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CP\",\n\t\t\t\tname: \"Central\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EP\",\n\t\t\t\tname: \"Eastern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AA\",\n\t\t\t\tname: \"Greater Accra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NE\",\n\t\t\t\tname: \"North East\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NP\",\n\t\t\t\tname: \"Northern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OT\",\n\t\t\t\tname: \"Oti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV\",\n\t\t\t\tname: \"Savannah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UE\",\n\t\t\t\tname: \"Upper East\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UW\",\n\t\t\t\tname: \"Upper West\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TV\",\n\t\t\t\tname: \"Volta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WP\",\n\t\t\t\tname: \"Western\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WN\",\n\t\t\t\tname: \"Western North\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GI\",\n\t\tname: \"Gibraltar\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GR\",\n\t\tname: \"Greece\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"I\",\n\t\t\t\tname: \"Attica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"A\",\n\t\t\t\tname: \"East Macedonia and Thrace\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"B\",\n\t\t\t\tname: \"Central Macedonia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"C\",\n\t\t\t\tname: \"West Macedonia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"D\",\n\t\t\t\tname: \"Epirus\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"E\",\n\t\t\t\tname: \"Thessaly\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"F\",\n\t\t\t\tname: \"Ionian Islands\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"G\",\n\t\t\t\tname: \"West Greece\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"H\",\n\t\t\t\tname: \"Central Greece\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"J\",\n\t\t\t\tname: \"Peloponnese\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"K\",\n\t\t\t\tname: \"North Aegean\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"L\",\n\t\t\t\tname: \"South Aegean\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"M\",\n\t\t\t\tname: \"Crete\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GL\",\n\t\tname: \"Greenland\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GD\",\n\t\tname: \"Grenada\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GP\",\n\t\tname: \"Guadeloupe\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GU\",\n\t\tname: \"Guam\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GT\",\n\t\tname: \"Guatemala\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"GT-AV\",\n\t\t\t\tname: \"Alta Verapaz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-BV\",\n\t\t\t\tname: \"Baja Verapaz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-CM\",\n\t\t\t\tname: \"Chimaltenango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-CQ\",\n\t\t\t\tname: \"Chiquimula\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-PR\",\n\t\t\t\tname: \"El Progreso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-ES\",\n\t\t\t\tname: \"Escuintla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-GU\",\n\t\t\t\tname: \"Guatemala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-HU\",\n\t\t\t\tname: \"Huehuetenango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-IZ\",\n\t\t\t\tname: \"Izabal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-JA\",\n\t\t\t\tname: \"Jalapa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-JU\",\n\t\t\t\tname: \"Jutiapa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-PE\",\n\t\t\t\tname: \"Petén\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-QZ\",\n\t\t\t\tname: \"Quetzaltenango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-QC\",\n\t\t\t\tname: \"Quiché\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-RE\",\n\t\t\t\tname: \"Retalhuleu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-SA\",\n\t\t\t\tname: \"Sacatepéquez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-SM\",\n\t\t\t\tname: \"San Marcos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-SR\",\n\t\t\t\tname: \"Santa Rosa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-SO\",\n\t\t\t\tname: \"Sololá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-SU\",\n\t\t\t\tname: \"Suchitepéquez\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-TO\",\n\t\t\t\tname: \"Totonicapán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT-ZA\",\n\t\t\t\tname: \"Zacapa\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GG\",\n\t\tname: \"Guernsey\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GN\",\n\t\tname: \"Guinea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GW\",\n\t\tname: \"Guinea-Bissau\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GY\",\n\t\tname: \"Guyana\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"HT\",\n\t\tname: \"Haiti\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"HM\",\n\t\tname: \"Heard Island and McDonald Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"HN\",\n\t\tname: \"Honduras\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"HN-AT\",\n\t\t\t\tname: \"Atlántida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-IB\",\n\t\t\t\tname: \"Bay Islands\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-CH\",\n\t\t\t\tname: \"Choluteca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-CL\",\n\t\t\t\tname: \"Colón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-CM\",\n\t\t\t\tname: \"Comayagua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-CP\",\n\t\t\t\tname: \"Copán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-CR\",\n\t\t\t\tname: \"Cortés\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-EP\",\n\t\t\t\tname: \"El Paraíso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-FM\",\n\t\t\t\tname: \"Francisco Morazán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-GD\",\n\t\t\t\tname: \"Gracias a Dios\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-IN\",\n\t\t\t\tname: \"Intibucá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-LE\",\n\t\t\t\tname: \"Lempira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-LP\",\n\t\t\t\tname: \"La Paz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-OC\",\n\t\t\t\tname: \"Ocotepeque\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-OL\",\n\t\t\t\tname: \"Olancho\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-SB\",\n\t\t\t\tname: \"Santa Bárbara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-VA\",\n\t\t\t\tname: \"Valle\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN-YO\",\n\t\t\t\tname: \"Yoro\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"HK\",\n\t\tname: \"Hong Kong\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"HONG KONG\",\n\t\t\t\tname: \"Hong Kong Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KOWLOON\",\n\t\t\t\tname: \"Kowloon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NEW TERRITORIES\",\n\t\t\t\tname: \"New Territories\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"HU\",\n\t\tname: \"Hungary\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BK\",\n\t\t\t\tname: \"Bács-Kiskun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BE\",\n\t\t\t\tname: \"Békés\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Baranya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BZ\",\n\t\t\t\tname: \"Borsod-Abaúj-Zemplén\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BU\",\n\t\t\t\tname: \"Budapest\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Csongrád-Csanád\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FE\",\n\t\t\t\tname: \"Fejér\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GS\",\n\t\t\t\tname: \"Győr-Moson-Sopron\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HB\",\n\t\t\t\tname: \"Hajdú-Bihar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HE\",\n\t\t\t\tname: \"Heves\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JN\",\n\t\t\t\tname: \"Jász-Nagykun-Szolnok\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE\",\n\t\t\t\tname: \"Komárom-Esztergom\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NO\",\n\t\t\t\tname: \"Nógrád\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PE\",\n\t\t\t\tname: \"Pest\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Somogy\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SZ\",\n\t\t\t\tname: \"Szabolcs-Szatmár-Bereg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TO\",\n\t\t\t\tname: \"Tolna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VA\",\n\t\t\t\tname: \"Vas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE\",\n\t\t\t\tname: \"Veszprém\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZA\",\n\t\t\t\tname: \"Zala\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"IS\",\n\t\tname: \"Iceland\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"IN\",\n\t\tname: \"India\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AP\",\n\t\t\t\tname: \"Andhra Pradesh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AR\",\n\t\t\t\tname: \"Arunachal Pradesh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AS\",\n\t\t\t\tname: \"Assam\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BR\",\n\t\t\t\tname: \"Bihar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CT\",\n\t\t\t\tname: \"Chhattisgarh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GA\",\n\t\t\t\tname: \"Goa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GJ\",\n\t\t\t\tname: \"Gujarat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR\",\n\t\t\t\tname: \"Haryana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HP\",\n\t\t\t\tname: \"Himachal Pradesh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JK\",\n\t\t\t\tname: \"Jammu and Kashmir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JH\",\n\t\t\t\tname: \"Jharkhand\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KA\",\n\t\t\t\tname: \"Karnataka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KL\",\n\t\t\t\tname: \"Kerala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LA\",\n\t\t\t\tname: \"Ladakh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MP\",\n\t\t\t\tname: \"Madhya Pradesh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MH\",\n\t\t\t\tname: \"Maharashtra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MN\",\n\t\t\t\tname: \"Manipur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ML\",\n\t\t\t\tname: \"Meghalaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZ\",\n\t\t\t\tname: \"Mizoram\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NL\",\n\t\t\t\tname: \"Nagaland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OD\",\n\t\t\t\tname: \"Odisha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PB\",\n\t\t\t\tname: \"Punjab\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RJ\",\n\t\t\t\tname: \"Rajasthan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SK\",\n\t\t\t\tname: \"Sikkim\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TN\",\n\t\t\t\tname: \"Tamil Nadu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TS\",\n\t\t\t\tname: \"Telangana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR\",\n\t\t\t\tname: \"Tripura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UK\",\n\t\t\t\tname: \"Uttarakhand\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UP\",\n\t\t\t\tname: \"Uttar Pradesh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WB\",\n\t\t\t\tname: \"West Bengal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AN\",\n\t\t\t\tname: \"Andaman and Nicobar Islands\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CH\",\n\t\t\t\tname: \"Chandigarh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DN\",\n\t\t\t\tname: \"Dadra and Nagar Haveli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DD\",\n\t\t\t\tname: \"Daman and Diu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DL\",\n\t\t\t\tname: \"Delhi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LD\",\n\t\t\t\tname: \"Lakshadeep\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY\",\n\t\t\t\tname: \"Pondicherry (Puducherry)\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"ID\",\n\t\tname: \"Indonesia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AC\",\n\t\t\t\tname: \"Daerah Istimewa Aceh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SU\",\n\t\t\t\tname: \"Sumatera Utara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SB\",\n\t\t\t\tname: \"Sumatera Barat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RI\",\n\t\t\t\tname: \"Riau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KR\",\n\t\t\t\tname: \"Kepulauan Riau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JA\",\n\t\t\t\tname: \"Jambi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SS\",\n\t\t\t\tname: \"Sumatera Selatan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BB\",\n\t\t\t\tname: \"Bangka Belitung\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BE\",\n\t\t\t\tname: \"Bengkulu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LA\",\n\t\t\t\tname: \"Lampung\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JK\",\n\t\t\t\tname: \"DKI Jakarta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JB\",\n\t\t\t\tname: \"Jawa Barat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BT\",\n\t\t\t\tname: \"Banten\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JT\",\n\t\t\t\tname: \"Jawa Tengah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JI\",\n\t\t\t\tname: \"Jawa Timur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"YO\",\n\t\t\t\tname: \"Daerah Istimewa Yogyakarta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Bali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NB\",\n\t\t\t\tname: \"Nusa Tenggara Barat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NT\",\n\t\t\t\tname: \"Nusa Tenggara Timur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KB\",\n\t\t\t\tname: \"Kalimantan Barat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KT\",\n\t\t\t\tname: \"Kalimantan Tengah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KI\",\n\t\t\t\tname: \"Kalimantan Timur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KS\",\n\t\t\t\tname: \"Kalimantan Selatan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KU\",\n\t\t\t\tname: \"Kalimantan Utara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SA\",\n\t\t\t\tname: \"Sulawesi Utara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ST\",\n\t\t\t\tname: \"Sulawesi Tengah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SG\",\n\t\t\t\tname: \"Sulawesi Tenggara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SR\",\n\t\t\t\tname: \"Sulawesi Barat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SN\",\n\t\t\t\tname: \"Sulawesi Selatan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GO\",\n\t\t\t\tname: \"Gorontalo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MA\",\n\t\t\t\tname: \"Maluku\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MU\",\n\t\t\t\tname: \"Maluku Utara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA\",\n\t\t\t\tname: \"Papua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PB\",\n\t\t\t\tname: \"Papua Barat\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"IR\",\n\t\tname: \"Iran\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"KHZ\",\n\t\t\t\tname: \"Khuzestan (خوزستان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"THR\",\n\t\t\t\tname: \"Tehran (تهران)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ILM\",\n\t\t\t\tname: \"Ilaam (ایلام)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BHR\",\n\t\t\t\tname: \"Bushehr (بوشهر)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ADL\",\n\t\t\t\tname: \"Ardabil (اردبیل)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ESF\",\n\t\t\t\tname: \"Isfahan (اصفهان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"YZD\",\n\t\t\t\tname: \"Yazd (یزد)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KRH\",\n\t\t\t\tname: \"Kermanshah (کرمانشاه)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KRN\",\n\t\t\t\tname: \"Kerman (کرمان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HDN\",\n\t\t\t\tname: \"Hamadan (همدان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GZN\",\n\t\t\t\tname: \"Ghazvin (قزوین)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZJN\",\n\t\t\t\tname: \"Zanjan (زنجان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LRS\",\n\t\t\t\tname: \"Luristan (لرستان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ABZ\",\n\t\t\t\tname: \"Alborz (البرز)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EAZ\",\n\t\t\t\tname: \"East Azarbaijan (آذربایجان شرقی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WAZ\",\n\t\t\t\tname: \"West Azarbaijan (آذربایجان غربی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CHB\",\n\t\t\t\tname: \"Chaharmahal and Bakhtiari (چهارمحال و بختیاری)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SKH\",\n\t\t\t\tname: \"South Khorasan (خراسان جنوبی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RKH\",\n\t\t\t\tname: \"Razavi Khorasan (خراسان رضوی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NKH\",\n\t\t\t\tname: \"North Khorasan (خراسان شمالی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SMN\",\n\t\t\t\tname: \"Semnan (سمنان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FRS\",\n\t\t\t\tname: \"Fars (فارس)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QHM\",\n\t\t\t\tname: \"Qom (قم)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KRD\",\n\t\t\t\tname: \"Kurdistan / کردستان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KBD\",\n\t\t\t\tname: \"Kohgiluyeh and BoyerAhmad (کهگیلوییه و بویراحمد)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GLS\",\n\t\t\t\tname: \"Golestan (گلستان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GIL\",\n\t\t\t\tname: \"Gilan (گیلان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZN\",\n\t\t\t\tname: \"Mazandaran (مازندران)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MKZ\",\n\t\t\t\tname: \"Markazi (مرکزی)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HRZ\",\n\t\t\t\tname: \"Hormozgan (هرمزگان)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SBN\",\n\t\t\t\tname: \"Sistan and Baluchestan (سیستان و بلوچستان)\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"IQ\",\n\t\tname: \"Iraq\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"IE\",\n\t\tname: \"Ireland\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CW\",\n\t\t\t\tname: \"Carlow\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN\",\n\t\t\t\tname: \"Cavan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CE\",\n\t\t\t\tname: \"Clare\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Cork\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DL\",\n\t\t\t\tname: \"Donegal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"D\",\n\t\t\t\tname: \"Dublin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"G\",\n\t\t\t\tname: \"Galway\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KY\",\n\t\t\t\tname: \"Kerry\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE\",\n\t\t\t\tname: \"Kildare\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KK\",\n\t\t\t\tname: \"Kilkenny\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LS\",\n\t\t\t\tname: \"Laois\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LM\",\n\t\t\t\tname: \"Leitrim\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LK\",\n\t\t\t\tname: \"Limerick\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LD\",\n\t\t\t\tname: \"Longford\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LH\",\n\t\t\t\tname: \"Louth\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Mayo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MH\",\n\t\t\t\tname: \"Meath\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MN\",\n\t\t\t\tname: \"Monaghan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OY\",\n\t\t\t\tname: \"Offaly\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RN\",\n\t\t\t\tname: \"Roscommon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Sligo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TA\",\n\t\t\t\tname: \"Tipperary\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WD\",\n\t\t\t\tname: \"Waterford\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WH\",\n\t\t\t\tname: \"Westmeath\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WX\",\n\t\t\t\tname: \"Wexford\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WW\",\n\t\t\t\tname: \"Wicklow\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"IM\",\n\t\tname: \"Isle of Man\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"IL\",\n\t\tname: \"Israel\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"IT\",\n\t\tname: \"Italy\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AG\",\n\t\t\t\tname: \"Agrigento\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL\",\n\t\t\t\tname: \"Alessandria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AN\",\n\t\t\t\tname: \"Ancona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AO\",\n\t\t\t\tname: \"Aosta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AR\",\n\t\t\t\tname: \"Arezzo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AP\",\n\t\t\t\tname: \"Ascoli Piceno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AT\",\n\t\t\t\tname: \"Asti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AV\",\n\t\t\t\tname: \"Avellino\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Bari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BT\",\n\t\t\t\tname: \"Barletta-Andria-Trani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BL\",\n\t\t\t\tname: \"Belluno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BN\",\n\t\t\t\tname: \"Benevento\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BG\",\n\t\t\t\tname: \"Bergamo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BI\",\n\t\t\t\tname: \"Biella\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO\",\n\t\t\t\tname: \"Bologna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BZ\",\n\t\t\t\tname: \"Bolzano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BS\",\n\t\t\t\tname: \"Brescia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BR\",\n\t\t\t\tname: \"Brindisi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CA\",\n\t\t\t\tname: \"Cagliari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL\",\n\t\t\t\tname: \"Caltanissetta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CB\",\n\t\t\t\tname: \"Campobasso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CE\",\n\t\t\t\tname: \"Caserta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CT\",\n\t\t\t\tname: \"Catania\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CZ\",\n\t\t\t\tname: \"Catanzaro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CH\",\n\t\t\t\tname: \"Chieti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Como\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Cosenza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR\",\n\t\t\t\tname: \"Cremona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KR\",\n\t\t\t\tname: \"Crotone\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CN\",\n\t\t\t\tname: \"Cuneo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EN\",\n\t\t\t\tname: \"Enna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FM\",\n\t\t\t\tname: \"Fermo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FE\",\n\t\t\t\tname: \"Ferrara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FI\",\n\t\t\t\tname: \"Firenze\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FG\",\n\t\t\t\tname: \"Foggia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FC\",\n\t\t\t\tname: \"Forlì-Cesena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FR\",\n\t\t\t\tname: \"Frosinone\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GE\",\n\t\t\t\tname: \"Genova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GO\",\n\t\t\t\tname: \"Gorizia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GR\",\n\t\t\t\tname: \"Grosseto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IM\",\n\t\t\t\tname: \"Imperia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IS\",\n\t\t\t\tname: \"Isernia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SP\",\n\t\t\t\tname: \"La Spezia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AQ\",\n\t\t\t\tname: \"L'Aquila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LT\",\n\t\t\t\tname: \"Latina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LE\",\n\t\t\t\tname: \"Lecce\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LC\",\n\t\t\t\tname: \"Lecco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LI\",\n\t\t\t\tname: \"Livorno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LO\",\n\t\t\t\tname: \"Lodi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LU\",\n\t\t\t\tname: \"Lucca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MC\",\n\t\t\t\tname: \"Macerata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MN\",\n\t\t\t\tname: \"Mantova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MS\",\n\t\t\t\tname: \"Massa-Carrara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MT\",\n\t\t\t\tname: \"Matera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ME\",\n\t\t\t\tname: \"Messina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MI\",\n\t\t\t\tname: \"Milano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Modena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MB\",\n\t\t\t\tname: \"Monza e della Brianza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NA\",\n\t\t\t\tname: \"Napoli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NO\",\n\t\t\t\tname: \"Novara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NU\",\n\t\t\t\tname: \"Nuoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OR\",\n\t\t\t\tname: \"Oristano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PD\",\n\t\t\t\tname: \"Padova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA\",\n\t\t\t\tname: \"Palermo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PR\",\n\t\t\t\tname: \"Parma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PV\",\n\t\t\t\tname: \"Pavia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PG\",\n\t\t\t\tname: \"Perugia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PU\",\n\t\t\t\tname: \"Pesaro e Urbino\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PE\",\n\t\t\t\tname: \"Pescara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PC\",\n\t\t\t\tname: \"Piacenza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PI\",\n\t\t\t\tname: \"Pisa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PT\",\n\t\t\t\tname: \"Pistoia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PN\",\n\t\t\t\tname: \"Pordenone\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PZ\",\n\t\t\t\tname: \"Potenza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PO\",\n\t\t\t\tname: \"Prato\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RG\",\n\t\t\t\tname: \"Ragusa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RA\",\n\t\t\t\tname: \"Ravenna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RC\",\n\t\t\t\tname: \"Reggio Calabria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RE\",\n\t\t\t\tname: \"Reggio Emilia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RI\",\n\t\t\t\tname: \"Rieti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RN\",\n\t\t\t\tname: \"Rimini\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RM\",\n\t\t\t\tname: \"Roma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RO\",\n\t\t\t\tname: \"Rovigo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SA\",\n\t\t\t\tname: \"Salerno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SS\",\n\t\t\t\tname: \"Sassari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV\",\n\t\t\t\tname: \"Savona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SI\",\n\t\t\t\tname: \"Siena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SR\",\n\t\t\t\tname: \"Siracusa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Sondrio\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SU\",\n\t\t\t\tname: \"Sud Sardegna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TA\",\n\t\t\t\tname: \"Taranto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TE\",\n\t\t\t\tname: \"Teramo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR\",\n\t\t\t\tname: \"Terni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TO\",\n\t\t\t\tname: \"Torino\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TP\",\n\t\t\t\tname: \"Trapani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TN\",\n\t\t\t\tname: \"Trento\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TV\",\n\t\t\t\tname: \"Treviso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TS\",\n\t\t\t\tname: \"Trieste\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UD\",\n\t\t\t\tname: \"Udine\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VA\",\n\t\t\t\tname: \"Varese\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE\",\n\t\t\t\tname: \"Venezia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VB\",\n\t\t\t\tname: \"Verbano-Cusio-Ossola\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VC\",\n\t\t\t\tname: \"Vercelli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VR\",\n\t\t\t\tname: \"Verona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VV\",\n\t\t\t\tname: \"Vibo Valentia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VI\",\n\t\t\t\tname: \"Vicenza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VT\",\n\t\t\t\tname: \"Viterbo\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"CI\",\n\t\tname: \"Ivory Coast\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"JM\",\n\t\tname: \"Jamaica\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"JM-01\",\n\t\t\t\tname: \"Kingston\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-02\",\n\t\t\t\tname: \"Saint Andrew\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-03\",\n\t\t\t\tname: \"Saint Thomas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-04\",\n\t\t\t\tname: \"Portland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-05\",\n\t\t\t\tname: \"Saint Mary\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-06\",\n\t\t\t\tname: \"Saint Ann\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-07\",\n\t\t\t\tname: \"Trelawny\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-08\",\n\t\t\t\tname: \"Saint James\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-09\",\n\t\t\t\tname: \"Hanover\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-10\",\n\t\t\t\tname: \"Westmoreland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-11\",\n\t\t\t\tname: \"Saint Elizabeth\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-12\",\n\t\t\t\tname: \"Manchester\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-13\",\n\t\t\t\tname: \"Clarendon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JM-14\",\n\t\t\t\tname: \"Saint Catherine\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"JP\",\n\t\tname: \"Japan\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"JP01\",\n\t\t\t\tname: \"Hokkaido\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP02\",\n\t\t\t\tname: \"Aomori\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP03\",\n\t\t\t\tname: \"Iwate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP04\",\n\t\t\t\tname: \"Miyagi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP05\",\n\t\t\t\tname: \"Akita\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP06\",\n\t\t\t\tname: \"Yamagata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP07\",\n\t\t\t\tname: \"Fukushima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP08\",\n\t\t\t\tname: \"Ibaraki\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP09\",\n\t\t\t\tname: \"Tochigi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP10\",\n\t\t\t\tname: \"Gunma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP11\",\n\t\t\t\tname: \"Saitama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP12\",\n\t\t\t\tname: \"Chiba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP13\",\n\t\t\t\tname: \"Tokyo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP14\",\n\t\t\t\tname: \"Kanagawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP15\",\n\t\t\t\tname: \"Niigata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP16\",\n\t\t\t\tname: \"Toyama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP17\",\n\t\t\t\tname: \"Ishikawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP18\",\n\t\t\t\tname: \"Fukui\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP19\",\n\t\t\t\tname: \"Yamanashi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP20\",\n\t\t\t\tname: \"Nagano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP21\",\n\t\t\t\tname: \"Gifu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP22\",\n\t\t\t\tname: \"Shizuoka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP23\",\n\t\t\t\tname: \"Aichi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP24\",\n\t\t\t\tname: \"Mie\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP25\",\n\t\t\t\tname: \"Shiga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP26\",\n\t\t\t\tname: \"Kyoto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP27\",\n\t\t\t\tname: \"Osaka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP28\",\n\t\t\t\tname: \"Hyogo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP29\",\n\t\t\t\tname: \"Nara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP30\",\n\t\t\t\tname: \"Wakayama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP31\",\n\t\t\t\tname: \"Tottori\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP32\",\n\t\t\t\tname: \"Shimane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP33\",\n\t\t\t\tname: \"Okayama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP34\",\n\t\t\t\tname: \"Hiroshima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP35\",\n\t\t\t\tname: \"Yamaguchi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP36\",\n\t\t\t\tname: \"Tokushima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP37\",\n\t\t\t\tname: \"Kagawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP38\",\n\t\t\t\tname: \"Ehime\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP39\",\n\t\t\t\tname: \"Kochi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP40\",\n\t\t\t\tname: \"Fukuoka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP41\",\n\t\t\t\tname: \"Saga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP42\",\n\t\t\t\tname: \"Nagasaki\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP43\",\n\t\t\t\tname: \"Kumamoto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP44\",\n\t\t\t\tname: \"Oita\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP45\",\n\t\t\t\tname: \"Miyazaki\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP46\",\n\t\t\t\tname: \"Kagoshima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JP47\",\n\t\t\t\tname: \"Okinawa\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"JE\",\n\t\tname: \"Jersey\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"JO\",\n\t\tname: \"Jordan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KZ\",\n\t\tname: \"Kazakhstan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KE\",\n\t\tname: \"Kenya\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"KE01\",\n\t\t\t\tname: \"Baringo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE02\",\n\t\t\t\tname: \"Bomet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE03\",\n\t\t\t\tname: \"Bungoma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE04\",\n\t\t\t\tname: \"Busia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE05\",\n\t\t\t\tname: \"Elgeyo-Marakwet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE06\",\n\t\t\t\tname: \"Embu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE07\",\n\t\t\t\tname: \"Garissa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE08\",\n\t\t\t\tname: \"Homa Bay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE09\",\n\t\t\t\tname: \"Isiolo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE10\",\n\t\t\t\tname: \"Kajiado\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE11\",\n\t\t\t\tname: \"Kakamega\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE12\",\n\t\t\t\tname: \"Kericho\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE13\",\n\t\t\t\tname: \"Kiambu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE14\",\n\t\t\t\tname: \"Kilifi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE15\",\n\t\t\t\tname: \"Kirinyaga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE16\",\n\t\t\t\tname: \"Kisii\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE17\",\n\t\t\t\tname: \"Kisumu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE18\",\n\t\t\t\tname: \"Kitui\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE19\",\n\t\t\t\tname: \"Kwale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE20\",\n\t\t\t\tname: \"Laikipia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE21\",\n\t\t\t\tname: \"Lamu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE22\",\n\t\t\t\tname: \"Machakos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE23\",\n\t\t\t\tname: \"Makueni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE24\",\n\t\t\t\tname: \"Mandera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE25\",\n\t\t\t\tname: \"Marsabit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE26\",\n\t\t\t\tname: \"Meru\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE27\",\n\t\t\t\tname: \"Migori\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE28\",\n\t\t\t\tname: \"Mombasa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE29\",\n\t\t\t\tname: \"Murang’a\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE30\",\n\t\t\t\tname: \"Nairobi County\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE31\",\n\t\t\t\tname: \"Nakuru\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE32\",\n\t\t\t\tname: \"Nandi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE33\",\n\t\t\t\tname: \"Narok\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE34\",\n\t\t\t\tname: \"Nyamira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE35\",\n\t\t\t\tname: \"Nyandarua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE36\",\n\t\t\t\tname: \"Nyeri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE37\",\n\t\t\t\tname: \"Samburu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE38\",\n\t\t\t\tname: \"Siaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE39\",\n\t\t\t\tname: \"Taita-Taveta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE40\",\n\t\t\t\tname: \"Tana River\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE41\",\n\t\t\t\tname: \"Tharaka-Nithi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE42\",\n\t\t\t\tname: \"Trans Nzoia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE43\",\n\t\t\t\tname: \"Turkana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE44\",\n\t\t\t\tname: \"Uasin Gishu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE45\",\n\t\t\t\tname: \"Vihiga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE46\",\n\t\t\t\tname: \"Wajir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE47\",\n\t\t\t\tname: \"West Pokot\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"KI\",\n\t\tname: \"Kiribati\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KW\",\n\t\tname: \"Kuwait\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KG\",\n\t\tname: \"Kyrgyzstan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LA\",\n\t\tname: \"Laos\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AT\",\n\t\t\t\tname: \"Attapeu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BK\",\n\t\t\t\tname: \"Bokeo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BL\",\n\t\t\t\tname: \"Bolikhamsai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CH\",\n\t\t\t\tname: \"Champasak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HO\",\n\t\t\t\tname: \"Houaphanh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KH\",\n\t\t\t\tname: \"Khammouane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LM\",\n\t\t\t\tname: \"Luang Namtha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LP\",\n\t\t\t\tname: \"Luang Prabang\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OU\",\n\t\t\t\tname: \"Oudomxay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PH\",\n\t\t\t\tname: \"Phongsaly\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SL\",\n\t\t\t\tname: \"Salavan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV\",\n\t\t\t\tname: \"Savannakhet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VI\",\n\t\t\t\tname: \"Vientiane Province\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VT\",\n\t\t\t\tname: \"Vientiane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"XA\",\n\t\t\t\tname: \"Sainyabuli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"XE\",\n\t\t\t\tname: \"Sekong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"XI\",\n\t\t\t\tname: \"Xiangkhouang\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"XS\",\n\t\t\t\tname: \"Xaisomboun\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"LV\",\n\t\tname: \"Latvia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LB\",\n\t\tname: \"Lebanon\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LS\",\n\t\tname: \"Lesotho\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LR\",\n\t\tname: \"Liberia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BM\",\n\t\t\t\tname: \"Bomi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BN\",\n\t\t\t\tname: \"Bong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GA\",\n\t\t\t\tname: \"Gbarpolu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GB\",\n\t\t\t\tname: \"Grand Bassa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GC\",\n\t\t\t\tname: \"Grand Cape Mount\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GG\",\n\t\t\t\tname: \"Grand Gedeh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GK\",\n\t\t\t\tname: \"Grand Kru\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LO\",\n\t\t\t\tname: \"Lofa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MA\",\n\t\t\t\tname: \"Margibi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MY\",\n\t\t\t\tname: \"Maryland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Montserrado\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NM\",\n\t\t\t\tname: \"Nimba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RV\",\n\t\t\t\tname: \"Rivercess\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RG\",\n\t\t\t\tname: \"River Gee\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SN\",\n\t\t\t\tname: \"Sinoe\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"LY\",\n\t\tname: \"Libya\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LI\",\n\t\tname: \"Liechtenstein\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LT\",\n\t\tname: \"Lithuania\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"LU\",\n\t\tname: \"Luxembourg\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MO\",\n\t\tname: \"Macao\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MG\",\n\t\tname: \"Madagascar\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MW\",\n\t\tname: \"Malawi\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MY\",\n\t\tname: \"Malaysia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"JHR\",\n\t\t\t\tname: \"Johor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KDH\",\n\t\t\t\tname: \"Kedah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KTN\",\n\t\t\t\tname: \"Kelantan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LBN\",\n\t\t\t\tname: \"Labuan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MLK\",\n\t\t\t\tname: \"Malacca (Melaka)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NSN\",\n\t\t\t\tname: \"Negeri Sembilan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PHG\",\n\t\t\t\tname: \"Pahang\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PNG\",\n\t\t\t\tname: \"Penang (Pulau Pinang)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PRK\",\n\t\t\t\tname: \"Perak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PLS\",\n\t\t\t\tname: \"Perlis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SBH\",\n\t\t\t\tname: \"Sabah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SWK\",\n\t\t\t\tname: \"Sarawak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SGR\",\n\t\t\t\tname: \"Selangor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TRG\",\n\t\t\t\tname: \"Terengganu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PJY\",\n\t\t\t\tname: \"Putrajaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KUL\",\n\t\t\t\tname: \"Kuala Lumpur\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"MV\",\n\t\tname: \"Maldives\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ML\",\n\t\tname: \"Mali\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MT\",\n\t\tname: \"Malta\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MH\",\n\t\tname: \"Marshall Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MQ\",\n\t\tname: \"Martinique\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MR\",\n\t\tname: \"Mauritania\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MU\",\n\t\tname: \"Mauritius\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"YT\",\n\t\tname: \"Mayotte\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MX\",\n\t\tname: \"Mexico\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"DF\",\n\t\t\t\tname: \"Ciudad de México\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JA\",\n\t\t\t\tname: \"Jalisco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NL\",\n\t\t\t\tname: \"Nuevo León\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AG\",\n\t\t\t\tname: \"Aguascalientes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BC\",\n\t\t\t\tname: \"Baja California\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BS\",\n\t\t\t\tname: \"Baja California Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CM\",\n\t\t\t\tname: \"Campeche\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Chiapas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CH\",\n\t\t\t\tname: \"Chihuahua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Coahuila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL\",\n\t\t\t\tname: \"Colima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DG\",\n\t\t\t\tname: \"Durango\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GT\",\n\t\t\t\tname: \"Guanajuato\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GR\",\n\t\t\t\tname: \"Guerrero\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HG\",\n\t\t\t\tname: \"Hidalgo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MX\",\n\t\t\t\tname: \"Estado de México\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MI\",\n\t\t\t\tname: \"Michoacán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Morelos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NA\",\n\t\t\t\tname: \"Nayarit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OA\",\n\t\t\t\tname: \"Oaxaca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PU\",\n\t\t\t\tname: \"Puebla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QT\",\n\t\t\t\tname: \"Querétaro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QR\",\n\t\t\t\tname: \"Quintana Roo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SL\",\n\t\t\t\tname: \"San Luis Potosí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SI\",\n\t\t\t\tname: \"Sinaloa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Sonora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TB\",\n\t\t\t\tname: \"Tabasco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TM\",\n\t\t\t\tname: \"Tamaulipas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TL\",\n\t\t\t\tname: \"Tlaxcala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE\",\n\t\t\t\tname: \"Veracruz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"YU\",\n\t\t\t\tname: \"Yucatán\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZA\",\n\t\t\t\tname: \"Zacatecas\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"FM\",\n\t\tname: \"Micronesia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MD\",\n\t\tname: \"Moldova\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"C\",\n\t\t\t\tname: \"Chișinău\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BL\",\n\t\t\t\tname: \"Bălți\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AN\",\n\t\t\t\tname: \"Anenii Noi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BS\",\n\t\t\t\tname: \"Basarabeasca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BR\",\n\t\t\t\tname: \"Briceni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CH\",\n\t\t\t\tname: \"Cahul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CT\",\n\t\t\t\tname: \"Cantemir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL\",\n\t\t\t\tname: \"Călărași\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Căușeni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CM\",\n\t\t\t\tname: \"Cimișlia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR\",\n\t\t\t\tname: \"Criuleni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DN\",\n\t\t\t\tname: \"Dondușeni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DR\",\n\t\t\t\tname: \"Drochia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DB\",\n\t\t\t\tname: \"Dubăsari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ED\",\n\t\t\t\tname: \"Edineț\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FL\",\n\t\t\t\tname: \"Fălești\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FR\",\n\t\t\t\tname: \"Florești\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GE\",\n\t\t\t\tname: \"UTA Găgăuzia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GL\",\n\t\t\t\tname: \"Glodeni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HN\",\n\t\t\t\tname: \"Hîncești\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IL\",\n\t\t\t\tname: \"Ialoveni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LV\",\n\t\t\t\tname: \"Leova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NS\",\n\t\t\t\tname: \"Nisporeni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OC\",\n\t\t\t\tname: \"Ocnița\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OR\",\n\t\t\t\tname: \"Orhei\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RZ\",\n\t\t\t\tname: \"Rezina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS\",\n\t\t\t\tname: \"Rîșcani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SG\",\n\t\t\t\tname: \"Sîngerei\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SR\",\n\t\t\t\tname: \"Soroca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ST\",\n\t\t\t\tname: \"Strășeni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SD\",\n\t\t\t\tname: \"Șoldănești\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV\",\n\t\t\t\tname: \"Ștefan Vodă\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR\",\n\t\t\t\tname: \"Taraclia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TL\",\n\t\t\t\tname: \"Telenești\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UN\",\n\t\t\t\tname: \"Ungheni\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"MC\",\n\t\tname: \"Monaco\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MN\",\n\t\tname: \"Mongolia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ME\",\n\t\tname: \"Montenegro\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MS\",\n\t\tname: \"Montserrat\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MA\",\n\t\tname: \"Morocco\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"maagd\",\n\t\t\t\tname: \"Agadir-Ida Ou Tanane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maazi\",\n\t\t\t\tname: \"Azilal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mabem\",\n\t\t\t\tname: \"Béni-Mellal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maber\",\n\t\t\t\tname: \"Berkane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mabes\",\n\t\t\t\tname: \"Ben Slimane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mabod\",\n\t\t\t\tname: \"Boujdour\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mabom\",\n\t\t\t\tname: \"Boulemane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mabrr\",\n\t\t\t\tname: \"Berrechid\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"macas\",\n\t\t\t\tname: \"Casablanca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mache\",\n\t\t\t\tname: \"Chefchaouen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"machi\",\n\t\t\t\tname: \"Chichaoua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"macht\",\n\t\t\t\tname: \"Chtouka Aït Baha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"madri\",\n\t\t\t\tname: \"Driouch\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maedi\",\n\t\t\t\tname: \"Essaouira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maerr\",\n\t\t\t\tname: \"Errachidia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mafah\",\n\t\t\t\tname: \"Fahs-Beni Makada\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mafes\",\n\t\t\t\tname: \"Fès-Dar-Dbibegh\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mafig\",\n\t\t\t\tname: \"Figuig\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mafqh\",\n\t\t\t\tname: \"Fquih Ben Salah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mague\",\n\t\t\t\tname: \"Guelmim\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maguf\",\n\t\t\t\tname: \"Guercif\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mahaj\",\n\t\t\t\tname: \"El Hajeb\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mahao\",\n\t\t\t\tname: \"Al Haouz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mahoc\",\n\t\t\t\tname: \"Al Hoceïma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maifr\",\n\t\t\t\tname: \"Ifrane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maine\",\n\t\t\t\tname: \"Inezgane-Aït Melloul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"majdi\",\n\t\t\t\tname: \"El Jadida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"majra\",\n\t\t\t\tname: \"Jerada\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maken\",\n\t\t\t\tname: \"Kénitra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"makes\",\n\t\t\t\tname: \"Kelaat Sraghna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"makhe\",\n\t\t\t\tname: \"Khemisset\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"makhn\",\n\t\t\t\tname: \"Khénifra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"makho\",\n\t\t\t\tname: \"Khouribga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"malaa\",\n\t\t\t\tname: \"Laâyoune\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"malar\",\n\t\t\t\tname: \"Larache\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamar\",\n\t\t\t\tname: \"Marrakech\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamdf\",\n\t\t\t\tname: \"M’diq-Fnideq\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamed\",\n\t\t\t\tname: \"Médiouna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamek\",\n\t\t\t\tname: \"Meknès\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamid\",\n\t\t\t\tname: \"Midelt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mammd\",\n\t\t\t\tname: \"Marrakech-Medina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mammn\",\n\t\t\t\tname: \"Marrakech-Menara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamoh\",\n\t\t\t\tname: \"Mohammedia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mamou\",\n\t\t\t\tname: \"Moulay Yacoub\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"manad\",\n\t\t\t\tname: \"Nador\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"manou\",\n\t\t\t\tname: \"Nouaceur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maoua\",\n\t\t\t\tname: \"Ouarzazate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maoud\",\n\t\t\t\tname: \"Oued Ed-Dahab\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maouj\",\n\t\t\t\tname: \"Oujda-Angad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maouz\",\n\t\t\t\tname: \"Ouezzane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"marab\",\n\t\t\t\tname: \"Rabat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mareh\",\n\t\t\t\tname: \"Rehamna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masaf\",\n\t\t\t\tname: \"Safi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masal\",\n\t\t\t\tname: \"Salé\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masef\",\n\t\t\t\tname: \"Sefrou\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maset\",\n\t\t\t\tname: \"Settat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masib\",\n\t\t\t\tname: \"Sidi Bennour\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masif\",\n\t\t\t\tname: \"Sidi Ifni\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masik\",\n\t\t\t\tname: \"Sidi Kacem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masil\",\n\t\t\t\tname: \"Sidi Slimane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"maskh\",\n\t\t\t\tname: \"Skhirat-Témara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"masyb\",\n\t\t\t\tname: \"Sidi Youssef Ben Ali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mataf\",\n\t\t\t\tname: \"Tarfaya (EH-partial)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matai\",\n\t\t\t\tname: \"Taourirt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matao\",\n\t\t\t\tname: \"Taounate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matar\",\n\t\t\t\tname: \"Taroudant\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matat\",\n\t\t\t\tname: \"Tata\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mataz\",\n\t\t\t\tname: \"Taza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matet\",\n\t\t\t\tname: \"Tétouan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matin\",\n\t\t\t\tname: \"Tinghir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matiz\",\n\t\t\t\tname: \"Tiznit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matng\",\n\t\t\t\tname: \"Tangier-Assilah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"matnt\",\n\t\t\t\tname: \"Tan-Tan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mayus\",\n\t\t\t\tname: \"Youssoufia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"mazag\",\n\t\t\t\tname: \"Zagora\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"MZ\",\n\t\tname: \"Mozambique\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"MZP\",\n\t\t\t\tname: \"Cabo Delgado\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZG\",\n\t\t\t\tname: \"Gaza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZI\",\n\t\t\t\tname: \"Inhambane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZB\",\n\t\t\t\tname: \"Manica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZL\",\n\t\t\t\tname: \"Maputo Province\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZMPM\",\n\t\t\t\tname: \"Maputo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZN\",\n\t\t\t\tname: \"Nampula\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZA\",\n\t\t\t\tname: \"Niassa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZS\",\n\t\t\t\tname: \"Sofala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZT\",\n\t\t\t\tname: \"Tete\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MZQ\",\n\t\t\t\tname: \"Zambézia\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"MM\",\n\t\tname: \"Myanmar\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NA\",\n\t\tname: \"Namibia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"ER\",\n\t\t\t\tname: \"Erongo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HA\",\n\t\t\t\tname: \"Hardap\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KA\",\n\t\t\t\tname: \"Karas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE\",\n\t\t\t\tname: \"Kavango East\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KW\",\n\t\t\t\tname: \"Kavango West\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KH\",\n\t\t\t\tname: \"Khomas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KU\",\n\t\t\t\tname: \"Kunene\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OW\",\n\t\t\t\tname: \"Ohangwena\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OH\",\n\t\t\t\tname: \"Omaheke\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OS\",\n\t\t\t\tname: \"Omusati\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ON\",\n\t\t\t\tname: \"Oshana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OT\",\n\t\t\t\tname: \"Oshikoto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OD\",\n\t\t\t\tname: \"Otjozondjupa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CA\",\n\t\t\t\tname: \"Zambezi\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"NR\",\n\t\tname: \"Nauru\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NP\",\n\t\tname: \"Nepal\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"BAG\",\n\t\t\t\tname: \"Bagmati\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BHE\",\n\t\t\t\tname: \"Bheri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DHA\",\n\t\t\t\tname: \"Dhaulagiri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GAN\",\n\t\t\t\tname: \"Gandaki\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JAN\",\n\t\t\t\tname: \"Janakpur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KAR\",\n\t\t\t\tname: \"Karnali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KOS\",\n\t\t\t\tname: \"Koshi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LUM\",\n\t\t\t\tname: \"Lumbini\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MAH\",\n\t\t\t\tname: \"Mahakali\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MEC\",\n\t\t\t\tname: \"Mechi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NAR\",\n\t\t\t\tname: \"Narayani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RAP\",\n\t\t\t\tname: \"Rapti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SAG\",\n\t\t\t\tname: \"Sagarmatha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SET\",\n\t\t\t\tname: \"Seti\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"NL\",\n\t\tname: \"Netherlands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NC\",\n\t\tname: \"New Caledonia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NZ\",\n\t\tname: \"New Zealand\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"NTL\",\n\t\t\t\tname: \"Northland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AUK\",\n\t\t\t\tname: \"Auckland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WKO\",\n\t\t\t\tname: \"Waikato\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BOP\",\n\t\t\t\tname: \"Bay of Plenty\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TKI\",\n\t\t\t\tname: \"Taranaki\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GIS\",\n\t\t\t\tname: \"Gisborne\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HKB\",\n\t\t\t\tname: \"Hawke’s Bay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MWT\",\n\t\t\t\tname: \"Manawatu-Whanganui\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WGN\",\n\t\t\t\tname: \"Wellington\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NSN\",\n\t\t\t\tname: \"Nelson\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MBH\",\n\t\t\t\tname: \"Marlborough\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TAS\",\n\t\t\t\tname: \"Tasman\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WTC\",\n\t\t\t\tname: \"West Coast\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAN\",\n\t\t\t\tname: \"Canterbury\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OTA\",\n\t\t\t\tname: \"Otago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"STL\",\n\t\t\t\tname: \"Southland\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"NI\",\n\t\tname: \"Nicaragua\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"NI-AN\",\n\t\t\t\tname: \"Atlántico Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-AS\",\n\t\t\t\tname: \"Atlántico Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-BO\",\n\t\t\t\tname: \"Boaco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-CA\",\n\t\t\t\tname: \"Carazo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-CI\",\n\t\t\t\tname: \"Chinandega\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-CO\",\n\t\t\t\tname: \"Chontales\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-ES\",\n\t\t\t\tname: \"Estelí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-GR\",\n\t\t\t\tname: \"Granada\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-JI\",\n\t\t\t\tname: \"Jinotega\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-LE\",\n\t\t\t\tname: \"León\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-MD\",\n\t\t\t\tname: \"Madriz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-MN\",\n\t\t\t\tname: \"Managua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-MS\",\n\t\t\t\tname: \"Masaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-MT\",\n\t\t\t\tname: \"Matagalpa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-NS\",\n\t\t\t\tname: \"Nueva Segovia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-RI\",\n\t\t\t\tname: \"Rivas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI-SJ\",\n\t\t\t\tname: \"Río San Juan\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"NE\",\n\t\tname: \"Niger\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NG\",\n\t\tname: \"Nigeria\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AB\",\n\t\t\t\tname: \"Abia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FC\",\n\t\t\t\tname: \"Abuja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AD\",\n\t\t\t\tname: \"Adamawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AK\",\n\t\t\t\tname: \"Akwa Ibom\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AN\",\n\t\t\t\tname: \"Anambra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Bauchi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BY\",\n\t\t\t\tname: \"Bayelsa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BE\",\n\t\t\t\tname: \"Benue\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BO\",\n\t\t\t\tname: \"Borno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR\",\n\t\t\t\tname: \"Cross River\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE\",\n\t\t\t\tname: \"Delta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EB\",\n\t\t\t\tname: \"Ebonyi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ED\",\n\t\t\t\tname: \"Edo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EK\",\n\t\t\t\tname: \"Ekiti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EN\",\n\t\t\t\tname: \"Enugu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GO\",\n\t\t\t\tname: \"Gombe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IM\",\n\t\t\t\tname: \"Imo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JI\",\n\t\t\t\tname: \"Jigawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KD\",\n\t\t\t\tname: \"Kaduna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN\",\n\t\t\t\tname: \"Kano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KT\",\n\t\t\t\tname: \"Katsina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KE\",\n\t\t\t\tname: \"Kebbi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KO\",\n\t\t\t\tname: \"Kogi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KW\",\n\t\t\t\tname: \"Kwara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LA\",\n\t\t\t\tname: \"Lagos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NA\",\n\t\t\t\tname: \"Nasarawa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NI\",\n\t\t\t\tname: \"Niger\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OG\",\n\t\t\t\tname: \"Ogun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ON\",\n\t\t\t\tname: \"Ondo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OS\",\n\t\t\t\tname: \"Osun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OY\",\n\t\t\t\tname: \"Oyo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PL\",\n\t\t\t\tname: \"Plateau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RI\",\n\t\t\t\tname: \"Rivers\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Sokoto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TA\",\n\t\t\t\tname: \"Taraba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"YO\",\n\t\t\t\tname: \"Yobe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZA\",\n\t\t\t\tname: \"Zamfara\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"NU\",\n\t\tname: \"Niue\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NF\",\n\t\tname: \"Norfolk Island\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KP\",\n\t\tname: \"North Korea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MK\",\n\t\tname: \"North Macedonia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MP\",\n\t\tname: \"Northern Mariana Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"NO\",\n\t\tname: \"Norway\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"OM\",\n\t\tname: \"Oman\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PK\",\n\t\tname: \"Pakistan\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"JK\",\n\t\t\t\tname: \"Azad Kashmir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Balochistan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TA\",\n\t\t\t\tname: \"FATA\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GB\",\n\t\t\t\tname: \"Gilgit Baltistan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IS\",\n\t\t\t\tname: \"Islamabad Capital Territory\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KP\",\n\t\t\t\tname: \"Khyber Pakhtunkhwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PB\",\n\t\t\t\tname: \"Punjab\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SD\",\n\t\t\t\tname: \"Sindh\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"PS\",\n\t\tname: \"Palestinian Territory\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PA\",\n\t\tname: \"Panama\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"PA-1\",\n\t\t\t\tname: \"Bocas del Toro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-2\",\n\t\t\t\tname: \"Coclé\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-3\",\n\t\t\t\tname: \"Colón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-4\",\n\t\t\t\tname: \"Chiriquí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-5\",\n\t\t\t\tname: \"Darién\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-6\",\n\t\t\t\tname: \"Herrera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-7\",\n\t\t\t\tname: \"Los Santos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-8\",\n\t\t\t\tname: \"Panamá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-9\",\n\t\t\t\tname: \"Veraguas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-10\",\n\t\t\t\tname: \"West Panamá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-EM\",\n\t\t\t\tname: \"Emberá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-KY\",\n\t\t\t\tname: \"Guna Yala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA-NB\",\n\t\t\t\tname: \"Ngöbe-Buglé\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"PG\",\n\t\tname: \"Papua New Guinea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PY\",\n\t\tname: \"Paraguay\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"PY-ASU\",\n\t\t\t\tname: \"Asunción\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-1\",\n\t\t\t\tname: \"Concepción\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-2\",\n\t\t\t\tname: \"San Pedro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-3\",\n\t\t\t\tname: \"Cordillera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-4\",\n\t\t\t\tname: \"Guairá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-5\",\n\t\t\t\tname: \"Caaguazú\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-6\",\n\t\t\t\tname: \"Caazapá\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-7\",\n\t\t\t\tname: \"Itapúa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-8\",\n\t\t\t\tname: \"Misiones\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-9\",\n\t\t\t\tname: \"Paraguarí\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-10\",\n\t\t\t\tname: \"Alto Paraná\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-11\",\n\t\t\t\tname: \"Central\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-12\",\n\t\t\t\tname: \"Ñeembucú\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-13\",\n\t\t\t\tname: \"Amambay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-14\",\n\t\t\t\tname: \"Canindeyú\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-15\",\n\t\t\t\tname: \"Presidente Hayes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-16\",\n\t\t\t\tname: \"Alto Paraguay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PY-17\",\n\t\t\t\tname: \"Boquerón\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"PE\",\n\t\tname: \"Peru\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"CAL\",\n\t\t\t\tname: \"El Callao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LMA\",\n\t\t\t\tname: \"Municipalidad Metropolitana de Lima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AMA\",\n\t\t\t\tname: \"Amazonas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ANC\",\n\t\t\t\tname: \"Ancash\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"APU\",\n\t\t\t\tname: \"Apurímac\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ARE\",\n\t\t\t\tname: \"Arequipa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AYA\",\n\t\t\t\tname: \"Ayacucho\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAJ\",\n\t\t\t\tname: \"Cajamarca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CUS\",\n\t\t\t\tname: \"Cusco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HUV\",\n\t\t\t\tname: \"Huancavelica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HUC\",\n\t\t\t\tname: \"Huánuco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ICA\",\n\t\t\t\tname: \"Ica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JUN\",\n\t\t\t\tname: \"Junín\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LAL\",\n\t\t\t\tname: \"La Libertad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LAM\",\n\t\t\t\tname: \"Lambayeque\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LIM\",\n\t\t\t\tname: \"Lima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LOR\",\n\t\t\t\tname: \"Loreto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MDD\",\n\t\t\t\tname: \"Madre de Dios\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MOQ\",\n\t\t\t\tname: \"Moquegua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PAS\",\n\t\t\t\tname: \"Pasco\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PIU\",\n\t\t\t\tname: \"Piura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PUN\",\n\t\t\t\tname: \"Puno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SAM\",\n\t\t\t\tname: \"San Martín\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TAC\",\n\t\t\t\tname: \"Tacna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TUM\",\n\t\t\t\tname: \"Tumbes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UCA\",\n\t\t\t\tname: \"Ucayali\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"PH\",\n\t\tname: \"Philippines\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"ABR\",\n\t\t\t\tname: \"Abra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AGN\",\n\t\t\t\tname: \"Agusan del Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AGS\",\n\t\t\t\tname: \"Agusan del Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AKL\",\n\t\t\t\tname: \"Aklan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ALB\",\n\t\t\t\tname: \"Albay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ANT\",\n\t\t\t\tname: \"Antique\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"APA\",\n\t\t\t\tname: \"Apayao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AUR\",\n\t\t\t\tname: \"Aurora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BAS\",\n\t\t\t\tname: \"Basilan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BAN\",\n\t\t\t\tname: \"Bataan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BTN\",\n\t\t\t\tname: \"Batanes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BTG\",\n\t\t\t\tname: \"Batangas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BEN\",\n\t\t\t\tname: \"Benguet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BIL\",\n\t\t\t\tname: \"Biliran\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BOH\",\n\t\t\t\tname: \"Bohol\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BUK\",\n\t\t\t\tname: \"Bukidnon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BUL\",\n\t\t\t\tname: \"Bulacan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAG\",\n\t\t\t\tname: \"Cagayan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAN\",\n\t\t\t\tname: \"Camarines Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAS\",\n\t\t\t\tname: \"Camarines Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAM\",\n\t\t\t\tname: \"Camiguin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAP\",\n\t\t\t\tname: \"Capiz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAT\",\n\t\t\t\tname: \"Catanduanes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CAV\",\n\t\t\t\tname: \"Cavite\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CEB\",\n\t\t\t\tname: \"Cebu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"COM\",\n\t\t\t\tname: \"Compostela Valley\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NCO\",\n\t\t\t\tname: \"Cotabato\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DAV\",\n\t\t\t\tname: \"Davao del Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DAS\",\n\t\t\t\tname: \"Davao del Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DAC\",\n\t\t\t\tname: \"Davao Occidental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DAO\",\n\t\t\t\tname: \"Davao Oriental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DIN\",\n\t\t\t\tname: \"Dinagat Islands\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"EAS\",\n\t\t\t\tname: \"Eastern Samar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GUI\",\n\t\t\t\tname: \"Guimaras\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IFU\",\n\t\t\t\tname: \"Ifugao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ILN\",\n\t\t\t\tname: \"Ilocos Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ILS\",\n\t\t\t\tname: \"Ilocos Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ILI\",\n\t\t\t\tname: \"Iloilo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ISA\",\n\t\t\t\tname: \"Isabela\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KAL\",\n\t\t\t\tname: \"Kalinga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LUN\",\n\t\t\t\tname: \"La Union\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LAG\",\n\t\t\t\tname: \"Laguna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LAN\",\n\t\t\t\tname: \"Lanao del Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LAS\",\n\t\t\t\tname: \"Lanao del Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LEY\",\n\t\t\t\tname: \"Leyte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MAG\",\n\t\t\t\tname: \"Maguindanao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MAD\",\n\t\t\t\tname: \"Marinduque\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MAS\",\n\t\t\t\tname: \"Masbate\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MSC\",\n\t\t\t\tname: \"Misamis Occidental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MSR\",\n\t\t\t\tname: \"Misamis Oriental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MOU\",\n\t\t\t\tname: \"Mountain Province\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NEC\",\n\t\t\t\tname: \"Negros Occidental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NER\",\n\t\t\t\tname: \"Negros Oriental\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NSA\",\n\t\t\t\tname: \"Northern Samar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NUE\",\n\t\t\t\tname: \"Nueva Ecija\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NUV\",\n\t\t\t\tname: \"Nueva Vizcaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MDC\",\n\t\t\t\tname: \"Occidental Mindoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MDR\",\n\t\t\t\tname: \"Oriental Mindoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PLW\",\n\t\t\t\tname: \"Palawan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PAM\",\n\t\t\t\tname: \"Pampanga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PAN\",\n\t\t\t\tname: \"Pangasinan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QUE\",\n\t\t\t\tname: \"Quezon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"QUI\",\n\t\t\t\tname: \"Quirino\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RIZ\",\n\t\t\t\tname: \"Rizal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ROM\",\n\t\t\t\tname: \"Romblon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WSA\",\n\t\t\t\tname: \"Samar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SAR\",\n\t\t\t\tname: \"Sarangani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SIQ\",\n\t\t\t\tname: \"Siquijor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SOR\",\n\t\t\t\tname: \"Sorsogon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SCO\",\n\t\t\t\tname: \"South Cotabato\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SLE\",\n\t\t\t\tname: \"Southern Leyte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SUK\",\n\t\t\t\tname: \"Sultan Kudarat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SLU\",\n\t\t\t\tname: \"Sulu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SUN\",\n\t\t\t\tname: \"Surigao del Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SUR\",\n\t\t\t\tname: \"Surigao del Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TAR\",\n\t\t\t\tname: \"Tarlac\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TAW\",\n\t\t\t\tname: \"Tawi-Tawi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZMB\",\n\t\t\t\tname: \"Zambales\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZAN\",\n\t\t\t\tname: \"Zamboanga del Norte\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZAS\",\n\t\t\t\tname: \"Zamboanga del Sur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZSI\",\n\t\t\t\tname: \"Zamboanga Sibugay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"00\",\n\t\t\t\tname: \"Metro Manila\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"PN\",\n\t\tname: \"Pitcairn\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PL\",\n\t\tname: \"Poland\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PT\",\n\t\tname: \"Portugal\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PR\",\n\t\tname: \"Puerto Rico\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"QA\",\n\t\tname: \"Qatar\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"RE\",\n\t\tname: \"Reunion\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"RO\",\n\t\tname: \"Romania\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AB\",\n\t\t\t\tname: \"Alba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AR\",\n\t\t\t\tname: \"Arad\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AG\",\n\t\t\t\tname: \"Argeș\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BC\",\n\t\t\t\tname: \"Bacău\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BH\",\n\t\t\t\tname: \"Bihor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BN\",\n\t\t\t\tname: \"Bistrița-Năsăud\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BT\",\n\t\t\t\tname: \"Botoșani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BR\",\n\t\t\t\tname: \"Brăila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BV\",\n\t\t\t\tname: \"Brașov\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"B\",\n\t\t\t\tname: \"București\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BZ\",\n\t\t\t\tname: \"Buzău\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CL\",\n\t\t\t\tname: \"Călărași\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Caraș-Severin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CJ\",\n\t\t\t\tname: \"Cluj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CT\",\n\t\t\t\tname: \"Constanța\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CV\",\n\t\t\t\tname: \"Covasna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DB\",\n\t\t\t\tname: \"Dâmbovița\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DJ\",\n\t\t\t\tname: \"Dolj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GL\",\n\t\t\t\tname: \"Galați\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GR\",\n\t\t\t\tname: \"Giurgiu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GJ\",\n\t\t\t\tname: \"Gorj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HR\",\n\t\t\t\tname: \"Harghita\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HD\",\n\t\t\t\tname: \"Hunedoara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IL\",\n\t\t\t\tname: \"Ialomița\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IS\",\n\t\t\t\tname: \"Iași\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IF\",\n\t\t\t\tname: \"Ilfov\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MM\",\n\t\t\t\tname: \"Maramureș\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MH\",\n\t\t\t\tname: \"Mehedinți\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MS\",\n\t\t\t\tname: \"Mureș\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NT\",\n\t\t\t\tname: \"Neamț\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OT\",\n\t\t\t\tname: \"Olt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PH\",\n\t\t\t\tname: \"Prahova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SJ\",\n\t\t\t\tname: \"Sălaj\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SM\",\n\t\t\t\tname: \"Satu Mare\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SB\",\n\t\t\t\tname: \"Sibiu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SV\",\n\t\t\t\tname: \"Suceava\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR\",\n\t\t\t\tname: \"Teleorman\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TM\",\n\t\t\t\tname: \"Timiș\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TL\",\n\t\t\t\tname: \"Tulcea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VL\",\n\t\t\t\tname: \"Vâlcea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VS\",\n\t\t\t\tname: \"Vaslui\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VN\",\n\t\t\t\tname: \"Vrancea\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"RU\",\n\t\tname: \"Russia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"RW\",\n\t\tname: \"Rwanda\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ST\",\n\t\tname: \"S&atilde;o Tom&eacute; and Pr&iacute;ncipe\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"BL\",\n\t\tname: \"Saint Barth&eacute;lemy\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SH\",\n\t\tname: \"Saint Helena\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KN\",\n\t\tname: \"Saint Kitts and Nevis\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"KNK\",\n\t\t\t\tname: \"Saint Kitts\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KNN\",\n\t\t\t\tname: \"Nevis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN01\",\n\t\t\t\tname: \"Christ Church Nichola Town\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN02\",\n\t\t\t\tname: \"Saint Anne Sandy Point\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN03\",\n\t\t\t\tname: \"Saint George Basseterre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN04\",\n\t\t\t\tname: \"Saint George Gingerland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN05\",\n\t\t\t\tname: \"Saint James Windward\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN06\",\n\t\t\t\tname: \"Saint John Capisterre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN07\",\n\t\t\t\tname: \"Saint John Figtree\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN08\",\n\t\t\t\tname: \"Saint Mary Cayon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN09\",\n\t\t\t\tname: \"Saint Paul Capisterre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN10\",\n\t\t\t\tname: \"Saint Paul Charlestown\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN11\",\n\t\t\t\tname: \"Saint Peter Basseterre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN12\",\n\t\t\t\tname: \"Saint Thomas Lowland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN13\",\n\t\t\t\tname: \"Saint Thomas Middle Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KN15\",\n\t\t\t\tname: \"Trinity Palmetto Point\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"LC\",\n\t\tname: \"Saint Lucia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SX\",\n\t\tname: \"Saint Martin (Dutch part)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"MF\",\n\t\tname: \"Saint Martin (French part)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"PM\",\n\t\tname: \"Saint Pierre and Miquelon\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VC\",\n\t\tname: \"Saint Vincent and the Grenadines\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"WS\",\n\t\tname: \"Samoa\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SM\",\n\t\tname: \"San Marino\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SA\",\n\t\tname: \"Saudi Arabia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SN\",\n\t\tname: \"Senegal\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"SNDB\",\n\t\t\t\tname: \"Diourbel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNDK\",\n\t\t\t\tname: \"Dakar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNFK\",\n\t\t\t\tname: \"Fatick\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNKA\",\n\t\t\t\tname: \"Kaffrine\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNKD\",\n\t\t\t\tname: \"Kolda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNKE\",\n\t\t\t\tname: \"Kédougou\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNKL\",\n\t\t\t\tname: \"Kaolack\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNLG\",\n\t\t\t\tname: \"Louga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNMT\",\n\t\t\t\tname: \"Matam\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNSE\",\n\t\t\t\tname: \"Sédhiou\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNSL\",\n\t\t\t\tname: \"Saint-Louis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNTC\",\n\t\t\t\tname: \"Tambacounda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNTH\",\n\t\t\t\tname: \"Thiès\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SNZG\",\n\t\t\t\tname: \"Ziguinchor\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"RS\",\n\t\tname: \"Serbia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"RS00\",\n\t\t\t\tname: \"Belgrade\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS14\",\n\t\t\t\tname: \"Bor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS11\",\n\t\t\t\tname: \"Braničevo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS02\",\n\t\t\t\tname: \"Central Banat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS10\",\n\t\t\t\tname: \"Danube\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS23\",\n\t\t\t\tname: \"Jablanica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS09\",\n\t\t\t\tname: \"Kolubara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS08\",\n\t\t\t\tname: \"Mačva\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS17\",\n\t\t\t\tname: \"Morava\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS20\",\n\t\t\t\tname: \"Nišava\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS01\",\n\t\t\t\tname: \"North Bačka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS03\",\n\t\t\t\tname: \"North Banat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS24\",\n\t\t\t\tname: \"Pčinja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS22\",\n\t\t\t\tname: \"Pirot\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS13\",\n\t\t\t\tname: \"Pomoravlje\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS19\",\n\t\t\t\tname: \"Rasina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS18\",\n\t\t\t\tname: \"Raška\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS06\",\n\t\t\t\tname: \"South Bačka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS04\",\n\t\t\t\tname: \"South Banat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS07\",\n\t\t\t\tname: \"Srem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS12\",\n\t\t\t\tname: \"Šumadija\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS21\",\n\t\t\t\tname: \"Toplica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS05\",\n\t\t\t\tname: \"West Bačka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS15\",\n\t\t\t\tname: \"Zaječar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS16\",\n\t\t\t\tname: \"Zlatibor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS25\",\n\t\t\t\tname: \"Kosovo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS26\",\n\t\t\t\tname: \"Peć\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS27\",\n\t\t\t\tname: \"Prizren\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS28\",\n\t\t\t\tname: \"Kosovska Mitrovica\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RS29\",\n\t\t\t\tname: \"Kosovo-Pomoravlje\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RSKM\",\n\t\t\t\tname: \"Kosovo-Metohija\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RSVO\",\n\t\t\t\tname: \"Vojvodina\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"SC\",\n\t\tname: \"Seychelles\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SL\",\n\t\tname: \"Sierra Leone\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SG\",\n\t\tname: \"Singapore\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SK\",\n\t\tname: \"Slovakia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SI\",\n\t\tname: \"Slovenia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SB\",\n\t\tname: \"Solomon Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SO\",\n\t\tname: \"Somalia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ZA\",\n\t\tname: \"South Africa\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"EC\",\n\t\t\t\tname: \"Eastern Cape\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FS\",\n\t\t\t\tname: \"Free State\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GP\",\n\t\t\t\tname: \"Gauteng\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KZN\",\n\t\t\t\tname: \"KwaZulu-Natal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LP\",\n\t\t\t\tname: \"Limpopo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MP\",\n\t\t\t\tname: \"Mpumalanga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NC\",\n\t\t\t\tname: \"Northern Cape\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NW\",\n\t\t\t\tname: \"North West\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WC\",\n\t\t\t\tname: \"Western Cape\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"GS\",\n\t\tname: \"South Georgia/Sandwich Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"KR\",\n\t\tname: \"South Korea\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SS\",\n\t\tname: \"South Sudan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ES\",\n\t\tname: \"Spain\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"C\",\n\t\t\t\tname: \"A Coruña\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VI\",\n\t\t\t\tname: \"Araba/Álava\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AB\",\n\t\t\t\tname: \"Albacete\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"A\",\n\t\t\t\tname: \"Alicante\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AL\",\n\t\t\t\tname: \"Almería\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"O\",\n\t\t\t\tname: \"Asturias\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AV\",\n\t\t\t\tname: \"Ávila\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BA\",\n\t\t\t\tname: \"Badajoz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PM\",\n\t\t\t\tname: \"Baleares\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"B\",\n\t\t\t\tname: \"Barcelona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BU\",\n\t\t\t\tname: \"Burgos\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CC\",\n\t\t\t\tname: \"Cáceres\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CA\",\n\t\t\t\tname: \"Cádiz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"S\",\n\t\t\t\tname: \"Cantabria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CS\",\n\t\t\t\tname: \"Castellón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CE\",\n\t\t\t\tname: \"Ceuta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CR\",\n\t\t\t\tname: \"Ciudad Real\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Córdoba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CU\",\n\t\t\t\tname: \"Cuenca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GI\",\n\t\t\t\tname: \"Girona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GR\",\n\t\t\t\tname: \"Granada\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GU\",\n\t\t\t\tname: \"Guadalajara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SS\",\n\t\t\t\tname: \"Gipuzkoa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"H\",\n\t\t\t\tname: \"Huelva\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HU\",\n\t\t\t\tname: \"Huesca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"J\",\n\t\t\t\tname: \"Jaén\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LO\",\n\t\t\t\tname: \"La Rioja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GC\",\n\t\t\t\tname: \"Las Palmas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LE\",\n\t\t\t\tname: \"León\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"L\",\n\t\t\t\tname: \"Lleida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LU\",\n\t\t\t\tname: \"Lugo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"M\",\n\t\t\t\tname: \"Madrid\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MA\",\n\t\t\t\tname: \"Málaga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ML\",\n\t\t\t\tname: \"Melilla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MU\",\n\t\t\t\tname: \"Murcia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NA\",\n\t\t\t\tname: \"Navarra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OR\",\n\t\t\t\tname: \"Ourense\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"P\",\n\t\t\t\tname: \"Palencia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PO\",\n\t\t\t\tname: \"Pontevedra\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SA\",\n\t\t\t\tname: \"Salamanca\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TF\",\n\t\t\t\tname: \"Santa Cruz de Tenerife\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SG\",\n\t\t\t\tname: \"Segovia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SE\",\n\t\t\t\tname: \"Sevilla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Soria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"T\",\n\t\t\t\tname: \"Tarragona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TE\",\n\t\t\t\tname: \"Teruel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TO\",\n\t\t\t\tname: \"Toledo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"V\",\n\t\t\t\tname: \"Valencia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VA\",\n\t\t\t\tname: \"Valladolid\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BI\",\n\t\t\t\tname: \"Biscay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZA\",\n\t\t\t\tname: \"Zamora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"Z\",\n\t\t\t\tname: \"Zaragoza\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"LK\",\n\t\tname: \"Sri Lanka\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SD\",\n\t\tname: \"Sudan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SR\",\n\t\tname: \"Suriname\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SJ\",\n\t\tname: \"Svalbard and Jan Mayen\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"SE\",\n\t\tname: \"Sweden\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"CH\",\n\t\tname: \"Switzerland\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AG\",\n\t\t\t\tname: \"Aargau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AR\",\n\t\t\t\tname: \"Appenzell Ausserrhoden\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AI\",\n\t\t\t\tname: \"Appenzell Innerrhoden\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BL\",\n\t\t\t\tname: \"Basel-Landschaft\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BS\",\n\t\t\t\tname: \"Basel-Stadt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"BE\",\n\t\t\t\tname: \"Bern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FR\",\n\t\t\t\tname: \"Fribourg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GE\",\n\t\t\t\tname: \"Geneva\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GL\",\n\t\t\t\tname: \"Glarus\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GR\",\n\t\t\t\tname: \"Graubünden\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"JU\",\n\t\t\t\tname: \"Jura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LU\",\n\t\t\t\tname: \"Luzern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NE\",\n\t\t\t\tname: \"Neuchâtel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NW\",\n\t\t\t\tname: \"Nidwalden\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OW\",\n\t\t\t\tname: \"Obwalden\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SH\",\n\t\t\t\tname: \"Schaffhausen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SZ\",\n\t\t\t\tname: \"Schwyz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SO\",\n\t\t\t\tname: \"Solothurn\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SG\",\n\t\t\t\tname: \"St. Gallen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TG\",\n\t\t\t\tname: \"Thurgau\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TI\",\n\t\t\t\tname: \"Ticino\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UR\",\n\t\t\t\tname: \"Uri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VS\",\n\t\t\t\tname: \"Valais\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VD\",\n\t\t\t\tname: \"Vaud\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZG\",\n\t\t\t\tname: \"Zug\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZH\",\n\t\t\t\tname: \"Zürich\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"SY\",\n\t\tname: \"Syria\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TW\",\n\t\tname: \"Taiwan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TJ\",\n\t\tname: \"Tajikistan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TZ\",\n\t\tname: \"Tanzania\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"TZ01\",\n\t\t\t\tname: \"Arusha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ02\",\n\t\t\t\tname: \"Dar es Salaam\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ03\",\n\t\t\t\tname: \"Dodoma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ04\",\n\t\t\t\tname: \"Iringa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ05\",\n\t\t\t\tname: \"Kagera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ06\",\n\t\t\t\tname: \"Pemba North\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ07\",\n\t\t\t\tname: \"Zanzibar North\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ08\",\n\t\t\t\tname: \"Kigoma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ09\",\n\t\t\t\tname: \"Kilimanjaro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ10\",\n\t\t\t\tname: \"Pemba South\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ11\",\n\t\t\t\tname: \"Zanzibar South\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ12\",\n\t\t\t\tname: \"Lindi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ13\",\n\t\t\t\tname: \"Mara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ14\",\n\t\t\t\tname: \"Mbeya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ15\",\n\t\t\t\tname: \"Zanzibar West\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ16\",\n\t\t\t\tname: \"Morogoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ17\",\n\t\t\t\tname: \"Mtwara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ18\",\n\t\t\t\tname: \"Mwanza\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ19\",\n\t\t\t\tname: \"Coast\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ20\",\n\t\t\t\tname: \"Rukwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ21\",\n\t\t\t\tname: \"Ruvuma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ22\",\n\t\t\t\tname: \"Shinyanga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ23\",\n\t\t\t\tname: \"Singida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ24\",\n\t\t\t\tname: \"Tabora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ25\",\n\t\t\t\tname: \"Tanga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ26\",\n\t\t\t\tname: \"Manyara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ27\",\n\t\t\t\tname: \"Geita\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ28\",\n\t\t\t\tname: \"Katavi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ29\",\n\t\t\t\tname: \"Njombe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TZ30\",\n\t\t\t\tname: \"Simiyu\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"TH\",\n\t\tname: \"Thailand\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"TH-37\",\n\t\t\t\tname: \"Amnat Charoen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-15\",\n\t\t\t\tname: \"Ang Thong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-14\",\n\t\t\t\tname: \"Ayutthaya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-10\",\n\t\t\t\tname: \"Bangkok\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-38\",\n\t\t\t\tname: \"Bueng Kan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-31\",\n\t\t\t\tname: \"Buri Ram\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-24\",\n\t\t\t\tname: \"Chachoengsao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-18\",\n\t\t\t\tname: \"Chai Nat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-36\",\n\t\t\t\tname: \"Chaiyaphum\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-22\",\n\t\t\t\tname: \"Chanthaburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-50\",\n\t\t\t\tname: \"Chiang Mai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-57\",\n\t\t\t\tname: \"Chiang Rai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-20\",\n\t\t\t\tname: \"Chonburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-86\",\n\t\t\t\tname: \"Chumphon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-46\",\n\t\t\t\tname: \"Kalasin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-62\",\n\t\t\t\tname: \"Kamphaeng Phet\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-71\",\n\t\t\t\tname: \"Kanchanaburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-40\",\n\t\t\t\tname: \"Khon Kaen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-81\",\n\t\t\t\tname: \"Krabi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-52\",\n\t\t\t\tname: \"Lampang\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-51\",\n\t\t\t\tname: \"Lamphun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-42\",\n\t\t\t\tname: \"Loei\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-16\",\n\t\t\t\tname: \"Lopburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-58\",\n\t\t\t\tname: \"Mae Hong Son\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-44\",\n\t\t\t\tname: \"Maha Sarakham\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-49\",\n\t\t\t\tname: \"Mukdahan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-26\",\n\t\t\t\tname: \"Nakhon Nayok\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-73\",\n\t\t\t\tname: \"Nakhon Pathom\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-48\",\n\t\t\t\tname: \"Nakhon Phanom\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-30\",\n\t\t\t\tname: \"Nakhon Ratchasima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-60\",\n\t\t\t\tname: \"Nakhon Sawan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-80\",\n\t\t\t\tname: \"Nakhon Si Thammarat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-55\",\n\t\t\t\tname: \"Nan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-96\",\n\t\t\t\tname: \"Narathiwat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-39\",\n\t\t\t\tname: \"Nong Bua Lam Phu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-43\",\n\t\t\t\tname: \"Nong Khai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-12\",\n\t\t\t\tname: \"Nonthaburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-13\",\n\t\t\t\tname: \"Pathum Thani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-94\",\n\t\t\t\tname: \"Pattani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-82\",\n\t\t\t\tname: \"Phang Nga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-93\",\n\t\t\t\tname: \"Phatthalung\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-56\",\n\t\t\t\tname: \"Phayao\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-67\",\n\t\t\t\tname: \"Phetchabun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-76\",\n\t\t\t\tname: \"Phetchaburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-66\",\n\t\t\t\tname: \"Phichit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-65\",\n\t\t\t\tname: \"Phitsanulok\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-54\",\n\t\t\t\tname: \"Phrae\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-83\",\n\t\t\t\tname: \"Phuket\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-25\",\n\t\t\t\tname: \"Prachin Buri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-77\",\n\t\t\t\tname: \"Prachuap Khiri Khan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-85\",\n\t\t\t\tname: \"Ranong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-70\",\n\t\t\t\tname: \"Ratchaburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-21\",\n\t\t\t\tname: \"Rayong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-45\",\n\t\t\t\tname: \"Roi Et\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-27\",\n\t\t\t\tname: \"Sa Kaeo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-47\",\n\t\t\t\tname: \"Sakon Nakhon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-11\",\n\t\t\t\tname: \"Samut Prakan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-74\",\n\t\t\t\tname: \"Samut Sakhon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-75\",\n\t\t\t\tname: \"Samut Songkhram\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-19\",\n\t\t\t\tname: \"Saraburi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-91\",\n\t\t\t\tname: \"Satun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-17\",\n\t\t\t\tname: \"Sing Buri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-33\",\n\t\t\t\tname: \"Sisaket\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-90\",\n\t\t\t\tname: \"Songkhla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-64\",\n\t\t\t\tname: \"Sukhothai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-72\",\n\t\t\t\tname: \"Suphan Buri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-84\",\n\t\t\t\tname: \"Surat Thani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-32\",\n\t\t\t\tname: \"Surin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-63\",\n\t\t\t\tname: \"Tak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-92\",\n\t\t\t\tname: \"Trang\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-23\",\n\t\t\t\tname: \"Trat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-34\",\n\t\t\t\tname: \"Ubon Ratchathani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-41\",\n\t\t\t\tname: \"Udon Thani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-61\",\n\t\t\t\tname: \"Uthai Thani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-53\",\n\t\t\t\tname: \"Uttaradit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-95\",\n\t\t\t\tname: \"Yala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TH-35\",\n\t\t\t\tname: \"Yasothon\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"TL\",\n\t\tname: \"Timor-Leste\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TG\",\n\t\tname: \"Togo\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TK\",\n\t\tname: \"Tokelau\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TO\",\n\t\tname: \"Tonga\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TT\",\n\t\tname: \"Trinidad and Tobago\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TN\",\n\t\tname: \"Tunisia\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TR\",\n\t\tname: \"Türkiye\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"TR01\",\n\t\t\t\tname: \"Adana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR02\",\n\t\t\t\tname: \"Adıyaman\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR03\",\n\t\t\t\tname: \"Afyon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR04\",\n\t\t\t\tname: \"Ağrı\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR05\",\n\t\t\t\tname: \"Amasya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR06\",\n\t\t\t\tname: \"Ankara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR07\",\n\t\t\t\tname: \"Antalya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR08\",\n\t\t\t\tname: \"Artvin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR09\",\n\t\t\t\tname: \"Aydın\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR10\",\n\t\t\t\tname: \"Balıkesir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR11\",\n\t\t\t\tname: \"Bilecik\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR12\",\n\t\t\t\tname: \"Bingöl\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR13\",\n\t\t\t\tname: \"Bitlis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR14\",\n\t\t\t\tname: \"Bolu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR15\",\n\t\t\t\tname: \"Burdur\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR16\",\n\t\t\t\tname: \"Bursa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR17\",\n\t\t\t\tname: \"Çanakkale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR18\",\n\t\t\t\tname: \"Çankırı\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR19\",\n\t\t\t\tname: \"Çorum\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR20\",\n\t\t\t\tname: \"Denizli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR21\",\n\t\t\t\tname: \"Diyarbakır\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR22\",\n\t\t\t\tname: \"Edirne\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR23\",\n\t\t\t\tname: \"Elazığ\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR24\",\n\t\t\t\tname: \"Erzincan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR25\",\n\t\t\t\tname: \"Erzurum\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR26\",\n\t\t\t\tname: \"Eskişehir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR27\",\n\t\t\t\tname: \"Gaziantep\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR28\",\n\t\t\t\tname: \"Giresun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR29\",\n\t\t\t\tname: \"Gümüşhane\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR30\",\n\t\t\t\tname: \"Hakkari\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR31\",\n\t\t\t\tname: \"Hatay\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR32\",\n\t\t\t\tname: \"Isparta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR33\",\n\t\t\t\tname: \"İçel\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR34\",\n\t\t\t\tname: \"İstanbul\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR35\",\n\t\t\t\tname: \"İzmir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR36\",\n\t\t\t\tname: \"Kars\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR37\",\n\t\t\t\tname: \"Kastamonu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR38\",\n\t\t\t\tname: \"Kayseri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR39\",\n\t\t\t\tname: \"Kırklareli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR40\",\n\t\t\t\tname: \"Kırşehir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR41\",\n\t\t\t\tname: \"Kocaeli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR42\",\n\t\t\t\tname: \"Konya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR43\",\n\t\t\t\tname: \"Kütahya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR44\",\n\t\t\t\tname: \"Malatya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR45\",\n\t\t\t\tname: \"Manisa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR46\",\n\t\t\t\tname: \"Kahramanmaraş\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR47\",\n\t\t\t\tname: \"Mardin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR48\",\n\t\t\t\tname: \"Muğla\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR49\",\n\t\t\t\tname: \"Muş\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR50\",\n\t\t\t\tname: \"Nevşehir\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR51\",\n\t\t\t\tname: \"Niğde\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR52\",\n\t\t\t\tname: \"Ordu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR53\",\n\t\t\t\tname: \"Rize\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR54\",\n\t\t\t\tname: \"Sakarya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR55\",\n\t\t\t\tname: \"Samsun\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR56\",\n\t\t\t\tname: \"Siirt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR57\",\n\t\t\t\tname: \"Sinop\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR58\",\n\t\t\t\tname: \"Sivas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR59\",\n\t\t\t\tname: \"Tekirdağ\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR60\",\n\t\t\t\tname: \"Tokat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR61\",\n\t\t\t\tname: \"Trabzon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR62\",\n\t\t\t\tname: \"Tunceli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR63\",\n\t\t\t\tname: \"Şanlıurfa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR64\",\n\t\t\t\tname: \"Uşak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR65\",\n\t\t\t\tname: \"Van\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR66\",\n\t\t\t\tname: \"Yozgat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR67\",\n\t\t\t\tname: \"Zonguldak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR68\",\n\t\t\t\tname: \"Aksaray\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR69\",\n\t\t\t\tname: \"Bayburt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR70\",\n\t\t\t\tname: \"Karaman\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR71\",\n\t\t\t\tname: \"Kırıkkale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR72\",\n\t\t\t\tname: \"Batman\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR73\",\n\t\t\t\tname: \"Şırnak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR74\",\n\t\t\t\tname: \"Bartın\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR75\",\n\t\t\t\tname: \"Ardahan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR76\",\n\t\t\t\tname: \"Iğdır\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR77\",\n\t\t\t\tname: \"Yalova\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR78\",\n\t\t\t\tname: \"Karabük\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR79\",\n\t\t\t\tname: \"Kilis\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR80\",\n\t\t\t\tname: \"Osmaniye\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TR81\",\n\t\t\t\tname: \"Düzce\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"TM\",\n\t\tname: \"Turkmenistan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TC\",\n\t\tname: \"Turks and Caicos Islands\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"TV\",\n\t\tname: \"Tuvalu\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"UG\",\n\t\tname: \"Uganda\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"UG314\",\n\t\t\t\tname: \"Abim\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG301\",\n\t\t\t\tname: \"Adjumani\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG322\",\n\t\t\t\tname: \"Agago\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG323\",\n\t\t\t\tname: \"Alebtong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG315\",\n\t\t\t\tname: \"Amolatar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG324\",\n\t\t\t\tname: \"Amudat\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG216\",\n\t\t\t\tname: \"Amuria\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG316\",\n\t\t\t\tname: \"Amuru\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG302\",\n\t\t\t\tname: \"Apac\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG303\",\n\t\t\t\tname: \"Arua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG217\",\n\t\t\t\tname: \"Budaka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG218\",\n\t\t\t\tname: \"Bududa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG201\",\n\t\t\t\tname: \"Bugiri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG235\",\n\t\t\t\tname: \"Bugweri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG420\",\n\t\t\t\tname: \"Buhweju\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG117\",\n\t\t\t\tname: \"Buikwe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG219\",\n\t\t\t\tname: \"Bukedea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG118\",\n\t\t\t\tname: \"Bukomansimbi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG220\",\n\t\t\t\tname: \"Bukwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG225\",\n\t\t\t\tname: \"Bulambuli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG416\",\n\t\t\t\tname: \"Buliisa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG401\",\n\t\t\t\tname: \"Bundibugyo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG430\",\n\t\t\t\tname: \"Bunyangabu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG402\",\n\t\t\t\tname: \"Bushenyi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG202\",\n\t\t\t\tname: \"Busia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG221\",\n\t\t\t\tname: \"Butaleja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG119\",\n\t\t\t\tname: \"Butambala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG233\",\n\t\t\t\tname: \"Butebo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG120\",\n\t\t\t\tname: \"Buvuma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG226\",\n\t\t\t\tname: \"Buyende\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG317\",\n\t\t\t\tname: \"Dokolo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG121\",\n\t\t\t\tname: \"Gomba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG304\",\n\t\t\t\tname: \"Gulu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG403\",\n\t\t\t\tname: \"Hoima\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG417\",\n\t\t\t\tname: \"Ibanda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG203\",\n\t\t\t\tname: \"Iganga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG418\",\n\t\t\t\tname: \"Isingiro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG204\",\n\t\t\t\tname: \"Jinja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG318\",\n\t\t\t\tname: \"Kaabong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG404\",\n\t\t\t\tname: \"Kabale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG405\",\n\t\t\t\tname: \"Kabarole\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG213\",\n\t\t\t\tname: \"Kaberamaido\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG427\",\n\t\t\t\tname: \"Kagadi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG428\",\n\t\t\t\tname: \"Kakumiro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG101\",\n\t\t\t\tname: \"Kalangala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG222\",\n\t\t\t\tname: \"Kaliro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG122\",\n\t\t\t\tname: \"Kalungu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG102\",\n\t\t\t\tname: \"Kampala\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG205\",\n\t\t\t\tname: \"Kamuli\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG413\",\n\t\t\t\tname: \"Kamwenge\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG414\",\n\t\t\t\tname: \"Kanungu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG206\",\n\t\t\t\tname: \"Kapchorwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG236\",\n\t\t\t\tname: \"Kapelebyong\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG126\",\n\t\t\t\tname: \"Kasanda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG406\",\n\t\t\t\tname: \"Kasese\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG207\",\n\t\t\t\tname: \"Katakwi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG112\",\n\t\t\t\tname: \"Kayunga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG407\",\n\t\t\t\tname: \"Kibaale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG103\",\n\t\t\t\tname: \"Kiboga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG227\",\n\t\t\t\tname: \"Kibuku\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG432\",\n\t\t\t\tname: \"Kikuube\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG419\",\n\t\t\t\tname: \"Kiruhura\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG421\",\n\t\t\t\tname: \"Kiryandongo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG408\",\n\t\t\t\tname: \"Kisoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG305\",\n\t\t\t\tname: \"Kitgum\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG319\",\n\t\t\t\tname: \"Koboko\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG325\",\n\t\t\t\tname: \"Kole\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG306\",\n\t\t\t\tname: \"Kotido\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG208\",\n\t\t\t\tname: \"Kumi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG333\",\n\t\t\t\tname: \"Kwania\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG228\",\n\t\t\t\tname: \"Kween\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG123\",\n\t\t\t\tname: \"Kyankwanzi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG422\",\n\t\t\t\tname: \"Kyegegwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG415\",\n\t\t\t\tname: \"Kyenjojo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG125\",\n\t\t\t\tname: \"Kyotera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG326\",\n\t\t\t\tname: \"Lamwo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG307\",\n\t\t\t\tname: \"Lira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG229\",\n\t\t\t\tname: \"Luuka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG104\",\n\t\t\t\tname: \"Luwero\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG124\",\n\t\t\t\tname: \"Lwengo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG114\",\n\t\t\t\tname: \"Lyantonde\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG223\",\n\t\t\t\tname: \"Manafwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG320\",\n\t\t\t\tname: \"Maracha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG105\",\n\t\t\t\tname: \"Masaka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG409\",\n\t\t\t\tname: \"Masindi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG214\",\n\t\t\t\tname: \"Mayuge\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG209\",\n\t\t\t\tname: \"Mbale\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG410\",\n\t\t\t\tname: \"Mbarara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG423\",\n\t\t\t\tname: \"Mitooma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG115\",\n\t\t\t\tname: \"Mityana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG308\",\n\t\t\t\tname: \"Moroto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG309\",\n\t\t\t\tname: \"Moyo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG106\",\n\t\t\t\tname: \"Mpigi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG107\",\n\t\t\t\tname: \"Mubende\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG108\",\n\t\t\t\tname: \"Mukono\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG334\",\n\t\t\t\tname: \"Nabilatuk\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG311\",\n\t\t\t\tname: \"Nakapiripirit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG116\",\n\t\t\t\tname: \"Nakaseke\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG109\",\n\t\t\t\tname: \"Nakasongola\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG230\",\n\t\t\t\tname: \"Namayingo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG234\",\n\t\t\t\tname: \"Namisindwa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG224\",\n\t\t\t\tname: \"Namutumba\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG327\",\n\t\t\t\tname: \"Napak\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG310\",\n\t\t\t\tname: \"Nebbi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG231\",\n\t\t\t\tname: \"Ngora\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG424\",\n\t\t\t\tname: \"Ntoroko\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG411\",\n\t\t\t\tname: \"Ntungamo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG328\",\n\t\t\t\tname: \"Nwoya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG331\",\n\t\t\t\tname: \"Omoro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG329\",\n\t\t\t\tname: \"Otuke\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG321\",\n\t\t\t\tname: \"Oyam\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG312\",\n\t\t\t\tname: \"Pader\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG332\",\n\t\t\t\tname: \"Pakwach\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG210\",\n\t\t\t\tname: \"Pallisa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG110\",\n\t\t\t\tname: \"Rakai\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG429\",\n\t\t\t\tname: \"Rubanda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG425\",\n\t\t\t\tname: \"Rubirizi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG431\",\n\t\t\t\tname: \"Rukiga\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG412\",\n\t\t\t\tname: \"Rukungiri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG111\",\n\t\t\t\tname: \"Sembabule\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG232\",\n\t\t\t\tname: \"Serere\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG426\",\n\t\t\t\tname: \"Sheema\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG215\",\n\t\t\t\tname: \"Sironko\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG211\",\n\t\t\t\tname: \"Soroti\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG212\",\n\t\t\t\tname: \"Tororo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG113\",\n\t\t\t\tname: \"Wakiso\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG313\",\n\t\t\t\tname: \"Yumbe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UG330\",\n\t\t\t\tname: \"Zombo\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"UA\",\n\t\tname: \"Ukraine\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"UA05\",\n\t\t\t\tname: \"Vinnychchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA07\",\n\t\t\t\tname: \"Volyn\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA09\",\n\t\t\t\tname: \"Luhanshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA12\",\n\t\t\t\tname: \"Dnipropetrovshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA14\",\n\t\t\t\tname: \"Donechchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA18\",\n\t\t\t\tname: \"Zhytomyrshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA21\",\n\t\t\t\tname: \"Zakarpattia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA23\",\n\t\t\t\tname: \"Zaporizhzhya\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA26\",\n\t\t\t\tname: \"Prykarpattia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA30\",\n\t\t\t\tname: \"Kyiv\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA32\",\n\t\t\t\tname: \"Kyivshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA35\",\n\t\t\t\tname: \"Kirovohradschyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA40\",\n\t\t\t\tname: \"Sevastopol\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA43\",\n\t\t\t\tname: \"Crimea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA46\",\n\t\t\t\tname: \"Lvivshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA48\",\n\t\t\t\tname: \"Mykolayivschyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA51\",\n\t\t\t\tname: \"Odeshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA53\",\n\t\t\t\tname: \"Poltavshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA56\",\n\t\t\t\tname: \"Rivnenshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA59\",\n\t\t\t\tname: \"Sumshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA61\",\n\t\t\t\tname: \"Ternopilshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA63\",\n\t\t\t\tname: \"Kharkivshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA65\",\n\t\t\t\tname: \"Khersonshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA68\",\n\t\t\t\tname: \"Khmelnychchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA71\",\n\t\t\t\tname: \"Cherkashchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA74\",\n\t\t\t\tname: \"Chernihivshchyna\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UA77\",\n\t\t\t\tname: \"Chernivtsi Oblast\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"AE\",\n\t\tname: \"United Arab Emirates\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"GB\",\n\t\tname: \"United Kingdom (UK)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"US\",\n\t\tname: \"United States (US)\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"AL\",\n\t\t\t\tname: \"Alabama\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AK\",\n\t\t\t\tname: \"Alaska\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AZ\",\n\t\t\t\tname: \"Arizona\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AR\",\n\t\t\t\tname: \"Arkansas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CA\",\n\t\t\t\tname: \"California\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CO\",\n\t\t\t\tname: \"Colorado\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"CT\",\n\t\t\t\tname: \"Connecticut\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DE\",\n\t\t\t\tname: \"Delaware\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"DC\",\n\t\t\t\tname: \"District of Columbia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"FL\",\n\t\t\t\tname: \"Florida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"GA\",\n\t\t\t\tname: \"Georgia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"HI\",\n\t\t\t\tname: \"Hawaii\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ID\",\n\t\t\t\tname: \"Idaho\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IL\",\n\t\t\t\tname: \"Illinois\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IN\",\n\t\t\t\tname: \"Indiana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"IA\",\n\t\t\t\tname: \"Iowa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KS\",\n\t\t\t\tname: \"Kansas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"KY\",\n\t\t\t\tname: \"Kentucky\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"LA\",\n\t\t\t\tname: \"Louisiana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ME\",\n\t\t\t\tname: \"Maine\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MD\",\n\t\t\t\tname: \"Maryland\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MA\",\n\t\t\t\tname: \"Massachusetts\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MI\",\n\t\t\t\tname: \"Michigan\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MN\",\n\t\t\t\tname: \"Minnesota\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MS\",\n\t\t\t\tname: \"Mississippi\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MO\",\n\t\t\t\tname: \"Missouri\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"MT\",\n\t\t\t\tname: \"Montana\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NE\",\n\t\t\t\tname: \"Nebraska\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NV\",\n\t\t\t\tname: \"Nevada\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NH\",\n\t\t\t\tname: \"New Hampshire\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NJ\",\n\t\t\t\tname: \"New Jersey\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NM\",\n\t\t\t\tname: \"New Mexico\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NY\",\n\t\t\t\tname: \"New York\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"NC\",\n\t\t\t\tname: \"North Carolina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ND\",\n\t\t\t\tname: \"North Dakota\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OH\",\n\t\t\t\tname: \"Ohio\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OK\",\n\t\t\t\tname: \"Oklahoma\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"OR\",\n\t\t\t\tname: \"Oregon\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"PA\",\n\t\t\t\tname: \"Pennsylvania\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"RI\",\n\t\t\t\tname: \"Rhode Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SC\",\n\t\t\t\tname: \"South Carolina\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"SD\",\n\t\t\t\tname: \"South Dakota\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TN\",\n\t\t\t\tname: \"Tennessee\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"TX\",\n\t\t\t\tname: \"Texas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UT\",\n\t\t\t\tname: \"Utah\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VT\",\n\t\t\t\tname: \"Vermont\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VA\",\n\t\t\t\tname: \"Virginia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WA\",\n\t\t\t\tname: \"Washington\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WV\",\n\t\t\t\tname: \"West Virginia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WI\",\n\t\t\t\tname: \"Wisconsin\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"WY\",\n\t\t\t\tname: \"Wyoming\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AA\",\n\t\t\t\tname: \"Armed Forces (AA)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AE\",\n\t\t\t\tname: \"Armed Forces (AE)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"AP\",\n\t\t\t\tname: \"Armed Forces (AP)\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"UM\",\n\t\tname: \"United States (US) Minor Outlying Islands\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"81\",\n\t\t\t\tname: \"Baker Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"84\",\n\t\t\t\tname: \"Howland Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"86\",\n\t\t\t\tname: \"Jarvis Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"67\",\n\t\t\t\tname: \"Johnston Atoll\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"89\",\n\t\t\t\tname: \"Kingman Reef\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"71\",\n\t\t\t\tname: \"Midway Atoll\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"76\",\n\t\t\t\tname: \"Navassa Island\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"95\",\n\t\t\t\tname: \"Palmyra Atoll\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"79\",\n\t\t\t\tname: \"Wake Island\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"UY\",\n\t\tname: \"Uruguay\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"UY-AR\",\n\t\t\t\tname: \"Artigas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-CA\",\n\t\t\t\tname: \"Canelones\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-CL\",\n\t\t\t\tname: \"Cerro Largo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-CO\",\n\t\t\t\tname: \"Colonia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-DU\",\n\t\t\t\tname: \"Durazno\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-FS\",\n\t\t\t\tname: \"Flores\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-FD\",\n\t\t\t\tname: \"Florida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-LA\",\n\t\t\t\tname: \"Lavalleja\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-MA\",\n\t\t\t\tname: \"Maldonado\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-MO\",\n\t\t\t\tname: \"Montevideo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-PA\",\n\t\t\t\tname: \"Paysandú\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-RN\",\n\t\t\t\tname: \"Río Negro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-RV\",\n\t\t\t\tname: \"Rivera\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-RO\",\n\t\t\t\tname: \"Rocha\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-SA\",\n\t\t\t\tname: \"Salto\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-SJ\",\n\t\t\t\tname: \"San José\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-SO\",\n\t\t\t\tname: \"Soriano\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-TA\",\n\t\t\t\tname: \"Tacuarembó\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"UY-TT\",\n\t\t\t\tname: \"Treinta y Tres\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"UZ\",\n\t\tname: \"Uzbekistan\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VU\",\n\t\tname: \"Vanuatu\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VA\",\n\t\tname: \"Vatican\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VE\",\n\t\tname: \"Venezuela\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"VE-A\",\n\t\t\t\tname: \"Capital\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-B\",\n\t\t\t\tname: \"Anzoátegui\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-C\",\n\t\t\t\tname: \"Apure\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-D\",\n\t\t\t\tname: \"Aragua\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-E\",\n\t\t\t\tname: \"Barinas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-F\",\n\t\t\t\tname: \"Bolívar\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-G\",\n\t\t\t\tname: \"Carabobo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-H\",\n\t\t\t\tname: \"Cojedes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-I\",\n\t\t\t\tname: \"Falcón\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-J\",\n\t\t\t\tname: \"Guárico\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-K\",\n\t\t\t\tname: \"Lara\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-L\",\n\t\t\t\tname: \"Mérida\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-M\",\n\t\t\t\tname: \"Miranda\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-N\",\n\t\t\t\tname: \"Monagas\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-O\",\n\t\t\t\tname: \"Nueva Esparta\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-P\",\n\t\t\t\tname: \"Portuguesa\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-R\",\n\t\t\t\tname: \"Sucre\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-S\",\n\t\t\t\tname: \"Táchira\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-T\",\n\t\t\t\tname: \"Trujillo\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-U\",\n\t\t\t\tname: \"Yaracuy\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-V\",\n\t\t\t\tname: \"Zulia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-W\",\n\t\t\t\tname: \"Federal Dependencies\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-X\",\n\t\t\t\tname: \"La Guaira (Vargas)\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-Y\",\n\t\t\t\tname: \"Delta Amacuro\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"VE-Z\",\n\t\t\t\tname: \"Amazonas\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"VN\",\n\t\tname: \"Vietnam\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VG\",\n\t\tname: \"Virgin Islands (British)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"VI\",\n\t\tname: \"Virgin Islands (US)\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"WF\",\n\t\tname: \"Wallis and Futuna\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"EH\",\n\t\tname: \"Western Sahara\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"YE\",\n\t\tname: \"Yemen\",\n\t\tprovinces: []\n\t},\n\t{\n\t\tcode: \"ZM\",\n\t\tname: \"Zambia\",\n\t\tprovinces: [\n\t\t\t{\n\t\t\t\tcode: \"ZM-01\",\n\t\t\t\tname: \"Western\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-02\",\n\t\t\t\tname: \"Central\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-03\",\n\t\t\t\tname: \"Eastern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-04\",\n\t\t\t\tname: \"Luapula\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-05\",\n\t\t\t\tname: \"Northern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-06\",\n\t\t\t\tname: \"North-Western\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-07\",\n\t\t\t\tname: \"Southern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-08\",\n\t\t\t\tname: \"Copperbelt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-09\",\n\t\t\t\tname: \"Lusaka\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: \"ZM-10\",\n\t\t\t\tname: \"Muchinga\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tcode: \"ZW\",\n\t\tname: \"Zimbabwe\",\n\t\tprovinces: []\n\t}\n];\n\n//#endregion\n//#region src/data/currency-codes.ts\nconst CURRENCY_CODES = [\n\t\"AED\",\n\t\"AFN\",\n\t\"ALL\",\n\t\"AMD\",\n\t\"ANG\",\n\t\"AOA\",\n\t\"ARS\",\n\t\"AUD\",\n\t\"AWG\",\n\t\"AZN\",\n\t\"BAM\",\n\t\"BBD\",\n\t\"BDT\",\n\t\"BGN\",\n\t\"BHD\",\n\t\"BIF\",\n\t\"BMD\",\n\t\"BND\",\n\t\"BOB\",\n\t\"BRL\",\n\t\"BSD\",\n\t\"BTC\",\n\t\"BTN\",\n\t\"BWP\",\n\t\"BYR\",\n\t\"BYN\",\n\t\"BZD\",\n\t\"CAD\",\n\t\"CDF\",\n\t\"CHF\",\n\t\"CLP\",\n\t\"CNY\",\n\t\"COP\",\n\t\"CRC\",\n\t\"CUC\",\n\t\"CUP\",\n\t\"CVE\",\n\t\"CZK\",\n\t\"DJF\",\n\t\"DKK\",\n\t\"DOP\",\n\t\"DZD\",\n\t\"EGP\",\n\t\"ERN\",\n\t\"ETB\",\n\t\"EUR\",\n\t\"FJD\",\n\t\"FKP\",\n\t\"GBP\",\n\t\"GEL\",\n\t\"GGP\",\n\t\"GHS\",\n\t\"GIP\",\n\t\"GMD\",\n\t\"GNF\",\n\t\"GTQ\",\n\t\"GYD\",\n\t\"HKD\",\n\t\"HNL\",\n\t\"HRK\",\n\t\"HTG\",\n\t\"HUF\",\n\t\"IDR\",\n\t\"ILS\",\n\t\"IMP\",\n\t\"INR\",\n\t\"IQD\",\n\t\"IRR\",\n\t\"IRT\",\n\t\"ISK\",\n\t\"JEP\",\n\t\"JMD\",\n\t\"JOD\",\n\t\"JPY\",\n\t\"KES\",\n\t\"KGS\",\n\t\"KHR\",\n\t\"KMF\",\n\t\"KPW\",\n\t\"KRW\",\n\t\"KWD\",\n\t\"KYD\",\n\t\"KZT\",\n\t\"LAK\",\n\t\"LBP\",\n\t\"LKR\",\n\t\"LRD\",\n\t\"LSL\",\n\t\"LYD\",\n\t\"MAD\",\n\t\"MDL\",\n\t\"MGA\",\n\t\"MKD\",\n\t\"MMK\",\n\t\"MNT\",\n\t\"MOP\",\n\t\"MRU\",\n\t\"MUR\",\n\t\"MVR\",\n\t\"MWK\",\n\t\"MXN\",\n\t\"MYR\",\n\t\"MZN\",\n\t\"NAD\",\n\t\"NGN\",\n\t\"NIO\",\n\t\"NOK\",\n\t\"NPR\",\n\t\"NZD\",\n\t\"OMR\",\n\t\"PAB\",\n\t\"PEN\",\n\t\"PGK\",\n\t\"PHP\",\n\t\"PKR\",\n\t\"PLN\",\n\t\"PRB\",\n\t\"PYG\",\n\t\"QAR\",\n\t\"RON\",\n\t\"RSD\",\n\t\"RUB\",\n\t\"RWF\",\n\t\"SAR\",\n\t\"SBD\",\n\t\"SCR\",\n\t\"SDG\",\n\t\"SEK\",\n\t\"SGD\",\n\t\"SHP\",\n\t\"SLL\",\n\t\"SOS\",\n\t\"SRD\",\n\t\"SSP\",\n\t\"STN\",\n\t\"SYP\",\n\t\"SZL\",\n\t\"THB\",\n\t\"TJS\",\n\t\"TMT\",\n\t\"TND\",\n\t\"TOP\",\n\t\"TRY\",\n\t\"TTD\",\n\t\"TWD\",\n\t\"TZS\",\n\t\"UAH\",\n\t\"UGX\",\n\t\"USD\",\n\t\"UYU\",\n\t\"UZS\",\n\t\"VEF\",\n\t\"VES\",\n\t\"VND\",\n\t\"VUV\",\n\t\"WST\",\n\t\"XAF\",\n\t\"XCD\",\n\t\"XOF\",\n\t\"XPF\",\n\t\"YER\",\n\t\"ZAR\",\n\t\"ZMW\"\n];\n\n//#endregion\n//#region src/data/currencies.ts\nconst CURRENCIES = [\n\t{\n\t\tcode: \"AED\",\n\t\tname: \"United Arab Emirates dirham\",\n\t\tsymbol: \"&#x62f;.&#x625;\"\n\t},\n\t{\n\t\tcode: \"AFN\",\n\t\tname: \"Afghan afghani\",\n\t\tsymbol: \"&#x60b;\"\n\t},\n\t{\n\t\tcode: \"ALL\",\n\t\tname: \"Albanian lek\",\n\t\tsymbol: \"L\"\n\t},\n\t{\n\t\tcode: \"AMD\",\n\t\tname: \"Armenian dram\",\n\t\tsymbol: \"AMD\"\n\t},\n\t{\n\t\tcode: \"ANG\",\n\t\tname: \"Netherlands Antillean guilder\",\n\t\tsymbol: \"&fnof;\"\n\t},\n\t{\n\t\tcode: \"AOA\",\n\t\tname: \"Angolan kwanza\",\n\t\tsymbol: \"Kz\"\n\t},\n\t{\n\t\tcode: \"ARS\",\n\t\tname: \"Argentine peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"AUD\",\n\t\tname: \"Australian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"AWG\",\n\t\tname: \"Aruban florin\",\n\t\tsymbol: \"Afl.\"\n\t},\n\t{\n\t\tcode: \"AZN\",\n\t\tname: \"Azerbaijani manat\",\n\t\tsymbol: \"&#8380;\"\n\t},\n\t{\n\t\tcode: \"BAM\",\n\t\tname: \"Bosnia and Herzegovina convertible mark\",\n\t\tsymbol: \"KM\"\n\t},\n\t{\n\t\tcode: \"BBD\",\n\t\tname: \"Barbadian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"BDT\",\n\t\tname: \"Bangladeshi taka\",\n\t\tsymbol: \"&#2547;&nbsp;\"\n\t},\n\t{\n\t\tcode: \"BGN\",\n\t\tname: \"Bulgarian lev\",\n\t\tsymbol: \"&#1083;&#1074;.\"\n\t},\n\t{\n\t\tcode: \"BHD\",\n\t\tname: \"Bahraini dinar\",\n\t\tsymbol: \".&#x62f;.&#x628;\"\n\t},\n\t{\n\t\tcode: \"BIF\",\n\t\tname: \"Burundian franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"BMD\",\n\t\tname: \"Bermudian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"BND\",\n\t\tname: \"Brunei dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"BOB\",\n\t\tname: \"Bolivian boliviano\",\n\t\tsymbol: \"Bs.\"\n\t},\n\t{\n\t\tcode: \"BRL\",\n\t\tname: \"Brazilian real\",\n\t\tsymbol: \"&#82;&#36;\"\n\t},\n\t{\n\t\tcode: \"BSD\",\n\t\tname: \"Bahamian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"BTC\",\n\t\tname: \"Bitcoin\",\n\t\tsymbol: \"&#3647;\"\n\t},\n\t{\n\t\tcode: \"BTN\",\n\t\tname: \"Bhutanese ngultrum\",\n\t\tsymbol: \"Nu.\"\n\t},\n\t{\n\t\tcode: \"BWP\",\n\t\tname: \"Botswana pula\",\n\t\tsymbol: \"P\"\n\t},\n\t{\n\t\tcode: \"BYR\",\n\t\tname: \"Belarusian ruble (old)\",\n\t\tsymbol: \"Br\"\n\t},\n\t{\n\t\tcode: \"BYN\",\n\t\tname: \"Belarusian ruble\",\n\t\tsymbol: \"Br\"\n\t},\n\t{\n\t\tcode: \"BZD\",\n\t\tname: \"Belize dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CAD\",\n\t\tname: \"Canadian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CDF\",\n\t\tname: \"Congolese franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"CHF\",\n\t\tname: \"Swiss franc\",\n\t\tsymbol: \"&#67;&#72;&#70;\"\n\t},\n\t{\n\t\tcode: \"CLP\",\n\t\tname: \"Chilean peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CNY\",\n\t\tname: \"Chinese yuan\",\n\t\tsymbol: \"&yen;\"\n\t},\n\t{\n\t\tcode: \"COP\",\n\t\tname: \"Colombian peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CRC\",\n\t\tname: \"Costa Rican col&oacute;n\",\n\t\tsymbol: \"&#x20a1;\"\n\t},\n\t{\n\t\tcode: \"CUC\",\n\t\tname: \"Cuban convertible peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CUP\",\n\t\tname: \"Cuban peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CVE\",\n\t\tname: \"Cape Verdean escudo\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"CZK\",\n\t\tname: \"Czech koruna\",\n\t\tsymbol: \"&#75;&#269;\"\n\t},\n\t{\n\t\tcode: \"DJF\",\n\t\tname: \"Djiboutian franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"DKK\",\n\t\tname: \"Danish krone\",\n\t\tsymbol: \"kr.\"\n\t},\n\t{\n\t\tcode: \"DOP\",\n\t\tname: \"Dominican peso\",\n\t\tsymbol: \"RD&#36;\"\n\t},\n\t{\n\t\tcode: \"DZD\",\n\t\tname: \"Algerian dinar\",\n\t\tsymbol: \"&#x62f;.&#x62c;\"\n\t},\n\t{\n\t\tcode: \"EGP\",\n\t\tname: \"Egyptian pound\",\n\t\tsymbol: \"EGP\"\n\t},\n\t{\n\t\tcode: \"ERN\",\n\t\tname: \"Eritrean nakfa\",\n\t\tsymbol: \"Nfk\"\n\t},\n\t{\n\t\tcode: \"ETB\",\n\t\tname: \"Ethiopian birr\",\n\t\tsymbol: \"Br\"\n\t},\n\t{\n\t\tcode: \"EUR\",\n\t\tname: \"Euro\",\n\t\tsymbol: \"&euro;\"\n\t},\n\t{\n\t\tcode: \"FJD\",\n\t\tname: \"Fijian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"FKP\",\n\t\tname: \"Falkland Islands pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"GBP\",\n\t\tname: \"Pound sterling\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"GEL\",\n\t\tname: \"Georgian lari\",\n\t\tsymbol: \"&#x20be;\"\n\t},\n\t{\n\t\tcode: \"GGP\",\n\t\tname: \"Guernsey pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"GHS\",\n\t\tname: \"Ghana cedi\",\n\t\tsymbol: \"&#x20b5;\"\n\t},\n\t{\n\t\tcode: \"GIP\",\n\t\tname: \"Gibraltar pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"GMD\",\n\t\tname: \"Gambian dalasi\",\n\t\tsymbol: \"D\"\n\t},\n\t{\n\t\tcode: \"GNF\",\n\t\tname: \"Guinean franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"GTQ\",\n\t\tname: \"Guatemalan quetzal\",\n\t\tsymbol: \"Q\"\n\t},\n\t{\n\t\tcode: \"GYD\",\n\t\tname: \"Guyanese dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"HKD\",\n\t\tname: \"Hong Kong dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"HNL\",\n\t\tname: \"Honduran lempira\",\n\t\tsymbol: \"L\"\n\t},\n\t{\n\t\tcode: \"HRK\",\n\t\tname: \"Croatian kuna\",\n\t\tsymbol: \"kn\"\n\t},\n\t{\n\t\tcode: \"HTG\",\n\t\tname: \"Haitian gourde\",\n\t\tsymbol: \"G\"\n\t},\n\t{\n\t\tcode: \"HUF\",\n\t\tname: \"Hungarian forint\",\n\t\tsymbol: \"&#70;&#116;\"\n\t},\n\t{\n\t\tcode: \"IDR\",\n\t\tname: \"Indonesian rupiah\",\n\t\tsymbol: \"Rp\"\n\t},\n\t{\n\t\tcode: \"ILS\",\n\t\tname: \"Israeli new shekel\",\n\t\tsymbol: \"&#8362;\"\n\t},\n\t{\n\t\tcode: \"IMP\",\n\t\tname: \"Manx pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"INR\",\n\t\tname: \"Indian rupee\",\n\t\tsymbol: \"&#8377;\"\n\t},\n\t{\n\t\tcode: \"IQD\",\n\t\tname: \"Iraqi dinar\",\n\t\tsymbol: \"&#x62f;.&#x639;\"\n\t},\n\t{\n\t\tcode: \"IRR\",\n\t\tname: \"Iranian rial\",\n\t\tsymbol: \"&#xfdfc;\"\n\t},\n\t{\n\t\tcode: \"IRT\",\n\t\tname: \"Iranian toman\",\n\t\tsymbol: \"&#x062A;&#x0648;&#x0645;&#x0627;&#x0646;\"\n\t},\n\t{\n\t\tcode: \"ISK\",\n\t\tname: \"Icelandic kr&oacute;na\",\n\t\tsymbol: \"kr.\"\n\t},\n\t{\n\t\tcode: \"JEP\",\n\t\tname: \"Jersey pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"JMD\",\n\t\tname: \"Jamaican dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"JOD\",\n\t\tname: \"Jordanian dinar\",\n\t\tsymbol: \"&#x62f;.&#x627;\"\n\t},\n\t{\n\t\tcode: \"JPY\",\n\t\tname: \"Japanese yen\",\n\t\tsymbol: \"&yen;\"\n\t},\n\t{\n\t\tcode: \"KES\",\n\t\tname: \"Kenyan shilling\",\n\t\tsymbol: \"KSh\"\n\t},\n\t{\n\t\tcode: \"KGS\",\n\t\tname: \"Kyrgyzstani som\",\n\t\tsymbol: \"&#x441;&#x43e;&#x43c;\"\n\t},\n\t{\n\t\tcode: \"KHR\",\n\t\tname: \"Cambodian riel\",\n\t\tsymbol: \"&#x17db;\"\n\t},\n\t{\n\t\tcode: \"KMF\",\n\t\tname: \"Comorian franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"KPW\",\n\t\tname: \"North Korean won\",\n\t\tsymbol: \"&#x20a9;\"\n\t},\n\t{\n\t\tcode: \"KRW\",\n\t\tname: \"South Korean won\",\n\t\tsymbol: \"&#8361;\"\n\t},\n\t{\n\t\tcode: \"KWD\",\n\t\tname: \"Kuwaiti dinar\",\n\t\tsymbol: \"&#x62f;.&#x643;\"\n\t},\n\t{\n\t\tcode: \"KYD\",\n\t\tname: \"Cayman Islands dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"KZT\",\n\t\tname: \"Kazakhstani tenge\",\n\t\tsymbol: \"&#8376;\"\n\t},\n\t{\n\t\tcode: \"LAK\",\n\t\tname: \"Lao kip\",\n\t\tsymbol: \"&#8365;\"\n\t},\n\t{\n\t\tcode: \"LBP\",\n\t\tname: \"Lebanese pound\",\n\t\tsymbol: \"&#x644;.&#x644;\"\n\t},\n\t{\n\t\tcode: \"LKR\",\n\t\tname: \"Sri Lankan rupee\",\n\t\tsymbol: \"&#xdbb;&#xdd4;\"\n\t},\n\t{\n\t\tcode: \"LRD\",\n\t\tname: \"Liberian dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"LSL\",\n\t\tname: \"Lesotho loti\",\n\t\tsymbol: \"L\"\n\t},\n\t{\n\t\tcode: \"LYD\",\n\t\tname: \"Libyan dinar\",\n\t\tsymbol: \"&#x62f;.&#x644;\"\n\t},\n\t{\n\t\tcode: \"MAD\",\n\t\tname: \"Moroccan dirham\",\n\t\tsymbol: \"&#x62f;.&#x645;.\"\n\t},\n\t{\n\t\tcode: \"MDL\",\n\t\tname: \"Moldovan leu\",\n\t\tsymbol: \"MDL\"\n\t},\n\t{\n\t\tcode: \"MGA\",\n\t\tname: \"Malagasy ariary\",\n\t\tsymbol: \"Ar\"\n\t},\n\t{\n\t\tcode: \"MKD\",\n\t\tname: \"Macedonian denar\",\n\t\tsymbol: \"&#x434;&#x435;&#x43d;\"\n\t},\n\t{\n\t\tcode: \"MMK\",\n\t\tname: \"Burmese kyat\",\n\t\tsymbol: \"Ks\"\n\t},\n\t{\n\t\tcode: \"MNT\",\n\t\tname: \"Mongolian t&ouml;gr&ouml;g\",\n\t\tsymbol: \"&#x20ae;\"\n\t},\n\t{\n\t\tcode: \"MOP\",\n\t\tname: \"Macanese pataca\",\n\t\tsymbol: \"P\"\n\t},\n\t{\n\t\tcode: \"MRU\",\n\t\tname: \"Mauritanian ouguiya\",\n\t\tsymbol: \"UM\"\n\t},\n\t{\n\t\tcode: \"MUR\",\n\t\tname: \"Mauritian rupee\",\n\t\tsymbol: \"&#x20a8;\"\n\t},\n\t{\n\t\tcode: \"MVR\",\n\t\tname: \"Maldivian rufiyaa\",\n\t\tsymbol: \".&#x783;\"\n\t},\n\t{\n\t\tcode: \"MWK\",\n\t\tname: \"Malawian kwacha\",\n\t\tsymbol: \"MK\"\n\t},\n\t{\n\t\tcode: \"MXN\",\n\t\tname: \"Mexican peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"MYR\",\n\t\tname: \"Malaysian ringgit\",\n\t\tsymbol: \"&#82;&#77;\"\n\t},\n\t{\n\t\tcode: \"MZN\",\n\t\tname: \"Mozambican metical\",\n\t\tsymbol: \"MT\"\n\t},\n\t{\n\t\tcode: \"NAD\",\n\t\tname: \"Namibian dollar\",\n\t\tsymbol: \"N&#36;\"\n\t},\n\t{\n\t\tcode: \"NGN\",\n\t\tname: \"Nigerian naira\",\n\t\tsymbol: \"&#8358;\"\n\t},\n\t{\n\t\tcode: \"NIO\",\n\t\tname: \"Nicaraguan c&oacute;rdoba\",\n\t\tsymbol: \"C&#36;\"\n\t},\n\t{\n\t\tcode: \"NOK\",\n\t\tname: \"Norwegian krone\",\n\t\tsymbol: \"&#107;&#114;\"\n\t},\n\t{\n\t\tcode: \"NPR\",\n\t\tname: \"Nepalese rupee\",\n\t\tsymbol: \"&#8360;\"\n\t},\n\t{\n\t\tcode: \"NZD\",\n\t\tname: \"New Zealand dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"OMR\",\n\t\tname: \"Omani rial\",\n\t\tsymbol: \"&#x631;.&#x639;.\"\n\t},\n\t{\n\t\tcode: \"PAB\",\n\t\tname: \"Panamanian balboa\",\n\t\tsymbol: \"B/.\"\n\t},\n\t{\n\t\tcode: \"PEN\",\n\t\tname: \"Sol\",\n\t\tsymbol: \"S/\"\n\t},\n\t{\n\t\tcode: \"PGK\",\n\t\tname: \"Papua New Guinean kina\",\n\t\tsymbol: \"K\"\n\t},\n\t{\n\t\tcode: \"PHP\",\n\t\tname: \"Philippine peso\",\n\t\tsymbol: \"&#8369;\"\n\t},\n\t{\n\t\tcode: \"PKR\",\n\t\tname: \"Pakistani rupee\",\n\t\tsymbol: \"&#8360;\"\n\t},\n\t{\n\t\tcode: \"PLN\",\n\t\tname: \"Polish z&#x142;oty\",\n\t\tsymbol: \"&#122;&#322;\"\n\t},\n\t{\n\t\tcode: \"PRB\",\n\t\tname: \"Transnistrian ruble\",\n\t\tsymbol: \"&#x440;.\"\n\t},\n\t{\n\t\tcode: \"PYG\",\n\t\tname: \"Paraguayan guaran&iacute;\",\n\t\tsymbol: \"&#8370;\"\n\t},\n\t{\n\t\tcode: \"QAR\",\n\t\tname: \"Qatari riyal\",\n\t\tsymbol: \"&#x631;.&#x642;\"\n\t},\n\t{\n\t\tcode: \"RON\",\n\t\tname: \"Romanian leu\",\n\t\tsymbol: \"lei\"\n\t},\n\t{\n\t\tcode: \"RSD\",\n\t\tname: \"Serbian dinar\",\n\t\tsymbol: \"&#1088;&#1089;&#1076;\"\n\t},\n\t{\n\t\tcode: \"RUB\",\n\t\tname: \"Russian ruble\",\n\t\tsymbol: \"&#8381;\"\n\t},\n\t{\n\t\tcode: \"RWF\",\n\t\tname: \"Rwandan franc\",\n\t\tsymbol: \"Fr\"\n\t},\n\t{\n\t\tcode: \"SAR\",\n\t\tname: \"Saudi riyal\",\n\t\tsymbol: \"&#x631;.&#x633;\"\n\t},\n\t{\n\t\tcode: \"SBD\",\n\t\tname: \"Solomon Islands dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"SCR\",\n\t\tname: \"Seychellois rupee\",\n\t\tsymbol: \"&#x20a8;\"\n\t},\n\t{\n\t\tcode: \"SDG\",\n\t\tname: \"Sudanese pound\",\n\t\tsymbol: \"&#x62c;.&#x633;.\"\n\t},\n\t{\n\t\tcode: \"SEK\",\n\t\tname: \"Swedish krona\",\n\t\tsymbol: \"&#107;&#114;\"\n\t},\n\t{\n\t\tcode: \"SGD\",\n\t\tname: \"Singapore dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"SHP\",\n\t\tname: \"Saint Helena pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"SLL\",\n\t\tname: \"Sierra Leonean leone\",\n\t\tsymbol: \"Le\"\n\t},\n\t{\n\t\tcode: \"SOS\",\n\t\tname: \"Somali shilling\",\n\t\tsymbol: \"Sh\"\n\t},\n\t{\n\t\tcode: \"SRD\",\n\t\tname: \"Surinamese dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"SSP\",\n\t\tname: \"South Sudanese pound\",\n\t\tsymbol: \"&pound;\"\n\t},\n\t{\n\t\tcode: \"STN\",\n\t\tname: \"S&atilde;o Tom&eacute; and Pr&iacute;ncipe dobra\",\n\t\tsymbol: \"Db\"\n\t},\n\t{\n\t\tcode: \"SYP\",\n\t\tname: \"Syrian pound\",\n\t\tsymbol: \"&#x644;.&#x633;\"\n\t},\n\t{\n\t\tcode: \"SZL\",\n\t\tname: \"Swazi lilangeni\",\n\t\tsymbol: \"E\"\n\t},\n\t{\n\t\tcode: \"THB\",\n\t\tname: \"Thai baht\",\n\t\tsymbol: \"&#3647;\"\n\t},\n\t{\n\t\tcode: \"TJS\",\n\t\tname: \"Tajikistani somoni\",\n\t\tsymbol: \"&#x405;&#x41c;\"\n\t},\n\t{\n\t\tcode: \"TMT\",\n\t\tname: \"Turkmenistan manat\",\n\t\tsymbol: \"m\"\n\t},\n\t{\n\t\tcode: \"TND\",\n\t\tname: \"Tunisian dinar\",\n\t\tsymbol: \"&#x62f;.&#x62a;\"\n\t},\n\t{\n\t\tcode: \"TOP\",\n\t\tname: \"Tongan pa&#x2bb;anga\",\n\t\tsymbol: \"T&#36;\"\n\t},\n\t{\n\t\tcode: \"TRY\",\n\t\tname: \"Turkish lira\",\n\t\tsymbol: \"&#8378;\"\n\t},\n\t{\n\t\tcode: \"TTD\",\n\t\tname: \"Trinidad and Tobago dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"TWD\",\n\t\tname: \"New Taiwan dollar\",\n\t\tsymbol: \"&#78;&#84;&#36;\"\n\t},\n\t{\n\t\tcode: \"TZS\",\n\t\tname: \"Tanzanian shilling\",\n\t\tsymbol: \"Sh\"\n\t},\n\t{\n\t\tcode: \"UAH\",\n\t\tname: \"Ukrainian hryvnia\",\n\t\tsymbol: \"&#8372;\"\n\t},\n\t{\n\t\tcode: \"UGX\",\n\t\tname: \"Ugandan shilling\",\n\t\tsymbol: \"UGX\"\n\t},\n\t{\n\t\tcode: \"USD\",\n\t\tname: \"United States (US) dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"UYU\",\n\t\tname: \"Uruguayan peso\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"UZS\",\n\t\tname: \"Uzbekistani som\",\n\t\tsymbol: \"UZS\"\n\t},\n\t{\n\t\tcode: \"VEF\",\n\t\tname: \"Venezuelan bol&iacute;var (2008–2018)\",\n\t\tsymbol: \"Bs F\"\n\t},\n\t{\n\t\tcode: \"VES\",\n\t\tname: \"Venezuelan bol&iacute;var\",\n\t\tsymbol: \"Bs.\"\n\t},\n\t{\n\t\tcode: \"VND\",\n\t\tname: \"Vietnamese &#x111;&#x1ed3;ng\",\n\t\tsymbol: \"&#8363;\"\n\t},\n\t{\n\t\tcode: \"VUV\",\n\t\tname: \"Vanuatu vatu\",\n\t\tsymbol: \"Vt\"\n\t},\n\t{\n\t\tcode: \"WST\",\n\t\tname: \"Samoan t&#x101;l&#x101;\",\n\t\tsymbol: \"T\"\n\t},\n\t{\n\t\tcode: \"XAF\",\n\t\tname: \"Central African CFA franc\",\n\t\tsymbol: \"CFA\"\n\t},\n\t{\n\t\tcode: \"XCD\",\n\t\tname: \"East Caribbean dollar\",\n\t\tsymbol: \"&#36;\"\n\t},\n\t{\n\t\tcode: \"XOF\",\n\t\tname: \"West African CFA franc\",\n\t\tsymbol: \"CFA\"\n\t},\n\t{\n\t\tcode: \"XPF\",\n\t\tname: \"CFP franc\",\n\t\tsymbol: \"XPF\"\n\t},\n\t{\n\t\tcode: \"YER\",\n\t\tname: \"Yemeni rial\",\n\t\tsymbol: \"&#xfdfc;\"\n\t},\n\t{\n\t\tcode: \"ZAR\",\n\t\tname: \"South African rand\",\n\t\tsymbol: \"&#82;\"\n\t},\n\t{\n\t\tcode: \"ZMW\",\n\t\tname: \"Zambian kwacha\",\n\t\tsymbol: \"ZK\"\n\t}\n];\n\n//#endregion\nexport { COUNTRIES, COUNTRIES_WITH_PROVINCES, CURRENCIES, CURRENCY_CODES };\n//# sourceMappingURL=data-D1JR5eYJ.js.map","import { AmountSchema, CitySchema, CountryCodeSchema, EmailSchema, HexCodeSchema, MetadataSchema, NumericIdSchema, PercentageSchema, PhoneSchema, PostcodeSchema, ProvinceCodeSchema, QuantitySchema, REGEX_HEXADECIMAL, RequiredStringSchema, STANDARD_ID_LENGTH, StringIdSchema, StringSchema, TimestampSchema, UnixTimestampSchema, UrlSchema } from \"./common-BpZpqdB4.js\";\nimport { COUNTRY_CODES } from \"./telephone-country-codes-y2h4A5zW.js\";\nimport { CURRENCY_CODES } from \"./data-D1JR5eYJ.js\";\nimport z$1 from \"zod/v4\";\n\n//#region src/internal/schema.ts\nconst CurrencyFormat = z$1.object({\n\tcurrencyCode: z$1.enum(CURRENCY_CODES),\n\tcurrencySymbol: RequiredStringSchema,\n\tcurrencyMinorUnit: QuantitySchema,\n\tcurrencyDecimalSeparator: StringSchema,\n\tcurrencyThousandSeparator: StringSchema,\n\tcurrencyPrefix: StringSchema,\n\tcurrencySuffix: StringSchema\n});\n\n//#endregion\n//#region src/internal/user/constants.ts\nconst KIZLO_TEMP_EMAIL_DOMAIN = \"kizlo.com\";\nconst USER_TYPE_BUSINESS = \"business\";\nconst USER_TYPE_INDIVIDUAL = \"individual\";\nconst USER_TYPES = [USER_TYPE_INDIVIDUAL, USER_TYPE_BUSINESS];\nconst USER_STATUS_ACTIVE = \"active\";\nconst USER_STATUS_INACTIVE = \"inactive\";\nconst USER_STATUS_SUSPENDED = \"suspended\";\nconst USER_STATUS_DELETED = \"deleted\";\nconst USER_STATUS_PENDING = \"pending\";\nconst USER_STATUSES = [\n\tUSER_STATUS_ACTIVE,\n\tUSER_STATUS_INACTIVE,\n\tUSER_STATUS_SUSPENDED,\n\tUSER_STATUS_DELETED,\n\tUSER_STATUS_PENDING\n];\nconst USER_GENDER_MALE = \"male\";\nconst USER_GENDER_FEMALE = \"female\";\nconst USER_GENDER_OTHER = \"other\";\nconst USER_GENDERS = [\n\t\"male\",\n\t\"female\",\n\t\"other\"\n];\n\n//#endregion\n//#region src/internal/auth/constants.ts\nconst SESSION_TYPE_USER = \"user\";\nconst SESSION_TYPE_ANONYMOUS = \"anonymous\";\nconst SESSION_TYPES = [SESSION_TYPE_ANONYMOUS, SESSION_TYPE_USER];\nconst SESSION_EXPIRATION = \"7 days\";\nconst SESSION_CACHE_PREFIX = \"session\";\nconst AUTH_TOKEN_AUDIENCE = \"storefront\";\nconst COOKIE_NAME_PREFIX = \"__Secure_kizlo\";\nconst AUTH_TOKEN_COOKIE_NAME = `${COOKIE_NAME_PREFIX}.auth_token`;\nconst REFRESH_TOKEN_COOKIE_NAME = `${COOKIE_NAME_PREFIX}.refresh_token`;\nconst OAUTH_STATE_COOKIE_NAME = `${COOKIE_NAME_PREFIX}.state`;\nconst OAUTH_VERIFIER_COOKIE_NAME = `${COOKIE_NAME_PREFIX}.verifier`;\nconst PROVIDER_EMAIL = \"email\";\nconst PROVIDER_PHONE = \"phone\";\nconst PROVIDER_GOOGLE = \"google\";\nconst PROVIDER_FACEBOOK = \"facebook\";\nconst PROVIDER_ANONYMOUS = \"anonymous\";\nconst OAUTH_PROVIDERS = [PROVIDER_GOOGLE, PROVIDER_FACEBOOK];\nconst PROVIDERS = [\n\tPROVIDER_EMAIL,\n\tPROVIDER_PHONE,\n\tPROVIDER_GOOGLE,\n\tPROVIDER_FACEBOOK\n];\nconst CHANNEL_SMS = \"sms\";\nconst CHANNEL_EMAIL = \"email\";\nconst CHANNEL_WHATSAPP = \"whatsapp\";\nconst CHANNELS = [\n\tCHANNEL_EMAIL,\n\tCHANNEL_SMS,\n\tCHANNEL_WHATSAPP\n];\nconst VERIFICATION_OTP_TOKEN_LENGTH = 6;\nconst VERIFICATION_LINK_TOKEN_LENGTH = 256;\nconst VERIFICATION_MAX_ATTEMPTS_PER_TOKEN = 3;\nconst VERIFICATION_TOKEN_EXPIRATION = \"10 minutes\";\nconst VERIFICATION_MAX_RESEND_PER_SESSION = 6;\nconst VERIFICATION_RESEND_INTERVAL = \"30 seconds\";\nconst VERIFICATION_SESSION_EXPIRATION = \"1 hour\";\nconst VERIFICATION_METHOD_OTP = \"otp\";\nconst VERIFICATION_METHOD_LINK = \"link\";\nconst RECOMMENDED_VERIFICATION_METHOD = VERIFICATION_METHOD_OTP;\nconst VERIFICATION_METHODS = [VERIFICATION_METHOD_OTP, VERIFICATION_METHOD_LINK];\nconst VERIFICATION_TYPE_SIGN_IN = \"signin\";\nconst VERIFICATION_TYPE_SIGN_UP = \"signup\";\nconst VERIFICATION_TYPE_RECOVERY = \"recovery\";\nconst VERIFICATION_TYPE_EMAIL_CHANGE = \"email_change\";\nconst VERIFICATION_TYPE_PHONE_CHANGE = \"phone_change\";\nconst VERIFICATION_TYPES = [\n\tVERIFICATION_TYPE_SIGN_IN,\n\tVERIFICATION_TYPE_SIGN_UP,\n\tVERIFICATION_TYPE_RECOVERY,\n\tVERIFICATION_TYPE_EMAIL_CHANGE,\n\tVERIFICATION_TYPE_PHONE_CHANGE\n];\nconst VERIFICATION_ACTION_PLACEHOLDER = \"action\";\nconst VERIFICATION_URL_TOKEN_PLACEHOLDER = \"token\";\nconst ORDER_CONFIRMATION_URL_TOKEN_PLACEHOLDER = \"id\";\n\n//#endregion\n//#region src/internal/auth/schema.ts\nconst AuthKeyPair = z$1.object({\n\tid: StringIdSchema,\n\tpublicKey: RequiredStringSchema,\n\tprivateKey: RequiredStringSchema,\n\tcreated: UnixTimestampSchema,\n\talg: RequiredStringSchema\n});\nconst AuthTokenClaims = z$1.object({\n\tkid: StringIdSchema,\n\tsid: StringIdSchema,\n\tiss: UrlSchema,\n\tiat: UnixTimestampSchema,\n\taud: RequiredStringSchema,\n\texp: UnixTimestampSchema,\n\tproperties: z$1.object({\n\t\ttype: z$1.enum(SESSION_TYPES),\n\t\tuser_id: z$1.number()\n\t})\n});\n\n//#endregion\n//#region src/internal/auth/utils.ts\nfunction getAuthTokenCookieName(storeId) {\n\treturn `${AUTH_TOKEN_COOKIE_NAME}.${storeId}`;\n}\n\n//#endregion\n//#region src/internal/tenant/constants.ts\nconst TENANT_STATUS_ACTIVE = \"active\";\nconst TENANT_STATUS_INACTIVE = \"inactive\";\nconst TENANT_STATUS_SUSPENDED = \"suspended\";\nconst TENANT_STATUS_DELETED = \"deleted\";\nconst TENANT_STATUS_PENDING = \"pending\";\nconst TENANT_STATUSES = [\n\tTENANT_STATUS_ACTIVE,\n\tTENANT_STATUS_INACTIVE,\n\tTENANT_STATUS_SUSPENDED,\n\tTENANT_STATUS_DELETED,\n\tTENANT_STATUS_PENDING\n];\n\n//#endregion\n//#region src/internal/tenant/schema.ts\nconst Tenant = z$1.object({\n\tid: StringIdSchema,\n\tstatus: z$1.enum(TENANT_STATUSES),\n\tfirstName: RequiredStringSchema,\n\tlastName: StringSchema,\n\temail: EmailSchema,\n\tcreatedAt: TimestampSchema,\n\tupdatedAt: TimestampSchema.nullable(),\n\tdeletedAt: TimestampSchema.nullable()\n});\nconst ClientConfig = z$1.object({\n\tversion: AmountSchema,\n\tframework: RequiredStringSchema,\n\tpages: z$1.object({\n\t\thome: UrlSchema,\n\t\tsignIn: UrlSchema,\n\t\tsignUp: UrlSchema,\n\t\temailVerification: UrlSchema,\n\t\torderConfirmation: UrlSchema\n\t}),\n\tpaymentAdapters: z$1.array(z$1.object({\n\t\tid: RequiredStringSchema,\n\t\tname: RequiredStringSchema,\n\t\tpriority: AmountSchema\n\t}))\n});\n\n//#endregion\n//#region src/internal/store/schema.ts\nconst StoreOrigin = z$1.object({\n\tname: RequiredStringSchema,\n\turl: UrlSchema\n});\nconst TenantStore = z$1.object({\n\tid: StringIdSchema,\n\tname: RequiredStringSchema,\n\twordpressUrl: UrlSchema,\n\tsecretKey: StringIdSchema,\n\tpublishableKey: StringIdSchema,\n\torigins: z$1.array(z$1.url()),\n\tconsumerKey: RequiredStringSchema.nullable(),\n\tconsumerSecret: RequiredStringSchema.nullable(),\n\tauthKeyPair: AuthKeyPair,\n\ttenantId: StringIdSchema,\n\tcreatedAt: TimestampSchema,\n\tupdatedAt: TimestampSchema.nullable(),\n\tdeletedAt: TimestampSchema.nullable()\n});\nconst StoreAddress = z$1.object({\n\taddress1: StringIdSchema,\n\taddress2: StringIdSchema,\n\tcity: StringIdSchema,\n\tpostcode: PostcodeSchema,\n\tprovince: ProvinceCodeSchema,\n\tcountry: CountryCodeSchema\n});\nconst StoreGeneralConfig = z$1.object({\n\tname: RequiredStringSchema.catch(\"Acme\"),\n\tphone: PhoneSchema.nullable().catch(null),\n\temail: EmailSchema.nullable().catch(null),\n\tallowedCountries: z$1.array(z$1.enum(COUNTRY_CODES)),\n\tbusinessName: RequiredStringSchema.catch(\"Acme LLC.\"),\n\taddress: StoreAddress\n});\nconst StoreBrandConfig = z$1.object({\n\tdefaultLogo: UrlSchema.catch(\"https://public-storage.kizlo.store/acme-logo.png\"),\n\tsquareLogo: UrlSchema.catch(\"https://public-storage.kizlo.store/acme-icon.png\"),\n\tprimaryColor: HexCodeSchema.catch(\"#000000\"),\n\tsecondaryColor: HexCodeSchema.catch(\"#ffffff\"),\n\taccentColor: HexCodeSchema.catch(\"#d1d1d1\"),\n\tslogan: RequiredStringSchema.nullable().catch(null),\n\tshortDescription: RequiredStringSchema.nullable().catch(null)\n});\nconst StoreInvoiceConfig = z$1.object({\n\tdocuments: RequiredStringSchema.nullable().catch(null),\n\tsignatary: UrlSchema.nullable().catch(null)\n});\nconst TenantStoreConfig = z$1.object({\n\tid: StringIdSchema,\n\twordpressUrl: UrlSchema,\n\tsecretKey: StringIdSchema,\n\tpublishableKey: StringIdSchema,\n\torigins: z$1.array(z$1.url()),\n\tconsumerKey: RequiredStringSchema.nullable(),\n\tconsumerSecret: RequiredStringSchema.nullable(),\n\tauthKeyPair: AuthKeyPair,\n\tgeneral: StoreGeneralConfig,\n\tinvoice: StoreInvoiceConfig,\n\tbrand: StoreBrandConfig,\n\tcreatedAt: TimestampSchema,\n\tupdatedAt: TimestampSchema.nullable(),\n\tdeletedAt: TimestampSchema.nullable()\n});\n\n//#endregion\n//#region src/internal/product/constants.ts\nconst PRODUCT_ORDER_BY_ID = \"id\";\nconst PRODUCT_ORDER_BY_TITLE = \"title\";\nconst PRODUCT_ORDER_BY_SLUG = \"slug\";\nconst PRODUCT_ORDER_BY_PRICE = \"price\";\nconst PRODUCT_ORDER_BY_POPULARITY = \"popularity\";\nconst PRODUCT_ORDER_BY_DATE = \"date\";\nconst PRODUCT_ORDER_BY_MODIFIED = \"modified\";\nconst PRODUCT_ORDER_BY_COMMENT_COUNT = \"comment_count\";\nconst PRODUCT_ORDER_BY_MENU_ORDER = \"menu_order\";\nconst PRODUCT_ORDER_BY_RATING = \"rating\";\nconst PRODUCT_ORDER_BY_INCLUDE = \"include\";\nconst PRODUCT_ORDER_BY = [\n\tPRODUCT_ORDER_BY_ID,\n\tPRODUCT_ORDER_BY_TITLE,\n\tPRODUCT_ORDER_BY_SLUG,\n\tPRODUCT_ORDER_BY_PRICE,\n\tPRODUCT_ORDER_BY_POPULARITY,\n\tPRODUCT_ORDER_BY_DATE,\n\tPRODUCT_ORDER_BY_MODIFIED,\n\tPRODUCT_ORDER_BY_COMMENT_COUNT,\n\tPRODUCT_ORDER_BY_MENU_ORDER,\n\tPRODUCT_ORDER_BY_RATING,\n\tPRODUCT_ORDER_BY_INCLUDE\n];\nconst PRODUCT_TYPE_SIMPLE = \"simple\";\nconst PRODUCT_TYPE_GROUPED = \"grouped\";\nconst PRODUCT_TYPE_EXTERNAL = \"external\";\nconst PRODUCT_TYPE_VARIABLE = \"variable\";\nconst PRODUCT_TYPE_VARIATION = \"variation\";\nconst PRODUCTS_TYPES = [\n\tPRODUCT_TYPE_SIMPLE,\n\tPRODUCT_TYPE_GROUPED,\n\tPRODUCT_TYPE_EXTERNAL,\n\tPRODUCT_TYPE_VARIABLE,\n\tPRODUCT_TYPE_VARIATION\n];\nconst PRODUCT_STATUS_DRAFT = \"draft\";\nconst PRODUCT_STATUS_PUBLISH = \"publish\";\nconst PRODUCT_STATUS_PRIVATE = \"private\";\nconst PRODUCT_STATUS_PENDING = \"pending\";\nconst PRODUCT_STATUSES = [\n\tPRODUCT_STATUS_DRAFT,\n\tPRODUCT_STATUS_PUBLISH,\n\tPRODUCT_STATUS_PRIVATE,\n\tPRODUCT_STATUS_PENDING\n];\nconst COLLECTION_STATUS_INSTOCK = \"instock\";\nconst COLLECTION_STATUS_OUTOFSTOCK = \"outofstock\";\nconst COLLECTION_STATUS_ONBACKORDER = \"onbackorder\";\nconst COLLECTION_STATUSES = [\n\tCOLLECTION_STATUS_INSTOCK,\n\tCOLLECTION_STATUS_OUTOFSTOCK,\n\tCOLLECTION_STATUS_ONBACKORDER\n];\nconst COLLECTION_CATEGORY_TYPE_ANCESTOR = \"ancestor\";\nconst COLLECTION_CATEGORY_TYPE_PATENT = \"parent\";\nconst COLLECTION_CATEGORY_TYPE_CHILD = \"child\";\nconst COLLECTION_CATEGORY_TYPES = [\n\tCOLLECTION_CATEGORY_TYPE_ANCESTOR,\n\tCOLLECTION_CATEGORY_TYPE_PATENT,\n\tCOLLECTION_CATEGORY_TYPE_CHILD\n];\n\n//#endregion\n//#region src/internal/payment/constants.ts\nconst PAYMENT_STATUSES = [\n\t\"pending\",\n\t\"processing\",\n\t\"success\",\n\t\"failed\"\n];\nconst paymentAdapterTypes = [\"cash_on_delivery\", \"payment_gateway\"];\n\n//#endregion\n//#region src/internal/cart/constants.ts\nconst CART_ITEM_STATUSES = [\n\t\"insufficient_stock\",\n\t\"low_stock\",\n\t\"out_of_stock\",\n\t\"unavailable\",\n\t\"available\"\n];\nconst CART_COUPON_TYPES = [\"fixed_cart\", \"percent\"];\n\n//#endregion\n//#region src/internal/order/constants.ts\nconst ORDER_STATUS_PENDING = \"pending\";\nconst ORDER_STATUS_FAILED = \"failed\";\nconst ORDER_STATUS_PROCESSING = \"processing\";\nconst ORDER_STATUS_ON_HOLD = \"on-hold\";\nconst ORDER_STATUS_COMPLETED = \"completed\";\nconst ORDER_STATUS_CANCELED = \"cancelled\";\nconst ORDER_STATUS_REFUNDED = \"refunded\";\nconst ORDER_STATUSES = [\n\tORDER_STATUS_PENDING,\n\tORDER_STATUS_FAILED,\n\tORDER_STATUS_PROCESSING,\n\tORDER_STATUS_ON_HOLD,\n\tORDER_STATUS_COMPLETED,\n\tORDER_STATUS_CANCELED,\n\tORDER_STATUS_REFUNDED\n];\nconst ORDER_ORDER_BY_DATE = \"date\";\nconst ORDER_ORDER_BY_MODIFIED = \"modified\";\nconst ORDER_ORDER_BY_ID = \"id\";\nconst ORDER_ORDER_BY_INCLUDE = \"include\";\nconst ORDER_ORDER_BY_TITLE = \"title\";\nconst ORDER_ORDER_BY_SLUG = \"slug\";\nconst ORDER_ORDER_BYS = [\n\tORDER_ORDER_BY_DATE,\n\tORDER_ORDER_BY_MODIFIED,\n\tORDER_ORDER_BY_ID,\n\tORDER_ORDER_BY_INCLUDE,\n\tORDER_ORDER_BY_TITLE,\n\tORDER_ORDER_BY_SLUG\n];\nconst ORDER_INITIAL_STATUS = \"holding\";\nconst ORDER_PAYMENT_TYPE_COD = \"cod\";\nconst ORDER_PAYMENT_TYPE_PREPAID = \"prepaid\";\nconst ORDER_PAYMENT_TYPES = [ORDER_PAYMENT_TYPE_COD, ORDER_PAYMENT_TYPE_PREPAID];\n\n//#endregion\n//#region src/internal/order/schema.ts\nconst BaseOrderAddress = z$1.object({\n\tfirstName: RequiredStringSchema,\n\tlastName: StringSchema,\n\tphone: PhoneSchema,\n\tcompany: StringSchema.nullable(),\n\taddress1: RequiredStringSchema,\n\taddress2: StringSchema.nullable(),\n\tcity: RequiredStringSchema,\n\tpostcode: PostcodeSchema,\n\tprovince: ProvinceCodeSchema,\n\tcountry: CountryCodeSchema\n});\nconst OrderBillingAddress = BaseOrderAddress.extend({\n\temail: EmailSchema,\n\ttaxId: StringSchema.nullable()\n});\nconst OrderShippingAddress = BaseOrderAddress.extend({});\nconst OrderInvoice = z$1.object({\n\tid: StringIdSchema,\n\tname: RequiredStringSchema,\n\turl: UrlSchema,\n\tsequence: AmountSchema,\n\tsize: AmountSchema,\n\tnumber: RequiredStringSchema\n});\nconst OrderTaxLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: RequiredStringSchema,\n\trate: PercentageSchema,\n\tamount: AmountSchema\n});\nconst OrderLineItemTotals = z$1.object({\n\tunitPrice: AmountSchema,\n\tgrossAmount: AmountSchema,\n\tdiscountAmount: AmountSchema,\n\tdiscountTaxAmount: AmountSchema,\n\tnetAmount: AmountSchema,\n\ttaxAmount: AmountSchema,\n\ttotal: AmountSchema\n});\nconst OrderLineItemImage = z$1.object({\n\tsrc: UrlSchema,\n\talt: StringSchema\n});\nconst OrderLineItem = z$1.object({\n\tid: NumericIdSchema,\n\tproductId: NumericIdSchema,\n\tvariationId: NumericIdSchema.nullable(),\n\tname: StringSchema,\n\thsCode: StringSchema.nullable(),\n\tsku: StringSchema.nullable(),\n\tquantity: QuantitySchema,\n\timage: OrderLineItemImage,\n\ttaxLines: z$1.array(OrderTaxLine),\n\ttotals: OrderLineItemTotals\n});\nconst OrderCouponLine = z$1.object({\n\tid: NumericIdSchema,\n\ttype: z$1.enum(CART_COUPON_TYPES),\n\tlabel: RequiredStringSchema,\n\tamount: AmountSchema,\n\ttaxAmount: AmountSchema\n});\nconst OrderShippingLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: RequiredStringSchema,\n\ttaxLines: z$1.array(OrderTaxLine),\n\tamount: AmountSchema,\n\ttaxAmount: AmountSchema,\n\ttotal: AmountSchema\n});\nconst OrderFeeLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: RequiredStringSchema,\n\tamount: AmountSchema,\n\ttaxAmount: AmountSchema,\n\ttaxes: z$1.array(z$1.object({\n\t\tid: NumericIdSchema,\n\t\tamount: AmountSchema\n\t}))\n});\nconst OrderTotals = z$1.object({\n\tdiscountTotal: AmountSchema,\n\tdiscountTaxTotal: AmountSchema,\n\tshippingTotal: AmountSchema,\n\tshippingTaxTotal: AmountSchema,\n\tfeeTotal: AmountSchema,\n\tfeeTaxTotal: AmountSchema,\n\ttaxTotal: AmountSchema,\n\ttotal: AmountSchema\n});\nconst Order = z$1.object({\n\tid: NumericIdSchema,\n\tstatus: z$1.enum(ORDER_STATUSES),\n\tcustomerId: NumericIdSchema,\n\tcheckoutId: RequiredStringSchema,\n\ttransactionId: StringIdSchema,\n\tpricesIncludeTax: z$1.boolean(),\n\tbillingAddress: OrderBillingAddress,\n\tshippingAddress: OrderShippingAddress,\n\tinvoices: z$1.array(OrderInvoice),\n\tlineItems: z$1.array(OrderLineItem),\n\tcouponLines: z$1.array(OrderCouponLine),\n\tshippingLines: z$1.array(OrderShippingLine),\n\tfeeLines: z$1.array(OrderFeeLine),\n\tpaymentMethodName: RequiredStringSchema,\n\tpaymentMethodType: z$1.enum(ORDER_PAYMENT_TYPES),\n\ttotals: OrderTotals,\n\tcurrencyFormat: CurrencyFormat,\n\tcreatedAt: TimestampSchema,\n\tupdatedAt: TimestampSchema.nullable(),\n\tmetadata: z$1.array(MetadataSchema)\n});\n\n//#endregion\n//#region src/internal/customer/schema.ts\nconst BaseAddressSchema = z$1.object({\n\tfirstName: RequiredStringSchema,\n\tlastName: StringSchema,\n\taddress1: RequiredStringSchema,\n\taddress2: StringSchema.nullable(),\n\tcity: CitySchema,\n\tcompany: StringSchema.nullable(),\n\tcountry: CountryCodeSchema,\n\tphone: PhoneSchema,\n\tpostcode: PostcodeSchema,\n\tprovince: ProvinceCodeSchema\n});\nconst ShippingAddress = BaseAddressSchema.extend({\n\tid: StringIdSchema,\n\tisDefault: z$1.boolean()\n});\nconst BillingAddress = BaseAddressSchema.extend({\n\temail: EmailSchema,\n\ttaxId: RequiredStringSchema.nullable()\n});\n\n//#endregion\n//#region src/internal/customer/constants.ts\nconst SHIPPING_ADDRESS_TYPE_HOME = \"home\";\nconst SHIPPING_ADDRESS_TYPE_OFFICE = \"office\";\nconst SHIPPING_ADDRESS_TYPE_OTHER = \"other\";\nconst SHIPPING_ADDRESS_TYPES = [\n\tSHIPPING_ADDRESS_TYPE_HOME,\n\tSHIPPING_ADDRESS_TYPE_OFFICE,\n\tSHIPPING_ADDRESS_TYPE_OTHER\n];\nconst BUSINESS_TYPE_LLC = \"llc\";\nconst BUSINESS_TYPE_CORPORATION = \"corporation\";\nconst BUSINESS_TYPE_PARTNERSHIP = \"partnership\";\nconst BUSINESS_TYPE_SOLE_PROPRIETORSHIP = \"sole_proprietorship\";\nconst BUSINESS_TYPE_LLP = \"llp\";\nconst BUSINESS_TYPE_PLC = \"plc\";\nconst BUSINESS_TYPE_GMB_H = \"gmbh\";\nconst BUSINESS_TYPE_PTY_LTD = \"pty_ltd\";\nconst BUSINESS_TYPE_OTHER = \"other\";\nconst BUSINESS_TYPES = [\n\tBUSINESS_TYPE_LLC,\n\tBUSINESS_TYPE_CORPORATION,\n\tBUSINESS_TYPE_PARTNERSHIP,\n\tBUSINESS_TYPE_SOLE_PROPRIETORSHIP,\n\tBUSINESS_TYPE_LLP,\n\tBUSINESS_TYPE_PLC,\n\tBUSINESS_TYPE_GMB_H,\n\tBUSINESS_TYPE_PTY_LTD,\n\tBUSINESS_TYPE_OTHER\n];\nconst CUSTOMER_SHIPPING_ADDRESSES_LIMIT = 10;\n\n//#endregion\n//#region src/internal/checkout/constants.ts\nconst CHECKOUT_STATUSES = [\n\t\"idle\",\n\t\"processing\",\n\t\"succeeded\",\n\t\"canceled\",\n\t\"expired\"\n];\nconst CHECKOUT_CONFIRMATION_EVENT_NAME = \"checkout-confirmation\";\nconst CHECKOUT_CONFIRMATION_EVENT_TIMEOUT = \"1 minute\";\nconst PAYMENT_VERIFICATION_EVENT_NAME = \"payment-confirmation\";\nconst PAYMENT_VERIFICATION_EVENT_TIMEOUT = \"2 minutes\";\nconst CHECKOUT_FAILURE_CAUSES = [\n\t\"checkout_confirmation_timeout\",\n\t\"payment_verification_timeout\",\n\t\"payment_failed\",\n\t\"payment_pending\",\n\t\"payment_processing\",\n\t\"insufficient_stock\"\n];\nconst STANDARD_RETRY_POLICY = {\n\tretries: {\n\t\tlimit: 10,\n\t\tdelay: \"1 minute\",\n\t\tbackoff: \"exponential\"\n\t},\n\ttimeout: \"10 minutes\"\n};\nconst VERIFY_PAYMENT_RETRY_POLICY = {\n\tretries: {\n\t\tlimit: 10,\n\t\tdelay: \"30 minute\",\n\t\tbackoff: \"exponential\"\n\t},\n\ttimeout: \"10 minutes\"\n};\n\n//#endregion\n//#region src/internal/api/constants.ts\nconst API_KEY_HEADER_KEY = \"api-key\";\nconst API_PUBLISHABLE_KEY_HEADER_KEY = \"api-publishable-key\";\nconst API_TENANT_ID_HEADER_KEY = \"api-tenant-id\";\nconst API_KEY_PREFIX = \"kzapk\";\nconst API_KEY_SEPARATOR = \"_\";\nconst API_KEY_CHECKSUM_LENGTH = 8;\nconst AUTHORIZATION_HEADER = \"authorization\";\nconst AUTHORIZATION_HEADER_PREFIX = \"bearer\";\nconst API_BACKEND_DOMAIN = \"kizlo.store\";\n\n//#endregion\n//#region src/internal/api/schema.ts\nconst ApiHeaders = z$1.object({\n\t[API_PUBLISHABLE_KEY_HEADER_KEY]: z$1.string().min(1),\n\t[AUTHORIZATION_HEADER]: z$1.string().startsWith(AUTHORIZATION_HEADER_PREFIX).min(1).optional()\n});\nconst ConnInfo = z$1.object({\n\tid: StringIdSchema,\n\tcity: CitySchema.nullable(),\n\torigin: UrlSchema.nullable(),\n\ttimezone: RequiredStringSchema,\n\tpostcode: PostcodeSchema.nullable(),\n\tcountry: CountryCodeSchema.nullable(),\n\tprovince: ProvinceCodeSchema.nullable(),\n\tuserAgent: RequiredStringSchema.nullable(),\n\tipAddress: RequiredStringSchema.nullable()\n});\nconst INVALID_API_URL_ERROR = `URL must be of the form https://<${STANDARD_ID_LENGTH}hex>.${API_BACKEND_DOMAIN}`;\nconst ApiUrlSchema = z$1.url({\n\tprotocol: /^https$/,\n\thostname: /* @__PURE__ */ new RegExp(`^${REGEX_HEXADECIMAL.source.replace(/^\\^|\\$$/g, \"\")}\\\\.${API_BACKEND_DOMAIN.replace(/\\./g, \"\\\\.\")}$`),\n\terror: INVALID_API_URL_ERROR\n}).transform((url, ctx) => {\n\tconst id = new URL(url).hostname.split(\".\")[0];\n\tif (!id) {\n\t\tctx.addIssue({\n\t\t\tcode: \"custom\",\n\t\t\tmessage: INVALID_API_URL_ERROR\n\t\t});\n\t\treturn z$1.NEVER;\n\t}\n\treturn {\n\t\traw: url,\n\t\tid\n\t};\n});\n\n//#endregion\nexport { API_BACKEND_DOMAIN, API_KEY_CHECKSUM_LENGTH, API_KEY_HEADER_KEY, API_KEY_PREFIX, API_KEY_SEPARATOR, API_PUBLISHABLE_KEY_HEADER_KEY, API_TENANT_ID_HEADER_KEY, AUTHORIZATION_HEADER, AUTHORIZATION_HEADER_PREFIX, AUTH_TOKEN_AUDIENCE, AUTH_TOKEN_COOKIE_NAME, ApiHeaders, ApiUrlSchema, AuthKeyPair, AuthTokenClaims, BUSINESS_TYPES, BUSINESS_TYPE_CORPORATION, BUSINESS_TYPE_GMB_H, BUSINESS_TYPE_LLC, BUSINESS_TYPE_LLP, BUSINESS_TYPE_OTHER, BUSINESS_TYPE_PARTNERSHIP, BUSINESS_TYPE_PLC, BUSINESS_TYPE_PTY_LTD, BUSINESS_TYPE_SOLE_PROPRIETORSHIP, BillingAddress, CART_COUPON_TYPES, CART_ITEM_STATUSES, CHANNELS, CHANNEL_EMAIL, CHANNEL_SMS, CHANNEL_WHATSAPP, CHECKOUT_CONFIRMATION_EVENT_NAME, CHECKOUT_CONFIRMATION_EVENT_TIMEOUT, CHECKOUT_FAILURE_CAUSES, CHECKOUT_STATUSES, COLLECTION_CATEGORY_TYPES, COLLECTION_CATEGORY_TYPE_ANCESTOR, COLLECTION_CATEGORY_TYPE_CHILD, COLLECTION_CATEGORY_TYPE_PATENT, COLLECTION_STATUSES, COLLECTION_STATUS_INSTOCK, COLLECTION_STATUS_ONBACKORDER, COLLECTION_STATUS_OUTOFSTOCK, COOKIE_NAME_PREFIX, CUSTOMER_SHIPPING_ADDRESSES_LIMIT, ClientConfig, ConnInfo, CurrencyFormat, KIZLO_TEMP_EMAIL_DOMAIN, OAUTH_PROVIDERS, OAUTH_STATE_COOKIE_NAME, OAUTH_VERIFIER_COOKIE_NAME, ORDER_CONFIRMATION_URL_TOKEN_PLACEHOLDER, ORDER_INITIAL_STATUS, ORDER_ORDER_BYS, ORDER_ORDER_BY_DATE, ORDER_ORDER_BY_ID, ORDER_ORDER_BY_INCLUDE, ORDER_ORDER_BY_MODIFIED, ORDER_ORDER_BY_SLUG, ORDER_ORDER_BY_TITLE, ORDER_PAYMENT_TYPES, ORDER_PAYMENT_TYPE_COD, ORDER_PAYMENT_TYPE_PREPAID, ORDER_STATUSES, ORDER_STATUS_CANCELED, ORDER_STATUS_COMPLETED, ORDER_STATUS_FAILED, ORDER_STATUS_ON_HOLD, ORDER_STATUS_PENDING, ORDER_STATUS_PROCESSING, ORDER_STATUS_REFUNDED, Order, OrderBillingAddress, OrderCouponLine, OrderFeeLine, OrderInvoice, OrderLineItem, OrderLineItemImage, OrderLineItemTotals, OrderShippingAddress, OrderShippingLine, OrderTaxLine, OrderTotals, PAYMENT_STATUSES, PAYMENT_VERIFICATION_EVENT_NAME, PAYMENT_VERIFICATION_EVENT_TIMEOUT, PRODUCTS_TYPES, PRODUCT_ORDER_BY, PRODUCT_ORDER_BY_COMMENT_COUNT, PRODUCT_ORDER_BY_DATE, PRODUCT_ORDER_BY_ID, PRODUCT_ORDER_BY_INCLUDE, PRODUCT_ORDER_BY_MENU_ORDER, PRODUCT_ORDER_BY_MODIFIED, PRODUCT_ORDER_BY_POPULARITY, PRODUCT_ORDER_BY_PRICE, PRODUCT_ORDER_BY_RATING, PRODUCT_ORDER_BY_SLUG, PRODUCT_ORDER_BY_TITLE, PRODUCT_STATUSES, PRODUCT_STATUS_DRAFT, PRODUCT_STATUS_PENDING, PRODUCT_STATUS_PRIVATE, PRODUCT_STATUS_PUBLISH, PRODUCT_TYPE_EXTERNAL, PRODUCT_TYPE_GROUPED, PRODUCT_TYPE_SIMPLE, PRODUCT_TYPE_VARIABLE, PRODUCT_TYPE_VARIATION, PROVIDERS, PROVIDER_ANONYMOUS, PROVIDER_EMAIL, PROVIDER_FACEBOOK, PROVIDER_GOOGLE, PROVIDER_PHONE, RECOMMENDED_VERIFICATION_METHOD, REFRESH_TOKEN_COOKIE_NAME, SESSION_CACHE_PREFIX, SESSION_EXPIRATION, SESSION_TYPES, SESSION_TYPE_ANONYMOUS, SESSION_TYPE_USER, SHIPPING_ADDRESS_TYPES, SHIPPING_ADDRESS_TYPE_HOME, SHIPPING_ADDRESS_TYPE_OFFICE, SHIPPING_ADDRESS_TYPE_OTHER, STANDARD_RETRY_POLICY, ShippingAddress, StoreAddress, StoreBrandConfig, StoreGeneralConfig, StoreInvoiceConfig, StoreOrigin, TENANT_STATUSES, TENANT_STATUS_ACTIVE, TENANT_STATUS_DELETED, TENANT_STATUS_INACTIVE, TENANT_STATUS_PENDING, TENANT_STATUS_SUSPENDED, Tenant, TenantStore, TenantStoreConfig, USER_GENDERS, USER_GENDER_FEMALE, USER_GENDER_MALE, USER_GENDER_OTHER, USER_STATUSES, USER_STATUS_ACTIVE, USER_STATUS_DELETED, USER_STATUS_INACTIVE, USER_STATUS_PENDING, USER_STATUS_SUSPENDED, USER_TYPES, USER_TYPE_BUSINESS, USER_TYPE_INDIVIDUAL, VERIFICATION_ACTION_PLACEHOLDER, VERIFICATION_LINK_TOKEN_LENGTH, VERIFICATION_MAX_ATTEMPTS_PER_TOKEN, VERIFICATION_MAX_RESEND_PER_SESSION, VERIFICATION_METHODS, VERIFICATION_METHOD_LINK, VERIFICATION_METHOD_OTP, VERIFICATION_OTP_TOKEN_LENGTH, VERIFICATION_RESEND_INTERVAL, VERIFICATION_SESSION_EXPIRATION, VERIFICATION_TOKEN_EXPIRATION, VERIFICATION_TYPES, VERIFICATION_TYPE_EMAIL_CHANGE, VERIFICATION_TYPE_PHONE_CHANGE, VERIFICATION_TYPE_RECOVERY, VERIFICATION_TYPE_SIGN_IN, VERIFICATION_TYPE_SIGN_UP, VERIFICATION_URL_TOKEN_PLACEHOLDER, VERIFY_PAYMENT_RETRY_POLICY, getAuthTokenCookieName, paymentAdapterTypes };\n//# sourceMappingURL=internal-BA8ESJq3.js.map","import { AmountSchema, Api, BigStringSchema, CitySchema, CountryCodeSchema, EmailSchema, MetadataSchema, NumericIdSchema, PasswordSchema, PercentageSchema, PhoneSchema, PostcodeSchema, PriceSchema, ProvinceCodeSchema, QuantitySchema, RequiredStringSchema, SlugSchema, StringIdSchema, StringSchema, TimestampSchema, UnixTimestampSchema, UrlSchema } from \"./common-BpZpqdB4.js\";\nimport \"./telephone-country-codes-y2h4A5zW.js\";\nimport \"./data-D1JR5eYJ.js\";\nimport { BUSINESS_TYPES, CART_COUPON_TYPES, CART_ITEM_STATUSES, CHANNEL_EMAIL, CHANNEL_SMS, CHANNEL_WHATSAPP, CHECKOUT_FAILURE_CAUSES, CHECKOUT_STATUSES, COLLECTION_CATEGORY_TYPES, COLLECTION_STATUSES, ORDER_ORDER_BYS, ORDER_PAYMENT_TYPES, ORDER_STATUSES, PAYMENT_STATUSES, PRODUCTS_TYPES, PRODUCT_ORDER_BY, PRODUCT_STATUSES, PROVIDERS, PROVIDER_EMAIL, PROVIDER_PHONE, RECOMMENDED_VERIFICATION_METHOD, SHIPPING_ADDRESS_TYPES, TenantStore, TenantStoreConfig, USER_GENDERS, USER_STATUSES, USER_TYPES, VERIFICATION_METHODS, VERIFICATION_METHOD_OTP, VERIFICATION_TYPES, VERIFICATION_TYPE_EMAIL_CHANGE, VERIFICATION_TYPE_PHONE_CHANGE, VERIFICATION_TYPE_RECOVERY, VERIFICATION_TYPE_SIGN_IN, VERIFICATION_TYPE_SIGN_UP, paymentAdapterTypes } from \"./internal-BA8ESJq3.js\";\nimport z$1 from \"zod/v4\";\n\n//#region src/api/auth/schemas.ts\nconst User = z$1.object({\n\tid: NumericIdSchema,\n\ttype: z$1.enum(USER_TYPES),\n\tstatus: z$1.enum(USER_STATUSES),\n\tfirst_name: RequiredStringSchema,\n\tlast_name: StringSchema,\n\temail: EmailSchema,\n\tphone: PhoneSchema.nullable(),\n\timage: StringSchema.nullable(),\n\tgender: z$1.enum(USER_GENDERS).nullable(),\n\tdob: UnixTimestampSchema.nullable(),\n\temail_verified_at: UnixTimestampSchema.nullable(),\n\tphone_verified_at: UnixTimestampSchema.nullable(),\n\tcreated_at: UnixTimestampSchema,\n\tupdated_at: UnixTimestampSchema.nullable()\n});\nconst BaseSession = z$1.object({\n\tid: StringIdSchema,\n\tcity: RequiredStringSchema.nullable(),\n\tprovince: RequiredStringSchema.nullable(),\n\tpostcode: RequiredStringSchema.nullable(),\n\tcountry: CountryCodeSchema.nullable(),\n\tcreated_at: UnixTimestampSchema,\n\tupdated_at: UnixTimestampSchema.nullable(),\n\texpired_at: UnixTimestampSchema.nullable()\n});\nconst AnonymousSession = BaseSession.extend({ type: z$1.literal(\"anonymous\") });\nconst UserSession = BaseSession.extend({\n\ttype: z$1.literal(\"user\"),\n\tuser_id: NumericIdSchema,\n\taccount_type: z$1.enum(USER_TYPES)\n});\nconst Session = z$1.discriminatedUnion(\"type\", [AnonymousSession, UserSession]);\nconst Cookie = z$1.object({\n\tname: z$1.string(),\n\tvalue: z$1.string(),\n\toptions: z$1.object({\n\t\tmax_age: z$1.number().optional(),\n\t\texpires: UnixTimestampSchema.optional(),\n\t\tdomain: z$1.string().optional(),\n\t\tpath: z$1.string().optional(),\n\t\thttp_only: z$1.boolean().optional(),\n\t\tsecure: z$1.boolean().optional(),\n\t\tpartitioned: z$1.boolean().optional(),\n\t\tpriority: z$1.enum([\n\t\t\t\"low\",\n\t\t\t\"medium\",\n\t\t\t\"high\"\n\t\t]).optional(),\n\t\tsame_site: z$1.enum([\n\t\t\t\"lax\",\n\t\t\t\"strict\",\n\t\t\t\"none\"\n\t\t]).or(z$1.boolean()).optional()\n\t})\n});\n\n//#endregion\n//#region src/api/auth/authorize.ts\nconst authAuthorizeErrors = Api.defineErrorPreset({ unauthorized: Api.errorPreset.unauthorized });\nconst AuthAuthorizeResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/session.ts\nconst authSessionErrors = Api.defineErrorPreset({});\nconst AuthSessionResponse = Session.nullable();\nconst AuthSessionListResponse = z$1.array(Session);\n\n//#endregion\n//#region src/api/shared/date.ts\nconst toUnixEpoch = (value) => {\n\tif (value === null) return null;\n\tif (value === void 0) return void 0;\n\tif (value instanceof Date) return value.getTime();\n\treturn new Date(value).getTime();\n};\n\n//#endregion\n//#region src/api/shared/schema.ts\nconst ApiPaginationMeta = z$1.object({\n\tpage: QuantitySchema,\n\ttotal_items: QuantitySchema,\n\ttotal_pages: QuantitySchema,\n\tnext_page: QuantitySchema.nullable(),\n\tprev_page: QuantitySchema.nullable(),\n\thas_next_page: z$1.boolean(),\n\thas_prev_page: z$1.boolean()\n});\nconst createPaginatedSchema = (schema) => {\n\treturn z$1.object({\n\t\titems: z$1.array(schema),\n\t\tmeta: ApiPaginationMeta\n\t});\n};\nconst BaseApiPaginationParams = z$1.object({\n\tpage: QuantitySchema.optional(),\n\tsearch: StringSchema.optional(),\n\tper_page: QuantitySchema.max(100).optional(),\n\torder: z$1.enum([\"asc\", \"desc\"]).optional(),\n\texcludes: z$1.array(NumericIdSchema).optional(),\n\tincludes: z$1.array(NumericIdSchema).optional(),\n\toffset: QuantitySchema.optional()\n});\nconst ApiCurrencyFormat = z$1.object({\n\tcurrency_code: StringSchema,\n\tcurrency_symbol: StringSchema,\n\tcurrency_minor_unit: z$1.number(),\n\tcurrency_decimal_separator: StringSchema,\n\tcurrency_thousand_separator: StringSchema,\n\tcurrency_prefix: StringSchema,\n\tcurrency_suffix: StringSchema\n});\nconst ApiClientConfig = z$1.object({\n\tversion: RequiredStringSchema,\n\tframework: RequiredStringSchema,\n\tpages: z$1.object({\n\t\thome: UrlSchema,\n\t\tsign_in: UrlSchema,\n\t\tsign_up: UrlSchema,\n\t\temail_verification: UrlSchema,\n\t\torder_confirmation: UrlSchema\n\t}),\n\tpayment_adapters: z$1.array(z$1.object({\n\t\tid: RequiredStringSchema,\n\t\ttype: z$1.enum(paymentAdapterTypes),\n\t\tname: RequiredStringSchema,\n\t\tpriority: AmountSchema\n\t}))\n});\nconst ApiPayload = (params) => {\n\treturn z$1.object({\n\t\tconfig: ApiClientConfig,\n\t\tparams\n\t});\n};\n\n//#endregion\n//#region src/api/shared/mapper.ts\nfunction mapApiPaginationMetadata(data) {\n\treturn {\n\t\tpage: data.page,\n\t\ttotal_pages: data.totalPages,\n\t\ttotal_items: data.totalItems,\n\t\tnext_page: data.nextPage,\n\t\tprev_page: data.prevPage,\n\t\thas_next_page: data.hasNextPage,\n\t\thas_prev_page: data.hasPrevPage\n\t};\n}\n\n//#endregion\n//#region src/api/auth/signin.ts\nconst BaseSignIn = z$1.object({ provider: z$1.enum(PROVIDERS) });\nconst EmailProvider$1 = BaseSignIn.extend({\n\tprovider: z$1.literal(PROVIDER_EMAIL),\n\temail: EmailSchema,\n\tpassword: z$1.string().optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_EMAIL]).default(CHANNEL_EMAIL).optional(),\n\t\tverification: z$1.enum(VERIFICATION_METHODS).default(RECOMMENDED_VERIFICATION_METHOD).optional()\n\t}))\n});\nconst PhoneProvider$1 = BaseSignIn.extend({\n\tprovider: z$1.literal(PROVIDER_PHONE),\n\tphone: PhoneSchema,\n\tpassword: z$1.string().optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_SMS, CHANNEL_WHATSAPP]).default(CHANNEL_SMS).optional(),\n\t\tverification: z$1.literal(VERIFICATION_METHOD_OTP).optional()\n\t}))\n});\nconst AuthSignInParams = z$1.discriminatedUnion(\"provider\", [EmailProvider$1, PhoneProvider$1]);\nconst AuthSignInPayload = ApiPayload(AuthSignInParams);\nconst authSignInErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\talready_signed_in: Api.errorPreset.already_signed_in,\n\tuser_not_found: Api.errorPreset.user_not_found,\n\tinvalid_password: Api.errorPreset.invalid_password\n});\nconst AuthSignInResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/signout.ts\nconst authSignOutErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\talready_signed_out: Api.errorPreset.already_signed_out\n});\nconst AuthSignOutResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/signup.ts\nconst BaseSignUpSchema = z$1.object({\n\tprovider: z$1.enum(PROVIDERS),\n\ttype: z$1.enum(USER_TYPES),\n\tfirstName: RequiredStringSchema,\n\tlastName: StringSchema\n});\nconst PhoneProvider = BaseSignUpSchema.extend({\n\tprovider: z$1.literal(PROVIDER_PHONE),\n\tphone: PhoneSchema,\n\tpassword: StringSchema.optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_SMS, CHANNEL_WHATSAPP]).default(CHANNEL_SMS).optional(),\n\t\tverification: z$1.enum([VERIFICATION_METHOD_OTP]).default(VERIFICATION_METHOD_OTP).optional()\n\t}))\n});\nconst EmailProvider = BaseSignUpSchema.extend({\n\tprovider: z$1.literal(PROVIDER_EMAIL),\n\temail: EmailSchema,\n\tpassword: StringSchema.optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_EMAIL]).default(CHANNEL_EMAIL).optional(),\n\t\tverification: z$1.enum(VERIFICATION_METHODS).default(RECOMMENDED_VERIFICATION_METHOD).optional()\n\t}))\n});\nconst AuthSignUpParams = z$1.discriminatedUnion(\"provider\", [EmailProvider, PhoneProvider]);\nconst AuthSignUpPayload = ApiPayload(AuthSignUpParams);\nconst authSignUpErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\talready_signed_in: Api.errorPreset.already_signed_in,\n\tuser_already_exist: Api.errorPreset.user_already_exist\n});\nconst AuthSignUpResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/verify.ts\nconst BaseVerification = z$1.object({\n\ttoken: z$1.string(),\n\ttype: z$1.enum(VERIFICATION_TYPES)\n});\nconst SignInVerification = BaseVerification.extend({ type: z$1.literal(VERIFICATION_TYPE_SIGN_IN) });\nconst SignUpVerification = BaseVerification.extend({ type: z$1.literal(VERIFICATION_TYPE_SIGN_UP) });\nconst RecoveryVerification = BaseVerification.extend({\n\ttype: z$1.literal(VERIFICATION_TYPE_RECOVERY),\n\tpassword: RequiredStringSchema\n});\nconst EmailChangeVerification = BaseVerification.extend({ type: z$1.literal(VERIFICATION_TYPE_EMAIL_CHANGE) });\nconst PhoneChangeVerification = BaseVerification.extend({ type: z$1.literal(VERIFICATION_TYPE_PHONE_CHANGE) });\nconst AuthVerifyParams = z$1.discriminatedUnion(\"type\", [\n\tSignInVerification,\n\tSignUpVerification,\n\tRecoveryVerification,\n\tEmailChangeVerification,\n\tPhoneChangeVerification\n]);\nconst AuthVerifyPayload = ApiPayload(AuthVerifyParams);\nconst authVerifyErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\talready_signed_in: Api.errorPreset.already_signed_in,\n\tuser_not_found: Api.errorPreset.user_not_found,\n\tuser_already_exist: Api.errorPreset.user_already_exist,\n\tweak_password: Api.errorPreset.weak_password,\n\taccount_already_exist: Api.errorPreset.account_already_exist,\n\tinvalid_token: {\n\t\tcode: \"KIZLO_INVALID_TOKEN\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Verification token invalid.\"\n\t},\n\tverification_not_found: {\n\t\tcode: \"KIZLO_VERIFICATION_NOT_FOUND\",\n\t\tstatus: \"notFound\",\n\t\tmessage: \"Verification not found.\"\n\t},\n\tmax_attempts_exceeded: {\n\t\tcode: \"KIZLO_MAX_ATTEMPTS_EXCEEDED\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"You have exceeded the maximum failed attempts. Please request a new token instead.\"\n\t},\n\ttoken_expired: {\n\t\tcode: \"KIZLO_TOKEN_EXPIRED\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Verification token expired.\"\n\t}\n});\nconst AuthVerifyResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/resend.ts\nconst AuthResendParams = z$1.object({ type: z$1.enum(VERIFICATION_TYPES) });\nconst AuthResendPayload = ApiPayload(AuthResendParams);\nconst authResendErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tmaximum_resend_exceeded: {\n\t\tcode: \"KIZLO_MAXIMUM_RESEND_EXCEEDED\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Maximum resend exceeded.\"\n\t},\n\tpending_interval: {\n\t\tcode: \"KIZLO_PENDING_INTERVAL\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Pending interval\"\n\t},\n\tverification_session_not_found: {\n\t\tcode: \"KIZLO_VERIFICATION_SESSION_NOT_FOUND\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Verification session not found\"\n\t}\n});\nconst AuthResendResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/recover.ts\nconst BaseRecover = z$1.object({ provider: z$1.enum([PROVIDER_EMAIL, PROVIDER_PHONE]) });\nconst EmailRecover = BaseRecover.extend({\n\tprovider: z$1.literal(PROVIDER_EMAIL),\n\temail: EmailSchema,\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_EMAIL]).default(CHANNEL_EMAIL).optional(),\n\t\tverification: z$1.enum(VERIFICATION_METHODS).default(RECOMMENDED_VERIFICATION_METHOD).optional()\n\t}))\n});\nconst PhoneRecover = BaseRecover.extend({\n\tprovider: z$1.literal(PROVIDER_PHONE),\n\tphone: PhoneSchema,\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_SMS, CHANNEL_WHATSAPP]).default(CHANNEL_SMS).optional(),\n\t\tverification: z$1.literal(VERIFICATION_METHOD_OTP).optional()\n\t}))\n});\nconst AuthRecoverParams = z$1.discriminatedUnion(\"provider\", [EmailRecover, PhoneRecover]);\nconst AuthRecoverPayload = ApiPayload(AuthRecoverParams);\nconst authRecoverErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\talready_signed_in: Api.errorPreset.already_signed_in,\n\tuser_not_found: Api.errorPreset.user_not_found\n});\nconst AuthRecoverResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/update.ts\nconst BaseUpdate = z$1.object({ provider: z$1.enum([PROVIDER_EMAIL, PROVIDER_PHONE]).optional() });\nconst EmailUpdate = BaseUpdate.extend({\n\tprovider: z$1.literal(PROVIDER_EMAIL),\n\temail: EmailSchema.optional(),\n\tpassword: PasswordSchema.optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_EMAIL]).default(CHANNEL_EMAIL).optional(),\n\t\tverification: z$1.enum(VERIFICATION_METHODS).default(RECOMMENDED_VERIFICATION_METHOD).optional()\n\t}))\n});\nconst PhoneUpdate = BaseUpdate.extend({\n\tprovider: z$1.literal(PROVIDER_PHONE),\n\tphone: PhoneSchema.optional(),\n\tpassword: PasswordSchema.optional(),\n\toptions: z$1.optional(z$1.object({\n\t\tchannel: z$1.enum([CHANNEL_SMS, CHANNEL_WHATSAPP]).default(CHANNEL_SMS).optional(),\n\t\tverification: z$1.literal(VERIFICATION_METHOD_OTP).optional()\n\t}))\n});\nconst AuthUpdateParams = EmailUpdate.or(PhoneUpdate);\nconst AuthUpdatePayload = ApiPayload(AuthUpdateParams);\nconst authUpdateErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tuser_not_found: Api.errorPreset.user_not_found,\n\tauthentication_required: Api.errorPreset.authentication_required,\n\taccount_already_exist: Api.errorPreset.account_already_exist\n});\nconst AuthUpdateResponse = z$1.object({\n\tsession: Session,\n\tcookies: z$1.array(Cookie)\n});\n\n//#endregion\n//#region src/api/auth/user.ts\nconst authUserErrors = Api.defineErrorPreset({});\nconst AuthUserResponse = User.nullable();\n\n//#endregion\n//#region src/api/auth/jwks.ts\nconst authJwksErrors = Api.defineErrorPreset({});\nconst AuthJwk = z$1.object({\n\tkty: z$1.string(),\n\tcrv: z$1.string(),\n\tx: z$1.string(),\n\ty: z$1.string(),\n\tuse: z$1.string(),\n\tkid: z$1.string(),\n\talg: z$1.string()\n});\nconst AuthJwksResponse = z$1.object({ keys: z$1.array(AuthJwk) });\n\n//#endregion\n//#region src/api/auth/constants.ts\nconst AUTH_WELLKNOWN_JWKS_BASE_PATH = \"/.well-known/jwks.json\";\nconst AUTH_AUTHORIZE_BASE_PATH = \"/authorize\";\nconst AUTH_SIGNIN_ROUTE_BASE_PATH = \"/signin\";\nconst AUTH_SIGNUP_ROUTE_BASE_PATH = \"/signup\";\nconst AUTH_SESSION_ROUTE_BASE_PATH = \"/session\";\nconst AUTH_SESSION_LIST_ROUTE_BASE_PATH = \"/session/list\";\nconst AUTH_SESSION_USER_ROUTE_BASE_PATH = \"/session/user\";\nconst AUTH_VERIFY_ROUTE_BASE_PATH = \"/verify\";\nconst AUTH_RECOVER_ROUTE_BASE_PATH = \"/recover\";\nconst AUTH_UPDATE_ROUTE_BASE_PATH = \"/update\";\nconst AUTH_RESEND_ROUTE_BASE_PATH = \"/resend\";\nconst AUTH_SIGNOUT_ROUTE_BASE_PATH = \"/signout\";\n\n//#endregion\n//#region src/api/customers/customer.ts\nconst apiCustomerErrors = Api.defineErrorPreset({});\nconst CustomerBaseAddress = z$1.object({\n\tfirst_name: StringSchema,\n\tlast_name: StringSchema,\n\tphone: PhoneSchema,\n\tcompany: StringSchema.nullable(),\n\taddress_1: StringSchema,\n\taddress_2: StringSchema.nullable(),\n\tcity: CitySchema,\n\tpostcode: PostcodeSchema,\n\tprovince: ProvinceCodeSchema,\n\tcountry: CountryCodeSchema\n});\nconst CustomerBillingAddress = CustomerBaseAddress.extend({\n\temail: EmailSchema,\n\ttax_id: StringSchema.nullable()\n});\nconst CustomerShippingAddress = CustomerBaseAddress.extend({\n\tid: StringIdSchema,\n\tis_default: z$1.boolean()\n});\nconst BusinessAddress = z$1.object({\n\taddress_1: StringSchema,\n\taddress_2: StringSchema.nullable(),\n\tcity: CitySchema,\n\tprovince: ProvinceCodeSchema,\n\tpostcode: PostcodeSchema,\n\tcountry: CountryCodeSchema\n});\nconst CustomerBusiness = z$1.object({\n\tname: StringSchema,\n\ttax_id: StringSchema.nullable(),\n\tbusiness_type: z$1.enum(BUSINESS_TYPES).nullable(),\n\tsecondary_tax_id: StringSchema.nullable(),\n\tregistration_number: StringSchema.nullable(),\n\tregistered_address: BusinessAddress.nullable()\n});\nconst Customer = User.extend({\n\tbusiness: CustomerBusiness.nullable(),\n\tbilling_address: CustomerBillingAddress.nullable(),\n\tshipping_addresses: z$1.array(CustomerShippingAddress)\n});\nconst ApiCustomerResponse = Customer.nullable();\n\n//#endregion\n//#region src/api/customers/update-customer.ts\nconst ApiCustomerUpdateBaseAddress = z$1.object({\n\tfirst_name: StringSchema.optional(),\n\tlast_name: StringSchema.optional(),\n\tphone: PhoneSchema.optional(),\n\tcompany: StringSchema.optional(),\n\taddress_1: StringSchema.optional(),\n\taddress_2: StringSchema.optional(),\n\tcity: CitySchema.optional(),\n\tpostcode: PostcodeSchema.optional(),\n\tprovince: ProvinceCodeSchema.optional(),\n\tcountry: CountryCodeSchema.optional()\n});\nconst ApiCustomerUpdateBillingAddress = ApiCustomerUpdateBaseAddress.extend({\n\temail: EmailSchema,\n\ttax_id: StringSchema.nullable()\n});\nconst ApiCustomerUpdateBusinessAddress = z$1.object({\n\taddress_1: StringSchema.optional(),\n\taddress_2: StringSchema.optional(),\n\tcity: CitySchema.optional(),\n\tprovince: ProvinceCodeSchema.optional(),\n\tpostcode: PostcodeSchema.optional(),\n\tcountry: CountryCodeSchema.optional()\n});\nconst ApiCustomerUpdateBusiness = z$1.object({\n\tname: StringSchema.optional(),\n\ttax_id: StringSchema.optional(),\n\tindustry_code: StringSchema.optional(),\n\tbusiness_type: z$1.enum(BUSINESS_TYPES).optional(),\n\tsecondary_tax_id: StringSchema.optional(),\n\tregistration_number: StringSchema.optional(),\n\tregistered_address: ApiCustomerUpdateBusinessAddress.optional()\n});\nconst ApiCustomerUpdateParams = z$1.object({\n\ttype: z$1.enum(USER_TYPES).optional(),\n\tstatus: z$1.enum(USER_STATUSES).optional(),\n\tfirst_name: RequiredStringSchema.optional(),\n\tlast_name: StringSchema.optional(),\n\timage: StringSchema.optional(),\n\tgender: z$1.enum(USER_GENDERS).optional(),\n\tdob: TimestampSchema.optional(),\n\tbusiness: ApiCustomerUpdateBusiness.optional(),\n\tbilling_address: ApiCustomerUpdateBillingAddress.optional()\n});\nconst ApiCustomerUpdatePayload = ApiPayload(ApiCustomerUpdateParams);\nconst apiCustomerUpdateErrors = Api.defineErrorPreset({ customer_not_found: Api.errorPreset.customer_not_found });\nconst ApiCustomerUpdateResponse = Customer;\n\n//#endregion\n//#region src/api/customers/add-shipping.ts\nconst ApiCustomerAddShippingParams = CustomerBaseAddress.extend({ is_default: z$1.boolean() });\nconst ApiCustomerAddShippingPayload = ApiPayload(ApiCustomerAddShippingParams);\nconst apiCustomerAddShippingErrors = Api.defineErrorPreset({\n\tcustomer_not_found: Api.errorPreset.customer_not_found,\n\taddresses_limit_exceeded: {\n\t\tcode: \"KIZLO_ADDRESSES_LIMIT_EXCEEDED\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Shipping address limit exceeded\"\n\t}\n});\nconst ApiCustomerAddShippingResponse = Customer;\n\n//#endregion\n//#region src/api/customers/update-shipping.ts\nconst ApiCustomerUpdateShippingParams = z$1.object({\n\ttype: z$1.enum(SHIPPING_ADDRESS_TYPES).optional(),\n\tfirst_name: StringSchema.optional(),\n\tlast_name: StringSchema.optional(),\n\tphone: PhoneSchema.optional(),\n\tcompany: StringSchema.optional(),\n\taddress_1: StringSchema.optional(),\n\taddress_2: StringSchema.optional(),\n\tcity: CitySchema.optional(),\n\tpostcode: PostcodeSchema.optional(),\n\tprovince: ProvinceCodeSchema.optional(),\n\tcountry: CountryCodeSchema.optional(),\n\tis_default: z$1.boolean().optional()\n});\nconst ApiCustomerUpdateShippingPayload = ApiPayload(ApiCustomerUpdateShippingParams);\nconst apiCustomerUpdateShippingErrors = Api.defineErrorPreset({ customer_not_found: Api.errorPreset.customer_not_found });\nconst ApiCustomerUpdateShippingResponse = Customer;\n\n//#endregion\n//#region src/api/customers/delete-shipping.ts\nconst apiCustomerDeleteShippingErrors = Api.defineErrorPreset({ customer_not_found: Api.errorPreset.customer_not_found });\nconst ApiCustomerDeleteShippingResponse = Customer;\n\n//#endregion\n//#region src/api/customers/order.ts\nconst apiOrderErrors = Api.defineErrorPreset({});\nconst OrderInvoice = z$1.object({\n\tid: StringIdSchema,\n\tname: RequiredStringSchema,\n\turl: UrlSchema,\n\tsequence: AmountSchema,\n\tsize: AmountSchema,\n\tnumber: RequiredStringSchema\n});\nconst OrderTaxLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: StringSchema,\n\trate: PercentageSchema,\n\tamount: AmountSchema\n});\nconst OrderLineItemTotals = z$1.object({\n\tunit_price: AmountSchema,\n\tgross_amount: AmountSchema,\n\tdiscount_amount: AmountSchema,\n\tdiscount_tax_amount: AmountSchema,\n\tnet_amount: AmountSchema,\n\ttax_amount: AmountSchema,\n\ttotal: AmountSchema\n});\nconst OrderLineItemImage = z$1.object({\n\tsrc: UrlSchema,\n\talt: StringSchema\n});\nconst OrderLineItem = z$1.object({\n\tid: NumericIdSchema,\n\tproduct_id: NumericIdSchema,\n\tvariation_id: NumericIdSchema.nullable(),\n\tname: StringSchema,\n\ths_code: StringSchema.nullable(),\n\tsku: StringSchema.nullable(),\n\timage: OrderLineItemImage,\n\tquantity: QuantitySchema,\n\ttax_lines: z$1.array(OrderTaxLine),\n\ttotals: OrderLineItemTotals\n});\nconst OrderCouponLine = z$1.object({\n\tid: NumericIdSchema,\n\ttype: z$1.enum(CART_COUPON_TYPES),\n\tlabel: StringSchema,\n\tamount: AmountSchema,\n\ttax_amount: AmountSchema\n});\nconst OrderShippingLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: StringSchema,\n\ttax_lines: z$1.array(OrderTaxLine),\n\tamount: AmountSchema,\n\ttax_amount: AmountSchema,\n\ttotal: AmountSchema\n});\nconst OrderFeeLine = z$1.object({\n\tid: NumericIdSchema,\n\tlabel: StringSchema,\n\tamount: AmountSchema,\n\ttax_amount: AmountSchema,\n\ttaxes: z$1.array(z$1.object({\n\t\tid: NumericIdSchema,\n\t\tamount: AmountSchema\n\t}))\n});\nconst OrderTotals = z$1.object({\n\tdiscount_total: AmountSchema,\n\tdiscount_tax_total: AmountSchema,\n\tshipping_total: AmountSchema,\n\tshipping_tax_total: AmountSchema,\n\tfee_total: AmountSchema,\n\tfee_tax_total: AmountSchema,\n\ttax_total: AmountSchema,\n\ttotal: AmountSchema\n});\nconst OrderShippingAddress = CustomerShippingAddress.omit({\n\tid: true,\n\tis_default: true\n});\nconst Order = z$1.object({\n\tid: NumericIdSchema,\n\tstatus: z$1.enum(ORDER_STATUSES),\n\ttransaction_id: StringSchema,\n\tcheckout_id: RequiredStringSchema,\n\tbilling_address: CustomerBillingAddress,\n\tshipping_address: OrderShippingAddress,\n\tline_items: z$1.array(OrderLineItem),\n\tcoupon_lines: z$1.array(OrderCouponLine),\n\tshipping_lines: z$1.array(OrderShippingLine),\n\tfee_lines: z$1.array(OrderFeeLine),\n\tpayment_method: StringSchema,\n\tprices_include_tax: z$1.boolean(),\n\tcurrency_format: ApiCurrencyFormat,\n\tinvoices: z$1.array(OrderInvoice),\n\ttotals: OrderTotals,\n\tcreated_at: UnixTimestampSchema,\n\tupdated_at: UnixTimestampSchema.nullable()\n});\nconst ApiOrderResponse = Order.nullable();\n\n//#endregion\n//#region src/api/customers/order-list.ts\nconst ApiOrderListParams = BaseApiPaginationParams.extend({\n\torder_by: z$1.enum(ORDER_ORDER_BYS).optional(),\n\tstatuses: z$1.array(z$1.enum(ORDER_STATUSES)).optional()\n});\nconst ApiOrderListPayload = ApiPayload(ApiOrderListParams);\nconst apiOrderListErrors = Api.defineErrorPreset({});\nconst ApiOrderListResponse = createPaginatedSchema(Order);\n\n//#endregion\n//#region src/api/customers/constants.ts\nconst API_CUSTOMER_ROUTE_BASE_PATH = \"/customer\";\nconst API_CUSTOMER_ORDERS_ROUTE_BASE_PATH = \"/customer/orders\";\nconst API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH = \"/customer/shipping\";\n\n//#endregion\n//#region src/api/products/product.ts\nconst apiProductErrors = Api.defineErrorPreset({});\nconst ProductPrices = z$1.object({\n\tprice: PriceSchema,\n\tsale_price: PriceSchema,\n\tregular_price: PriceSchema\n});\nconst ProductImage = z$1.object({\n\tid: NumericIdSchema,\n\tsrc: UrlSchema,\n\tthumbnail: UrlSchema,\n\tsrcset: StringSchema,\n\tsizes: StringSchema,\n\talt: StringSchema\n});\nconst ProductTag = z$1.object({\n\tid: NumericIdSchema,\n\tname: StringSchema,\n\tslug: SlugSchema\n});\nconst ProductCategory = z$1.object({\n\tid: NumericIdSchema,\n\tname: StringSchema,\n\tslug: SlugSchema\n});\nconst ProductAttribute = z$1.object({\n\tid: NumericIdSchema,\n\tname: StringSchema,\n\ttaxonomy: SlugSchema,\n\thas_variations: z$1.boolean(),\n\tterms: z$1.array(z$1.object({\n\t\tid: NumericIdSchema,\n\t\tname: StringSchema,\n\t\tslug: SlugSchema\n\t}))\n});\nconst Product = z$1.object({\n\tid: NumericIdSchema,\n\ttype: z$1.enum(PRODUCTS_TYPES),\n\tslug: StringSchema,\n\tname: StringSchema,\n\tprices: ProductPrices,\n\timages: z$1.array(ProductImage),\n\tsku: StringSchema,\n\ths_code: StringSchema,\n\tin_stock: z$1.boolean(),\n\tlow_stock_remaining: z$1.number().nullable(),\n\tdescription: BigStringSchema,\n\tshort_description: StringSchema,\n\taverage_rating: StringSchema,\n\treview_count: QuantitySchema,\n\ttags: z$1.array(ProductTag),\n\tcategories: z$1.array(ProductCategory),\n\tattributes: z$1.array(ProductAttribute),\n\tcurrency_format: ApiCurrencyFormat,\n\tmetadata: z$1.array(MetadataSchema)\n});\nconst ApiProductResponse = Product.nullable();\n\n//#endregion\n//#region src/api/products/list.ts\nconst ApiProductListParams = BaseApiPaginationParams.extend({\n\torder_by: z$1.enum(PRODUCT_ORDER_BY).optional(),\n\tmin_price: PriceSchema.optional(),\n\tmax_price: PriceSchema.optional(),\n\tattributes: z$1.array(z$1.object({\n\t\tattribute: StringSchema,\n\t\tslug: SlugSchema\n\t})).optional(),\n\ttype: z$1.enum(PRODUCTS_TYPES).optional(),\n\tstatus: z$1.enum(PRODUCT_STATUSES).optional(),\n\tcategories: z$1.array(StringSchema).optional()\n});\nconst ApiProductListPayload = ApiPayload(ApiProductListParams);\nconst apiProductListErrors = Api.defineErrorPreset({});\nconst ProductListItem = z$1.object({\n\tid: NumericIdSchema,\n\ttype: z$1.enum(PRODUCTS_TYPES),\n\tslug: StringSchema,\n\tname: StringSchema,\n\tprices: ProductPrices,\n\timages: z$1.array(ProductImage),\n\tsku: StringSchema,\n\tin_stock: z$1.boolean(),\n\taverage_rating: StringSchema,\n\treview_count: QuantitySchema,\n\tlow_stock_remaining: z$1.number().nullable(),\n\ttags: z$1.array(ProductTag),\n\tcategories: z$1.array(ProductCategory),\n\tattributes: z$1.array(ProductAttribute),\n\tcurrency_format: ApiCurrencyFormat\n});\nconst ApiProductListResponse = createPaginatedSchema(ProductListItem);\n\n//#endregion\n//#region src/api/products/collection.ts\nconst ApiProductCollectionParams = ApiProductListParams.extend({ calculate_attributes: z$1.array(z$1.object({\n\tquery_type: z$1.enum([\"or\", \"and\"]),\n\ttaxonomy: StringSchema\n})).optional() });\nconst ApiProductCollectionPayload = ApiPayload(ApiProductCollectionParams);\nconst apiProductCollectionErrors = Api.defineErrorPreset({});\nconst ApiProductCollectionPriceRate = ApiCurrencyFormat.extend({\n\tmin_price: PriceSchema,\n\tmax_price: PriceSchema\n});\nconst ApiProductCollectionAttribute = z$1.object({\n\tname: StringSchema,\n\ttaxonomy: StringSchema,\n\tterms: z$1.array(z$1.object({\n\t\tid: NumericIdSchema,\n\t\tname: StringSchema,\n\t\tcount: QuantitySchema,\n\t\tslug: SlugSchema\n\t}))\n});\nconst ApiProductCollectionStockStatus = z$1.object({\n\tcount: QuantitySchema,\n\tstatus: z$1.enum(COLLECTION_STATUSES)\n});\nconst ApiProductCollectionCategory = z$1.object({\n\tid: NumericIdSchema,\n\tname: StringSchema,\n\tslug: SlugSchema,\n\tcount: QuantitySchema,\n\ttype: z$1.enum(COLLECTION_CATEGORY_TYPES)\n});\nconst ApiProductCollectionResponse = z$1.object({\n\tprice_rage: ApiProductCollectionPriceRate.nullable(),\n\tattributes: z$1.array(ApiProductCollectionAttribute),\n\tstock_statuses: z$1.array(ApiProductCollectionStockStatus),\n\tcategories: z$1.array(ApiProductCollectionCategory),\n\tproducts: z$1.array(ProductListItem),\n\tmeta: ApiPaginationMeta\n});\n\n//#endregion\n//#region src/api/products/constants.ts\nconst API_PRODUCTS_ROUTE_BASE_PATH = \"/products\";\nconst API_PRODUCTS_COLLECTION_ROUTE_BASE_PATH = \"/products/filters/collection\";\n\n//#endregion\n//#region src/api/cart/cart.ts\nconst apiCartErrors = Api.defineErrorPreset({ session_not_found: Api.errorPreset.session_not_found });\nconst CartTotals = z$1.object({\n\tdiscount_total: AmountSchema,\n\tdiscount_tax_total: AmountSchema,\n\tshipping_total: AmountSchema,\n\tshipping_tax_total: AmountSchema,\n\tfee_total: AmountSchema,\n\tfee_tax_total: AmountSchema,\n\ttax_total: AmountSchema,\n\ttotal: AmountSchema\n});\nconst CartItemQuantity = z$1.object({\n\tcurrent: QuantitySchema,\n\tminimum: QuantitySchema,\n\tmaximum: QuantitySchema,\n\teditable: z$1.boolean()\n});\nconst CartItemTotals = z$1.object({\n\tunit_price: AmountSchema,\n\tgross_amount: AmountSchema,\n\tdiscount_amount: AmountSchema,\n\tdiscount_tax_amount: AmountSchema,\n\tnet_amount: AmountSchema,\n\ttax_amount: AmountSchema,\n\ttotal: AmountSchema\n});\nconst CartItem = z$1.object({\n\tkey: StringIdSchema,\n\ttype: z$1.enum(PRODUCTS_TYPES),\n\tproduct_id: NumericIdSchema,\n\tvariation_id: NumericIdSchema.nullable(),\n\tstatus: z$1.enum(CART_ITEM_STATUSES),\n\tname: StringSchema,\n\tdescription: BigStringSchema,\n\tsku: StringSchema,\n\tslug: SlugSchema,\n\tlow_stock_count: QuantitySchema.nullable(),\n\tsold_individually: z$1.boolean(),\n\timages: z$1.array(ProductImage),\n\tprices: ProductPrices,\n\tquantity: CartItemQuantity,\n\ttotals: CartItemTotals\n});\nconst CartPackageLine = z$1.object({\n\tid: NumericIdSchema,\n\tname: StringSchema,\n\tdestination: z$1.object({\n\t\taddress_1: StringSchema,\n\t\taddress_2: StringSchema,\n\t\tcity: CitySchema,\n\t\tprovince: ProvinceCodeSchema,\n\t\tpostcode: PostcodeSchema,\n\t\tcountry: CountryCodeSchema\n\t}),\n\titems: z$1.array(z$1.object({\n\t\tid: StringIdSchema,\n\t\tname: StringSchema,\n\t\tquantity: QuantitySchema\n\t})),\n\trates: z$1.array(z$1.object({\n\t\tid: StringIdSchema,\n\t\tname: StringSchema,\n\t\tis_selected: z$1.boolean(),\n\t\tdescription: BigStringSchema,\n\t\tdelivery_time: StringSchema,\n\t\tamount: AmountSchema,\n\t\ttax_amount: AmountSchema,\n\t\ttotal: AmountSchema\n\t}))\n});\nconst CartCouponLine = z$1.object({\n\tid: StringIdSchema,\n\ttype: z$1.enum(CART_COUPON_TYPES),\n\tlabel: StringSchema,\n\tamount: AmountSchema,\n\ttax_amount: AmountSchema\n});\nconst CartShippingLine = z$1.object({\n\tid: StringIdSchema,\n\tlabel: StringSchema,\n\tamount: AmountSchema,\n\ttax_amount: AmountSchema\n});\nconst Cart = z$1.object({\n\tcustomer: Customer.nullable(),\n\tshipping_address_id: StringIdSchema.nullable(),\n\tline_items: z$1.array(CartItem),\n\tpackageLines: z$1.array(CartPackageLine),\n\tcoupon_lines: z$1.array(CartCouponLine),\n\tshipping_lines: z$1.array(CartShippingLine),\n\tcurrency_format: ApiCurrencyFormat,\n\ttotals: CartTotals\n});\nconst ApiCartResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/add-item.ts\nconst ApiCartAddItemParams = z$1.object({\n\tproduct_id: NumericIdSchema,\n\tquantity: QuantitySchema\n});\nconst ApiCartAddItemPayload = ApiPayload(ApiCartAddItemParams);\nconst apiCartAddItemErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tinsufficient_stock: {\n\t\tcode: \"KIZLO_INSUFFICIENT_STOCK\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Insufficient stock\"\n\t},\n\tout_of_stock: {\n\t\tcode: \"KIZLO_OUT_OF_STOCK\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Insufficient stock\"\n\t},\n\tnot_purchaseable: {\n\t\tcode: \"KIZLO_NOT_PURCHASEABLE\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Insufficient stock\"\n\t},\n\ttoo_many_in_cart: {\n\t\tcode: \"KIZLO_TOO_MANY_IN_CART\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Insufficient stock\"\n\t}\n});\nconst ApiCartAddItemResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/update-item.ts\nconst ApiCartUpdateItemParams = z$1.object({\n\tkey: StringIdSchema,\n\tquantity: QuantitySchema\n});\nconst ApiCartUpdateItemPayload = ApiPayload(ApiCartUpdateItemParams);\nconst apiCartUpdateItemErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tinsufficient_stock: {\n\t\tcode: \"KIZLO_INSUFFICIENT_STOCK\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Insufficient stock\"\n\t},\n\tinvalid_key: {\n\t\tcode: \"KIZLO_INVALID_KEY\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Invalid item key\"\n\t}\n});\nconst ApiCartUpdateItemResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/remove-item.ts\nconst ApiCartRemoveItemParams = z$1.object({ keys: z$1.array(StringIdSchema).min(1).max(10) });\nconst ApiCartRemoveItemPayload = ApiPayload(ApiCartRemoveItemParams);\nconst apiCartRemoveItemErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tinvalid_key: {\n\t\tcode: \"KIZLO_INVALID_KEY\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Invalid item key\"\n\t}\n});\nconst ApiCartRemoveItemResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/apply-coupon.ts\nconst ApiCartApplyCouponParams = z$1.object({ code: RequiredStringSchema });\nconst ApiCartApplyCouponPayload = ApiPayload(ApiCartApplyCouponParams);\nconst apiCartApplyCouponErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tcoupon_error: {\n\t\tcode: \"KIZLO_COUPON_ERROR\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Coupon error.\"\n\t}\n});\nconst ApiCartApplyCouponResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/remove-coupon.ts\nconst ApiCartRemoveCouponParams = z$1.object({ code: RequiredStringSchema });\nconst ApiCartRemoveCouponPayload = ApiPayload(ApiCartRemoveCouponParams);\nconst apiCartRemoveCouponErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tcoupon_error: apiCartApplyCouponErrors.coupon_error,\n\tcoupon_not_already_applied: {\n\t\tcode: \"KIZLO_COUPON_NOT_ALREADY_APPLIED\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Coupon not already applied.\"\n\t}\n});\nconst ApiCartRemoveCouponResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/select-address.ts\nconst ApiCartAddressSelectParams = z$1.object({ id: StringIdSchema });\nconst ApiCartAddressSelectPayload = ApiPayload(ApiCartAddressSelectParams);\nconst apiCartAddressSelectErrors = Api.defineErrorPreset({ session_not_found: Api.errorPreset.session_not_found });\nconst ApiCartAddressSelectResponse = Cart.nullable();\n\n//#endregion\n//#region src/api/cart/constants.ts\nconst API_CART_ROUTE_BASE_PATH = \"/cart\";\nconst API_CART_ADD_ITEM_ROUTE_BASE_PATH = \"/cart/items/add\";\nconst API_CART_ADDRESS_SELECT_ROUTE_BASE_PATH = \"/cart/address/select\";\nconst API_CART_UPDATE_ITEM_ROUTE_BASE_PATH = \"/cart/items/update\";\nconst API_CART_REMOVE_ITEM_ROUTE_BASE_PATH = \"/cart/items/remove\";\nconst API_CART_APPLY_COUPON_ROUTE_BASE_PATH = \"/cart/coupon/apply\";\nconst API_CART_REMOVE_COUPON_ROUTE_BASE_PATH = \"/cart/coupon/remove\";\n\n//#endregion\n//#region src/api/checkout/create.ts\nconst ApiCheckoutCreateParams = z$1.object({\n\ttype: z$1.enum(ORDER_PAYMENT_TYPES),\n\tpayment_method_name: RequiredStringSchema\n});\nconst ApiCheckoutCreatePayload = ApiPayload(ApiCheckoutCreateParams);\nconst apiCheckoutCreateErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tcustomer_not_found: Api.errorPreset.customer_not_found,\n\tempty_cart: {\n\t\tcode: \"KIZLO_EMPTY_CART\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Your cart is empty.\"\n\t},\n\tcart_error: {\n\t\tcode: \"KIZLO_CART_ERROR\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Your cart has some errors please fix those before try again.\"\n\t},\n\tinvalid_billing_address: {\n\t\tcode: \"KIZLO_INVALID_BILLING_ADDRESS\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Invalid billing address\"\n\t},\n\tinvalid_shipping_address: {\n\t\tcode: \"KIZLO_INVALID_SHIPPING_ADDRESS\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"Invalid Shipping address\"\n\t},\n\tno_address_session: {\n\t\tcode: \"KIZLO_NO_SELECTED_ADDRESS\",\n\t\tstatus: \"unprocessable\",\n\t\tmessage: \"No address selected\"\n\t}\n});\nconst ApiCheckoutCreateResponse = Order;\n\n//#endregion\n//#region src/api/checkout/confirm.ts\nconst ApiCheckoutConfirmParams = z$1.object({\n\tid: StringIdSchema,\n\ttype: z$1.enum(ORDER_PAYMENT_TYPES),\n\tpayment_adapter_id: StringIdSchema,\n\tpayment_session_id: StringIdSchema\n});\nconst ApiCheckoutConfirmPayload = ApiPayload(ApiCheckoutConfirmParams);\nconst apiCheckoutConfirmErrors = Api.defineErrorPreset({\n\tsession_not_found: Api.errorPreset.session_not_found,\n\tcustomer_not_found: Api.errorPreset.customer_not_found,\n\tcheckout_session_not_found: {\n\t\tcode: \"KIZLO_CHECKOUT_SESSION_NOT_FOUND\",\n\t\tmessage: \"Checkout session not found\",\n\t\tstatus: \"notFound\"\n\t},\n\tnot_idle_state: {\n\t\tcode: \"KIZLO_CHECKOUT_NOT_IDLE\",\n\t\tmessage: \"Checkout session is not in idle state\",\n\t\tstatus: \"unprocessable\"\n\t}\n});\nconst ApiCheckoutConfirmResponse = Order;\n\n//#endregion\n//#region src/api/checkout/verify.ts\nconst ApiCheckoutVerifyParams = z$1.object({\n\tid: StringIdSchema,\n\tpayment_status: z$1.enum(PAYMENT_STATUSES),\n\tpayment_transaction_id: StringIdSchema.nullable()\n});\nconst ApiCheckoutVerifyPayload = ApiPayload(z$1.object({\n\tid: StringIdSchema,\n\tpayment_status: z$1.enum(PAYMENT_STATUSES),\n\tpayment_transaction_id: StringIdSchema.nullable()\n}));\nconst apiCheckoutUpdateErrors = Api.defineErrorPreset({\n\tnot_processing_state: {\n\t\tcode: \"KIZLO_NOT_PROCESSING_STATE\",\n\t\tmessage: \"Checkout session is not in processing state.\",\n\t\tstatus: \"unprocessable\"\n\t},\n\tcheckout_session_not_found: {\n\t\tcode: \"KIZLO_CHECKOUT_SESSION_NOT_FOUND\",\n\t\tmessage: \"Checkout session not found\",\n\t\tstatus: \"notFound\"\n\t}\n});\nconst ApiCheckoutVerifyResponse = Order;\n\n//#endregion\n//#region src/api/checkout/status.ts\nconst apiCheckoutStatusErrors = Api.defineErrorPreset({});\nconst CheckoutSessionStatus = z$1.object({\n\tid: StringIdSchema,\n\ttype: z$1.enum(ORDER_PAYMENT_TYPES),\n\tstatus: z$1.enum(CHECKOUT_STATUSES),\n\tpayment_status: z$1.enum(PAYMENT_STATUSES).nullable(),\n\tfailure_cause: z$1.enum(CHECKOUT_FAILURE_CAUSES).nullable(),\n\tpayment_transaction_id: StringIdSchema.nullable(),\n\tcreate_at: UnixTimestampSchema,\n\tupdated_at: UnixTimestampSchema.nullable()\n});\nconst ApiCheckoutSessionStatusResponse = CheckoutSessionStatus.nullable();\n\n//#endregion\n//#region src/api/checkout/constants.ts\nconst API_CHECKOUT_CREATE_BASE_PATH = \"/checkout/create\";\nconst API_CHECKOUT_CONFIRM_BASE_PATH = \"/checkout/confirm\";\nconst API_CHECKOUT_VERIFY_BASE_PATH = \"/checkout/verify\";\nconst API_CHECKOUT_STATUS_BASE_PATH = \"/checkout/status\";\n\n//#endregion\n//#region src/api/checkout/schema.ts\nconst CheckoutSession = z$1.object({\n\tid: StringIdSchema,\n\torder_id: NumericIdSchema,\n\ttype: z$1.enum(ORDER_PAYMENT_TYPES),\n\tstatus: z$1.enum(CHECKOUT_STATUSES),\n\tpayment_intent_id: RequiredStringSchema.nullable(),\n\tcreated_at: UnixTimestampSchema,\n\tupdated_at: UnixTimestampSchema.nullable()\n});\n\n//#endregion\n//#region src/api/store/create.ts\nconst ApiCreateStoreParams = z$1.object({\n\tname: RequiredStringSchema,\n\twordpressUrl: UrlSchema\n});\nconst apiCreateStoreErrors = Api.defineErrorPreset({});\nconst ApiCreateStoreResponse = TenantStore;\n\n//#endregion\n//#region src/api/store/list.ts\nconst ApiListStoreParams = z$1.object({});\nconst apiListStoreErrors = Api.defineErrorPreset({});\nconst ApiListStoreResponse = z$1.array(TenantStore);\n\n//#endregion\n//#region src/api/store/update.ts\nconst ApiUpdateStoreParams = z$1.object({\n\tname: RequiredStringSchema.optional(),\n\twordpressUrl: UrlSchema.optional(),\n\tconsumerKey: RequiredStringSchema.optional(),\n\tconsumerSecret: RequiredStringSchema.optional(),\n\trotateApiKey: z$1.literal(true).optional(),\n\trotateAuthKeyPair: z$1.literal(true).optional(),\n\torigins: z$1.array(z$1.url()).optional()\n});\nconst apiUpdateStoreErrors = Api.defineErrorPreset({});\nconst ApiUpdateStoreResponse = TenantStore;\n\n//#endregion\n//#region src/api/store/constants.ts\nconst API_STORE_ROUTE_BASE_PATH = \"/store\";\nconst API_STORE_LIST_ROUTE_BASE_PATH = \"/stores\";\n\n//#endregion\n//#region src/api/store/retrieve.ts\nconst apiRetrieveStoreErrors = Api.defineErrorPreset({});\nconst ApiRetrieveStoreResponse = TenantStoreConfig.nullable();\n\n//#endregion\n//#region src/api/payment/schema.ts\nconst PaymentParams = z$1.object({\n\tadapter_id: StringIdSchema,\n\tsession_id: StringIdSchema\n});\nconst PaymentSession = z$1.object({\n\tid: StringIdSchema,\n\turl: UrlSchema.nullable(),\n\tstatus: z$1.enum(PAYMENT_STATUSES),\n\ttransaction_id: StringIdSchema.nullable()\n});\nconst PaymentRefundResponse = z$1.object({ refunded_at: TimestampSchema.nullable() });\nconst PaymentCancelResponse = z$1.object({ canceled_at: TimestampSchema.nullable() });\n\n//#endregion\n//#region src/api/payment/constants.ts\nconst API_SERVE_BASE_PATH = \"/kizlo\";\nconst API_SERVE_SESSION_PATH = `${API_SERVE_BASE_PATH}/session`;\nconst API_SERVE_PAYMENT_WEBHOOK_PATH = `${API_SERVE_BASE_PATH}/payment/webhooks`;\nconst API_SERVE_PAYMENT_WEBHOOK_PATH_PATTERN = `${API_SERVE_PAYMENT_WEBHOOK_PATH}/:adapterId`;\nconst API_SERVE_PAYMENT_SESSION_PATH = `${API_SERVE_BASE_PATH}/payment/session`;\nconst API_SERVE_PAYMENT_SESSION_PATH_PATTERN = `${API_SERVE_PAYMENT_SESSION_PATH}/:adapterId/:sessionId`;\nconst API_SERVE_PAYMENT_REFUND_PATH = `${API_SERVE_BASE_PATH}/payment/refund`;\nconst API_SERVE_PAYMENT_REFUND_PATH_PATTERN = `${API_SERVE_PAYMENT_REFUND_PATH}/:adapterId/:sessionId`;\nconst apiServePaymentRefundErrors = Api.defineErrorPreset({\n\tmissing_api_secret: {\n\t\tstatus: \"unprocessable\",\n\t\tcode: \"KIZLO_MISSING_API_SECRET\",\n\t\tmessage: \"API secret key is missing\"\n\t},\n\tinvalid_api_secret: {\n\t\tstatus: \"unprocessable\",\n\t\tcode: \"KIZLO_INVALID_API_SECRET\",\n\t\tmessage: \"API secret key is invalid\"\n\t},\n\tinvalid_adapter_id: {\n\t\tstatus: \"unprocessable\",\n\t\tcode: \"KIZLO_INVALID_ADAPTER_ID\",\n\t\tmessage: \"Payment adapter id is invalid\"\n\t},\n\tmethod_not_implemented: {\n\t\tstatus: \"unprocessable\",\n\t\tcode: `KIZLO_METHOD_NOT_IMPLEMENTED`,\n\t\tmessage: \"Payment method is not implemented yet.\"\n\t}\n});\nconst API_SERVE_PAYMENT_CANCEL_PATH = `${API_SERVE_BASE_PATH}/payment/cancel`;\nconst API_SERVE_PAYMENT_CANCEL_PATH_PATTERN = `${API_SERVE_PAYMENT_CANCEL_PATH}/:adapterId/:sessionId`;\nconst apiServePaymentCancelErrors = Api.defineErrorPreset({\n\tmissing_api_secret: apiServePaymentRefundErrors.missing_api_secret,\n\tinvalid_api_secret: apiServePaymentRefundErrors.invalid_api_secret,\n\tinvalid_adapter_id: apiServePaymentRefundErrors.invalid_adapter_id,\n\tmethod_not_implemented: {\n\t\tstatus: \"unprocessable\",\n\t\tcode: `KIZLO_METHOD_NOT_IMPLEMENTED`,\n\t\tmessage: \"Payment refund method is not implemented yet.\"\n\t}\n});\n\n//#endregion\n//#region src/api/payment/utils.ts\nasync function getPaymentMethods(PaymentAdapters) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const adapter of PaymentAdapters) {\n\t\tconst config = typeof adapter === \"function\" ? adapter() : adapter;\n\t\tif (!groups.has(config.type)) groups.set(config.type, []);\n\t\tgroups.get(config.type)?.push(config);\n\t}\n\tconst getPrioritizedAdapter = (group) => {\n\t\tlet best = null;\n\t\tfor (const adapter of group) if (!best || adapter.priority > best.priority) best = adapter;\n\t\treturn best;\n\t};\n\tconst methods = [];\n\tfor (const [, group] of groups) {\n\t\tconst selectedAdapters = [];\n\t\tconst combinableAdapters = group.filter((adapter) => adapter.is_combinable);\n\t\tif (combinableAdapters.length > 1) for (const adapter of combinableAdapters) selectedAdapters.push(adapter);\n\t\telse {\n\t\t\tconst bestAdapter = getPrioritizedAdapter(group);\n\t\t\tif (bestAdapter) selectedAdapters.push(bestAdapter);\n\t\t}\n\t\tfor (const adapter of selectedAdapters) {\n\t\t\tconst eligibility = await adapter.checkEligibility?.();\n\t\t\tif (eligibility?.is_hidden) continue;\n\t\t\tmethods.push({\n\t\t\t\tid: adapter.id,\n\t\t\t\ttype: adapter.type,\n\t\t\t\tname: eligibility?.name ?? adapter.name,\n\t\t\t\tis_disabled: eligibility?.is_disabled ?? false,\n\t\t\t\tdescription: eligibility?.description ?? adapter.description\n\t\t\t});\n\t\t}\n\t}\n\tif (new Set(methods.map((method) => method.id)).size !== methods.length) throw new Error(\"Payment adapters must have unique ids.\");\n\treturn methods;\n}\nfunction PaymentGatewayAdapter(config) {\n\treturn {\n\t\tid: \"online\",\n\t\ttype: \"payment_gateway\",\n\t\tname: \"Pay online\",\n\t\tdescription: \"Pay with debit, credit or online banking\",\n\t\tpriority: 2,\n\t\tis_combinable: false,\n\t\t...config\n\t};\n}\nfunction CashOnDeliveryAdapter(config) {\n\treturn {\n\t\tid: \"cod\",\n\t\ttype: \"cash_on_delivery\",\n\t\tname: \"Cash on Delivery\",\n\t\tdescription: \"Pay with cash upon delivery\",\n\t\tpriority: 1,\n\t\tis_combinable: false,\n\t\t...config\n\t};\n}\nfunction getPaymentAdapter(adapters, methodId) {\n\tconst adapter = adapters.find((adapter$1) => typeof adapter$1 === \"function\" ? adapter$1().id === methodId : adapter$1.id === methodId);\n\tif (!adapter) return null;\n\treturn typeof adapter === \"function\" ? adapter() : adapter;\n}\n\n//#endregion\nexport { API_CART_ADDRESS_SELECT_ROUTE_BASE_PATH, API_CART_ADD_ITEM_ROUTE_BASE_PATH, API_CART_APPLY_COUPON_ROUTE_BASE_PATH, API_CART_REMOVE_COUPON_ROUTE_BASE_PATH, API_CART_REMOVE_ITEM_ROUTE_BASE_PATH, API_CART_ROUTE_BASE_PATH, API_CART_UPDATE_ITEM_ROUTE_BASE_PATH, API_CHECKOUT_CONFIRM_BASE_PATH, API_CHECKOUT_CREATE_BASE_PATH, API_CHECKOUT_STATUS_BASE_PATH, API_CHECKOUT_VERIFY_BASE_PATH, API_CUSTOMER_ORDERS_ROUTE_BASE_PATH, API_CUSTOMER_ROUTE_BASE_PATH, API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH, API_PRODUCTS_COLLECTION_ROUTE_BASE_PATH, API_PRODUCTS_ROUTE_BASE_PATH, API_SERVE_PAYMENT_CANCEL_PATH, API_SERVE_PAYMENT_CANCEL_PATH_PATTERN, API_SERVE_PAYMENT_REFUND_PATH, API_SERVE_PAYMENT_REFUND_PATH_PATTERN, API_SERVE_PAYMENT_SESSION_PATH, API_SERVE_PAYMENT_SESSION_PATH_PATTERN, API_SERVE_PAYMENT_WEBHOOK_PATH, API_SERVE_PAYMENT_WEBHOOK_PATH_PATTERN, API_SERVE_SESSION_PATH, API_STORE_LIST_ROUTE_BASE_PATH, API_STORE_ROUTE_BASE_PATH, AUTH_AUTHORIZE_BASE_PATH, AUTH_RECOVER_ROUTE_BASE_PATH, AUTH_RESEND_ROUTE_BASE_PATH, AUTH_SESSION_LIST_ROUTE_BASE_PATH, AUTH_SESSION_ROUTE_BASE_PATH, AUTH_SESSION_USER_ROUTE_BASE_PATH, AUTH_SIGNIN_ROUTE_BASE_PATH, AUTH_SIGNOUT_ROUTE_BASE_PATH, AUTH_SIGNUP_ROUTE_BASE_PATH, AUTH_UPDATE_ROUTE_BASE_PATH, AUTH_VERIFY_ROUTE_BASE_PATH, AUTH_WELLKNOWN_JWKS_BASE_PATH, AnonymousSession, ApiCartAddItemParams, ApiCartAddItemPayload, ApiCartAddItemResponse, ApiCartAddressSelectParams, ApiCartAddressSelectPayload, ApiCartAddressSelectResponse, ApiCartApplyCouponParams, ApiCartApplyCouponPayload, ApiCartApplyCouponResponse, ApiCartRemoveCouponParams, ApiCartRemoveCouponPayload, ApiCartRemoveCouponResponse, ApiCartRemoveItemParams, ApiCartRemoveItemPayload, ApiCartRemoveItemResponse, ApiCartResponse, ApiCartUpdateItemParams, ApiCartUpdateItemPayload, ApiCartUpdateItemResponse, ApiCheckoutConfirmParams, ApiCheckoutConfirmPayload, ApiCheckoutConfirmResponse, ApiCheckoutCreateParams, ApiCheckoutCreatePayload, ApiCheckoutCreateResponse, ApiCheckoutSessionStatusResponse, ApiCheckoutVerifyParams, ApiCheckoutVerifyPayload, ApiCheckoutVerifyResponse, ApiClientConfig, ApiCreateStoreParams, ApiCreateStoreResponse, ApiCurrencyFormat, ApiCustomerAddShippingParams, ApiCustomerAddShippingPayload, ApiCustomerAddShippingResponse, ApiCustomerDeleteShippingResponse, ApiCustomerResponse, ApiCustomerUpdateBaseAddress, ApiCustomerUpdateBillingAddress, ApiCustomerUpdateBusiness, ApiCustomerUpdateBusinessAddress, ApiCustomerUpdateParams, ApiCustomerUpdatePayload, ApiCustomerUpdateResponse, ApiCustomerUpdateShippingParams, ApiCustomerUpdateShippingPayload, ApiCustomerUpdateShippingResponse, ApiListStoreParams, ApiListStoreResponse, ApiOrderListParams, ApiOrderListPayload, ApiOrderListResponse, ApiOrderResponse, ApiPaginationMeta, ApiPayload, ApiProductCollectionAttribute, ApiProductCollectionCategory, ApiProductCollectionParams, ApiProductCollectionPayload, ApiProductCollectionPriceRate, ApiProductCollectionResponse, ApiProductCollectionStockStatus, ApiProductListParams, ApiProductListPayload, ApiProductListResponse, ApiProductResponse, ApiRetrieveStoreResponse, ApiUpdateStoreParams, ApiUpdateStoreResponse, AuthAuthorizeResponse, AuthJwk, AuthJwksResponse, AuthRecoverParams, AuthRecoverPayload, AuthRecoverResponse, AuthResendParams, AuthResendPayload, AuthResendResponse, AuthSessionListResponse, AuthSessionResponse, AuthSignInParams, AuthSignInPayload, AuthSignInResponse, AuthSignOutResponse, AuthSignUpParams, AuthSignUpPayload, AuthSignUpResponse, AuthUpdateParams, AuthUpdatePayload, AuthUpdateResponse, AuthUserResponse, AuthVerifyParams, AuthVerifyPayload, AuthVerifyResponse, BaseApiPaginationParams, BusinessAddress, Cart, CartCouponLine, CartItem, CartItemQuantity, CartItemTotals, CartPackageLine, CartShippingLine, CartTotals, CashOnDeliveryAdapter, CheckoutSession, CheckoutSessionStatus, Cookie, Customer, CustomerBaseAddress, CustomerBillingAddress, CustomerBusiness, CustomerShippingAddress, Order, OrderCouponLine, OrderFeeLine, OrderInvoice, OrderLineItem, OrderLineItemImage, OrderLineItemTotals, OrderShippingAddress, OrderShippingLine, OrderTaxLine, OrderTotals, PaymentCancelResponse, PaymentGatewayAdapter, PaymentParams, PaymentRefundResponse, PaymentSession, Product, ProductAttribute, ProductCategory, ProductImage, ProductListItem, ProductPrices, ProductTag, Session, User, UserSession, apiCartAddItemErrors, apiCartAddressSelectErrors, apiCartApplyCouponErrors, apiCartErrors, apiCartRemoveCouponErrors, apiCartRemoveItemErrors, apiCartUpdateItemErrors, apiCheckoutConfirmErrors, apiCheckoutCreateErrors, apiCheckoutStatusErrors, apiCheckoutUpdateErrors, apiCreateStoreErrors, apiCustomerAddShippingErrors, apiCustomerDeleteShippingErrors, apiCustomerErrors, apiCustomerUpdateErrors, apiCustomerUpdateShippingErrors, apiListStoreErrors, apiOrderErrors, apiOrderListErrors, apiProductCollectionErrors, apiProductErrors, apiProductListErrors, apiRetrieveStoreErrors, apiServePaymentCancelErrors, apiServePaymentRefundErrors, apiUpdateStoreErrors, authAuthorizeErrors, authJwksErrors, authRecoverErrors, authResendErrors, authSessionErrors, authSignInErrors, authSignOutErrors, authSignUpErrors, authUpdateErrors, authUserErrors, authVerifyErrors, createPaginatedSchema, getPaymentAdapter, getPaymentMethods, mapApiPaginationMetadata, toUnixEpoch };\n//# sourceMappingURL=api.js.map","import { Api, trimTrailingSlash } from \"@kizlo-internals/shared/common\"\r\nimport {\r\n API_PUBLISHABLE_KEY_HEADER_KEY,\r\n AUTHORIZATION_HEADER,\r\n AUTHORIZATION_HEADER_PREFIX,\r\n getAuthTokenCookieName,\r\n} from \"@kizlo-internals/shared/internal\"\r\n\r\nimport type { Cookie } from \"@kizlo-internals/shared/api\"\r\nimport type { HeadersLike } from \"@kizlo-internals/shared/common\"\r\n\r\nimport type { KizloBaseConfig } from \"./types\"\r\n\r\ntype Path = `/${string}`\r\n\r\ntype RecordParams = Record<string, string>\r\n\r\ntype Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"\r\n\r\ntype SearchParams = Record<string, string | boolean | number | undefined | null | (string | number | RecordParams)[]>\r\n\r\ntype RequestSpec = {\r\n method: Method\r\n fullPath: Path\r\n requiredAuth?: boolean\r\n} & ({ method: \"GET\"; params?: SearchParams } | { method: \"POST\" | \"PUT\" | \"DELETE\"; body?: object })\r\n\r\nexport abstract class Base extends Api.Fetch {\r\n constructor(protected readonly config: KizloBaseConfig) {\r\n super()\r\n }\r\n\r\n protected async send<T extends Api.Response>(spec: RequestSpec): Promise<Api.FetchResult<T>> {\r\n const url = new URL(`/store/${this.config.storeId}` + spec.fullPath, this.config.apiUrl)\r\n\r\n const headers: HeadersLike = { \"Content-Type\": \"application/json\", \"User-Agent\": this.defaultUserAgent() }\r\n\r\n if (this.config.environment === \"server\") headers.Origin = trimTrailingSlash(this.config.siteUrl)\r\n\r\n if (this.config.publishableKey) headers[API_PUBLISHABLE_KEY_HEADER_KEY] = this.config.publishableKey\r\n\r\n if (spec.requiredAuth) {\r\n const userAgent = await this.getUserAgent()\r\n if (userAgent) headers[\"User-Agent\"] = userAgent\r\n\r\n const authToken = await this.getAuthToken()\r\n if (authToken) headers[AUTHORIZATION_HEADER] = `${AUTHORIZATION_HEADER_PREFIX} ${authToken.value}`\r\n }\r\n\r\n let body: string | undefined = undefined\r\n\r\n if (spec.method === \"GET\") {\r\n url.searchParams.set(\"query\", JSON.stringify({ config: this.config.clientConfig, params: spec.params ?? {} }))\r\n } else {\r\n body = JSON.stringify({ config: this.config.clientConfig, params: spec.body })\r\n }\r\n\r\n return await this.fetch<T>(url, { method: spec.method, headers, body, credentials: \"include\" })\r\n }\r\n\r\n protected async _setCookies(cookies: Cookie[]) {\r\n await Promise.resolve(\r\n this.config.cookies?.setAll(\r\n cookies.map((cookie) => ({\r\n name: cookie.name,\r\n value: cookie.value,\r\n options: {\r\n domain: cookie.options.domain,\r\n expires: cookie.options.expires,\r\n http_only: cookie.options.http_only,\r\n max_age: cookie.options.max_age,\r\n path: cookie.options.path,\r\n priority: cookie.options.priority,\r\n same_site: cookie.options.same_site,\r\n secure: cookie.options.secure,\r\n partitioned: cookie.options.partitioned,\r\n },\r\n })),\r\n ),\r\n )\r\n }\r\n\r\n protected async getAuthToken() {\r\n const cookies = await Promise.resolve(this.config.cookies?.getAll())\r\n return (cookies ?? []).find((a) => a.name === getAuthTokenCookieName(this.config.storeId))\r\n }\r\n\r\n protected async getUserAgent() {\r\n const requestHeaders = await Promise.resolve(this.config.headers?.getAll())\r\n return requestHeaders?.[\"user-agent\"]\r\n }\r\n\r\n private defaultUserAgent() {\r\n const { framework, version } = this.config.clientConfig\r\n return `(${framework}/${version}) node`\r\n }\r\n}\r\n","type KizloErrorResult<E extends string> = { data: null; error: KizloError<E>; isError: true }\r\n\r\ntype KizloSuccessResult<T> = { data: T; error: null; isError: false }\r\n\r\nexport type KizloResult<T, E extends string = string> = KizloErrorResult<E> | KizloSuccessResult<T>\r\n\r\nexport class KizloError<TCode extends string = string> extends Error {\r\n code: TCode\r\n\r\n constructor(params: { code: TCode; message: string; cause: unknown; stack?: boolean }) {\r\n super(params.message)\r\n this.name = \"KizloError\"\r\n this.code = params.code\r\n this.cause = params.cause\r\n\r\n const showStackTrace = params.stack ?? false\r\n\r\n if (!showStackTrace) this.stack = undefined\r\n }\r\n}\r\n\r\nexport const resultError = <E extends string>(params: { code: E; message: string; cause: unknown }): KizloErrorResult<E> => {\r\n return { data: null, isError: true, error: new KizloError(params) }\r\n}\r\n\r\nexport const resultSuccess = <T>(data: T): KizloSuccessResult<T> => {\r\n return { data, isError: false, error: null }\r\n}\r\n","import { createLocalJWKSet, jwtVerify } from \"jose\"\r\n\r\nimport type {\r\n AuthAuthorizeApiResponse,\r\n AuthJwksApiResponse,\r\n AuthRecoverApiResponse,\r\n AuthRecoverErrorCode,\r\n AuthRecoverParams,\r\n AuthResendApiResponse,\r\n AuthResendErrorCode,\r\n AuthResendParams,\r\n AuthResendResponse,\r\n AuthSessionApiResponse,\r\n AuthSessionErrorCode,\r\n AuthSessionResponse,\r\n AuthSignInApiResponse,\r\n AuthSignInErrorCode,\r\n AuthSignInParams,\r\n AuthSignInResponse,\r\n AuthSignOutApiResponse,\r\n AuthSignOutErrorCode,\r\n AuthSignOutResponse,\r\n AuthSignUpApiResponse,\r\n AuthSignUpErrorCode,\r\n AuthSignUpParams,\r\n AuthUpdateApiResponse,\r\n AuthUpdateErrorCode,\r\n AuthUpdateParams,\r\n AuthUpdateResponse,\r\n AuthUserApiResponse,\r\n AuthUserErrorCode,\r\n AuthUserResponse,\r\n AuthVerifyApiResponse,\r\n AuthVerifyErrorCode,\r\n AuthVerifyParams,\r\n AuthVerifyResponse,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport {\r\n AUTH_AUTHORIZE_BASE_PATH,\r\n AUTH_RECOVER_ROUTE_BASE_PATH,\r\n AUTH_RESEND_ROUTE_BASE_PATH,\r\n AUTH_SESSION_ROUTE_BASE_PATH,\r\n AUTH_SESSION_USER_ROUTE_BASE_PATH,\r\n AUTH_SIGNIN_ROUTE_BASE_PATH,\r\n AUTH_SIGNOUT_ROUTE_BASE_PATH,\r\n AUTH_SIGNUP_ROUTE_BASE_PATH,\r\n AUTH_UPDATE_ROUTE_BASE_PATH,\r\n AUTH_VERIFY_ROUTE_BASE_PATH,\r\n AUTH_WELLKNOWN_JWKS_BASE_PATH,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport { Result } from \"@kizlo-internals/shared/common\"\r\nimport { AUTH_TOKEN_AUDIENCE, AuthTokenClaims } from \"@kizlo-internals/shared/internal\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultError, resultSuccess } from \"./result\"\r\n\r\nexport class KizloAuth extends Base {\r\n public async getSession(): Promise<KizloResult<AuthSessionResponse, AuthSessionErrorCode>> {\r\n const { data, error } = await this.send<AuthSessionApiResponse>({\r\n method: \"GET\",\r\n fullPath: AUTH_SESSION_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async getUser(): Promise<KizloResult<AuthUserResponse, AuthUserErrorCode>> {\r\n const { data, error } = await this.send<AuthUserApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: AUTH_SESSION_USER_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async signin(params: AuthSignInParams): Promise<KizloResult<AuthSignInResponse[\"session\"], AuthSignInErrorCode>> {\r\n const { data, error } = await this.send<AuthSignInApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_SIGNIN_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async signup(params: AuthSignUpParams): Promise<KizloResult<AuthSignInResponse[\"session\"], AuthSignUpErrorCode>> {\r\n const { data, error } = await this.send<AuthSignUpApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_SIGNUP_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async verify(params: AuthVerifyParams): Promise<KizloResult<AuthVerifyResponse[\"session\"], AuthVerifyErrorCode>> {\r\n const { data, error } = await this.send<AuthVerifyApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_VERIFY_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async resend(params: AuthResendParams): Promise<KizloResult<AuthResendResponse[\"session\"], AuthResendErrorCode>> {\r\n const { data, error } = await this.send<AuthResendApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_RESEND_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async recover(params: AuthRecoverParams): Promise<KizloResult<AuthResendResponse[\"session\"], AuthRecoverErrorCode>> {\r\n const { data, error } = await this.send<AuthRecoverApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_RECOVER_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async update(params: AuthUpdateParams): Promise<KizloResult<AuthUpdateResponse[\"session\"], AuthUpdateErrorCode>> {\r\n const { data, error } = await this.send<AuthUpdateApiResponse>({\r\n body: params,\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_UPDATE_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n\r\n public async signout(): Promise<KizloResult<AuthSignOutResponse[\"session\"], AuthSignOutErrorCode>> {\r\n const { data, error } = await this.send<AuthSignOutApiResponse>({\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: AUTH_SIGNOUT_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n await this._setCookies(data.cookies)\r\n\r\n return resultSuccess(data.session)\r\n }\r\n}\r\n\r\nexport class InternalAuthClient extends Base {\r\n public async verify(): Promise<boolean> {\r\n const authToken = await this.getAuthToken()\r\n\r\n if (!authToken) {\r\n const session = await this.authorize()\r\n return session?.type === \"user\"\r\n }\r\n\r\n const result = await Result.tryCatch(\r\n jwtVerify(authToken.value, await this.getJwks(), {\r\n issuer: this.config.apiUrl,\r\n audience: AUTH_TOKEN_AUDIENCE,\r\n }),\r\n )\r\n\r\n if (result.isError) return false\r\n\r\n const claims = AuthTokenClaims.parse({ ...result.value.payload, ...result.value.protectedHeader })\r\n return claims.properties.type === \"user\"\r\n }\r\n\r\n private async getJwks() {\r\n const cached = this.config.jwksCache.get(this.config.apiUrl)\r\n if (cached) return cached\r\n\r\n const { data, error } = await this.send<AuthJwksApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: AUTH_WELLKNOWN_JWKS_BASE_PATH,\r\n })\r\n\r\n if (error) throw new Error(\"Failed to fetch jwks\")\r\n\r\n const getter = createLocalJWKSet(data)\r\n this.config.jwksCache.set(this.config.apiUrl, getter)\r\n\r\n return getter\r\n }\r\n\r\n private async authorize() {\r\n const { data, error } = await this.send<AuthAuthorizeApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: AUTH_AUTHORIZE_BASE_PATH,\r\n })\r\n\r\n if (error) return null\r\n await this._setCookies(data.cookies)\r\n return data.session\r\n }\r\n}\r\n","import type {\r\n ApiCartAddItemApiResponse,\r\n ApiCartAddItemErrorCode,\r\n ApiCartAddItemParams,\r\n ApiCartAddItemResponse,\r\n ApiCartAddressSelectApiResponse,\r\n ApiCartAddressSelectErrorCode,\r\n ApiCartAddressSelectPayload,\r\n ApiCartAddressSelectResponse,\r\n ApiCartApiResponse,\r\n ApiCartApplyCouponApiResponse,\r\n ApiCartApplyCouponErrorCode,\r\n ApiCartApplyCouponParams,\r\n ApiCartApplyCouponResponse,\r\n ApiCartErrorCode,\r\n ApiCartRemoveCouponApiResponse,\r\n ApiCartRemoveCouponErrorCode,\r\n ApiCartRemoveCouponParams,\r\n ApiCartRemoveCouponResponse,\r\n ApiCartRemoveItemApiResponse,\r\n ApiCartRemoveItemErrorCode,\r\n ApiCartRemoveItemParams,\r\n ApiCartRemoveItemResponse,\r\n ApiCartResponse,\r\n ApiCartUpdateItemApiResponse,\r\n ApiCartUpdateItemErrorCode,\r\n ApiCartUpdateItemParams,\r\n ApiCartUpdateItemResponse,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport {\r\n API_CART_ADD_ITEM_ROUTE_BASE_PATH,\r\n API_CART_ADDRESS_SELECT_ROUTE_BASE_PATH,\r\n API_CART_APPLY_COUPON_ROUTE_BASE_PATH,\r\n API_CART_REMOVE_COUPON_ROUTE_BASE_PATH,\r\n API_CART_REMOVE_ITEM_ROUTE_BASE_PATH,\r\n API_CART_ROUTE_BASE_PATH,\r\n API_CART_UPDATE_ITEM_ROUTE_BASE_PATH,\r\n} from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultError, resultSuccess } from \"./result\"\r\n\r\nexport class KizloCart extends Base {\r\n async retrieve(): Promise<KizloResult<ApiCartResponse, ApiCartErrorCode>> {\r\n const { data, error } = await this.send<ApiCartApiResponse>({\r\n method: \"GET\",\r\n fullPath: API_CART_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async addItem(params: ApiCartAddItemParams): Promise<KizloResult<ApiCartAddItemResponse, ApiCartAddItemErrorCode>> {\r\n const { data, error } = await this.send<ApiCartAddItemApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_ADD_ITEM_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async updateItem(params: ApiCartUpdateItemParams): Promise<KizloResult<ApiCartUpdateItemResponse, ApiCartUpdateItemErrorCode>> {\r\n const { data, error } = await this.send<ApiCartUpdateItemApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_UPDATE_ITEM_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async removeItem(params: ApiCartRemoveItemParams): Promise<KizloResult<ApiCartRemoveItemResponse, ApiCartRemoveItemErrorCode>> {\r\n const { data, error } = await this.send<ApiCartRemoveItemApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_REMOVE_ITEM_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async applyCoupon(params: ApiCartApplyCouponParams): Promise<KizloResult<ApiCartApplyCouponResponse, ApiCartApplyCouponErrorCode>> {\r\n const { data, error } = await this.send<ApiCartApplyCouponApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_APPLY_COUPON_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async removeCoupon(params: ApiCartRemoveCouponParams): Promise<KizloResult<ApiCartRemoveCouponResponse, ApiCartRemoveCouponErrorCode>> {\r\n const { data, error } = await this.send<ApiCartRemoveCouponApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_REMOVE_COUPON_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n async selectAddress(\r\n params: ApiCartAddressSelectPayload,\r\n ): Promise<KizloResult<ApiCartAddressSelectResponse, ApiCartAddressSelectErrorCode>> {\r\n const { data, error } = await this.send<ApiCartAddressSelectApiResponse>({\r\n method: \"POST\",\r\n fullPath: API_CART_ADDRESS_SELECT_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n}\r\n","import {\r\n API_CART_ROUTE_BASE_PATH,\r\n API_CHECKOUT_CONFIRM_BASE_PATH,\r\n API_CHECKOUT_CREATE_BASE_PATH,\r\n API_CHECKOUT_STATUS_BASE_PATH,\r\n API_CHECKOUT_VERIFY_BASE_PATH,\r\n getPaymentAdapter,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport { random, TODO_ERROR } from \"@kizlo-internals/shared/common\"\r\n\r\nimport type {\r\n ApiCartApiResponse,\r\n ApiCartErrorCode,\r\n ApiCheckoutConfirmApiResponse,\r\n ApiCheckoutConfirmErrorCode,\r\n ApiCheckoutConfirmParams,\r\n ApiCheckoutConfirmResponse,\r\n ApiCheckoutCreateApiResponse,\r\n ApiCheckoutCreateErrorCode,\r\n ApiCheckoutCreateParams,\r\n ApiCheckoutCreateResponse,\r\n ApiCheckoutSessionStatusApiResponse,\r\n ApiCheckoutSessionStatusErrorCode,\r\n ApiCheckoutSessionStatusResponse,\r\n ApiCheckoutVerifyApiResponse,\r\n ApiCheckoutVerifyErrorCode,\r\n ApiCheckoutVerifyParams,\r\n ApiCheckoutVerifyResponse,\r\n Cart,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport type { OrderPaymentType } from \"@kizlo-internals/shared/internal\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultError, resultSuccess } from \"./result\"\r\n\r\nexport type ApiCheckoutErrorCode = ApiCartErrorCode\r\nexport type ApiCheckoutResponse = Cart | null\r\n\r\nexport class KizloCheckout extends Base {\r\n // ====================================================\r\n // RETRIEVE\r\n // ====================================================\r\n\r\n public async retrieve(): Promise<KizloResult<ApiCheckoutResponse, ApiCheckoutErrorCode>> {\r\n const { data, error, isError } = await this.getCart()\r\n if (isError) return resultError({ code: error.code, message: error.message, cause: error.cause })\r\n if (!data) return resultSuccess(null)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n // ====================================================\r\n // CONFIRM\r\n // ====================================================\r\n\r\n public async confirm(\r\n adapterId: string,\r\n ): Promise<\r\n KizloResult<\r\n { url: string },\r\n ApiCheckoutConfirmErrorCode | ApiCheckoutCreateErrorCode | \"KIZLO_PAYMENT_NOT_CONFIGURED\" | \"KIZLO_INVALID_PAYMENT_ADAPTER_ID\"\r\n >\r\n > {\r\n if (!this.config.payment) return resultError({ code: \"KIZLO_PAYMENT_NOT_CONFIGURED\", message: \"\", cause: null })\r\n\r\n const adapter = getPaymentAdapter(this.config.payment.adapters, adapterId)\r\n if (!adapter) return resultError({ code: \"KIZLO_INVALID_PAYMENT_ADAPTER_ID\", message: \"\", cause: null })\r\n\r\n const paymentType: OrderPaymentType = adapter.type === \"cash_on_delivery\" ? \"cod\" : \"prepaid\"\r\n const createResult = await this.createSession({ type: paymentType, payment_method_name: adapter.name })\r\n\r\n if (createResult.isError) return createResult\r\n\r\n const successUrl = new URL(this.config.siteUrl, this.config.payment.success_url)\r\n const cancelUrl = new URL(this.config.siteUrl, this.config.payment.cancel_url)\r\n\r\n switch (adapter.type) {\r\n case \"cash_on_delivery\": {\r\n const confirmResult = await this.confirmCheckout({\r\n type: \"cod\",\r\n payment_session_id: \"none\",\r\n payment_adapter_id: adapter.id,\r\n id: createResult.data.checkout_id,\r\n })\r\n\r\n if (confirmResult.isError) return confirmResult\r\n\r\n const verifyResult = await this.verifyCheckout({\r\n payment_status: \"success\",\r\n payment_transaction_id: random(),\r\n id: createResult.data.checkout_id,\r\n })\r\n\r\n if (verifyResult.isError) throw new Error(TODO_ERROR)\r\n\r\n successUrl.searchParams.set(\"id\", createResult.data.checkout_id)\r\n\r\n return resultSuccess({ url: successUrl.toString() })\r\n }\r\n case \"payment_gateway\": {\r\n const data = await adapter.create({\r\n order: createResult.data,\r\n cancel_url: cancelUrl.toString(),\r\n success_url: successUrl.toString(),\r\n })\r\n\r\n const confirmResult = await this.confirmCheckout({\r\n type: \"prepaid\",\r\n payment_session_id: data.id,\r\n payment_adapter_id: adapter.id,\r\n id: createResult.data.checkout_id,\r\n })\r\n\r\n if (confirmResult.isError) return confirmResult\r\n\r\n return resultSuccess({ url: data.url })\r\n }\r\n }\r\n }\r\n\r\n // ====================================================\r\n // STATUS\r\n // ====================================================\r\n\r\n public async status(id: string): Promise<KizloResult<ApiCheckoutSessionStatusResponse, ApiCheckoutSessionStatusErrorCode>> {\r\n const { data, error } = await this.send<ApiCheckoutSessionStatusApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: `${API_CHECKOUT_STATUS_BASE_PATH}/${id}`,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n // ====================================================\r\n // PRIVATE\r\n // ====================================================\r\n\r\n private async getCart() {\r\n const { data, error } = await this.send<ApiCartApiResponse>({\r\n method: \"GET\",\r\n fullPath: API_CART_ROUTE_BASE_PATH,\r\n requiredAuth: true,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n private async createSession(\r\n params: ApiCheckoutCreateParams,\r\n ): Promise<KizloResult<ApiCheckoutCreateResponse, ApiCheckoutCreateErrorCode>> {\r\n const { data, error } = await this.send<ApiCheckoutCreateApiResponse>({\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: API_CHECKOUT_CREATE_BASE_PATH,\r\n body: params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n private async confirmCheckout(\r\n params: ApiCheckoutConfirmParams,\r\n ): Promise<KizloResult<ApiCheckoutConfirmResponse, ApiCheckoutConfirmErrorCode>> {\r\n const { data, error } = await this.send<ApiCheckoutConfirmApiResponse>({\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: API_CHECKOUT_CONFIRM_BASE_PATH,\r\n body: params,\r\n })\r\n\r\n if (error) {\r\n return resultError(error)\r\n }\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n private async verifyCheckout(\r\n params: ApiCheckoutVerifyParams,\r\n ): Promise<KizloResult<ApiCheckoutVerifyResponse, ApiCheckoutVerifyErrorCode>> {\r\n return new InternalCheckoutResource(this.config).verify(params)\r\n }\r\n}\r\n\r\nexport class InternalCheckoutResource extends Base {\r\n public async verify(params: ApiCheckoutVerifyParams): Promise<KizloResult<ApiCheckoutVerifyResponse, ApiCheckoutVerifyErrorCode>> {\r\n const { data, error } = await this.send<ApiCheckoutVerifyApiResponse>({\r\n method: \"POST\",\r\n requiredAuth: true,\r\n fullPath: API_CHECKOUT_VERIFY_BASE_PATH,\r\n body: params,\r\n })\r\n\r\n if (error) {\r\n return resultError(error)\r\n }\r\n\r\n return resultSuccess(data)\r\n }\r\n}\r\n","import type {\r\n ApiCustomerAddShippingApiResponse,\r\n ApiCustomerAddShippingErrorCode,\r\n ApiCustomerAddShippingParams,\r\n ApiCustomerAddShippingResponse,\r\n ApiCustomerApiResponse,\r\n ApiCustomerDeleteShippingApiResponse,\r\n ApiCustomerDeleteShippingErrorCode,\r\n ApiCustomerDeleteShippingResponse,\r\n ApiCustomerErrorCode,\r\n ApiCustomerResponse,\r\n ApiCustomerUpdateApiResponse,\r\n ApiCustomerUpdateErrorCode,\r\n ApiCustomerUpdateParams,\r\n ApiCustomerUpdateResponse,\r\n ApiCustomerUpdateShippingApiResponse,\r\n ApiCustomerUpdateShippingErrorCode,\r\n ApiCustomerUpdateShippingParams,\r\n ApiCustomerUpdateShippingResponse,\r\n ApiOrderApiResponse,\r\n ApiOrderErrorCode,\r\n ApiOrderListApiResponse,\r\n ApiOrderListErrorCode,\r\n ApiOrderListParams,\r\n ApiOrderListResponse,\r\n ApiOrderResponse,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport { API_CUSTOMER_ORDERS_ROUTE_BASE_PATH, API_CUSTOMER_ROUTE_BASE_PATH, API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultError, resultSuccess } from \"./result\"\r\n\r\nexport class KizloCustomer extends Base {\r\n public async retrieve(): Promise<KizloResult<ApiCustomerResponse, ApiCustomerErrorCode>> {\r\n const { data, error } = await this.send<ApiCustomerApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: API_CUSTOMER_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async update(input: ApiCustomerUpdateParams): Promise<KizloResult<ApiCustomerUpdateResponse, ApiCustomerUpdateErrorCode>> {\r\n const { data, error } = await this.send<ApiCustomerUpdateApiResponse>({\r\n method: \"PUT\",\r\n body: input,\r\n requiredAuth: true,\r\n fullPath: API_CUSTOMER_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async addShippingAddress(\r\n input: ApiCustomerAddShippingParams,\r\n ): Promise<KizloResult<ApiCustomerAddShippingResponse, ApiCustomerAddShippingErrorCode>> {\r\n const { data, error } = await this.send<ApiCustomerAddShippingApiResponse>({\r\n method: \"POST\",\r\n requiredAuth: true,\r\n body: input,\r\n fullPath: API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async updateShippingAddress(\r\n id: string,\r\n input: ApiCustomerUpdateShippingParams,\r\n ): Promise<KizloResult<ApiCustomerUpdateShippingResponse, ApiCustomerUpdateShippingErrorCode>> {\r\n const { data, error } = await this.send<ApiCustomerUpdateShippingApiResponse>({\r\n method: \"PUT\",\r\n requiredAuth: true,\r\n body: input,\r\n fullPath: `${API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH}/${id}`,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async deleteShippingAddress(\r\n id: string,\r\n ): Promise<KizloResult<ApiCustomerDeleteShippingResponse, ApiCustomerDeleteShippingErrorCode>> {\r\n const { data, error } = await this.send<ApiCustomerDeleteShippingApiResponse>({\r\n method: \"DELETE\",\r\n requiredAuth: true,\r\n fullPath: `${API_CUSTOMER_SHIPPING_ROUTE_BASE_PATH}/${id}`,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async order(id: string): Promise<KizloResult<ApiOrderResponse, ApiOrderErrorCode>> {\r\n const { data, error } = await this.send<ApiOrderApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: `${API_CUSTOMER_ORDERS_ROUTE_BASE_PATH}/${id}`,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async orderList(params?: ApiOrderListParams): Promise<KizloResult<ApiOrderListResponse, ApiOrderListErrorCode>> {\r\n const { data, error } = await this.send<ApiOrderListApiResponse>({\r\n method: \"GET\",\r\n requiredAuth: true,\r\n fullPath: API_CUSTOMER_ORDERS_ROUTE_BASE_PATH,\r\n params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n}\r\n","import { getPaymentMethods } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { PaymentMethod } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultSuccess } from \"./result\"\r\n\r\nexport type ApiPaymentMethodsResponse = PaymentMethod[]\r\n\r\nexport class KizloPayment extends Base {\r\n // ====================================================\r\n // RETRIEVE\r\n // ====================================================\r\n\r\n public async retrieve(): Promise<KizloResult<ApiPaymentMethodsResponse>> {\r\n const methods = await getPaymentMethods(this.config.payment?.adapters ?? [])\r\n\r\n return resultSuccess(methods)\r\n }\r\n}\r\n","import type {\r\n ApiProductApiResponse,\r\n ApiProductCollectionApiResponse,\r\n ApiProductCollectionErrorCode,\r\n ApiProductCollectionParams,\r\n ApiProductCollectionResponse,\r\n ApiProductErrorCode,\r\n ApiProductListApiResponse,\r\n ApiProductListErrorCode,\r\n ApiProductListParams,\r\n ApiProductListResponse,\r\n ApiProductResponse,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport { API_PRODUCTS_COLLECTION_ROUTE_BASE_PATH, API_PRODUCTS_ROUTE_BASE_PATH } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloResult } from \"./result\"\r\nimport { Base } from \"./base\"\r\nimport { resultError, resultSuccess } from \"./result\"\r\n\r\nexport class KizloProducts extends Base {\r\n public async bySlug(slug: string): Promise<KizloResult<ApiProductResponse, ApiProductErrorCode>> {\r\n const { data, error } = await this.send<ApiProductApiResponse>({\r\n method: \"GET\",\r\n fullPath: `${API_PRODUCTS_ROUTE_BASE_PATH}/${slug}`,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async list(params?: ApiProductListParams): Promise<KizloResult<ApiProductListResponse, ApiProductListErrorCode>> {\r\n const { data, error } = await this.send<ApiProductListApiResponse>({\r\n method: \"GET\",\r\n fullPath: API_PRODUCTS_ROUTE_BASE_PATH,\r\n params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n\r\n public async collection(\r\n params?: ApiProductCollectionParams,\r\n ): Promise<KizloResult<ApiProductCollectionResponse, ApiProductCollectionErrorCode>> {\r\n const { data, error } = await this.send<ApiProductCollectionApiResponse>({\r\n method: \"GET\",\r\n fullPath: API_PRODUCTS_COLLECTION_ROUTE_BASE_PATH,\r\n params,\r\n })\r\n\r\n if (error) return resultError(error)\r\n\r\n return resultSuccess(data)\r\n }\r\n}\r\n","import type { KizloBaseConfig } from \"./types\"\r\nimport { KizloAuth } from \"./auth\"\r\nimport { KizloCart } from \"./cart\"\r\nimport { KizloCheckout } from \"./checkout\"\r\nimport { KizloCustomer } from \"./customer\"\r\nimport { KizloPayment } from \"./payment\"\r\nimport { KizloProducts } from \"./product\"\r\n\r\nexport function universalClientsFactory(config: KizloBaseConfig) {\r\n const auth = new KizloAuth(config)\r\n const cart = new KizloCart(config)\r\n const products = new KizloProducts(config)\r\n const customer = new KizloCustomer(config)\r\n const checkout = new KizloCheckout(config)\r\n\r\n return {\r\n auth,\r\n cart,\r\n products,\r\n customer,\r\n checkout,\r\n }\r\n}\r\n\r\nexport function serverOnlyClientsFactory(config: KizloBaseConfig) {\r\n const payment = new KizloPayment(config)\r\n return { payment }\r\n}\r\n","{\n \"name\": \"kizlo\",\n \"type\": \"module\",\n \"version\": \"1.0.0-alpha.0\",\n \"license\": \"MIT\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"./_internal\": {\n \"import\": {\n \"types\": \"./dist/_internal.d.ts\",\n \"default\": \"./dist/_internal.js\"\n },\n \"require\": {\n \"types\": \"./dist/_internal.d.cts\",\n \"default\": \"./dist/_internal.cjs\"\n }\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"lint\": \"eslint\",\n \"build\": \"cross-env API_SERVER_URL=https://api.kizlo.store tsdown\",\n \"dev\": \"cross-env API_SERVER_URL=http://127.0.0.1:9191 tsdown --no-clean -w\",\n \"clean\": \"git clean -xdf dist node_modules\",\n \"format\": \"prettier --check . --ignore-path ../../.gitignore\",\n \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n \"with-env\": \"dotenv -e ../../.env --\"\n },\n \"dependencies\": {\n \"zod\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@kizlo-internals/eslint-config\": \"workspace:*\",\n \"@kizlo-internals/prettier-config\": \"workspace:*\",\n \"@kizlo-internals/shared\": \"workspace:^\",\n \"@kizlo-internals/tsconfig\": \"workspace:*\",\n \"@rollup/plugin-replace\": \"^6.0.2\",\n \"cross-env\": \"catalog:\",\n \"eslint\": \"catalog:\",\n \"prettier\": \"catalog:\",\n \"tsdown\": \"catalog:\",\n \"type-fest\": \"catalog:\",\n \"typescript\": \"catalog:\"\n },\n \"prettier\": \"@kizlo-internals/prettier-config\"\n}\n","import type { OmitDeep, SetRequired } from \"type-fest\"\r\nimport { StringIdSchema, UrlSchema } from \"@kizlo-internals/shared/common\"\r\nimport { ApiUrlSchema } from \"@kizlo-internals/shared/internal\"\r\nimport z from \"zod/v4\"\r\n\r\nimport type { ApiClientConfig } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloBaseConfig, LocalJwkSet } from \"./types\"\r\nimport packageJson from \"../../package.json\"\r\nimport { KizloError } from \"./result\"\r\n\r\nexport type KizloServerClientOptions = SetRequired<\r\n OmitDeep<KizloBaseConfig, \"clientConfig\" | \"jwksCache\" | \"storeId\" | \"environment\">,\r\n \"publishableKey\" | \"secretKey\"\r\n> & {\r\n version?: string\r\n framework?: string\r\n apiUrl: string\r\n}\r\n\r\nexport function createServerClientConfig(options: KizloServerClientOptions): KizloBaseConfig {\r\n const jwksCache = new Map<string, LocalJwkSet>()\r\n\r\n const { data, error } = z\r\n .object({ apiUrl: ApiUrlSchema, publishableKey: StringIdSchema, secretKey: StringIdSchema, siteUrl: UrlSchema })\r\n .safeParse({\r\n apiUrl: options.apiUrl,\r\n siteUrl: options.siteUrl,\r\n secretKey: options.secretKey,\r\n publishableKey: options.publishableKey,\r\n })\r\n\r\n if (error) throw new KizloError({ code: \"INVALID_ENVS\", message: z.prettifyError(error), cause: error })\r\n\r\n const toUrlString = (path: string) => new URL(path, data.siteUrl).toString()\r\n\r\n const clientConfig: ApiClientConfig = {\r\n version: options.version ?? packageJson.version,\r\n framework: options.framework ?? \"vanilla\",\r\n pages: {\r\n home: toUrlString(options.pages.home),\r\n sign_in: toUrlString(options.pages.sign_in),\r\n sign_up: toUrlString(options.pages.sign_up),\r\n email_verification: toUrlString(options.pages.email_verification),\r\n order_confirmation: toUrlString(options.pages.order_confirmation),\r\n },\r\n payment_adapters: (options.payment?.adapters ?? []).map((item) => {\r\n const adapter = typeof item === \"function\" ? item() : item\r\n return { id: adapter.id, type: adapter.type, name: adapter.name, priority: adapter.priority }\r\n }),\r\n }\r\n\r\n return {\r\n jwksCache,\r\n clientConfig,\r\n ...options,\r\n environment: \"server\",\r\n storeId: data.apiUrl.id,\r\n siteUrl: data.siteUrl,\r\n secretKey: data.secretKey,\r\n apiUrl: __API_SERVER_URL__,\r\n }\r\n}\r\n","import type { LiteralUnion } from \"type-fest\"\r\nimport { API_SERVE_PAYMENT_SESSION_PATH, API_SERVE_PAYMENT_WEBHOOK_PATH } from \"@kizlo-internals/shared/api\"\r\nimport { createPathMatcher } from \"@kizlo-internals/shared/common\"\r\n\r\nimport type { CookiesConfig, HeadersConfig, KizloBaseConfig } from \"./types\"\r\nimport { InternalAuthClient } from \"./auth\"\r\n\r\nexport interface MiddlewareFactoryParams<TRequest extends Request, TResponse extends Response> {\r\n config: KizloBaseConfig\r\n handler: (request: TRequest) => {\r\n response: TResponse\r\n cookies: CookiesConfig\r\n headers: HeadersConfig\r\n }\r\n}\r\n\r\nexport type MiddlewareResult<TResponse extends Response> = TResponse | undefined | null | void\r\n\r\nexport type RedirectPath = LiteralUnion<\"homepage\" | \"signin\" | \"signup\", `/${string}`>\r\n\r\nexport type KizloMiddlewareContext<TRequest extends Request, TResponse extends Response> = {\r\n req: TRequest\r\n isLoggedIn: boolean\r\n redirect: (path: RedirectPath) => TResponse\r\n}\r\n\r\nexport type MiddlewareHandler<TRequest extends Request, TResponse extends Response> = (\r\n c: KizloMiddlewareContext<TRequest, TResponse>,\r\n) => Promise<MiddlewareResult<TResponse>> | MiddlewareResult<TResponse>\r\n\r\nexport type Middleware<TRequest extends Request, TResponse extends Response> = (req: TRequest) => Promise<TResponse>\r\n\r\nexport type KizloMiddleware<TRequest extends Request, TResponse extends Response> = (\r\n handler?: MiddlewareHandler<TRequest, TResponse>,\r\n) => Middleware<TRequest, TResponse>\r\n\r\nconst isInternalPublicRoutes = createPathMatcher([`${API_SERVE_PAYMENT_SESSION_PATH}(.*)`, `${API_SERVE_PAYMENT_WEBHOOK_PATH}(.*)`])\r\n\r\nexport function middlewareFactory<TRequest extends Request, TResponse extends Response>(\r\n params: MiddlewareFactoryParams<TRequest, TResponse>,\r\n): KizloMiddleware<TRequest, TResponse> {\r\n return (handler) => {\r\n return async (req) => {\r\n const middleware = params.handler(req)\r\n\r\n if (isInternalPublicRoutes(new URL(req.url).pathname)) return middleware.response\r\n\r\n const client = new InternalAuthClient({ ...params.config, cookies: middleware.cookies, headers: middleware.headers })\r\n\r\n const isLoggedIn = await client.verify()\r\n\r\n const context = createMiddlewareContext<TRequest, TResponse>(req, params.config, isLoggedIn)\r\n\r\n const handlerResponse = await Promise.resolve(handler?.(context))\r\n\r\n if (handlerResponse) {\r\n const middlewareResponseCookieSet = middleware.response.headers.get(\"set-cookie\")\r\n if (middlewareResponseCookieSet) handlerResponse.headers.append(\"set-cookie\", middlewareResponseCookieSet)\r\n return handlerResponse\r\n }\r\n\r\n return middleware.response\r\n }\r\n }\r\n}\r\n\r\nfunction createMiddlewareContext<TRequest extends Request, TResponse extends Response>(\r\n req: TRequest,\r\n config: KizloBaseConfig,\r\n isLoggedIn: boolean,\r\n): KizloMiddlewareContext<TRequest, TResponse> {\r\n return {\r\n req,\r\n isLoggedIn,\r\n redirect(path) {\r\n let url: URL\r\n switch (path) {\r\n case \"homepage\": {\r\n url = new URL(config.pages.home, req.url)\r\n break\r\n }\r\n case \"signin\": {\r\n url = new URL(config.pages.sign_in, req.url)\r\n break\r\n }\r\n case \"signup\": {\r\n url = new URL(config.pages.sign_up, req.url)\r\n break\r\n }\r\n default: {\r\n url = new URL(path, req.url)\r\n }\r\n }\r\n\r\n return new Response(null, { status: 302, headers: { Location: url.toString() } }) as TResponse\r\n },\r\n }\r\n}\r\n","// src/compose.ts\nvar compose = (middleware, onError, onNotFound) => {\n return (context, next) => {\n let index = -1;\n return dispatch(0);\n async function dispatch(i) {\n if (i <= index) {\n throw new Error(\"next() called multiple times\");\n }\n index = i;\n let res;\n let isError = false;\n let handler;\n if (middleware[i]) {\n handler = middleware[i][0][0];\n context.req.routeIndex = i;\n } else {\n handler = i === middleware.length && next || void 0;\n }\n if (handler) {\n try {\n res = await handler(context, () => dispatch(i + 1));\n } catch (err) {\n if (err instanceof Error && onError) {\n context.error = err;\n res = await onError(err, context);\n isError = true;\n } else {\n throw err;\n }\n }\n } else {\n if (context.finalized === false && onNotFound) {\n res = await onNotFound(context);\n }\n }\n if (res && (context.finalized === false || isError)) {\n context.res = res;\n }\n return context;\n }\n };\n};\nexport {\n compose\n};\n","// src/request/constants.ts\nvar GET_MATCH_RESULT = Symbol();\nexport {\n GET_MATCH_RESULT\n};\n","// src/utils/body.ts\nimport { HonoRequest } from \"../request.js\";\nvar parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {\n const { all = false, dot = false } = options;\n const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;\n const contentType = headers.get(\"Content-Type\");\n if (contentType?.startsWith(\"multipart/form-data\") || contentType?.startsWith(\"application/x-www-form-urlencoded\")) {\n return parseFormData(request, { all, dot });\n }\n return {};\n};\nasync function parseFormData(request, options) {\n const formData = await request.formData();\n if (formData) {\n return convertFormDataToBodyData(formData, options);\n }\n return {};\n}\nfunction convertFormDataToBodyData(formData, options) {\n const form = /* @__PURE__ */ Object.create(null);\n formData.forEach((value, key) => {\n const shouldParseAllValues = options.all || key.endsWith(\"[]\");\n if (!shouldParseAllValues) {\n form[key] = value;\n } else {\n handleParsingAllValues(form, key, value);\n }\n });\n if (options.dot) {\n Object.entries(form).forEach(([key, value]) => {\n const shouldParseDotValues = key.includes(\".\");\n if (shouldParseDotValues) {\n handleParsingNestedValues(form, key, value);\n delete form[key];\n }\n });\n }\n return form;\n}\nvar handleParsingAllValues = (form, key, value) => {\n if (form[key] !== void 0) {\n if (Array.isArray(form[key])) {\n ;\n form[key].push(value);\n } else {\n form[key] = [form[key], value];\n }\n } else {\n if (!key.endsWith(\"[]\")) {\n form[key] = value;\n } else {\n form[key] = [value];\n }\n }\n};\nvar handleParsingNestedValues = (form, key, value) => {\n let nestedForm = form;\n const keys = key.split(\".\");\n keys.forEach((key2, index) => {\n if (index === keys.length - 1) {\n nestedForm[key2] = value;\n } else {\n if (!nestedForm[key2] || typeof nestedForm[key2] !== \"object\" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {\n nestedForm[key2] = /* @__PURE__ */ Object.create(null);\n }\n nestedForm = nestedForm[key2];\n }\n });\n};\nexport {\n parseBody\n};\n","// src/utils/url.ts\nvar splitPath = (path) => {\n const paths = path.split(\"/\");\n if (paths[0] === \"\") {\n paths.shift();\n }\n return paths;\n};\nvar splitRoutingPath = (routePath) => {\n const { groups, path } = extractGroupsFromPath(routePath);\n const paths = splitPath(path);\n return replaceGroupMarks(paths, groups);\n};\nvar extractGroupsFromPath = (path) => {\n const groups = [];\n path = path.replace(/\\{[^}]+\\}/g, (match, index) => {\n const mark = `@${index}`;\n groups.push([mark, match]);\n return mark;\n });\n return { groups, path };\n};\nvar replaceGroupMarks = (paths, groups) => {\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = paths.length - 1; j >= 0; j--) {\n if (paths[j].includes(mark)) {\n paths[j] = paths[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n return paths;\n};\nvar patternCache = {};\nvar getPattern = (label, next) => {\n if (label === \"*\") {\n return \"*\";\n }\n const match = label.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n if (match) {\n const cacheKey = `${label}#${next}`;\n if (!patternCache[cacheKey]) {\n if (match[2]) {\n patternCache[cacheKey] = next && next[0] !== \":\" && next[0] !== \"*\" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];\n } else {\n patternCache[cacheKey] = [label, match[1], true];\n }\n }\n return patternCache[cacheKey];\n }\n return null;\n};\nvar tryDecode = (str, decoder) => {\n try {\n return decoder(str);\n } catch {\n return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {\n try {\n return decoder(match);\n } catch {\n return match;\n }\n });\n }\n};\nvar tryDecodeURI = (str) => tryDecode(str, decodeURI);\nvar getPath = (request) => {\n const url = request.url;\n const start = url.indexOf(\"/\", url.indexOf(\":\") + 4);\n let i = start;\n for (; i < url.length; i++) {\n const charCode = url.charCodeAt(i);\n if (charCode === 37) {\n const queryIndex = url.indexOf(\"?\", i);\n const path = url.slice(start, queryIndex === -1 ? void 0 : queryIndex);\n return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n } else if (charCode === 63) {\n break;\n }\n }\n return url.slice(start, i);\n};\nvar getQueryStrings = (url) => {\n const queryIndex = url.indexOf(\"?\", 8);\n return queryIndex === -1 ? \"\" : \"?\" + url.slice(queryIndex + 1);\n};\nvar getPathNoStrict = (request) => {\n const result = getPath(request);\n return result.length > 1 && result.at(-1) === \"/\" ? result.slice(0, -1) : result;\n};\nvar mergePath = (base, sub, ...rest) => {\n if (rest.length) {\n sub = mergePath(sub, ...rest);\n }\n return `${base?.[0] === \"/\" ? \"\" : \"/\"}${base}${sub === \"/\" ? \"\" : `${base?.at(-1) === \"/\" ? \"\" : \"/\"}${sub?.[0] === \"/\" ? sub.slice(1) : sub}`}`;\n};\nvar checkOptionalParameter = (path) => {\n if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(\":\")) {\n return null;\n }\n const segments = path.split(\"/\");\n const results = [];\n let basePath = \"\";\n segments.forEach((segment) => {\n if (segment !== \"\" && !/\\:/.test(segment)) {\n basePath += \"/\" + segment;\n } else if (/\\:/.test(segment)) {\n if (/\\?/.test(segment)) {\n if (results.length === 0 && basePath === \"\") {\n results.push(\"/\");\n } else {\n results.push(basePath);\n }\n const optionalSegment = segment.replace(\"?\", \"\");\n basePath += \"/\" + optionalSegment;\n results.push(basePath);\n } else {\n basePath += \"/\" + segment;\n }\n }\n });\n return results.filter((v, i, a) => a.indexOf(v) === i);\n};\nvar _decodeURI = (value) => {\n if (!/[%+]/.test(value)) {\n return value;\n }\n if (value.indexOf(\"+\") !== -1) {\n value = value.replace(/\\+/g, \" \");\n }\n return value.indexOf(\"%\") !== -1 ? tryDecode(value, decodeURIComponent_) : value;\n};\nvar _getQueryParam = (url, key, multiple) => {\n let encoded;\n if (!multiple && key && !/[%+]/.test(key)) {\n let keyIndex2 = url.indexOf(`?${key}`, 8);\n if (keyIndex2 === -1) {\n keyIndex2 = url.indexOf(`&${key}`, 8);\n }\n while (keyIndex2 !== -1) {\n const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);\n if (trailingKeyCode === 61) {\n const valueIndex = keyIndex2 + key.length + 2;\n const endIndex = url.indexOf(\"&\", valueIndex);\n return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));\n } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {\n return \"\";\n }\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n encoded = /[%+]/.test(url);\n if (!encoded) {\n return void 0;\n }\n }\n const results = {};\n encoded ??= /[%+]/.test(url);\n let keyIndex = url.indexOf(\"?\", 8);\n while (keyIndex !== -1) {\n const nextKeyIndex = url.indexOf(\"&\", keyIndex + 1);\n let valueIndex = url.indexOf(\"=\", keyIndex);\n if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {\n valueIndex = -1;\n }\n let name = url.slice(\n keyIndex + 1,\n valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex\n );\n if (encoded) {\n name = _decodeURI(name);\n }\n keyIndex = nextKeyIndex;\n if (name === \"\") {\n continue;\n }\n let value;\n if (valueIndex === -1) {\n value = \"\";\n } else {\n value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);\n if (encoded) {\n value = _decodeURI(value);\n }\n }\n if (multiple) {\n if (!(results[name] && Array.isArray(results[name]))) {\n results[name] = [];\n }\n ;\n results[name].push(value);\n } else {\n results[name] ??= value;\n }\n }\n return key ? results[key] : results;\n};\nvar getQueryParam = _getQueryParam;\nvar getQueryParams = (url, key) => {\n return _getQueryParam(url, key, true);\n};\nvar decodeURIComponent_ = decodeURIComponent;\nexport {\n checkOptionalParameter,\n decodeURIComponent_,\n getPath,\n getPathNoStrict,\n getPattern,\n getQueryParam,\n getQueryParams,\n getQueryStrings,\n mergePath,\n splitPath,\n splitRoutingPath,\n tryDecode\n};\n","// src/request.ts\nimport { GET_MATCH_RESULT } from \"./request/constants.js\";\nimport { parseBody } from \"./utils/body.js\";\nimport { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from \"./utils/url.js\";\nvar tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);\nvar HonoRequest = class {\n raw;\n #validatedData;\n #matchResult;\n routeIndex = 0;\n path;\n bodyCache = {};\n constructor(request, path = \"/\", matchResult = [[]]) {\n this.raw = request;\n this.path = path;\n this.#matchResult = matchResult;\n this.#validatedData = {};\n }\n param(key) {\n return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();\n }\n #getDecodedParam(key) {\n const paramKey = this.#matchResult[0][this.routeIndex][1][key];\n const param = this.#getParamValue(paramKey);\n return param && /\\%/.test(param) ? tryDecodeURIComponent(param) : param;\n }\n #getAllDecodedParams() {\n const decoded = {};\n const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);\n for (const key of keys) {\n const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);\n if (value !== void 0) {\n decoded[key] = /\\%/.test(value) ? tryDecodeURIComponent(value) : value;\n }\n }\n return decoded;\n }\n #getParamValue(paramKey) {\n return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;\n }\n query(key) {\n return getQueryParam(this.url, key);\n }\n queries(key) {\n return getQueryParams(this.url, key);\n }\n header(name) {\n if (name) {\n return this.raw.headers.get(name) ?? void 0;\n }\n const headerData = {};\n this.raw.headers.forEach((value, key) => {\n headerData[key] = value;\n });\n return headerData;\n }\n async parseBody(options) {\n return this.bodyCache.parsedBody ??= await parseBody(this, options);\n }\n #cachedBody = (key) => {\n const { bodyCache, raw } = this;\n const cachedBody = bodyCache[key];\n if (cachedBody) {\n return cachedBody;\n }\n const anyCachedKey = Object.keys(bodyCache)[0];\n if (anyCachedKey) {\n return bodyCache[anyCachedKey].then((body) => {\n if (anyCachedKey === \"json\") {\n body = JSON.stringify(body);\n }\n return new Response(body)[key]();\n });\n }\n return bodyCache[key] = raw[key]();\n };\n json() {\n return this.#cachedBody(\"text\").then((text) => JSON.parse(text));\n }\n text() {\n return this.#cachedBody(\"text\");\n }\n arrayBuffer() {\n return this.#cachedBody(\"arrayBuffer\");\n }\n blob() {\n return this.#cachedBody(\"blob\");\n }\n formData() {\n return this.#cachedBody(\"formData\");\n }\n addValidatedData(target, data) {\n this.#validatedData[target] = data;\n }\n valid(target) {\n return this.#validatedData[target];\n }\n get url() {\n return this.raw.url;\n }\n get method() {\n return this.raw.method;\n }\n get [GET_MATCH_RESULT]() {\n return this.#matchResult;\n }\n get matchedRoutes() {\n return this.#matchResult[0].map(([[, route]]) => route);\n }\n get routePath() {\n return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;\n }\n};\nexport {\n HonoRequest\n};\n","// src/utils/html.ts\nvar HtmlEscapedCallbackPhase = {\n Stringify: 1,\n BeforeStream: 2,\n Stream: 3\n};\nvar raw = (value, callbacks) => {\n const escapedString = new String(value);\n escapedString.isEscaped = true;\n escapedString.callbacks = callbacks;\n return escapedString;\n};\nvar escapeRe = /[&<>'\"]/;\nvar stringBufferToString = async (buffer, callbacks) => {\n let str = \"\";\n callbacks ||= [];\n const resolvedBuffer = await Promise.all(buffer);\n for (let i = resolvedBuffer.length - 1; ; i--) {\n str += resolvedBuffer[i];\n i--;\n if (i < 0) {\n break;\n }\n let r = resolvedBuffer[i];\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n const isEscaped = r.isEscaped;\n r = await (typeof r === \"object\" ? r.toString() : r);\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n if (r.isEscaped ?? isEscaped) {\n str += r;\n } else {\n const buf = [str];\n escapeToBuffer(r, buf);\n str = buf[0];\n }\n }\n return raw(str, callbacks);\n};\nvar escapeToBuffer = (str, buffer) => {\n const match = str.search(escapeRe);\n if (match === -1) {\n buffer[0] += str;\n return;\n }\n let escape;\n let index;\n let lastIndex = 0;\n for (index = match; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escape = \"&quot;\";\n break;\n case 39:\n escape = \"&#39;\";\n break;\n case 38:\n escape = \"&amp;\";\n break;\n case 60:\n escape = \"&lt;\";\n break;\n case 62:\n escape = \"&gt;\";\n break;\n default:\n continue;\n }\n buffer[0] += str.substring(lastIndex, index) + escape;\n lastIndex = index + 1;\n }\n buffer[0] += str.substring(lastIndex, index);\n};\nvar resolveCallbackSync = (str) => {\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return str;\n }\n const buffer = [str];\n const context = {};\n callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));\n return buffer[0];\n};\nvar resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {\n if (typeof str === \"object\" && !(str instanceof String)) {\n if (!(str instanceof Promise)) {\n str = str.toString();\n }\n if (str instanceof Promise) {\n str = await str;\n }\n }\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return Promise.resolve(str);\n }\n if (buffer) {\n buffer[0] += str;\n } else {\n buffer = [str];\n }\n const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(\n (res) => Promise.all(\n res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))\n ).then(() => buffer[0])\n );\n if (preserveCallbacks) {\n return raw(await resStr, callbacks);\n } else {\n return resStr;\n }\n};\nexport {\n HtmlEscapedCallbackPhase,\n escapeToBuffer,\n raw,\n resolveCallback,\n resolveCallbackSync,\n stringBufferToString\n};\n","// src/context.ts\nimport { HonoRequest } from \"./request.js\";\nimport { HtmlEscapedCallbackPhase, resolveCallback } from \"./utils/html.js\";\nvar TEXT_PLAIN = \"text/plain; charset=UTF-8\";\nvar setDefaultContentType = (contentType, headers) => {\n return {\n \"Content-Type\": contentType,\n ...headers\n };\n};\nvar Context = class {\n #rawRequest;\n #req;\n env = {};\n #var;\n finalized = false;\n error;\n #status;\n #executionCtx;\n #res;\n #layout;\n #renderer;\n #notFoundHandler;\n #preparedHeaders;\n #matchResult;\n #path;\n constructor(req, options) {\n this.#rawRequest = req;\n if (options) {\n this.#executionCtx = options.executionCtx;\n this.env = options.env;\n this.#notFoundHandler = options.notFoundHandler;\n this.#path = options.path;\n this.#matchResult = options.matchResult;\n }\n }\n get req() {\n this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);\n return this.#req;\n }\n get event() {\n if (this.#executionCtx && \"respondWith\" in this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no FetchEvent\");\n }\n }\n get executionCtx() {\n if (this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no ExecutionContext\");\n }\n }\n get res() {\n return this.#res ||= new Response(null, {\n headers: this.#preparedHeaders ??= new Headers()\n });\n }\n set res(_res) {\n if (this.#res && _res) {\n _res = new Response(_res.body, _res);\n for (const [k, v] of this.#res.headers.entries()) {\n if (k === \"content-type\") {\n continue;\n }\n if (k === \"set-cookie\") {\n const cookies = this.#res.headers.getSetCookie();\n _res.headers.delete(\"set-cookie\");\n for (const cookie of cookies) {\n _res.headers.append(\"set-cookie\", cookie);\n }\n } else {\n _res.headers.set(k, v);\n }\n }\n }\n this.#res = _res;\n this.finalized = true;\n }\n render = (...args) => {\n this.#renderer ??= (content) => this.html(content);\n return this.#renderer(...args);\n };\n setLayout = (layout) => this.#layout = layout;\n getLayout = () => this.#layout;\n setRenderer = (renderer) => {\n this.#renderer = renderer;\n };\n header = (name, value, options) => {\n if (this.finalized) {\n this.#res = new Response(this.#res.body, this.#res);\n }\n const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();\n if (value === void 0) {\n headers.delete(name);\n } else if (options?.append) {\n headers.append(name, value);\n } else {\n headers.set(name, value);\n }\n };\n status = (status) => {\n this.#status = status;\n };\n set = (key, value) => {\n this.#var ??= /* @__PURE__ */ new Map();\n this.#var.set(key, value);\n };\n get = (key) => {\n return this.#var ? this.#var.get(key) : void 0;\n };\n get var() {\n if (!this.#var) {\n return {};\n }\n return Object.fromEntries(this.#var);\n }\n #newResponse(data, arg, headers) {\n const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();\n if (typeof arg === \"object\" && \"headers\" in arg) {\n const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);\n for (const [key, value] of argHeaders) {\n if (key.toLowerCase() === \"set-cookie\") {\n responseHeaders.append(key, value);\n } else {\n responseHeaders.set(key, value);\n }\n }\n }\n if (headers) {\n for (const [k, v] of Object.entries(headers)) {\n if (typeof v === \"string\") {\n responseHeaders.set(k, v);\n } else {\n responseHeaders.delete(k);\n for (const v2 of v) {\n responseHeaders.append(k, v2);\n }\n }\n }\n }\n const status = typeof arg === \"number\" ? arg : arg?.status ?? this.#status;\n return new Response(data, { status, headers: responseHeaders });\n }\n newResponse = (...args) => this.#newResponse(...args);\n body = (data, arg, headers) => this.#newResponse(data, arg, headers);\n text = (text, arg, headers) => {\n return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(\n text,\n arg,\n setDefaultContentType(TEXT_PLAIN, headers)\n );\n };\n json = (object, arg, headers) => {\n return this.#newResponse(\n JSON.stringify(object),\n arg,\n setDefaultContentType(\"application/json\", headers)\n );\n };\n html = (html, arg, headers) => {\n const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType(\"text/html; charset=UTF-8\", headers));\n return typeof html === \"object\" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);\n };\n redirect = (location, status) => {\n const locationString = String(location);\n this.header(\n \"Location\",\n !/[^\\x00-\\xFF]/.test(locationString) ? locationString : encodeURI(locationString)\n );\n return this.newResponse(null, status ?? 302);\n };\n notFound = () => {\n this.#notFoundHandler ??= () => new Response();\n return this.#notFoundHandler(this);\n };\n};\nexport {\n Context,\n TEXT_PLAIN\n};\n","// src/router.ts\nvar METHOD_NAME_ALL = \"ALL\";\nvar METHOD_NAME_ALL_LOWERCASE = \"all\";\nvar METHODS = [\"get\", \"post\", \"put\", \"delete\", \"options\", \"patch\"];\nvar MESSAGE_MATCHER_IS_ALREADY_BUILT = \"Can not add a route since the matcher is already built.\";\nvar UnsupportedPathError = class extends Error {\n};\nexport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHODS,\n METHOD_NAME_ALL,\n METHOD_NAME_ALL_LOWERCASE,\n UnsupportedPathError\n};\n","// src/utils/constants.ts\nvar COMPOSED_HANDLER = \"__COMPOSED_HANDLER\";\nexport {\n COMPOSED_HANDLER\n};\n","// src/hono-base.ts\nimport { compose } from \"./compose.js\";\nimport { Context } from \"./context.js\";\nimport { METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE } from \"./router.js\";\nimport { COMPOSED_HANDLER } from \"./utils/constants.js\";\nimport { getPath, getPathNoStrict, mergePath } from \"./utils/url.js\";\nvar notFoundHandler = (c) => {\n return c.text(\"404 Not Found\", 404);\n};\nvar errorHandler = (err, c) => {\n if (\"getResponse\" in err) {\n const res = err.getResponse();\n return c.newResponse(res.body, res);\n }\n console.error(err);\n return c.text(\"Internal Server Error\", 500);\n};\nvar Hono = class {\n get;\n post;\n put;\n delete;\n options;\n patch;\n all;\n on;\n use;\n router;\n getPath;\n _basePath = \"/\";\n #path = \"/\";\n routes = [];\n constructor(options = {}) {\n const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE];\n allMethods.forEach((method) => {\n this[method] = (args1, ...args) => {\n if (typeof args1 === \"string\") {\n this.#path = args1;\n } else {\n this.#addRoute(method, this.#path, args1);\n }\n args.forEach((handler) => {\n this.#addRoute(method, this.#path, handler);\n });\n return this;\n };\n });\n this.on = (method, path, ...handlers) => {\n for (const p of [path].flat()) {\n this.#path = p;\n for (const m of [method].flat()) {\n handlers.map((handler) => {\n this.#addRoute(m.toUpperCase(), this.#path, handler);\n });\n }\n }\n return this;\n };\n this.use = (arg1, ...handlers) => {\n if (typeof arg1 === \"string\") {\n this.#path = arg1;\n } else {\n this.#path = \"*\";\n handlers.unshift(arg1);\n }\n handlers.forEach((handler) => {\n this.#addRoute(METHOD_NAME_ALL, this.#path, handler);\n });\n return this;\n };\n const { strict, ...optionsWithoutStrict } = options;\n Object.assign(this, optionsWithoutStrict);\n this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;\n }\n #clone() {\n const clone = new Hono({\n router: this.router,\n getPath: this.getPath\n });\n clone.errorHandler = this.errorHandler;\n clone.#notFoundHandler = this.#notFoundHandler;\n clone.routes = this.routes;\n return clone;\n }\n #notFoundHandler = notFoundHandler;\n errorHandler = errorHandler;\n route(path, app) {\n const subApp = this.basePath(path);\n app.routes.map((r) => {\n let handler;\n if (app.errorHandler === errorHandler) {\n handler = r.handler;\n } else {\n handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;\n handler[COMPOSED_HANDLER] = r.handler;\n }\n subApp.#addRoute(r.method, r.path, handler);\n });\n return this;\n }\n basePath(path) {\n const subApp = this.#clone();\n subApp._basePath = mergePath(this._basePath, path);\n return subApp;\n }\n onError = (handler) => {\n this.errorHandler = handler;\n return this;\n };\n notFound = (handler) => {\n this.#notFoundHandler = handler;\n return this;\n };\n mount(path, applicationHandler, options) {\n let replaceRequest;\n let optionHandler;\n if (options) {\n if (typeof options === \"function\") {\n optionHandler = options;\n } else {\n optionHandler = options.optionHandler;\n if (options.replaceRequest === false) {\n replaceRequest = (request) => request;\n } else {\n replaceRequest = options.replaceRequest;\n }\n }\n }\n const getOptions = optionHandler ? (c) => {\n const options2 = optionHandler(c);\n return Array.isArray(options2) ? options2 : [options2];\n } : (c) => {\n let executionContext = void 0;\n try {\n executionContext = c.executionCtx;\n } catch {\n }\n return [c.env, executionContext];\n };\n replaceRequest ||= (() => {\n const mergedPath = mergePath(this._basePath, path);\n const pathPrefixLength = mergedPath === \"/\" ? 0 : mergedPath.length;\n return (request) => {\n const url = new URL(request.url);\n url.pathname = url.pathname.slice(pathPrefixLength) || \"/\";\n return new Request(url, request);\n };\n })();\n const handler = async (c, next) => {\n const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));\n if (res) {\n return res;\n }\n await next();\n };\n this.#addRoute(METHOD_NAME_ALL, mergePath(path, \"*\"), handler);\n return this;\n }\n #addRoute(method, path, handler) {\n method = method.toUpperCase();\n path = mergePath(this._basePath, path);\n const r = { basePath: this._basePath, path, method, handler };\n this.router.add(method, path, [handler, r]);\n this.routes.push(r);\n }\n #handleError(err, c) {\n if (err instanceof Error) {\n return this.errorHandler(err, c);\n }\n throw err;\n }\n #dispatch(request, executionCtx, env, method) {\n if (method === \"HEAD\") {\n return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, \"GET\")))();\n }\n const path = this.getPath(request, { env });\n const matchResult = this.router.match(method, path);\n const c = new Context(request, {\n path,\n matchResult,\n env,\n executionCtx,\n notFoundHandler: this.#notFoundHandler\n });\n if (matchResult[0].length === 1) {\n let res;\n try {\n res = matchResult[0][0][0][0](c, async () => {\n c.res = await this.#notFoundHandler(c);\n });\n } catch (err) {\n return this.#handleError(err, c);\n }\n return res instanceof Promise ? res.then(\n (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))\n ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);\n }\n const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);\n return (async () => {\n try {\n const context = await composed(c);\n if (!context.finalized) {\n throw new Error(\n \"Context is not finalized. Did you forget to return a Response object or `await next()`?\"\n );\n }\n return context.res;\n } catch (err) {\n return this.#handleError(err, c);\n }\n })();\n }\n fetch = (request, ...rest) => {\n return this.#dispatch(request, rest[1], rest[0], request.method);\n };\n request = (input, requestInit, Env, executionCtx) => {\n if (input instanceof Request) {\n return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);\n }\n input = input.toString();\n return this.fetch(\n new Request(\n /^https?:\\/\\//.test(input) ? input : `http://localhost${mergePath(\"/\", input)}`,\n requestInit\n ),\n Env,\n executionCtx\n );\n };\n fire = () => {\n addEventListener(\"fetch\", (event) => {\n event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));\n });\n };\n};\nexport {\n Hono as HonoBase\n};\n","// src/router/pattern-router/router.ts\nimport { METHOD_NAME_ALL, UnsupportedPathError } from \"../../router.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar PatternRouter = class {\n name = \"PatternRouter\";\n #routes = [];\n add(method, path, handler) {\n const endsWithWildcard = path.at(-1) === \"*\";\n if (endsWithWildcard) {\n path = path.slice(0, -2);\n }\n if (path.at(-1) === \"?\") {\n path = path.slice(0, -1);\n this.add(method, path.replace(/\\/[^/]+$/, \"\"), handler);\n }\n const parts = (path.match(/\\/?(:\\w+(?:{(?:(?:{[\\d,]+})|[^}])+})?)|\\/?[^\\/\\?]+/g) || []).map(\n (part) => {\n const match = part.match(/^\\/:([^{]+)(?:{(.*)})?/);\n return match ? `/(?<${match[1]}>${match[2] || \"[^/]+\"})` : part === \"/*\" ? \"/[^/]+\" : part.replace(/[.\\\\+*[^\\]$()]/g, \"\\\\$&\");\n }\n );\n try {\n this.#routes.push([\n new RegExp(`^${parts.join(\"\")}${endsWithWildcard ? \"\" : \"/?$\"}`),\n method,\n handler\n ]);\n } catch {\n throw new UnsupportedPathError();\n }\n }\n match(method, path) {\n const handlers = [];\n for (let i = 0, len = this.#routes.length; i < len; i++) {\n const [pattern, routeMethod, handler] = this.#routes[i];\n if (routeMethod === method || routeMethod === METHOD_NAME_ALL) {\n const match = pattern.exec(path);\n if (match) {\n handlers.push([handler, match.groups || emptyParams]);\n }\n }\n }\n return [handlers];\n }\n};\nexport {\n PatternRouter\n};\n","// src/preset/tiny.ts\nimport { HonoBase } from \"../hono-base.js\";\nimport { PatternRouter } from \"../router/pattern-router/index.js\";\nvar Hono = class extends HonoBase {\n constructor(options = {}) {\n super(options);\n this.router = new PatternRouter();\n }\n};\nexport {\n Hono\n};\n","import type { Context } from \"hono\"\r\nimport {\r\n API_SERVE_PAYMENT_CANCEL_PATH_PATTERN,\r\n API_SERVE_PAYMENT_REFUND_PATH_PATTERN,\r\n API_SERVE_PAYMENT_SESSION_PATH_PATTERN,\r\n API_SERVE_PAYMENT_WEBHOOK_PATH,\r\n API_SERVE_PAYMENT_WEBHOOK_PATH_PATTERN,\r\n apiServePaymentRefundErrors,\r\n getPaymentAdapter,\r\n} from \"@kizlo-internals/shared/api\"\r\nimport { Api, isZodError, Webhook } from \"@kizlo-internals/shared/common\"\r\nimport { Hono } from \"hono/tiny\"\r\nimport z from \"zod/v4\"\r\n\r\nimport type { PaymentCancelResponse, PaymentRefundResponse } from \"@kizlo-internals/shared/api\"\r\n\r\nimport type { KizloBaseConfig, KizloServe, ServeEnv } from \"./types\"\r\nimport { InternalCheckoutResource } from \"./checkout\"\r\n\r\nconst app = new Hono<ServeEnv>()\r\n\r\n// ====================================================\r\n// PAYMENT WEBHOOKS MAP\r\n// ====================================================\r\n\r\napp.get(API_SERVE_PAYMENT_WEBHOOK_PATH, (c) => {\r\n return c.json(\r\n c.env.config.payment?.adapters.reduce<{ id: string; name: string; webhook_url: string }[]>((acc, item) => {\r\n const adapter = typeof item === \"function\" ? item() : item\r\n if (adapter.type !== \"payment_gateway\") return acc\r\n\r\n acc.push({ id: adapter.id, name: adapter.name, webhook_url: `${c.req.url}/${adapter.id}` })\r\n return acc\r\n }, []),\r\n )\r\n})\r\n\r\n// ====================================================\r\n// PAYMENT WEBHOOK\r\n// ====================================================\r\n\r\napp.post(API_SERVE_PAYMENT_WEBHOOK_PATH_PATTERN, async (c) => {\r\n const adapter = getPaymentAdapter(c.env.config.payment?.adapters ?? [], c.req.param(\"adapterId\"))\r\n if (!adapter || adapter.type !== \"payment_gateway\") return c.notFound()\r\n\r\n const result = await adapter.verify(c.req.raw)\r\n if (!result) throw new Api.Exception(\"unauthorized\")\r\n\r\n const checkout = new InternalCheckoutResource(c.env.config)\r\n await checkout.verify({ id: result.id, payment_status: result.status, payment_transaction_id: result.transaction_id })\r\n\r\n return c.json({ success: true })\r\n})\r\n\r\n// ====================================================\r\n// UTIL\r\n// ====================================================\r\n\r\nasync function __getPaymentAdapter(c: Context<ServeEnv>) {\r\n if (!c.env.config.secretKey) throw new Api.Exception(apiServePaymentRefundErrors.missing_api_secret)\r\n const webhook = new Webhook(c.env.config.secretKey)\r\n\r\n const verificationResult = await webhook.verify(c.req.raw)\r\n if (verificationResult.isError) throw new Api.Exception(apiServePaymentRefundErrors.invalid_api_secret)\r\n\r\n const adapter = getPaymentAdapter(c.env.config.payment?.adapters ?? [], c.req.param(\"adapterId\"))\r\n if (!adapter || adapter.type !== \"payment_gateway\") throw new Api.Exception(apiServePaymentRefundErrors.invalid_adapter_id)\r\n return adapter\r\n}\r\n\r\n// ====================================================\r\n// PAYMENT SESSION\r\n// ====================================================\r\n\r\napp.post(API_SERVE_PAYMENT_SESSION_PATH_PATTERN, async (c) => {\r\n const adapter = await __getPaymentAdapter(c)\r\n const session = await adapter.retrieve(c.req.param(\"sessionId\"))\r\n return c.json(session)\r\n})\r\n\r\n// ====================================================\r\n// REFUND PAYMENT\r\n// ====================================================\r\n\r\napp.post(API_SERVE_PAYMENT_REFUND_PATH_PATTERN, async (c) => {\r\n const adapter = await __getPaymentAdapter(c)\r\n if (!adapter.refund) throw new Api.Exception(apiServePaymentRefundErrors.method_not_implemented)\r\n const data = await adapter.refund(c.req.param(\"sessionId\"))\r\n return c.json({ refunded_at: data.refunded_at } satisfies PaymentRefundResponse)\r\n})\r\n\r\n// ====================================================\r\n// CANCEL PAYMENT\r\n// ====================================================\r\n\r\napp.post(API_SERVE_PAYMENT_CANCEL_PATH_PATTERN, async (c) => {\r\n const adapter = await __getPaymentAdapter(c)\r\n if (!adapter.cancel) throw new Api.Exception(apiServePaymentRefundErrors.method_not_implemented)\r\n const data = await adapter.cancel(c.req.param(\"sessionId\"))\r\n return c.json({ canceled_at: data.canceled_at } satisfies PaymentCancelResponse)\r\n})\r\n\r\nexport function serveFactory(config: KizloBaseConfig): KizloServe {\r\n app.onError((error, c) => {\r\n if (Api.isException(error)) return c.json(error.data, error.status)\r\n\r\n if (isZodError(error)) {\r\n const validationError = Api.error(\"validation_error\", { cause: z.flattenError(error).fieldErrors })\r\n return c.json(validationError.data, validationError.status)\r\n }\r\n\r\n const internalServerError = Api.error(\"internal_server_error\")\r\n return c.json(internalServerError.data, internalServerError.status)\r\n })\r\n\r\n const handler = async (request: Request) => app.fetch(request, { config })\r\n return { GET: handler, POST: handler, PUT: handler, DELETE: handler }\r\n}\r\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,66,67,68,69,70,71,72,73,74,75,76,77],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAM,gBAAgB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAID,MAAM,0BAA0B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;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;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;;AC5lVD,MAAM,iBAAiB,IAAI,OAAO;CACjC,cAAc,IAAI,KAAK,eAAe;CACtC,gBAAgB;CAChB,mBAAmB;CACnB,0BAA0B;CAC1B,2BAA2B;CAC3B,gBAAgB;CAChB,gBAAgB;CAChB,CAAC;AAKF,MAAM,qBAAqB;AAC3B,MAAM,uBAAuB;AAC7B,MAAM,aAAa,CAAC,sBAAsB,mBAAmB;AAC7D,MAAM,qBAAqB;AAC3B,MAAM,uBAAuB;AAC7B,MAAM,wBAAwB;AAC9B,MAAM,sBAAsB;AAC5B,MAAM,sBAAsB;AAC5B,MAAM,gBAAgB;CACrB;CACA;CACA;CACA;CACA;CACA;AAID,MAAM,eAAe;CACpB;CACA;CACA;CACA;AAID,MAAM,oBAAoB;AAC1B,MAAM,yBAAyB;AAC/B,MAAM,gBAAgB,CAAC,wBAAwB,kBAAkB;AAGjE,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB,GAAG,mBAAmB;AACrD,MAA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"}